From af16b204259a02bc4bfcac3bc3763cdd6f8c609e Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Sun, 27 Jul 2025 22:19:14 +0100 Subject: [PATCH 01/50] prediction market style --- frontend/src/App.tsx | 2 + frontend/src/components/Navbar.tsx | 9 +- frontend/src/pages/WidgetDemo.tsx | 375 +++++++++++++++++++++++++++++ 3 files changed, 385 insertions(+), 1 deletion(-) create mode 100644 frontend/src/pages/WidgetDemo.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index d7d6d33..3845afe 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -11,6 +11,7 @@ import Dashboard from "./pages/Dashboard"; import Insurance from "./pages/Insurance"; import Advanced from "./pages/Advanced"; import Admin from "./pages/Admin"; +import WidgetDemo from "./pages/WidgetDemo"; import NotFound from "./pages/NotFound"; const AppProviders: React.FC<{ children: React.ReactNode }> = React.memo(({ children }) => ( @@ -32,6 +33,7 @@ const App: React.FC = () => { } /> } /> } /> + } /> } /> diff --git a/frontend/src/components/Navbar.tsx b/frontend/src/components/Navbar.tsx index 7b04d78..c662dc3 100644 --- a/frontend/src/components/Navbar.tsx +++ b/frontend/src/components/Navbar.tsx @@ -11,7 +11,7 @@ const Navbar: React.FC = () => { // Helper function to determine if a route is active const isActive = (path: string) => location.pathname === path; - + // Format address for display const formatAddress = (addr: string) => { return `${addr.slice(0, 6)}...${addr.slice(-4)}`; @@ -37,6 +37,13 @@ const Navbar: React.FC = () => { > Dashboard + + + + + + {/* Result */} + {showResult && userChoice && ( +
+ + + + + {userChoice === 'yes' ? ( +
+
+ + You chose: Insurance Buyer +
+
+

Here's what happens behind the scenes:

+
    +
  • + + You deposit USDC and receive CM-Senior and CM-Junior risk tokens +
  • +
  • + + You hold these tokens, meaning you bear the insurance risk +
  • +
  • + + If {selectedProtocol.name} gets hacked, you can claim compensation +
  • +
  • + + If nothing happens, you earn yield from your deposited assets +
  • +
+
+
+ ) : ( +
+
+ + You chose: Insurance Provider (Underwriter) +
+
+

Here's what happens behind the scenes:

+
    +
  • + + You deposit USDC and receive CM-Senior and CM-Junior risk tokens +
  • +
  • + + You sell these tokens on Uniswap, transferring risk to buyers +
  • +
  • + + You earn premiums from token sales plus yield from deposits +
  • +
  • + + If {selectedProtocol.name} stays safe, you keep all earnings +
  • +
+
+
+ )} +
+
+ + {/* Transaction Details */} + + + + + Transaction Details + + + +
+
+ Coverage Amount: +

{selectedProtocol.coverage}

+
+
+ Coverage Period: +

7 days

+
+
+ Protocol Risk: + + {selectedProtocol.riskLevel} + +
+
+ + + +
+ +

+ Connect your wallet to proceed with the transaction +

+
+
+
+
+ )} + + + )} + + {/* Benefits Section */} +
+ + + + + Simple & Intuitive + + + +

No need to understand complex insurance mechanics. Just answer a simple question based on your market view.

+
+
+ + + + + + Community Driven + + + +

Your opinion contributes to a decentralized insurance pool that protects the entire DeFi ecosystem.

+
+
+ + + + + + Earn While You Protect + + + +

Whether you're buying or providing insurance, you earn yield from the underlying protocols.

+
+
+
+ + + ); +}; + +export default WidgetDemo; From 99c1c79cd8c4a24d94ad1396ea4fdb0c17092169 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Sun, 27 Jul 2025 22:28:41 +0100 Subject: [PATCH 02/50] update prediction market style theme --- .../src/components/PredictionMarketWidget.tsx | 194 ++++++++ frontend/src/pages/WidgetDemo.tsx | 431 +++++++----------- 2 files changed, 348 insertions(+), 277 deletions(-) create mode 100644 frontend/src/components/PredictionMarketWidget.tsx diff --git a/frontend/src/components/PredictionMarketWidget.tsx b/frontend/src/components/PredictionMarketWidget.tsx new file mode 100644 index 0000000..b8c8b4f --- /dev/null +++ b/frontend/src/components/PredictionMarketWidget.tsx @@ -0,0 +1,194 @@ +import React, { useState } from 'react'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Button } from '@/components/ui/button'; +import { Badge } from '@/components/ui/badge'; +import { TrendingUp, TrendingDown, Zap, DollarSign, Clock, Target } from 'lucide-react'; + +interface PredictionMarketWidgetProps { + protocolName: string; + protocolLogo?: string; + currentOdds?: { + hack: number; // e.g., 1.15 (15% implied probability) + safe: number; // e.g., 6.5 (15.4% implied probability) + }; + timeframe?: string; + minBet?: number; + maxPayout?: number; +} + +const PredictionMarketWidget: React.FC = ({ + protocolName, + protocolLogo = '🛡️', + currentOdds = { hack: 1.15, safe: 6.5 }, + timeframe = '7 days', + minBet = 10, + maxPayout = 1000 +}) => { + const [selectedBet, setSelectedBet] = useState<'hack' | 'safe' | null>(null); + const [betAmount, setBetAmount] = useState(minBet); + + const handleBetSelection = (bet: 'hack' | 'safe') => { + setSelectedBet(bet); + }; + + const calculatePayout = (amount: number, odds: number) => { + return (amount * odds).toFixed(2); + }; + + const getImpliedProbability = (odds: number) => { + return ((1 / odds) * 100).toFixed(1); + }; + + const getBetColorClass = (bet: 'hack' | 'safe') => { + if (bet === 'hack') { + return selectedBet === 'hack' + ? 'border-red-500 bg-red-500/20' + : 'border-slate-600 bg-slate-700/50 hover:border-red-400 hover:bg-red-500/10'; + } else { + return selectedBet === 'safe' + ? 'border-green-500 bg-green-500/20' + : 'border-slate-600 bg-slate-700/50 hover:border-green-400 hover:bg-green-500/10'; + } + }; + + return ( + + + + {protocolLogo} +
+
Predict {protocolName}
+
Next {timeframe}
+
+ + + Live + +
+
+ + + {/* Question */} +
+

+ Will {protocolName} get exploited? +

+

+ Bet on protocol security • Earn up to {currentOdds.safe}x returns +

+
+ + {/* Betting Options */} +
+ {/* YES - Gets Hacked */} + + + {/* NO - Stays Safe */} + +
+ + {/* Bet Amount Input */} +
+ +
+
+ + setBetAmount(Math.max(minBet, Number(e.target.value)))} + min={minBet} + max={maxPayout} + className="w-full pl-10 pr-4 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white focus:border-blue-500 focus:outline-none" + placeholder={`Min ${minBet}`} + /> +
+ +
+
+ + {/* Potential Payout */} + {selectedBet && ( +
+
+ Potential Payout: + + ${calculatePayout(betAmount, selectedBet === 'hack' ? currentOdds.hack : currentOdds.safe)} + +
+
+ Profit: + + ${(parseFloat(calculatePayout(betAmount, selectedBet === 'hack' ? currentOdds.hack : currentOdds.safe)) - betAmount).toFixed(2)} + +
+
+ )} + + {/* Action Button */} + + + {/* Stats Footer */} +
+
+ + Ends in {timeframe} +
+
+ + 1,247 bets placed +
+
+
+
+ ); +}; + +export default PredictionMarketWidget; diff --git a/frontend/src/pages/WidgetDemo.tsx b/frontend/src/pages/WidgetDemo.tsx index 98c222d..ecedfdb 100644 --- a/frontend/src/pages/WidgetDemo.tsx +++ b/frontend/src/pages/WidgetDemo.tsx @@ -2,79 +2,61 @@ import React, { useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; -import { Alert, AlertDescription } from '@/components/ui/alert'; import { Separator } from '@/components/ui/separator'; import Navbar from '@/components/Navbar'; -import { Shield, TrendingUp, Users, Clock, CheckCircle, XCircle, Info } from 'lucide-react'; +import PredictionMarketWidget from '@/components/PredictionMarketWidget'; +import { Code, Zap, TrendingUp, Users, DollarSign, Target } from 'lucide-react'; -interface Protocol { +interface ProtocolDemo { name: string; - tvl: string; - riskLevel: 'Low' | 'Medium' | 'High'; logo: string; - description: string; - coverage: string; + odds: { + hack: number; + safe: number; + }; } -const protocols: Protocol[] = [ +const demoProtocols: ProtocolDemo[] = [ { name: 'Aave', - tvl: '$12.4B', - riskLevel: 'Low', logo: '🏦', - description: 'Leading lending protocol', - coverage: '$500K' + odds: { hack: 1.15, safe: 6.5 } }, { name: 'Compound', - tvl: '$3.2B', - riskLevel: 'Low', logo: '🏛️', - description: 'Decentralized lending platform', - coverage: '$300K' + odds: { hack: 1.20, safe: 5.8 } }, { name: 'Uniswap V3', - tvl: '$8.1B', - riskLevel: 'Medium', logo: '🦄', - description: 'Automated market maker', - coverage: '$400K' + odds: { hack: 1.35, safe: 4.2 } }, { name: 'Yearn Finance', - tvl: '$1.8B', - riskLevel: 'Medium', logo: '💰', - description: 'Yield optimization protocol', - coverage: '$250K' + odds: { hack: 1.45, safe: 3.8 } } ]; const WidgetDemo: React.FC = () => { - const [selectedProtocol, setSelectedProtocol] = useState(null); - const [userChoice, setUserChoice] = useState<'yes' | 'no' | null>(null); - const [showResult, setShowResult] = useState(false); - - const handleProtocolSelect = (protocol: Protocol) => { - setSelectedProtocol(protocol); - setUserChoice(null); - setShowResult(false); - }; - - const handleChoice = (choice: 'yes' | 'no') => { - setUserChoice(choice); - setShowResult(true); - }; - - const getRiskColor = (risk: string) => { - switch (risk) { - case 'Low': return 'bg-green-100 text-green-800 border-green-200'; - case 'Medium': return 'bg-yellow-100 text-yellow-800 border-yellow-200'; - case 'High': return 'bg-red-100 text-red-800 border-red-200'; - default: return 'bg-gray-100 text-gray-800 border-gray-200'; - } - }; + const [selectedProtocol, setSelectedProtocol] = useState(demoProtocols[0]); + const [showCode, setShowCode] = useState(false); + + const codeExample = `import PredictionMarketWidget from '@/components/PredictionMarketWidget'; + +// Embed in your protocol page +`; return (
@@ -91,279 +73,174 @@ const WidgetDemo: React.FC = () => { {/* Header */}

- CoverMax Insurance Widget + CoverMax Prediction Market Widget

- A simple question that abstracts away insurance complexity: - Do you think this protocol will get hacked in the next 7 days? + A standalone component that turns protocol security into a profitable prediction game. + No insurance jargon, just pure speculation on DeFi protocol outcomes.

- {/* How it works */} - - - - - How it works - - - -
-
-
- + {/* Live Demo */} +
+ {/* Widget Demo */} +
+

+ + Live Demo Widget +

+ +
+ + {/* Protocol Selector */} +
+

Choose Protocol to Demo

+
+ {demoProtocols.map((protocol) => ( + + ))} +
+ + + + Why This Works + + +
+
-

Answer "YES" (I think it will get hacked)

-

You become an insurance buyer - get coverage if the protocol is exploited

+

Feels Like Speculation

+

Users love betting on outcomes - no complex insurance terminology

-
-
-
- +
+
-

Answer "NO" (I don't think it will get hacked)

-

You become an underwriter - earn premiums if the protocol stays safe

+

Clear Profit Motive

+

Show exact payouts and odds to drive engagement

-
-
- - - - {/* Protocol Selection */} -
-

Select a Protocol to Insure

-
- {protocols.map((protocol) => ( - handleProtocolSelect(protocol)} - > - -
-
{protocol.logo}
-

{protocol.name}

-

{protocol.description}

-
-
- TVL: - {protocol.tvl} -
-
- Coverage: - {protocol.coverage} -
- - {protocol.riskLevel} Risk - -
+
+ +
+

Embeddable Anywhere

+

Drop into any protocol page, forum, or dApp

- - - ))} +
+ +
- {/* The Question */} - {selectedProtocol && ( - - - - {selectedProtocol.logo} - The Question for {selectedProtocol.name} - - - Based on your assessment of this protocol's security and market conditions - - - -
-

- Do you think {selectedProtocol.name} will get hacked in the next 7 days? -

-
- - -
-
- - {/* Result */} - {showResult && userChoice && ( -
- - - - - {userChoice === 'yes' ? ( -
-
- - You chose: Insurance Buyer -
-
-

Here's what happens behind the scenes:

-
    -
  • - - You deposit USDC and receive CM-Senior and CM-Junior risk tokens -
  • -
  • - - You hold these tokens, meaning you bear the insurance risk -
  • -
  • - - If {selectedProtocol.name} gets hacked, you can claim compensation -
  • -
  • - - If nothing happens, you earn yield from your deposited assets -
  • -
-
-
- ) : ( -
-
- - You chose: Insurance Provider (Underwriter) -
-
-

Here's what happens behind the scenes:

-
    -
  • - - You deposit USDC and receive CM-Senior and CM-Junior risk tokens -
  • -
  • - - You sell these tokens on Uniswap, transferring risk to buyers -
  • -
  • - - You earn premiums from token sales plus yield from deposits -
  • -
  • - - If {selectedProtocol.name} stays safe, you keep all earnings -
  • -
-
-
- )} -
-
- - {/* Transaction Details */} - - - - - Transaction Details - - - -
-
- Coverage Amount: -

{selectedProtocol.coverage}

-
-
- Coverage Period: -

7 days

-
-
- Protocol Risk: - - {selectedProtocol.riskLevel} - -
-
+ {/* Implementation Code */} + + + + + Easy Integration + + + Copy and paste this component anywhere. Perfect for embedding on Aave, Compound, or any DeFi protocol page. + + + +
+ React Component + +
- + {showCode && ( +
+
+                  {codeExample}
+                
+
+ )} -
- -

- Connect your wallet to proceed with the transaction -

-
-
-
-
- )} -
-
- )} +
+
+
Single Component
+
No dependencies
+
+
+
Customizable
+
Odds, logos, timeframes
+
+
+
Mobile Ready
+
Responsive design
+
+
+ + - {/* Benefits Section */} + {/* Business Value */}
- - Simple & Intuitive + + Mass Market Appeal -

No need to understand complex insurance mechanics. Just answer a simple question based on your market view.

+

Transforms complex insurance into simple betting. Crypto users love speculation and profit opportunities.

- - Community Driven + + Viral Distribution -

Your opinion contributes to a decentralized insurance pool that protects the entire DeFi ecosystem.

+

Embeddable widgets spread organically. Each protocol becomes a distribution channel for CoverMax.

- - Earn While You Protect + + Hidden Insurance -

Whether you're buying or providing insurance, you earn yield from the underlying protocols.

+

Users get insurance coverage without realizing it. Behind the scenes, CoverMax handles all the complexity.

From 73af110324fac6ed6bfaa2dea9204384ca7d48ed Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Sun, 27 Jul 2025 22:45:57 +0100 Subject: [PATCH 03/50] better prediction market with live info --- .../src/components/PredictionMarketWidget.tsx | 324 ++++++++++++++++-- frontend/src/pages/WidgetDemo.tsx | 23 +- 2 files changed, 295 insertions(+), 52 deletions(-) diff --git a/frontend/src/components/PredictionMarketWidget.tsx b/frontend/src/components/PredictionMarketWidget.tsx index b8c8b4f..d457eb7 100644 --- a/frontend/src/components/PredictionMarketWidget.tsx +++ b/frontend/src/components/PredictionMarketWidget.tsx @@ -1,16 +1,18 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; import { Badge } from '@/components/ui/badge'; -import { TrendingUp, TrendingDown, Zap, DollarSign, Clock, Target } from 'lucide-react'; +import { Alert, AlertDescription } from '@/components/ui/alert'; +import { TrendingUp, TrendingDown, Zap, DollarSign, Clock, Target, Wallet, Shield, AlertCircle, RefreshCw } from 'lucide-react'; +import { useWeb3 } from '@/context/PrivyWeb3Context'; +import { Phase } from '@/config/contracts'; +import { ethers } from 'ethers'; interface PredictionMarketWidgetProps { protocolName: string; protocolLogo?: string; - currentOdds?: { - hack: number; // e.g., 1.15 (15% implied probability) - safe: number; // e.g., 6.5 (15.4% implied probability) - }; timeframe?: string; minBet?: number; maxPayout?: number; @@ -19,26 +21,159 @@ interface PredictionMarketWidgetProps { const PredictionMarketWidget: React.FC = ({ protocolName, protocolLogo = '🛡️', - currentOdds = { hack: 1.15, safe: 6.5 }, timeframe = '7 days', minBet = 10, - maxPayout = 1000 + maxPayout = 1000, }) => { + const { + isConnected, + connectWallet, + vaultInfo, + depositAsset, + getAmountsOut, + getTokenBalance, + swapExactTokensForTokens, + seniorTokenAddress, + juniorTokenAddress, + refreshData, + balances, + currentChain, + isUnsupportedChain, + } = useWeb3(); + const [selectedBet, setSelectedBet] = useState<'hack' | 'safe' | null>(null); - const [betAmount, setBetAmount] = useState(minBet); + const [betAmount, setBetAmount] = useState(''); + const [assetType, setAssetType] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); + const [isProcessing, setIsProcessing] = useState(false); + + // Real-time odds from Uniswap pricing + const [currentOdds, setCurrentOdds] = useState({ hack: 1.15, safe: 6.5 }); + const [pricesLoading, setPricesLoading] = useState(false); + + // Fetch real-time pricing from Uniswap pools + useEffect(() => { + const fetchTokenPrices = async () => { + if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !isConnected) { + return; + } + + setPricesLoading(true); + try { + // Get price of 1 JUNIOR in terms of SENIOR (for hack bet - safety strategy) + const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; + const juniorToSeniorRate = await getAmountsOut('1', juniorToSeniorPath); + + // Get price of 1 SENIOR in terms of JUNIOR (for safe bet - upside strategy) + const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; + const seniorToJuniorRate = await getAmountsOut('1', seniorToJuniorPath); + + // Calculate odds based on token exchange rates + // Higher exchange rate = better odds for that direction + const hackOdds = parseFloat(juniorToSeniorRate) || 1.15; + const safeOdds = parseFloat(seniorToJuniorRate) || 6.5; + + setCurrentOdds({ + hack: Math.max(1.01, hackOdds), // Minimum 1% return + safe: Math.max(1.01, safeOdds) + }); + } catch (error) { + console.error('Error fetching token prices:', error); + // Keep default odds on error + } finally { + setPricesLoading(false); + } + }; + + fetchTokenPrices(); + const interval = setInterval(fetchTokenPrices, 30000); // Update every 30 seconds + return () => clearInterval(interval); + }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, isConnected]); const handleBetSelection = (bet: 'hack' | 'safe') => { setSelectedBet(bet); }; - const calculatePayout = (amount: number, odds: number) => { - return (amount * odds).toFixed(2); + const calculatePayout = (amount: string, odds: number) => { + const numAmount = parseFloat(amount); + if (isNaN(numAmount) || numAmount <= 0) return '0.00'; + return (numAmount * odds).toFixed(2); }; const getImpliedProbability = (odds: number) => { return ((1 / odds) * 100).toFixed(1); }; + const calculateConversionAmount = (depositAmount: string, conversionType: 'toSenior' | 'toJunior') => { + if (!depositAmount || parseFloat(depositAmount) <= 0) return '0'; + + const amount = parseFloat(depositAmount); + // When depositing, user gets 50/50 split initially, then we swap one side + const halfAmount = amount / 2; + + if (conversionType === 'toSenior') { + // For hack bet: half stays as senior, half junior gets swapped to senior + const seniorFromDeposit = halfAmount; + const seniorFromSwap = halfAmount * currentOdds.hack; + return (seniorFromDeposit + seniorFromSwap).toFixed(2); + } else { + // For safe bet: half stays as junior, half senior gets swapped to junior + const juniorFromDeposit = halfAmount; + const juniorFromSwap = halfAmount * currentOdds.safe; + return (juniorFromDeposit + juniorFromSwap).toFixed(2); + } + }; + + const handlePlaceBet = async () => { + if (!selectedBet || !betAmount || parseFloat(betAmount) <= 0 || !isConnected) return; + + setIsProcessing(true); + + try { + // First, deposit to get tokens (50/50 split) + await depositAsset(assetType, betAmount); + + if (selectedBet === 'hack') { + // HACK bet = Protocol will get hacked = MAX SAFETY strategy + // Swap all junior tokens to senior tokens + const freshJuniorBalance = await getTokenBalance(juniorTokenAddress!); + const juniorBalance = Number(freshJuniorBalance) / 1e18; + + if (juniorBalance > 0.001) { + const path = [juniorTokenAddress!, seniorTokenAddress!]; + const balanceString = ethers.formatEther(freshJuniorBalance); + + const estimate = await getAmountsOut(balanceString, path); + const minOutput = (parseFloat(estimate) * 0.95).toFixed(18); // 5% slippage tolerance + await swapExactTokensForTokens(balanceString, minOutput, path); + } + } else { + // SAFE bet = Protocol won't get hacked = MAX UPSIDE strategy + // Swap all senior tokens to junior tokens + const freshSeniorBalance = await getTokenBalance(seniorTokenAddress!); + const seniorBalance = Number(freshSeniorBalance) / 1e18; + + if (seniorBalance > 0.001) { + const path = [seniorTokenAddress!, juniorTokenAddress!]; + const balanceString = ethers.formatEther(freshSeniorBalance); + + const estimate = await getAmountsOut(balanceString, path); + const minOutput = (parseFloat(estimate) * 0.95).toFixed(18); // 5% slippage tolerance + await swapExactTokensForTokens(balanceString, minOutput, path); + } + } + + await refreshData(); // Refresh UI with new token balances + setBetAmount(''); + setSelectedBet(null); + + } catch (error) { + console.error('Bet failed:', error); + alert('Bet failed. Please try again.'); + } finally { + setIsProcessing(false); + } + }; + const getBetColorClass = (bet: 'hack' | 'safe') => { if (bet === 'hack') { return selectedBet === 'hack' @@ -51,6 +186,52 @@ const PredictionMarketWidget: React.FC = ({ } }; + // Format token amounts for display + const formatTokenAmount = (amount: bigint) => { + return parseFloat(ethers.formatEther(amount)).toFixed(4); + }; + + if (!isConnected) { + return ( + + + + {protocolLogo} +
+
Predict {protocolName}
+
Next {timeframe}
+
+
+
+ +
+ +

Connect your wallet to start betting

+ +
+
+
+ ); + } + + if (isUnsupportedChain) { + return ( + + + + + + Unsupported network. Please switch to a supported chain to use the prediction market. + + + + + ); + } + return ( @@ -62,50 +243,95 @@ const PredictionMarketWidget: React.FC = ({
- Live + {pricesLoading ? 'Updating...' : 'Live'} + {/* Deposit Phase Check */} + {Number(vaultInfo.currentPhase) !== Phase.DEPOSIT && ( + + + + Betting is only allowed during the Deposit phase. Current phase: {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} + + + )} + {/* Question */}

Will {protocolName} get exploited?

- Bet on protocol security • Earn up to {currentOdds.safe}x returns + Real betting with risk tokens • Earn up to {currentOdds.safe.toFixed(2)}x returns

+ {/* Asset Selection */} +
+ +
+ + +
+
+ {/* Betting Options */}
- {/* YES - Gets Hacked */} + {/* YES - Gets Hacked (Safety Strategy) */} - {/* NO - Stays Safe */} + {/* NO - Stays Safe (Upside Strategy) */}
- {/* Potential Payout */} - {selectedBet && ( -
+ {/* Strategy Explanation */} + {selectedBet && betAmount && parseFloat(betAmount) > 0 && ( +
+
+ Strategy: {selectedBet === 'hack' ? 'MAX SAFETY' : 'MAX UPSIDE'} +
+
+ ${betAmount} → {calculateConversionAmount(betAmount, selectedBet === 'hack' ? 'toSenior' : 'toJunior')} {selectedBet === 'hack' ? 'Senior' : 'Junior'} tokens +
Potential Payout: ${calculatePayout(betAmount, selectedBet === 'hack' ? currentOdds.hack : currentOdds.safe)}
-
+
Profit: - ${(parseFloat(calculatePayout(betAmount, selectedBet === 'hack' ? currentOdds.hack : currentOdds.safe)) - betAmount).toFixed(2)} + ${(parseFloat(calculatePayout(betAmount, selectedBet === 'hack' ? currentOdds.hack : currentOdds.safe)) - parseFloat(betAmount)).toFixed(2)}
@@ -160,6 +392,7 @@ const PredictionMarketWidget: React.FC = ({ {/* Action Button */} + {/* Your Positions */} + {(Number(balances.seniorTokens) > 0 || Number(balances.juniorTokens) > 0) && ( +
+
Your Positions:
+
+
+ Senior Tokens (Safe): + {formatTokenAmount(balances.seniorTokens)} +
+
+ Junior Tokens (Risk): + {formatTokenAmount(balances.juniorTokens)} +
+
+
+ )} + {/* Stats Footer */}
@@ -183,7 +439,7 @@ const PredictionMarketWidget: React.FC = ({
- 1,247 bets placed + Live odds from Uniswap
diff --git a/frontend/src/pages/WidgetDemo.tsx b/frontend/src/pages/WidgetDemo.tsx index ecedfdb..3e6f4c4 100644 --- a/frontend/src/pages/WidgetDemo.tsx +++ b/frontend/src/pages/WidgetDemo.tsx @@ -10,32 +10,24 @@ import { Code, Zap, TrendingUp, Users, DollarSign, Target } from 'lucide-react'; interface ProtocolDemo { name: string; logo: string; - odds: { - hack: number; - safe: number; - }; } const demoProtocols: ProtocolDemo[] = [ { name: 'Aave', - logo: '🏦', - odds: { hack: 1.15, safe: 6.5 } + logo: '🏦' }, { name: 'Compound', - logo: '🏛️', - odds: { hack: 1.20, safe: 5.8 } + logo: '🏛️' }, { name: 'Uniswap V3', - logo: '🦄', - odds: { hack: 1.35, safe: 4.2 } + logo: '🦄' }, { name: 'Yearn Finance', - logo: '💰', - odds: { hack: 1.45, safe: 3.8 } + logo: '💰' } ]; @@ -49,10 +41,6 @@ const WidgetDemo: React.FC = () => { { {
{protocol.name}
- Hack: {protocol.odds.hack}x • Safe: {protocol.odds.safe}x + Live odds from Uniswap pools
From d12062d320f8edd91cbf0ac2882d006f5b512328 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Sun, 27 Jul 2025 23:06:32 +0100 Subject: [PATCH 04/50] lots of UI fixes and better contract connections --- .../src/components/PredictionMarketWidget.tsx | 238 ++++++++---------- frontend/src/pages/WidgetDemo.tsx | 26 +- 2 files changed, 118 insertions(+), 146 deletions(-) diff --git a/frontend/src/components/PredictionMarketWidget.tsx b/frontend/src/components/PredictionMarketWidget.tsx index d457eb7..0dc90c0 100644 --- a/frontend/src/components/PredictionMarketWidget.tsx +++ b/frontend/src/components/PredictionMarketWidget.tsx @@ -3,91 +3,72 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; -import { Badge } from '@/components/ui/badge'; import { Alert, AlertDescription } from '@/components/ui/alert'; -import { TrendingUp, TrendingDown, Zap, DollarSign, Clock, Target, Wallet, Shield, AlertCircle, RefreshCw } from 'lucide-react'; +import { + Shield, + TrendingUp, + DollarSign, + RefreshCw, + AlertCircle, + Clock, + Target +} from 'lucide-react'; import { useWeb3 } from '@/context/PrivyWeb3Context'; -import { Phase } from '@/config/contracts'; import { ethers } from 'ethers'; interface PredictionMarketWidgetProps { protocolName: string; - protocolLogo?: string; - timeframe?: string; - minBet?: number; - maxPayout?: number; + protocolLogo: string; + timeframe: string; + minBet: string; + maxPayout: string; + supportedAssets: ('aUSDC' | 'cUSDT')[]; +} + +enum Phase { + DEPOSIT = 0, + ACTIVE = 1, + CLAIM = 2, + EMERGENCY = 3 } const PredictionMarketWidget: React.FC = ({ protocolName, - protocolLogo = '🛡️', - timeframe = '7 days', - minBet = 10, - maxPayout = 1000, + protocolLogo, + timeframe, + minBet, + maxPayout, + supportedAssets }) => { const { isConnected, connectWallet, - vaultInfo, + seniorTokenAddress, + juniorTokenAddress, depositAsset, + swapExactTokensForTokens, getAmountsOut, getTokenBalance, - swapExactTokensForTokens, - seniorTokenAddress, - juniorTokenAddress, refreshData, balances, - currentChain, - isUnsupportedChain, + vaultInfo } = useWeb3(); const [selectedBet, setSelectedBet] = useState<'hack' | 'safe' | null>(null); const [betAmount, setBetAmount] = useState(''); - const [assetType, setAssetType] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); + const [assetType, setAssetType] = useState<'aUSDC' | 'cUSDT'>(supportedAssets[0]); const [isProcessing, setIsProcessing] = useState(false); - - // Real-time odds from Uniswap pricing - const [currentOdds, setCurrentOdds] = useState({ hack: 1.15, safe: 6.5 }); + const [currentOdds, setCurrentOdds] = useState({ hack: 1.15, safe: 1.85 }); const [pricesLoading, setPricesLoading] = useState(false); - // Fetch real-time pricing from Uniswap pools + // Use realistic fixed odds for prediction markets useEffect(() => { - const fetchTokenPrices = async () => { - if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !isConnected) { - return; - } - - setPricesLoading(true); - try { - // Get price of 1 JUNIOR in terms of SENIOR (for hack bet - safety strategy) - const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; - const juniorToSeniorRate = await getAmountsOut('1', juniorToSeniorPath); - - // Get price of 1 SENIOR in terms of JUNIOR (for safe bet - upside strategy) - const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; - const seniorToJuniorRate = await getAmountsOut('1', seniorToJuniorPath); - - // Calculate odds based on token exchange rates - // Higher exchange rate = better odds for that direction - const hackOdds = parseFloat(juniorToSeniorRate) || 1.15; - const safeOdds = parseFloat(seniorToJuniorRate) || 6.5; - - setCurrentOdds({ - hack: Math.max(1.01, hackOdds), // Minimum 1% return - safe: Math.max(1.01, safeOdds) - }); - } catch (error) { - console.error('Error fetching token prices:', error); - // Keep default odds on error - } finally { - setPricesLoading(false); - } - }; - - fetchTokenPrices(); - const interval = setInterval(fetchTokenPrices, 30000); // Update every 30 seconds - return () => clearInterval(interval); - }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, isConnected]); + // Fixed realistic odds that make sense for prediction markets + setCurrentOdds({ + hack: 1.15, // 15% return for betting protocol gets hacked (moderate risk) + safe: 1.85 // 85% return for betting protocol stays safe (higher risk/reward) + }); + }, []); const handleBetSelection = (bet: 'hack' | 'safe') => { setSelectedBet(bet); @@ -99,27 +80,51 @@ const PredictionMarketWidget: React.FC = ({ return (numAmount * odds).toFixed(2); }; - const getImpliedProbability = (odds: number) => { - return ((1 / odds) * 100).toFixed(1); + const getImpliedProbability = (betType: 'hack' | 'safe') => { + // Calculate actual probabilities from token pool prices + const seniorPrice = 1.08; // From your pool data + const juniorPrice = 0.92; // From your pool data + const totalValue = seniorPrice + juniorPrice; // $2.00 + + if (betType === 'hack') { + // Hack bet wins if senior tokens outperform (protocol gets hacked, senior gets paid first) + // Market probability = senior token weight in pool + const hackProbability = (seniorPrice / totalValue) * 100; + return Math.round(hackProbability).toString(); + } else { + // Safe bet wins if junior tokens outperform (protocol stays safe, junior gets higher yields) + // Market probability = junior token weight in pool + const safeProbability = (juniorPrice / totalValue) * 100; + return Math.round(safeProbability).toString(); + } }; const calculateConversionAmount = (depositAmount: string, conversionType: 'toSenior' | 'toJunior') => { if (!depositAmount || parseFloat(depositAmount) <= 0) return '0'; const amount = parseFloat(depositAmount); - // When depositing, user gets 50/50 split initially, then we swap one side + + // Based on your pool prices + const seniorPrice = 1.08; // $1.08 per Senior token + const juniorPrice = 0.92; // $0.92 per Junior token + + // When depositing, user gets 50/50 split initially const halfAmount = amount / 2; if (conversionType === 'toSenior') { - // For hack bet: half stays as senior, half junior gets swapped to senior - const seniorFromDeposit = halfAmount; - const seniorFromSwap = halfAmount * currentOdds.hack; - return (seniorFromDeposit + seniorFromSwap).toFixed(2); + // For hack bet: Get senior tokens from half deposit, then swap junior->senior + const seniorFromDeposit = halfAmount / seniorPrice; + const juniorTokens = halfAmount / juniorPrice; + const seniorFromSwap = (juniorTokens * juniorPrice) / seniorPrice; + const totalSenior = seniorFromDeposit + seniorFromSwap; + return totalSenior.toFixed(2); } else { - // For safe bet: half stays as junior, half senior gets swapped to junior - const juniorFromDeposit = halfAmount; - const juniorFromSwap = halfAmount * currentOdds.safe; - return (juniorFromDeposit + juniorFromSwap).toFixed(2); + // For safe bet: Get junior tokens from half deposit, then swap senior->junior + const juniorFromDeposit = halfAmount / juniorPrice; + const seniorTokens = halfAmount / seniorPrice; + const juniorFromSwap = (seniorTokens * seniorPrice) / juniorPrice; + const totalJunior = juniorFromDeposit + juniorFromSwap; + return totalJunior.toFixed(2); } }; @@ -198,35 +203,18 @@ const PredictionMarketWidget: React.FC = ({ {protocolLogo}
-
Predict {protocolName}
-
Next {timeframe}
+
{protocolName} Prediction Market
+
Connect wallet to start betting
- -
- -

Connect your wallet to start betting

- -
-
- - ); - } - - if (isUnsupportedChain) { - return ( - - - - - - Unsupported network. Please switch to a supported chain to use the prediction market. - - + + ); @@ -238,13 +226,9 @@ const PredictionMarketWidget: React.FC = ({ {protocolLogo}
-
Predict {protocolName}
-
Next {timeframe}
+
{protocolName} Prediction Market
+
Real betting with risk tokens
- - - {pricesLoading ? 'Updating...' : 'Live'} -
@@ -272,33 +256,25 @@ const PredictionMarketWidget: React.FC = ({ {/* Asset Selection */}
-
- - +
+ {supportedAssets.map((asset) => ( + + ))}
@@ -316,7 +292,7 @@ const PredictionMarketWidget: React.FC = ({
Gets Hacked
{currentOdds.hack.toFixed(2)}x
- {getImpliedProbability(currentOdds.hack)}% chance + {getImpliedProbability('hack')}% chance
@@ -333,7 +309,7 @@ const PredictionMarketWidget: React.FC = ({
Stays Safe
{currentOdds.safe.toFixed(2)}x
- {getImpliedProbability(currentOdds.safe)}% chance + {getImpliedProbability('safe')}% chance
@@ -439,7 +415,7 @@ const PredictionMarketWidget: React.FC = ({
- Live odds from Uniswap + Fixed odds • Real positions
diff --git a/frontend/src/pages/WidgetDemo.tsx b/frontend/src/pages/WidgetDemo.tsx index 3e6f4c4..ef151ae 100644 --- a/frontend/src/pages/WidgetDemo.tsx +++ b/frontend/src/pages/WidgetDemo.tsx @@ -10,24 +10,19 @@ import { Code, Zap, TrendingUp, Users, DollarSign, Target } from 'lucide-react'; interface ProtocolDemo { name: string; logo: string; + supportedAssets: ('aUSDC' | 'cUSDT')[]; } const demoProtocols: ProtocolDemo[] = [ { name: 'Aave', - logo: '🏦' + logo: '🏦', + supportedAssets: ['aUSDC'] // Aave only supports aUSDC }, { name: 'Compound', - logo: '🏛️' - }, - { - name: 'Uniswap V3', - logo: '🦄' - }, - { - name: 'Yearn Finance', - logo: '💰' + logo: '🏛️', + supportedAssets: ['cUSDT'] // Compound only supports cUSDT } ]; @@ -81,8 +76,9 @@ const WidgetDemo: React.FC = () => { protocolName={selectedProtocol.name} protocolLogo={selectedProtocol.logo} timeframe="7 days" - minBet={10} - maxPayout={1000} + minBet="10" + maxPayout="1000" + supportedAssets={selectedProtocol.supportedAssets} />
@@ -96,8 +92,8 @@ const WidgetDemo: React.FC = () => { onClick={() => setSelectedProtocol(protocol)} className={`p-4 rounded-lg border-2 transition-all text-left ${ selectedProtocol.name === protocol.name - ? 'border-purple-500 bg-purple-500/20' - : 'border-slate-600 bg-slate-700/50 hover:border-purple-400' + ? 'border-purple-500 bg-purple-500/20 text-white' + : 'border-slate-600 bg-slate-700/50 hover:border-purple-400 hover:bg-slate-600/50 text-slate-200' }`} >
@@ -162,7 +158,7 @@ const WidgetDemo: React.FC = () => { variant="outline" size="sm" onClick={() => setShowCode(!showCode)} - className="text-slate-300 border-slate-600 hover:bg-slate-700" + className="text-white bg-slate-600 border-slate-500 hover:bg-slate-500 hover:text-white font-medium" > {showCode ? 'Hide Code' : 'Show Code'} From 404acceaacec3ee9e4893f0c3156a8d85ed17d27 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Sun, 27 Jul 2025 23:24:18 +0100 Subject: [PATCH 05/50] use real pool data --- .../src/components/PredictionMarketWidget.tsx | 108 +++++++++++++----- 1 file changed, 80 insertions(+), 28 deletions(-) diff --git a/frontend/src/components/PredictionMarketWidget.tsx b/frontend/src/components/PredictionMarketWidget.tsx index 0dc90c0..5de8677 100644 --- a/frontend/src/components/PredictionMarketWidget.tsx +++ b/frontend/src/components/PredictionMarketWidget.tsx @@ -14,6 +14,7 @@ import { Target } from 'lucide-react'; import { useWeb3 } from '@/context/PrivyWeb3Context'; +import { Phase, ContractName, getContractAddress } from '@/config/contracts'; import { ethers } from 'ethers'; interface PredictionMarketWidgetProps { @@ -25,12 +26,6 @@ interface PredictionMarketWidgetProps { supportedAssets: ('aUSDC' | 'cUSDT')[]; } -enum Phase { - DEPOSIT = 0, - ACTIVE = 1, - CLAIM = 2, - EMERGENCY = 3 -} const PredictionMarketWidget: React.FC = ({ protocolName, @@ -51,24 +46,81 @@ const PredictionMarketWidget: React.FC = ({ getTokenBalance, refreshData, balances, - vaultInfo + vaultInfo, + getPairReserves, + currentChain } = useWeb3(); const [selectedBet, setSelectedBet] = useState<'hack' | 'safe' | null>(null); const [betAmount, setBetAmount] = useState(''); const [assetType, setAssetType] = useState<'aUSDC' | 'cUSDT'>(supportedAssets[0]); const [isProcessing, setIsProcessing] = useState(false); - const [currentOdds, setCurrentOdds] = useState({ hack: 1.15, safe: 1.85 }); + const [currentOdds, setCurrentOdds] = useState({ hack: 1.02, safe: 1.25 }); const [pricesLoading, setPricesLoading] = useState(false); + const [seniorPrice, setSeniorPrice] = useState('1.00'); + const [juniorPrice, setJuniorPrice] = useState('1.00'); + + // Fetch token prices and pool reserves from Uniswap pair + useEffect(() => { + const fetchTokenPrices = async () => { + if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !currentChain) return; + + setPricesLoading(true); + try { + // Get pool reserves to calculate proper AMM pricing + const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); + const reserves = await getPairReserves(pairAddress); + const seniorReserve = parseFloat(ethers.formatEther(reserves.reserve0)); + const juniorReserve = parseFloat(ethers.formatEther(reserves.reserve1)); + + // Calculate prices directly from Uniswap AMM reserves + // In a Uniswap pair, price = other_reserve / this_reserve + const seniorPriceInJunior = juniorReserve / seniorReserve; + const juniorPriceInSenior = seniorReserve / juniorReserve; + + // For USD pricing, we need to establish a base. + // Let's use getAmountsOut to get actual market prices + try { + // Get price of 1 SENIOR in terms of JUNIOR + const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; + const seniorPrice1Unit = await getAmountsOut('1', seniorToJuniorPath); + + // Get price of 1 JUNIOR in terms of SENIOR + const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; + const juniorPrice1Unit = await getAmountsOut('1', juniorToSeniorPath); + + setSeniorPrice(parseFloat(seniorPrice1Unit).toFixed(2)); + setJuniorPrice(parseFloat(juniorPrice1Unit).toFixed(2)); + } catch (error) { + console.error('Error getting AMM prices:', error); + // Fallback to reserve-based calculation + setSeniorPrice(seniorPriceInJunior.toFixed(2)); + setJuniorPrice(juniorPriceInSenior.toFixed(2)); + } + } catch (error) { + console.error('Error fetching token prices:', error); + // Keep default prices on error (equal weighting) + setSeniorPrice('1.00'); + setJuniorPrice('1.00'); + } finally { + setPricesLoading(false); + } + }; + + fetchTokenPrices(); + + // Refresh prices every 30 seconds + const interval = setInterval(fetchTokenPrices, 30000); + return () => clearInterval(interval); + }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, getPairReserves, currentChain]); - // Use realistic fixed odds for prediction markets + // Update odds based on current market prices useEffect(() => { - // Fixed realistic odds that make sense for prediction markets setCurrentOdds({ - hack: 1.15, // 15% return for betting protocol gets hacked (moderate risk) - safe: 1.85 // 85% return for betting protocol stays safe (higher risk/reward) + hack: 1.02, // Hack scenario: Senior tokens provide modest but safe returns + safe: 1.25 // Safe scenario: Junior tokens provide higher risk, higher reward }); - }, []); + }, [seniorPrice, juniorPrice]); const handleBetSelection = (bet: 'hack' | 'safe') => { setSelectedBet(bet); @@ -81,20 +133,20 @@ const PredictionMarketWidget: React.FC = ({ }; const getImpliedProbability = (betType: 'hack' | 'safe') => { - // Calculate actual probabilities from token pool prices - const seniorPrice = 1.08; // From your pool data - const juniorPrice = 0.92; // From your pool data - const totalValue = seniorPrice + juniorPrice; // $2.00 + // Calculate actual probabilities from real-time token pool prices + const seniorPriceNum = parseFloat(seniorPrice); + const juniorPriceNum = parseFloat(juniorPrice); + const totalValue = seniorPriceNum + juniorPriceNum; if (betType === 'hack') { // Hack bet wins if senior tokens outperform (protocol gets hacked, senior gets paid first) // Market probability = senior token weight in pool - const hackProbability = (seniorPrice / totalValue) * 100; + const hackProbability = (seniorPriceNum / totalValue) * 100; return Math.round(hackProbability).toString(); } else { // Safe bet wins if junior tokens outperform (protocol stays safe, junior gets higher yields) // Market probability = junior token weight in pool - const safeProbability = (juniorPrice / totalValue) * 100; + const safeProbability = (juniorPriceNum / totalValue) * 100; return Math.round(safeProbability).toString(); } }; @@ -104,25 +156,25 @@ const PredictionMarketWidget: React.FC = ({ const amount = parseFloat(depositAmount); - // Based on your pool prices - const seniorPrice = 1.08; // $1.08 per Senior token - const juniorPrice = 0.92; // $0.92 per Junior token + // Use real-time pool prices + const seniorPriceNum = parseFloat(seniorPrice); + const juniorPriceNum = parseFloat(juniorPrice); // When depositing, user gets 50/50 split initially const halfAmount = amount / 2; if (conversionType === 'toSenior') { // For hack bet: Get senior tokens from half deposit, then swap junior->senior - const seniorFromDeposit = halfAmount / seniorPrice; - const juniorTokens = halfAmount / juniorPrice; - const seniorFromSwap = (juniorTokens * juniorPrice) / seniorPrice; + const seniorFromDeposit = halfAmount / seniorPriceNum; + const juniorTokens = halfAmount / juniorPriceNum; + const seniorFromSwap = (juniorTokens * juniorPriceNum) / seniorPriceNum; const totalSenior = seniorFromDeposit + seniorFromSwap; return totalSenior.toFixed(2); } else { // For safe bet: Get junior tokens from half deposit, then swap senior->junior - const juniorFromDeposit = halfAmount / juniorPrice; - const seniorTokens = halfAmount / seniorPrice; - const juniorFromSwap = (seniorTokens * seniorPrice) / juniorPrice; + const juniorFromDeposit = halfAmount / juniorPriceNum; + const seniorTokens = halfAmount / seniorPriceNum; + const juniorFromSwap = (seniorTokens * seniorPriceNum) / juniorPriceNum; const totalJunior = juniorFromDeposit + juniorFromSwap; return totalJunior.toFixed(2); } From 45e8d8bf215e2109f9d63264d040edf883aa1aea Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Mon, 28 Jul 2025 14:01:10 +0100 Subject: [PATCH 06/50] update browserlist --- frontend/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index e4737c6..de2603c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9842,9 +9842,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001669", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", - "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", "dev": true, "funding": [ { From 000da909eea58d9328b6ce296e24904ceac3defd Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Thu, 31 Jul 2025 10:07:36 +0100 Subject: [PATCH 07/50] update prediction market with simpler explanation of What You Pay, What You Get --- .../src/components/PredictionMarketWidget.tsx | 167 +++++++++++++++--- 1 file changed, 143 insertions(+), 24 deletions(-) diff --git a/frontend/src/components/PredictionMarketWidget.tsx b/frontend/src/components/PredictionMarketWidget.tsx index 5de8677..25d3645 100644 --- a/frontend/src/components/PredictionMarketWidget.tsx +++ b/frontend/src/components/PredictionMarketWidget.tsx @@ -114,12 +114,31 @@ const PredictionMarketWidget: React.FC = ({ return () => clearInterval(interval); }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, getPairReserves, currentChain]); - // Update odds based on current market prices + // Update odds based on current market prices from the liquidity pool useEffect(() => { - setCurrentOdds({ - hack: 1.02, // Hack scenario: Senior tokens provide modest but safe returns - safe: 1.25 // Safe scenario: Junior tokens provide higher risk, higher reward - }); + const seniorPriceNum = parseFloat(seniorPrice); + const juniorPriceNum = parseFloat(juniorPrice); + + if (seniorPriceNum > 0 && juniorPriceNum > 0) { + // In a prediction market, odds should reflect fair payout + // If senior token costs $1.08, hack bet should pay 1/1.08 = 0.926x (less than 1x = losing bet) + // If junior token costs $0.92, safe bet should pay 1/0.92 = 1.087x (more than 1x = winning bet) + + // The odds are simply the reciprocal of the token price + const hackOdds = 1.0 / seniorPriceNum; // What you get back per $1 bet on hack + const safeOdds = 1.0 / juniorPriceNum; // What you get back per $1 bet on safe + + setCurrentOdds({ + hack: hackOdds, // Allow odds below 1.0 (losing bets) + safe: safeOdds // Allow odds below 1.0 (losing bets) + }); + } else { + // Fallback to default odds if prices aren't loaded + setCurrentOdds({ + hack: 1.02, + safe: 1.25 + }); + } }, [seniorPrice, juniorPrice]); const handleBetSelection = (bet: 'hack' | 'safe') => { @@ -132,6 +151,55 @@ const PredictionMarketWidget: React.FC = ({ return (numAmount * odds).toFixed(2); }; + // Calculate cost per share and number of shares with slippage consideration + const calculateShareInfo = (betAmount: string, betType: 'hack' | 'safe') => { + const amount = parseFloat(betAmount); + if (isNaN(amount) || amount <= 0) return { + costPerShare: '0.00', + numShares: '0.00', + totalPayout: '0.00', + slippageWarning: false, + effectiveCostPerShare: '0.00' + }; + + // Use real token prices from the liquidity pool + const seniorPriceNum = parseFloat(seniorPrice); + const juniorPriceNum = parseFloat(juniorPrice); + + let baseCostPerShare: number; + if (betType === 'hack') { + baseCostPerShare = seniorPriceNum > 0 ? seniorPriceNum : 0.98; + } else { + baseCostPerShare = juniorPriceNum > 0 ? juniorPriceNum : 0.80; + } + + // Estimate slippage impact (simplified model) + // Larger trades have more slippage + const slippagePercent = Math.min(0.05, (amount / 10000) * 0.02); // Max 5% slippage + const slippageMultiplier = 1 + slippagePercent; + + // Effective cost includes slippage + const effectiveCostPerShare = baseCostPerShare * slippageMultiplier; + + // Also account for the 5% slippage tolerance used in actual swaps + const swapSlippageTolerance = 0.05; + const finalEffectiveCost = effectiveCostPerShare * (1 + swapSlippageTolerance); + + const numShares = amount / finalEffectiveCost; + const totalPayout = numShares * 1.0; + + const hasSignificantSlippage = slippagePercent > 0.01; // 1% threshold + + return { + costPerShare: baseCostPerShare.toFixed(3), + effectiveCostPerShare: finalEffectiveCost.toFixed(3), + numShares: numShares.toFixed(2), + totalPayout: totalPayout.toFixed(2), + slippageWarning: hasSignificantSlippage, + slippagePercent: (slippagePercent * 100).toFixed(1) + }; + }; + const getImpliedProbability = (betType: 'hack' | 'safe') => { // Calculate actual probabilities from real-time token pool prices const seniorPriceNum = parseFloat(seniorPrice); @@ -394,27 +462,78 @@ const PredictionMarketWidget: React.FC = ({
- {/* Strategy Explanation */} + {/* Enhanced Cost/Payout Breakdown */} {selectedBet && betAmount && parseFloat(betAmount) > 0 && ( -
-
- Strategy: {selectedBet === 'hack' ? 'MAX SAFETY' : 'MAX UPSIDE'} -
-
- ${betAmount} → {calculateConversionAmount(betAmount, selectedBet === 'hack' ? 'toSenior' : 'toJunior')} {selectedBet === 'hack' ? 'Senior' : 'Junior'} tokens -
-
- Potential Payout: - - ${calculatePayout(betAmount, selectedBet === 'hack' ? currentOdds.hack : currentOdds.safe)} - -
-
- Profit: - - ${(parseFloat(calculatePayout(betAmount, selectedBet === 'hack' ? currentOdds.hack : currentOdds.safe)) - parseFloat(betAmount)).toFixed(2)} - +
+
+ + What You Pay, What You Get
+ + {(() => { + const shareInfo = calculateShareInfo(betAmount, selectedBet); + return ( +
+ {/* Cost Breakdown */} +
+
+ Cost per share: + ${shareInfo.costPerShare} +
+
+ Number of shares: + {shareInfo.numShares} +
+
+ ${betAmount} ÷ ${shareInfo.costPerShare} = {shareInfo.numShares} shares +
+
+ + {/* Payout Breakdown */} +
+
+ If you win: + ${shareInfo.totalPayout} +
+
+ Profit/Loss: + {(() => { + const profit = parseFloat(shareInfo.totalPayout) - parseFloat(betAmount); + const isProfit = profit >= 0; + return ( + + {isProfit ? '+' : ''}${profit.toFixed(2)} + + ); + })()} +
+
+ {shareInfo.numShares} shares × $1.00 each = ${shareInfo.totalPayout} +
+
+ + {/* Risk Explanation */} +
1.0 + ? 'text-red-300 bg-red-900/30' + : 'text-slate-400 bg-slate-800/50' + }`}> + How it works: Each share pays $1.00 if your prediction is correct, $0.00 if wrong. + You're buying {shareInfo.numShares} shares at ${shareInfo.costPerShare} each. + {parseFloat(shareInfo.costPerShare) > 1.0 && ( +
+ ⚠️ Warning: You're paying more than $1.00 per share that only pays $1.00 - this bet would lose money even if you win! +
+ )} +
+ + {/* Strategy note */} +
+ Strategy: {selectedBet === 'hack' ? 'MAX SAFETY (Senior tokens)' : 'MAX UPSIDE (Junior tokens)'} +
+
+ ); + })()}
)} From 990618c20ee3c8ff80d050d540361864eaba83e0 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Mon, 4 Aug 2025 15:46:50 +0100 Subject: [PATCH 08/50] move widget to home page and add docs --- frontend/src/components/Navbar.tsx | 7 ---- frontend/src/pages/Index.tsx | 53 ++++++++++++++++++++---------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/frontend/src/components/Navbar.tsx b/frontend/src/components/Navbar.tsx index c662dc3..9712285 100644 --- a/frontend/src/components/Navbar.tsx +++ b/frontend/src/components/Navbar.tsx @@ -37,13 +37,6 @@ const Navbar: React.FC = () => { > Dashboard - + +
- + - +
2 @@ -199,9 +216,9 @@ const Index = () => {

Get Tokens

Receive senior + junior

- + - +
3 @@ -210,7 +227,7 @@ const Index = () => {

Buy/sell on Uniswap

- +

Why? Because now you can buy/sell insurance risk like any other token. @@ -255,7 +272,7 @@ const Index = () => {

- +

Both types are tradeable on Uniswap • Adjust your risk anytime @@ -278,7 +295,7 @@ const Index = () => {

Turn your DeFi assets into tradeable risk tokens.

- +
- +

Protocol

@@ -316,7 +333,7 @@ const Index = () => { Analytics
- +

Resources

@@ -326,7 +343,7 @@ const Index = () => {
- +

© {new Date().getFullYear()} CoverMax Protocol. Decentralized and open source. @@ -343,4 +360,4 @@ const Index = () => { ); }; -export default Index; \ No newline at end of file +export default Index; From 8968b6e6c9d1c722828415e620805136a309b57a Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Mon, 4 Aug 2025 16:07:52 +0100 Subject: [PATCH 09/50] deposits and withdrawals can happen at any time --- contracts/RiskVault.sol | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/contracts/RiskVault.sol b/contracts/RiskVault.sol index 3326ebe..567508b 100644 --- a/contracts/RiskVault.sol +++ b/contracts/RiskVault.sol @@ -310,13 +310,12 @@ contract RiskVault is Ownable, ReentrancyGuard { // Core Vault Functions /** - * @dev Deposits yield-bearing assets to get CM tokens (only during DEPOSIT phase) + * @dev Deposits yield-bearing assets to get CM tokens (can deposit at any time) * @param asset The yield-bearing asset to deposit (aUSDC or cUSDT) * @param depositAmount Amount of asset to deposit */ function depositAsset(address asset, uint256 depositAmount) external - onlyDuringPhase(Phase.DEPOSIT) whenNotEmergency nonReentrant { @@ -344,7 +343,10 @@ contract RiskVault is Ownable, ReentrancyGuard { /** - * @dev Withdraws tokens during any phase with specific conditions + * @dev Withdraws tokens at any time with phase-specific conditions: + * - DEPOSIT/COVERAGE phases: Requires equal senior and junior amounts + * - CLAIMS phase (emergency): Only senior tokens allowed + * - CLAIMS phase (normal)/FINAL_CLAIMS: Any token combination allowed * @param seniorAmount Amount of senior tokens to withdraw * @param juniorAmount Amount of junior tokens to withdraw * @param preferredAsset Optional: specific asset to withdraw (address(0) for proportional split) From 45e0b9fd876391d01aec23d12f045d05bf7a0b12 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Mon, 4 Aug 2025 16:12:48 +0100 Subject: [PATCH 10/50] update tests as needed for anytime deposit and withdrawals --- test/RiskVault.comprehensive.test.ts | 12 ++++++++---- test/RiskVault.integration.test.ts | 5 +++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/test/RiskVault.comprehensive.test.ts b/test/RiskVault.comprehensive.test.ts index 9a246ba..64346f9 100644 --- a/test/RiskVault.comprehensive.test.ts +++ b/test/RiskVault.comprehensive.test.ts @@ -294,20 +294,24 @@ describe("RiskVault - Comprehensive Tests", function () { ).to.be.revertedWithCustomError(vault, "UnsupportedAsset"); }); - it("Should revert deposits during non-DEPOSIT phases", async function () { + it("Should allow deposits during any phase", async function () { // Move to COVERAGE phase await vault.forcePhaseTransitionImmediate(); + // Should allow deposit during COVERAGE phase + await ausdc.connect(user1).approve(await vault.getAddress(), DEPOSIT_AMOUNT); await expect( vault.connect(user1).depositAsset(await ausdc.getAddress(), DEPOSIT_AMOUNT) - ).to.be.revertedWithCustomError(vault, "InvalidPhaseForDeposit"); + ).to.not.be.reverted; // Move to CLAIMS phase await vault.forcePhaseTransitionImmediate(); + // Should allow deposit during CLAIMS phase + await ausdc.connect(user2).approve(await vault.getAddress(), DEPOSIT_AMOUNT); await expect( - vault.connect(user1).depositAsset(await ausdc.getAddress(), DEPOSIT_AMOUNT) - ).to.be.revertedWithCustomError(vault, "InvalidPhaseForDeposit"); + vault.connect(user2).depositAsset(await ausdc.getAddress(), DEPOSIT_AMOUNT) + ).to.not.be.reverted; }); it("Should revert deposits during emergency mode", async function () { diff --git a/test/RiskVault.integration.test.ts b/test/RiskVault.integration.test.ts index 49418f2..5f6e0fa 100644 --- a/test/RiskVault.integration.test.ts +++ b/test/RiskVault.integration.test.ts @@ -285,10 +285,11 @@ describe("RiskVault - Integration Tests", function () { // Trigger phase update first await vault.forcePhaseTransition(); - // This should fail because we're no longer in DEPOSIT phase + // Deposits should now work even after phase transition (deposits allowed at any time) + await ausdc.connect(mixedInvestor).approve(await vault.getAddress(), DEPOSIT_AMOUNT); await expect( vault.connect(mixedInvestor).depositAsset(await ausdc.getAddress(), DEPOSIT_AMOUNT) - ).to.be.revertedWithCustomError(vault, "InvalidPhaseForDeposit"); + ).to.not.be.reverted; // But withdrawals should work const [senior, junior] = await vault.getUserTokenBalances(seniorInvestor1.address); From f5a34bb47648b73757894b30cef06fedf9c0c92a Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Mon, 4 Aug 2025 16:54:41 +0100 Subject: [PATCH 11/50] MAJOR update to the protocol design (removing the differences between deposit and coverage period) --- README.md | 31 +++++++----- contracts/RiskVault.sol | 64 ++++++++++--------------- test/RiskVault.comprehensive.test.ts | 71 ++++++++++++---------------- test/RiskVault.integration.test.ts | 23 +++------ test/RiskVault.security.test.ts | 11 ++--- test/RiskVault.withdrawals.test.ts | 9 ++-- 6 files changed, 88 insertions(+), 121 deletions(-) diff --git a/README.md b/README.md index 8002609..155d72f 100644 --- a/README.md +++ b/README.md @@ -33,13 +33,13 @@ Watch CoverMax in action: https://youtu.be/CvOf5WiP0co ### The Insurance Mechanism -1. **Deposit Phase** (2 days): Users deposit yield-bearing assets (aUSDC, cUSDT) into insurance pools +1. **Continuous Deposits**: Users can deposit yield-bearing assets (aUSDC, cUSDT) at any time during the protocol lifecycle 2. **Token Issuance**: For each deposit, users receive equal amounts of: - **Senior Risk Tokens** (CM-SENIOR) - Lower risk, priority claims - **Junior Risk Tokens** (CM-JUNIOR) - Higher risk, subordinate claims -3. **Trading Phase**: Risk tokens can be traded on Uniswap like any ERC20 token -4. **Coverage Phase** (3 days): Active insurance period where claims can be submitted -5. **Redemption Phase**: Token holders can redeem remaining tokens for underlying assets +3. **Trading**: Risk tokens can be traded on Uniswap like any ERC20 token throughout all phases +4. **Active Phase** (5 days): Combined deposit and coverage period where claims can be submitted +5. **Flexible Redemption**: Token holders can redeem tokens at any time with phase-specific rules ### The Risk-Insurance Relationship @@ -87,22 +87,26 @@ The core innovation is that **selling risk tokens = providing insurance coverage ## 🔄 Protocol Lifecycle -### Phase 1: Deposit Period (2 days) -- Users deposit yield-bearing assets +### Phase 1: Active Period (5 days) +- Combined deposit and coverage period for maximum flexibility +- Users can deposit yield-bearing assets at any time during the protocol lifecycle +- Active insurance coverage for all deposited assets - Dual-tier risk tokens are minted 1:1 with deposits - Tokens can be traded immediately on Uniswap - -### Phase 2: Coverage Period (5 days) -- Active insurance coverage for deposited assets +- Withdrawals require equal amounts of senior and junior tokens - Claims can be submitted and processed - Risk tokens continue trading on secondary markets -### Phase 3: Senior Claims (1 day) +### Phase 2: Claims Period (1 day) - Priority redemption period for senior token holders - Senior tokens have first claim on remaining assets +- Any combination of senior/junior tokens can be withdrawn (in normal mode) +- In emergency mode: only senior token withdrawals allowed +- Deposits continue to be accepted -### Phase 4: Final Claims (1 day) -- All remaining tokens can be redeemed +### Phase 3: Final Claims (1 day) +- All remaining tokens can be redeemed with any combination of senior/junior +- Deposits continue to be accepted - Protocol cycle completes and can restart ## 💰 Economic Model @@ -180,7 +184,8 @@ uniswapRouter.swapExactTokensForTokens( ### Smart Contract Features - **Reentrancy Protection**: All external functions protected against reentrancy attacks -- **Phase-Based Logic**: Automated lifecycle management with time-based phases +- **Flexible Deposits**: Users can deposit at any time during the protocol lifecycle +- **Phase-Based Withdrawals**: Withdrawal rules adapt based on current protocol phase - **Proportional Redemption**: Fair distribution of assets based on token holdings - **Emergency Pause**: Owner can pause protocol in emergencies - **Claim Processing**: Structured insurance claim submission and approval system diff --git a/contracts/RiskVault.sol b/contracts/RiskVault.sol index 567508b..f39ff17 100644 --- a/contracts/RiskVault.sol +++ b/contracts/RiskVault.sol @@ -12,10 +12,9 @@ import "./IRiskToken.sol"; contract RiskVault is Ownable, ReentrancyGuard { /* Protocol Phases */ enum Phase { - DEPOSIT, // Phase 1: Deposit Period (2 days) - COVERAGE, // Phase 2: Active Coverage Period (3 days) - CLAIMS, // Phase 3: Claims Period (1 day) - FINAL_CLAIMS // Phase 4: Final Claims Period (1 day) + ACTIVE, // Phase 1: Active Period - Deposits and Coverage (5 days) + CLAIMS, // Phase 2: Claims Period (1 day) + FINAL_CLAIMS // Phase 3: Final Claims Period (1 day) } /* Core Protocol Assets */ @@ -26,9 +25,8 @@ contract RiskVault is Ownable, ReentrancyGuard { /* Protocol Constants */ uint256 private constant MIN_DEPOSIT_AMOUNT = 10; // Minimum deposit threshold - uint256 private constant DEPOSIT_PHASE_DURATION = 2 days; - uint256 private constant COVERAGE_PHASE_DURATION = 3 days; - uint256 private constant SENIOR_CLAIMS_DURATION = 1 days; + uint256 private constant ACTIVE_PHASE_DURATION = 5 days; // Combined deposit + coverage period + uint256 private constant CLAIMS_PHASE_DURATION = 1 days; uint256 private constant FINAL_CLAIMS_DURATION = 1 days; /* Protocol State */ @@ -85,13 +83,13 @@ contract RiskVault is Ownable, ReentrancyGuard { seniorToken = address(_seniorToken); juniorToken = address(_juniorToken); - // Initialize lifecycle - start in DEPOSIT phase - currentPhase = Phase.DEPOSIT; + // Initialize lifecycle - start in ACTIVE phase + currentPhase = Phase.ACTIVE; phaseStartTime = block.timestamp; cycleStartTime = block.timestamp; emit CycleStarted(1, block.timestamp); - emit PhaseTransitioned(0, uint8(Phase.DEPOSIT), block.timestamp); + emit PhaseTransitioned(0, uint8(Phase.ACTIVE), block.timestamp); } /* Access Control Modifiers */ @@ -103,7 +101,7 @@ contract RiskVault is Ownable, ReentrancyGuard { modifier onlyDuringPhase(Phase requiredPhase) { _updatePhaseIfNeeded(); if (currentPhase != requiredPhase) { - if (requiredPhase == Phase.DEPOSIT) revert InvalidPhaseForDeposit(); + if (requiredPhase == Phase.ACTIVE) revert InvalidPhaseForDeposit(); else revert InvalidPhaseForWithdrawal(); } _; @@ -125,15 +123,11 @@ contract RiskVault is Ownable, ReentrancyGuard { uint256 timeElapsed = block.timestamp - phaseStartTime; Phase oldPhase = currentPhase; - if (currentPhase == Phase.DEPOSIT && timeElapsed >= DEPOSIT_PHASE_DURATION) { - currentPhase = Phase.COVERAGE; - phaseStartTime = block.timestamp; - emit PhaseTransitioned(uint8(oldPhase), uint8(currentPhase), block.timestamp); - } else if (currentPhase == Phase.COVERAGE && timeElapsed >= COVERAGE_PHASE_DURATION) { + if (currentPhase == Phase.ACTIVE && timeElapsed >= ACTIVE_PHASE_DURATION) { currentPhase = Phase.CLAIMS; phaseStartTime = block.timestamp; emit PhaseTransitioned(uint8(oldPhase), uint8(currentPhase), block.timestamp); - } else if (currentPhase == Phase.CLAIMS && timeElapsed >= SENIOR_CLAIMS_DURATION) { + } else if (currentPhase == Phase.CLAIMS && timeElapsed >= CLAIMS_PHASE_DURATION) { currentPhase = Phase.FINAL_CLAIMS; phaseStartTime = block.timestamp; emit PhaseTransitioned(uint8(oldPhase), uint8(currentPhase), block.timestamp); @@ -153,11 +147,7 @@ contract RiskVault is Ownable, ReentrancyGuard { function forcePhaseTransitionImmediate() external onlyOwner { Phase oldPhase = currentPhase; - if (currentPhase == Phase.DEPOSIT) { - currentPhase = Phase.COVERAGE; - phaseStartTime = block.timestamp; - emit PhaseTransitioned(uint8(oldPhase), uint8(currentPhase), block.timestamp); - } else if (currentPhase == Phase.COVERAGE) { + if (currentPhase == Phase.ACTIVE) { currentPhase = Phase.CLAIMS; phaseStartTime = block.timestamp; emit PhaseTransitioned(uint8(oldPhase), uint8(currentPhase), block.timestamp); @@ -166,7 +156,7 @@ contract RiskVault is Ownable, ReentrancyGuard { phaseStartTime = block.timestamp; emit PhaseTransitioned(uint8(oldPhase), uint8(currentPhase), block.timestamp); } - // Note: FINAL_CLAIMS requires startNewCycle() to reset to DEPOSIT + // Note: FINAL_CLAIMS requires startNewCycle() to reset to ACTIVE } /** @@ -181,7 +171,7 @@ contract RiskVault is Ownable, ReentrancyGuard { if (timeElapsed < FINAL_CLAIMS_DURATION) revert PhaseTransitionNotReady(); Phase oldPhase = currentPhase; - currentPhase = Phase.DEPOSIT; + currentPhase = Phase.ACTIVE; phaseStartTime = block.timestamp; cycleStartTime = block.timestamp; @@ -344,7 +334,7 @@ contract RiskVault is Ownable, ReentrancyGuard { /** * @dev Withdraws tokens at any time with phase-specific conditions: - * - DEPOSIT/COVERAGE phases: Requires equal senior and junior amounts + * - ACTIVE phase: Requires equal senior and junior amounts * - CLAIMS phase (emergency): Only senior tokens allowed * - CLAIMS phase (normal)/FINAL_CLAIMS: Any token combination allowed * @param seniorAmount Amount of senior tokens to withdraw @@ -366,13 +356,13 @@ contract RiskVault is Ownable, ReentrancyGuard { if (currentPhase == Phase.CLAIMS && emergencyMode) { // During senior claims in emergency mode, only senior tokens allowed if (juniorAmount > 0) revert OnlySeniorTokensAllowed(); - } else if (currentPhase != Phase.CLAIMS && currentPhase != Phase.FINAL_CLAIMS) { - // During DEPOSIT and COVERAGE phases, require equal amounts + } else if (currentPhase == Phase.ACTIVE) { + // During ACTIVE phase, require equal amounts if (seniorAmount != juniorAmount) { revert EqualAmountsRequired(); } } - // During SENIOR_CLAIMS (non-emergency) and FINAL_CLAIMS phases, any combination is allowed + // During CLAIMS (non-emergency) and FINAL_CLAIMS phases, any combination is allowed uint256 aUSDCAmount; uint256 cUSDTAmount; @@ -560,7 +550,7 @@ contract RiskVault is Ownable, ReentrancyGuard { * @dev Gets protocol status including current phase * @return emergency Whether emergency mode is active * @return totalTokens Total CM tokens issued - * @return phase Current protocol phase (0=DEPOSIT, 1=COVERAGE, 2=SENIOR_CLAIMS, 3=FINAL_CLAIMS) + * @return phase Current protocol phase (0=ACTIVE, 1=CLAIMS, 2=FINAL_CLAIMS) * @return phaseEndTime When current phase ends */ function getProtocolStatus() external view returns ( @@ -570,12 +560,10 @@ contract RiskVault is Ownable, ReentrancyGuard { uint256 phaseEndTime ) { uint256 phaseDuration; - if (currentPhase == Phase.DEPOSIT) { - phaseDuration = DEPOSIT_PHASE_DURATION; - } else if (currentPhase == Phase.COVERAGE) { - phaseDuration = COVERAGE_PHASE_DURATION; + if (currentPhase == Phase.ACTIVE) { + phaseDuration = ACTIVE_PHASE_DURATION; } else if (currentPhase == Phase.CLAIMS) { - phaseDuration = SENIOR_CLAIMS_DURATION; + phaseDuration = CLAIMS_PHASE_DURATION; } else { phaseDuration = FINAL_CLAIMS_DURATION; } @@ -602,12 +590,10 @@ contract RiskVault is Ownable, ReentrancyGuard { uint256 timeRemaining ) { uint256 phaseDuration; - if (currentPhase == Phase.DEPOSIT) { - phaseDuration = DEPOSIT_PHASE_DURATION; - } else if (currentPhase == Phase.COVERAGE) { - phaseDuration = COVERAGE_PHASE_DURATION; + if (currentPhase == Phase.ACTIVE) { + phaseDuration = ACTIVE_PHASE_DURATION; } else if (currentPhase == Phase.CLAIMS) { - phaseDuration = SENIOR_CLAIMS_DURATION; + phaseDuration = CLAIMS_PHASE_DURATION; } else { phaseDuration = FINAL_CLAIMS_DURATION; } diff --git a/test/RiskVault.comprehensive.test.ts b/test/RiskVault.comprehensive.test.ts index 64346f9..f0a9802 100644 --- a/test/RiskVault.comprehensive.test.ts +++ b/test/RiskVault.comprehensive.test.ts @@ -17,8 +17,7 @@ describe("RiskVault - Comprehensive Tests", function () { let user3: SignerWithAddress; // Phase durations - const DEPOSIT_PHASE_DURATION = 2 * 24 * 60 * 60; // 2 days - const COVERAGE_PHASE_DURATION = 3 * 24 * 60 * 60; // 3 days + const ACTIVE_PHASE_DURATION = 5 * 24 * 60 * 60; // 5 days (was DEPOSIT + COVERAGE) const CLAIMS_PHASE_DURATION = 1 * 24 * 60 * 60; // 1 day const FINAL_CLAIMS_DURATION = 1 * 24 * 60 * 60; // 1 day @@ -71,7 +70,7 @@ describe("RiskVault - Comprehensive Tests", function () { expect(await vault.owner()).to.equal(owner.address); expect(await vault.emergencyMode()).to.equal(false); expect(await vault.totalTokensIssued()).to.equal(0); - expect(await vault.currentPhase()).to.equal(0); // DEPOSIT phase + expect(await vault.currentPhase()).to.equal(0); // ACTIVE phase }); it("Should create and own the risk tokens", async function () { @@ -83,10 +82,10 @@ describe("RiskVault - Comprehensive Tests", function () { expect(await juniorToken.symbol()).to.equal("CM-JUNIOR"); }); - it("Should start in DEPOSIT phase with correct timestamps", async function () { + it("Should start in ACTIVE phase with correct timestamps", async function () { const phaseInfo = await vault.getPhaseInfo(); const currentTime = await time.latest(); - expect(phaseInfo.phase).to.equal(0); // DEPOSIT + expect(phaseInfo.phase).to.equal(0); // ACTIVE expect(phaseInfo.phaseStart).to.be.closeTo(currentTime, 50); expect(phaseInfo.cycleStart).to.be.closeTo(currentTime, 50); }); @@ -100,40 +99,35 @@ describe("RiskVault - Comprehensive Tests", function () { describe("Phase Management", function () { describe("Automatic Phase Transitions", function () { - it("Should transition from DEPOSIT to COVERAGE after 2 days", async function () { - expect(await vault.currentPhase()).to.equal(0); // DEPOSIT + it("Should transition from ACTIVE to CLAIMS after 5 days", async function () { + expect(await vault.currentPhase()).to.equal(0); // ACTIVE - // Move time forward by 2 days - await time.increase(DEPOSIT_PHASE_DURATION); + // Move time forward by 5 days + await time.increase(ACTIVE_PHASE_DURATION); // Trigger phase update manually await vault.forcePhaseTransition(); - expect(await vault.currentPhase()).to.equal(1); // COVERAGE + expect(await vault.currentPhase()).to.equal(1); // CLAIMS }); it("Should transition through all phases with correct timing", async function () { - // Start in DEPOSIT + // Start in ACTIVE expect(await vault.currentPhase()).to.equal(0); - // Move to COVERAGE - await time.increase(DEPOSIT_PHASE_DURATION); - await vault.forcePhaseTransition(); - expect(await vault.currentPhase()).to.equal(1); // COVERAGE - // Move to CLAIMS - await time.increase(COVERAGE_PHASE_DURATION); + await time.increase(ACTIVE_PHASE_DURATION); await vault.forcePhaseTransition(); - expect(await vault.currentPhase()).to.equal(2); // CLAIMS + expect(await vault.currentPhase()).to.equal(1); // CLAIMS // Move to FINAL_CLAIMS await time.increase(CLAIMS_PHASE_DURATION); await vault.forcePhaseTransition(); - expect(await vault.currentPhase()).to.equal(3); // FINAL_CLAIMS + expect(await vault.currentPhase()).to.equal(2); // FINAL_CLAIMS }); it("Should emit PhaseTransitioned events", async function () { - await time.increase(DEPOSIT_PHASE_DURATION); + await time.increase(ACTIVE_PHASE_DURATION); await expect(vault.forcePhaseTransition()) .to.emit(vault, "PhaseTransitioned") .withArgs(0, 1, await time.latest() + 1); @@ -142,16 +136,13 @@ describe("RiskVault - Comprehensive Tests", function () { describe("Manual Phase Transitions", function () { it("Should allow owner to force immediate phase transition", async function () { - expect(await vault.currentPhase()).to.equal(0); // DEPOSIT - - await vault.connect(owner).forcePhaseTransitionImmediate(); - expect(await vault.currentPhase()).to.equal(1); // COVERAGE + expect(await vault.currentPhase()).to.equal(0); // ACTIVE await vault.connect(owner).forcePhaseTransitionImmediate(); - expect(await vault.currentPhase()).to.equal(2); // CLAIMS + expect(await vault.currentPhase()).to.equal(1); // CLAIMS await vault.connect(owner).forcePhaseTransitionImmediate(); - expect(await vault.currentPhase()).to.equal(3); // FINAL_CLAIMS + expect(await vault.currentPhase()).to.equal(2); // FINAL_CLAIMS }); it("Should only allow owner to force transitions", async function () { @@ -163,7 +154,6 @@ describe("RiskVault - Comprehensive Tests", function () { describe("Cycle Management", function () { it("Should start new cycle after FINAL_CLAIMS phase ends", async function () { // Move through all phases - await vault.forcePhaseTransitionImmediate(); // COVERAGE await vault.forcePhaseTransitionImmediate(); // CLAIMS await vault.forcePhaseTransitionImmediate(); // FINAL_CLAIMS @@ -174,9 +164,9 @@ describe("RiskVault - Comprehensive Tests", function () { await expect(vault.startNewCycle()) .to.emit(vault, "CycleStarted") .to.emit(vault, "PhaseTransitioned") - .withArgs(3, 0, await time.latest() + 1); + .withArgs(2, 0, await time.latest() + 1); - expect(await vault.currentPhase()).to.equal(0); // Back to DEPOSIT + expect(await vault.currentPhase()).to.equal(0); // Back to ACTIVE }); it("Should not allow new cycle if not in FINAL_CLAIMS", async function () { @@ -185,7 +175,6 @@ describe("RiskVault - Comprehensive Tests", function () { it("Should not allow new cycle if FINAL_CLAIMS hasn't ended", async function () { // Move to FINAL_CLAIMS - await vault.forcePhaseTransitionImmediate(); // COVERAGE await vault.forcePhaseTransitionImmediate(); // CLAIMS await vault.forcePhaseTransitionImmediate(); // FINAL_CLAIMS @@ -201,8 +190,8 @@ describe("RiskVault - Comprehensive Tests", function () { describe("Phase Information", function () { it("Should return correct phase info", async function () { const phaseInfo = await vault.getPhaseInfo(); - expect(phaseInfo.phase).to.equal(0); // DEPOSIT - expect(phaseInfo.timeRemaining).to.be.closeTo(DEPOSIT_PHASE_DURATION, 50); + expect(phaseInfo.phase).to.equal(0); // ACTIVE + expect(phaseInfo.timeRemaining).to.be.closeTo(ACTIVE_PHASE_DURATION, 50); }); it("Should return correct protocol status", async function () { @@ -211,17 +200,17 @@ describe("RiskVault - Comprehensive Tests", function () { expect(status.emergency).to.equal(false); expect(status.totalTokens).to.equal(0); expect(status.phase).to.equal(0); - expect(status.phaseEndTime).to.be.closeTo(currentTime + DEPOSIT_PHASE_DURATION, 50); + expect(status.phaseEndTime).to.be.closeTo(currentTime + ACTIVE_PHASE_DURATION, 50); }); it("Should update time remaining correctly", async function () { - await time.increase(DEPOSIT_PHASE_DURATION / 2); + await time.increase(ACTIVE_PHASE_DURATION / 2); const phaseInfo = await vault.getPhaseInfo(); - expect(phaseInfo.timeRemaining).to.be.closeTo(DEPOSIT_PHASE_DURATION / 2, 50); + expect(phaseInfo.timeRemaining).to.be.closeTo(ACTIVE_PHASE_DURATION / 2, 50); }); it("Should show zero time remaining when phase should transition", async function () { - await time.increase(DEPOSIT_PHASE_DURATION + 100); + await time.increase(ACTIVE_PHASE_DURATION + 100); const phaseInfo = await vault.getPhaseInfo(); expect(phaseInfo.timeRemaining).to.equal(0); }); @@ -230,7 +219,7 @@ describe("RiskVault - Comprehensive Tests", function () { describe("Deposit Functionality", function () { describe("Basic Deposits", function () { - it("Should allow deposits during DEPOSIT phase", async function () { + it("Should allow deposits during ACTIVE phase", async function () { const tx = await vault.connect(user1).depositAsset(await ausdc.getAddress(), DEPOSIT_AMOUNT); await expect(tx) @@ -295,19 +284,19 @@ describe("RiskVault - Comprehensive Tests", function () { }); it("Should allow deposits during any phase", async function () { - // Move to COVERAGE phase + // Move to CLAIMS phase await vault.forcePhaseTransitionImmediate(); - // Should allow deposit during COVERAGE phase + // Should allow deposit during CLAIMS phase await ausdc.connect(user1).approve(await vault.getAddress(), DEPOSIT_AMOUNT); await expect( vault.connect(user1).depositAsset(await ausdc.getAddress(), DEPOSIT_AMOUNT) ).to.not.be.reverted; - // Move to CLAIMS phase + // Move to FINAL_CLAIMS phase await vault.forcePhaseTransitionImmediate(); - // Should allow deposit during CLAIMS phase + // Should allow deposit during FINAL_CLAIMS phase await ausdc.connect(user2).approve(await vault.getAddress(), DEPOSIT_AMOUNT); await expect( vault.connect(user2).depositAsset(await ausdc.getAddress(), DEPOSIT_AMOUNT) diff --git a/test/RiskVault.integration.test.ts b/test/RiskVault.integration.test.ts index 5f6e0fa..ab14397 100644 --- a/test/RiskVault.integration.test.ts +++ b/test/RiskVault.integration.test.ts @@ -19,8 +19,7 @@ describe("RiskVault - Integration Tests", function () { let mixedInvestor: SignerWithAddress; // Phase durations - const DEPOSIT_PHASE_DURATION = 2 * 24 * 60 * 60; // 2 days - const COVERAGE_PHASE_DURATION = 3 * 24 * 60 * 60; // 3 days + const ACTIVE_PHASE_DURATION = 5 * 24 * 60 * 60; // 5 days (merged deposit + coverage) const CLAIMS_PHASE_DURATION = 1 * 24 * 60 * 60; // 1 day const FINAL_CLAIMS_DURATION = 1 * 24 * 60 * 60; // 1 day @@ -71,25 +70,17 @@ describe("RiskVault - Integration Tests", function () { expect(await vault.getTotalValueLocked()).to.equal(DEPOSIT_AMOUNT * 5n); expect(await vault.totalTokensIssued()).to.equal(DEPOSIT_AMOUNT * 5n); - // Move to COVERAGE phase - await time.increase(DEPOSIT_PHASE_DURATION); - await vault.forcePhaseTransition(); - - // === COVERAGE PHASE === - console.log("=== COVERAGE PHASE ==="); - expect(await vault.currentPhase()).to.equal(1); // COVERAGE - - // During coverage, some users may want to exit early + // During active phase, some users may want to exit early const [seniorBal, juniorBal] = await vault.getUserTokenBalances(mixedInvestor.address); await vault.connect(mixedInvestor).withdraw(seniorBal / 2n, juniorBal / 2n, ZeroAddress); - // Simulate coverage period - await time.increase(COVERAGE_PHASE_DURATION); + // Move to CLAIMS phase after ACTIVE period + await time.increase(ACTIVE_PHASE_DURATION); await vault.forcePhaseTransition(); // === CLAIMS PHASE === console.log("=== CLAIMS PHASE ==="); - expect(await vault.currentPhase()).to.equal(2); // CLAIMS + expect(await vault.currentPhase()).to.equal(1); // CLAIMS // In claims phase, users can withdraw any combination // Senior investors might withdraw only senior tokens @@ -106,7 +97,7 @@ describe("RiskVault - Integration Tests", function () { // === FINAL_CLAIMS PHASE === console.log("=== FINAL_CLAIMS PHASE ==="); - expect(await vault.currentPhase()).to.equal(3); // FINAL_CLAIMS + expect(await vault.currentPhase()).to.equal(2); // FINAL_CLAIMS // Remaining users withdraw their tokens const [senior3Bal, junior3Bal] = await vault.getUserTokenBalances(seniorInvestor2.address); @@ -274,7 +265,7 @@ describe("RiskVault - Integration Tests", function () { await vault.connect(seniorInvestor1).depositAsset(await ausdc.getAddress(), DEPOSIT_AMOUNT); // Move time to just before transition (1 hour before) - await time.increase(DEPOSIT_PHASE_DURATION - 3600); + await time.increase(ACTIVE_PHASE_DURATION - 3600); // Try deposit near end of phase - should still work as we're in DEPOSIT phase await vault.connect(juniorInvestor1).depositAsset(await cusdt.getAddress(), DEPOSIT_AMOUNT); diff --git a/test/RiskVault.security.test.ts b/test/RiskVault.security.test.ts index f749077..9d128c5 100644 --- a/test/RiskVault.security.test.ts +++ b/test/RiskVault.security.test.ts @@ -228,20 +228,17 @@ describe("RiskVault - Security Tests", function () { it("Should handle edge cases in phase transitions", async function () { // Test rapid successive phase transitions - expect(await vault.currentPhase()).to.equal(0); // DEPOSIT + expect(await vault.currentPhase()).to.equal(0); // ACTIVE await vault.forcePhaseTransitionImmediate(); - expect(await vault.currentPhase()).to.equal(1); // COVERAGE + expect(await vault.currentPhase()).to.equal(1); // CLAIMS await vault.forcePhaseTransitionImmediate(); - expect(await vault.currentPhase()).to.equal(2); // CLAIMS - - await vault.forcePhaseTransitionImmediate(); - expect(await vault.currentPhase()).to.equal(3); // FINAL_CLAIMS + expect(await vault.currentPhase()).to.equal(2); // FINAL_CLAIMS // Can't transition further without starting new cycle await vault.forcePhaseTransitionImmediate(); - expect(await vault.currentPhase()).to.equal(3); // Still FINAL_CLAIMS + expect(await vault.currentPhase()).to.equal(2); // Still FINAL_CLAIMS }); }); diff --git a/test/RiskVault.withdrawals.test.ts b/test/RiskVault.withdrawals.test.ts index 61e6e77..1a5f723 100644 --- a/test/RiskVault.withdrawals.test.ts +++ b/test/RiskVault.withdrawals.test.ts @@ -115,22 +115,21 @@ describe("RiskVault - Withdrawal Tests", function () { }); }); - describe("Withdrawal during COVERAGE Phase", function () { + describe("Withdrawal during ACTIVE Phase", function () { beforeEach(async function () { await vault.connect(user1).depositAsset(await ausdc.getAddress(), DEPOSIT_AMOUNT); await vault.connect(user2).depositAsset(await cusdt.getAddress(), DEPOSIT_AMOUNT); - // Move to COVERAGE phase - await vault.forcePhaseTransitionImmediate(); + // Stay in ACTIVE phase (no transition needed) }); - it("Should allow withdrawal with equal amounts during COVERAGE", async function () { + it("Should allow withdrawal with equal amounts during ACTIVE", async function () { const [senior, junior] = await vault.getUserTokenBalances(user1.address); await expect(vault.connect(user1).withdraw(senior, junior, ZeroAddress)) .to.emit(vault, "TokensWithdrawn"); }); - it("Should revert withdrawal with unequal amounts during COVERAGE", async function () { + it("Should revert withdrawal with unequal amounts during ACTIVE", async function () { const [senior, junior] = await vault.getUserTokenBalances(user1.address); await expect( From 30cb2ee1475616d55b0b0c1af1bba523ce2093be Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 11:58:40 +0100 Subject: [PATCH 12/50] add partner logos --- frontend/public/New_CBT_Standalone.png | Bin 0 -> 53705 bytes frontend/public/UCLIE_logo_black.png | Bin 0 -> 20825 bytes frontend/src/pages/Index.tsx | 67 ++++++++++++++++++------- 3 files changed, 49 insertions(+), 18 deletions(-) create mode 100644 frontend/public/New_CBT_Standalone.png create mode 100644 frontend/public/UCLIE_logo_black.png diff --git a/frontend/public/New_CBT_Standalone.png b/frontend/public/New_CBT_Standalone.png new file mode 100644 index 0000000000000000000000000000000000000000..317c57f4fb38fe33b87b091f28b2b7b8da192b63 GIT binary patch literal 53705 zcmeFZWmHsc8!x^o2@xp?Ns&&$qC-Tb5u}t(6{I^yP!JG7L6Aly1nF)DX^>E)oS{K_ z0Et2J?3q10?^*Bp@{bSath1i|to1On_r0(DU2(@4rloQB9N9%O007P@-@C010B5TK zfJl+#40y*R(DoSo!|0}D;HKkf zjL@F#C;3#xUu}Z(KiqXwsLhU?8uSnuerQ!bknz9QzZUq{0{>dzUkm(ef&Yyb*l?4& z1DDUf1Bn2Sdt7(*CZ;^Xrb&^E-7l%2`^8*|D7Dvk;1@G5IY!Li(~Fc4b@~zfdz-SF z;6Gm}6{aZu^G%-cxzvBY0aX9K_^)yPgNJ{S^KW$gn>zjz5C5jee{08o(C}|z{r}uN zyhw}0+VRG(QmF`HSi3(WBX;|=@Gc`S7cuD z^~tU`GjdkjILv}AZi zy^j}*MfSJSj!T3_lE$jOf0ol{nw*^6y9mhFW=qjnV#Y9}p2N0KSMn?K@pl8`b@zV8 ztx=4vC+a+EY$6RX(wjaIIhq{>S1vGDWiXrt^EVas^y)#H^@XP*`$Z+G*@uC9jU#EE z^O7)P%u~Rug#?Ld)261M)=$JD6r@BfH&eW$4qPuZtY4(T4uK=MoiKx8bt!ZTzIoZm ziEWdr+Nip%Mv@7r!<)!txopNxkL?ZZUsdL3>;}F^Y+iHJJU0<2GSVysz_peSTEj#! zO5s=BD!Enh>Tbqg#n0H$vh zETve|%mO%!j*koVWSNiw?6)5kegfH7cYJ;|jt4uq-i8$nW_!uWmKXHmA`2T^yyyDF z`%j-Pw*Y{b%#K6L#qyD2e{*K(`{$5$izdP7x6W76l{R%aZ?ttzo-eLQ%l+g#n=d z^Mw3niB#Z9-+ij8EtjG?Z_nL>t2e2!ufe7kz++IM7ROPqhGG#jf`1QeRQq zuzl&zBthAoqTb-+3d~X)0KjQ5jE2h%1cm#f1mk3tK2WL5H>1(_Itivw6IHl^#1d;E9!oV5$k9%0!0E!26hQXje z6H#gbuIExx69L|A>K~jv`(8I+Z!eQvDY{;%8R;xXXD&tlq)005;O<1Fvf;C(g|#Fc zh>s>0Fk+H_1EULeU5z{DN99^@s;`rinHd1T@!9ds)5WciuMp;sBT%b#jaZFf>X?M% zl`%d(E_N|en2pWC(Q&=Gp9t{!^xOKvXoyfJ%Xv{5l_)+@vpSJe8A^ zJ8#+)@T?-5)lnc0Dd)FWym`$FfXO5bt@QguD&eJABtjGC0beqVMHnbTr?(dRr|0IZ z?9k3`Zf-iMQKoo+4?CT$WsN^S*<$AWHT106=}U^3m!cRV@7$c<&ETyJFm(>{O`Z$z z_U7{f(tG-D=_KnWzCWY z`&iQ@zB@?Z#g2wGYJoo8QxL4|$oShBYn?ks0k|nAA2XjVeb1X-)&8;OUR#a`L^ve} zB<$4D*t4eEGOg9c0xSl78Hly8&45jOS>EBVHh}!TC{6@I>ZO7G`mGv&zBpumfBzZ- zU}h@3yu8XrZNTg$YYDJ%$#{0k?FxqXrRm+;k{S4UJWHz-;8r%8mwkbpGDH z2i{rizyW2@3i7*Wf)(~QrWI}3CYP3$)bZE=Gvc_x6rK#&oUxF}y3Tz_P~!|xP%9C- z&WMb~)!7K5!>uh>DKcQR(z>RBn#js>*&WKmZjnJ!Ky-zHy_|%^(&4ONkJ#%wm!-&o z(KrJa{|jm^AiD=Nkgxm)nI{#Pdfq9k^^f3F-^8-zgD1-d%enMFBkS$uw~c;t+5$y#P8z zjTTD^F3SsIYi!xlP&)1paq#mLVxazKrb&kdz$#iWk`_?}sVS9(Q8Sk}{0cLL@88j$ z(sBYkSo{aVd5ur! zOpz5F96TYr+o+LB4D32kgOc|$6LUee+Uzbybith(&WVMkEdV~D7UUweA*KR_16%_m zvf=Up?REz5>TSSGHzplPQGS_Kbs`MnFv<Q00MbI)cnOPG#&I^80Oath{hljJdi5!Z}`d%qA7( zGLoOUiO`G7VmSx=O(cA&oi1h31-^kDTbw(28vrte=@2@J$m37*mAbmtwgmD4GfXf` zQGjJD+hk4#s1bE4lVmOl-h?Q{0^wv*-x+tt=RO-mvJBxem5AH3?eh0V^((3Qw*x={y!) zM+P|c^8#q_0C_2k@6vIL@mX6VMW&(CP7L80loY@~T%HN2m(11N5rqZ~96Y7(g5WSy z99-INy5)N)nbeCq`rFpl);nV06s3f=o^B9SoyG%_Ua=wm+##3OY=}6K&Kr4)OK~~a zXnHmOM}0h{kF}}2BG14tYGrwOdBQSG2@OI%sVGUq`(!psZq)$jyenAM-v(@tIzLuH zDdG}J)O`?GrA{s`)S&P6kB=6z%bFh4A63Vl32s*Z?k}|^a&=m}ft30wB$`Py+X5#p7$*@zZ( zpE!6-eSdi6A-RdA{m{-#MZ1kf&5;VZe1>dC;ILKgTIk2WFDUjMjf!+c<>T_&Hkm3rH*PXo`Ypi8$!W{qNUm1OTt*`-ifdcMwDC~i$FXIc6qL|q#?5lxgWYJY*zBi<`z4I0P-0{QrP&RG~51^Z23ce}| zFfy-zWkCU#(%ym52xkdyo|!Y%Dts4s4rmnZ^8H{E9P7~e38WW{E2tNan6S!(iwMmWzOi(vsRs!Q$p{tnm1?d99`9$A-y~UC> z@(wznG8x6Hy1sc}5JU{TqtaZpwE)Cut1tW6Gja9e) z9%gSGFAe6LbgysP0`eklK{+%M(VzIQ(eHhDaSjWmgsqbG@_Ep`qd5j?NmM*9Wx$0|qLlj7A^2wZf9 z-e6n7@^6HmK)UA)Ck9(}gWqa;A78sTelS+L$jZ~uQB*>B9&o!OEt(dFH}(4#8$CPL zhw|;1)Z7io_*Y2T5&Kwy>okhvdY!p8}ivM@n@CO9c<#`EmjrtNCKBK-xy2vnM^f9+o| zVGt4lYhgNwNl^M`%UNP5MC1c7(x?0_`DQ}f^bbq-)kw1mMwAVB!l3w7=oCqKVc|7-pa{^v02x7qRG zI$?wV?jtO3y zM{7nDrOuX{8x>VWEMUP5L_arG0s#9*$y2fkYJ_h;FS+@Y0kDdC8axr&p7~AwA4L%t zn%G{h#Uavk1X)MC8wyu;8cf)h-Kk?^ycyHHAXqbE(x%7E-k$j3--WcGd*A9j*H`rc zgGs~3+{P`ncRupH7KxbMY>Idz_uG0}CT>HH*xK`k4pABj7T~}brZ@HA*7*Bo5UJeJ z*7lMTFq7Hrji%vUc||ie>$d9{QFK>kGOo@VeZS$1hp2#98`KVneFQVp>I1==n2<4h zZbHDoG=I738)3 zQ*K}(M_QG&ZqAL6erUfH>hnJJjC8XSZa5xxI5>UhAUvQ3T->?wQ;P*F(?b1n64-`T zd`eU_Nm;>GWW5d2<%teP7k-VS)c$iwRRvvL(6vLo%h#z0&NIA3SRBYR-|QZUMb6S5 z++sd7s~69PQe+q=MSAelAp=j2&>KA>O)pwnTHYV`fh!oj>vB~y>jfMW>-<$!PoMj~ zM}*s5*p$_;DG;{8bn15AJoo`u$W@U2j6*A~kI8zS*3%?8u+qTXFb$#a)ui53A?1!I z>tE<{XV=>heky{aa%d^l^~t8dUC+Y8LcNKJh=>T=z=he4D1mW3W!=|U(!&nMC@0PFn%O)n&Q<@*C zC+Oc{fwt@}HCox7S(npgk3v`Vt+i>REiL}~kFP~$ZFRH;{jIG+gDvr0M-jTIk(z=G zUeua* zd!61ch4Gg9$+TJc9&)~TD~|OIyE-O*O?qw0cp?V3{?=CzEPmh6_WqHxqR~(XppfnrlIW%3MEholww0*+)dJdyFV}Q>00GXTEQa~ z$E^|>PhZf#jyt=;!otIi1sx6|$9^$uM6hoS^a{gwc4{fQM_hh$g{O~V(h&fRVPbd} zmHXpw?aS>Ojw>}yTTLfNj%x_t<@NHTy&GMqlBU7moc=&(YrYAMsMU%~$!Mhbr4zd= zd~#gYkA;o2?6EyKj2r_w04QHqBOD8F+kMO6A*|sP_3|+nIzWK_VAE$)2Fow{5*Sxt zbK%h&w6rGikS_mj#^{Rdo;};PHX|(pn^#~jF%2;Q4CDpgj%FEbshfA%bms`~6IgM- z82bwvA_XRPaLBK#MI$d6N;8lX>ME#ly)$hdm=}R5D$vH@wN^u>-jyQFTjiPb&KDhf zYCEs?B5a&I?oA*mbzzM~)S-UJF24}FMjvcMJdY#6h$HcN`8ti_4GU)<&JdF;)`5ZD zr7qI?`FoVLe9SG1)M|{Z+Mp6gdakq#l`XqHodp^)uK}EV6K+$9aP- zpcR9STM!o!bQDSHmHd$!hE=%$?Nc?%5iF9OF?sm@oifL+s=gyEo5{B(v z-fL|h^nTz2@OtzKJEXVw-=DIHifsN^Y1sPh+1)JtcZyD z7Yg9?Ou=;D;L=p1fkRrvCFS6O*px0!4V{C#r>5%kruuzP^ENr$dV z6Bk#D*Kh-j!`PLbeGVoqI)DA0@s3Wsj{`d3a|`QtGno>kEWP48ZK0cGwbdt@G`~{+ zGvp3#2%A!LCdV~vGjY-*;oy#U$JHj2r?woxuKR%Nv^CTU?=+O)EDJJz-+C+#M%uQ< za;Pxo0)U3?By6eFqw86773It!$*yvpyx-96qbuW;U((5%(|5vh8WDt$ZSzr|NZwte z#ykH?XW$EkoGi{Y?8;5y7>Z`r?@8X#L^KCRJSUF*m@qfdwy;`lVydX~Ro?-cOTWXJ zF!4!)jm5n_US5)|>MaTxx>G`DAqaf=%NxX*Fwv(IK43&xqKWgcydH!AJy))vx!8|< zS6Xy5&~8nqPvfAcsW*#89*}o=3*hT%y%^VU)`wCEP>S*X>X4H-xwWC}{sIpVkKOph z_wV071=6kaOiW51@2?cyJy~6EIx+F}MbtNB@TMYD)k}TtP3_;Y0G#dHyW6clHtvz< zFS_0B?{YqM7);NvN)Rj=>cij~Ws}_e%1F^`;73$2^O4_#TF zE!9*DRtCm6>wR%!&}bjs8Y?X|9-(-SF*sr~g5+@+H5rhUBHt(%NS2_HV=kK}ciJcP2bP&%d03M+4h`oHf2c_;W^xsjskV20h_zu4;JTI>EE3w z{<3?$R!i|DcF&|ur(!%IwtrJ7k-mSA2^|9C1tF&oX{675!$@f9bd+d%LQVzf3AFC z7?o$rn%g^!upWIYE)(Ax{lZzxDbz?;0RpxFrW%4IWB92!7w!?-FRs%cj%S#}f2^st z;8ekI17M*?-1vZ*en^Ws1NoVt#gbCN^&@c3aDH&o?#8w9ZSPdnZ-ChT!TQTl#` ze7M-pU(&~hjWmD2gDxX-WeI9Lk!yJ)I&A7-qA4{o4R(QYF8mjSLRS4Sc8MY-`Li0V zdxliF+5?!VVKtm`HoYCqOoM#Vf{>b|Kg}NL*PFsHx=q~&g~&i^JPP-TT-mv+^%M%7 z$M2!^)M68%Bxw=>qf5cY99Sd#q3D}Z(4peYp~aRk0B}pf4R3tK&KK-+4%bNnEr zRIS-8Bc%A>BX80xXdnN>FBGzMfeK+4AGW&ySsY<{C{W$*e|VpA+2;(Jqy29#*XePN zgCFCBNepM_%Q{us6oM5<5OXaOLSA?TB1P;UDI%~^0J#@WJ+QBY^+38PHlD!u-~o{B zul>fc2S!C8N+F<;DE<*0%F+XS96@vB|8*0~A5@D6lJc6(e^Y8#BgBn4z$`I?L-YPI zX#nI}cHMvM*@Pp*k25f^8V_lKqmcsj7XQT+_jQ02Di@c&f%8r5RUC-BqxRo-a0A?e z{@;`T|M6;O9yQLb+c@vwi2Xm(>%SQ1CSvmgco*kb*n=Yhd}z=jJ=Tx7HvmZ}mEyj_ zG$1IGn1f|i{nRo?ke4aH$`dLlM&O3xDF4@s?7BLq0f2K@bY9JWLGvQmvSorBK-fzL zqAlN@{a-j|x8}xnX&@}3aIPn#;#`V2B_;>q{NhWJcUGsK+I|In;!FAm*oqLao!P-Q z0ShvaD~{&?!z*^>|Ah%Haxm*3;h@MIUJFC~{Au6`SUP6#*rnxKvg{QQt{(gy&S% zDkupc(V<|IeF~{sbtqfQf>QjiH;K^Yx~FzQVOA9YpxUw6Aag0^)NyrKbz#r=d=5v| zoi#_^lRR!t@?jaV<0iw(4)cJxBDA;nO5#0COS8dkmgn@Z`qR8Vwq}|X-O}+WYK6c& zKmp~XG?rKFPqM2Ae{b;|qo*x&XP{8>V#GW)n3N|3x|qV*pRg&x&(;UdE$C|Dw)VY5 zu>;b6T$bMtp9;#3)#Wf#Eb~#<_X-e-K+(K~$mC;o1;EXpxYC8FNh0;7#E}&ha{H;Y z>j71HBhC#bL`sm=VecWqrSoYOe#nNy&Z*tllPXKcoi->IgJccG$jV(^*5zum8`Q*h zf*Q{_Fv`Sg4#+{(v2y;z=Xg)G?#h!Aqx`u($>S$W9yZgJive`Brw0$P>Cxo|4W9i_ z@j_IfR?$}nwO?`^W|3&}XQq@?5o@!je4U~&{?A{RC+zwV1}=m11!cBE z%Uf;!{I$>kL&)7;MpS+-cb9E;@>=0EeY;+hF{h$fVdo<-;e-fwMx|Q_7b{QhbvCMv zSIUcbN~C4qSbuLQeFQ-u7Gp{HJ{c8!SWRilU`(NCt#3{}XlYb>)t@-+OK61d7&MQU z$24hxnLn5Xv?1*TKg{$gu2W^R1lZ%WlYfUp952nUIF9OSK4N+dqNFBvrbP8HX0?uo z9LOC^CL^A|RPOIn)@_*hxiU0U0x7zUjY#`!N(C|5uymbco**k` z&PtiUu`I(YZ7Er0sj?`;hBv_(P@^|si3!l+gjE>Fm}e=fNrG{gG`aQfXT2+QXL609UUL} zYT0~6pbX>|h5?xU?-Q_j%OzPQeyGb`|17(D!E&ZL_I-pJ8tu1fq>l?YNo+d4ag|m< zyYUq~AYGTwlyG|()f>)-^8PTiqDFq|vYXf>`$8)WGpMDts-QTcOj6kR)g|we0U7$1 zKyJ`)C?vH0x0;L!!|mu~6~aF`6|(+hD?H@xyFPvXQR;7d%aE3w&fh}lBV7}oCe|Vr91}`bGeY3i}nv7W( zv1;vF(-F1z>kH5+(%(sZ1>xy2wgb2C0~Podl!0heyLDAL{u;AYX^P|8@@nhsPbN{$ zX%1eSs+|cwjpkEZKE%dj($!`enUhy$BC;Sur8^72!t=w{vmYnIK92Ao6ubYEe#-A* zlGqJ&AjiGF+k{d#zl^+Rc&BYsUI2QkYkU1ToSyf?*QRk-AHmualcKVzK|{z^*tH}0 zZ#9&$&q{2>!5vr)l6b_z>bLv1qZG9bto-@xR$QKL&i zoGD>uwieTCx5$;d3Z_{52~<#jS(_+=XB;MX<0Gg&(hkIVab~u|qz_o{1&(_^z!+{6 zSPw3J^wh+*x;JoaZA{x`{rvpyQIlRf26`eBc2LAht6;P;$);6!r{+8<3oh4O`{tB% zcjw~h&RBTX6E3ua6h-%%u_RhE2q)SGIYu-u#;o>hy+MC=D%&DRXm1Tlu~J+e-+eot zR$-7TOQ*=wb|glH`F{p3c}ruhXJW$}WW{IZs3{m+3xjW7;R-|?jn$EeCmn-a zeA!z4%LQxoXCNeSU^yiaP;m;x&Bk7+QY?JJe|2J)V{0u(lvF+USKIvqxj?p%-x&n^ zJNptw`6`(0PVo4^O-MqpywdeJ(}u92-w>A3Ie zk?v{r=}g5$LA~0gpt**#;V#c|m#@<)mUe%u3Y<%Z-;%a%bwR1oO7$OUF05uwT*Vn( zJ{yx7r{=+IC!{egLy^7N_%k2e2b&WAQ2my~K&x`1po_zCVR`$(N4}aSGFe?{zEz4@ zP3ZCj+XTi4nnsb<==xHV5sT4#g3RqMi5a%FeJk!9AxR7S>lRbQ@y%`L5q`aGXmgtT zR-ZnPJmDzf8(bRnF`=_CJG)*KYOz@V)L9xsH{F^HRgRg6bdKp>Nsy%fG(da7FbZFP zUzV6CIcqQMJdNlE{O@JDp)=s3w%ewU>*j;h@PU(zI`mz*&P>}-7K3CF873iutB9Ll zz;i*4yuQ9%xUEBstlbJpoWK26^o`q z67JI9R@AXb{VcDz(92YZZW_F8Z~`091ZiP2N{sCm2X#KZZEqXAoQLi~DJYs1NI?XQnh32Dj= z6NEHYf!EIUx{c@ZmYN40^mk8v4C0PqEB;m6xJzOOK&$eUaV4WTr_O5>80g=E}( z;Rkj}b}uOlgMgey~!bjR-5rj9(`FHD+;eOwPUf8&yD}XAv$Xa$o38O%J{oSy~)b z|7H4!tI+0fWXKNx%8t*bKfOuPX7VQA zHLhL$4+DKY=jhfyVd=ui4>|B3{xJs2>dn0L*3K;piM^t>5#hLT%iJT&#Su3%4*|N$ zyA}qj{As`C(QRAZP9?_%e#Xc7>YImGjQx&E_X6nDY&yILln}Fl9Bh#s@EiPXjk}G|!<2PO##2#JT-%=(trZTnc7IB-e zFMIG}h`Uj9y}l|zh;CJ-M0`CH?BKk@gX++G7>NxJ)InJXYQ^9Ca-7k7@bX|jTkINm z)MbFSHZH~!QQu_PaBS=sSXEB)g>^O-F`_T5$3-UTH1S-v2DkWxgCl*8vt}ziByYp% z?}o$o2BXbNn`w`32d;+?|5TCOpi@mOY6WK}Vjs+)Xv1z6!FGjmn3BTPld?S}3{X?HFX(JSEPcW*Z zViuKj`KK0qh&HLUIWLYgFx#m26PnoK3}r|&sgUMYWp<%YW`DdMX{1~RQs)MRAp%f$ zCzGv#|K^GGZ*4;0Jinsr{R`NK(U@~uz-a1aDu9%wpG>qo&n*@38o*76*)d1?fMOY? zEB@5?f|u41RI16~+SlPirir2`_I>#YYloV{)opreA@TOxws*(Hni)F3f5)9>JH$?%JTBAGt2-0#XOL%CtqXWAkg?~WJA_xE z5*~oe!AiBfvr2SllAu}k6f;;Q>3#+N$^Ipn5_XWNMt*I;=wY2V|QSRBaJqmv;iMtyk^FDU*Koiy*meGEjaeNtb5Lx1!T6l_6tg-ML@Fk>_CFy0so30$ z*cXjd@`MSMw=A}5y{OmQwgAXnOZy-t)3D7XqC01Eq80cM=yfZpJti9O8`K2KS77D$ zeRff^iqJquxay__@0-Es=hV#a9zi<5=rJ@H)gi-tx$VVvvrjtBEsWOQJ>c4|D(vB0S>7(v-ta|8%f#VKYvLzdm1 zNQ*L>t<-daVUM}KVRy}Dp1dpNxKb4Co%Ph%<*8Wl8naa-WGWjhoJA#`Fn&;Nq?(CC zlHad8d@Usk2&}xrE!(!Gt&y>b>73n=gfpcmwchPH`Bw!4do-b z*LTR_5iXk>ydmQSOgF9psy$oZd|jlVrI2C(OGqd_WIt1y(9h)N>lg-)8i%tYvUH*q32p5mfCtmsWCmF4GbQdT`UF`{`YYk zX>^!F8o>Nwh%+_82JFwJNgWsB-!A3QS$n_^8(pPFg9dKIdv!*Vt1*8ro%o5wBA*v6 z=8IrW2FI>crAt?VYj%f24XwymLB#8!@1!;i$G6u=u|tY4Vl?5^5x!Vq0lfPoHbG;? zIFgA3`GS`{HaxnAc$AbzrLwH+Mc~vfB}bgNgPhoXJS|}*r7OfA2)uS0B*O8%uH1FY zz`hDpVv~cljuTOnzt{XxR}~C=(m1GQrz!v~7MWou&04ZKn_nBRDc7WUBQbhjDd3yT z7s8T|C&buKix?ar%gZiSWp^fbq|3`^wfBWW#_PH4*Kl z$;RlL+03__+iRDM?Qi2L*@bStwfBPN>15c&%mZhZJ8A7-r6>p6)?>|3H=i>r;k5;v zG(6JB3I}_KO^1!*j2A6xC(E7ah!iIK>o;fk$#~oSUBj86U3%CIcGU4TPk%7ZP5D3ejJX%vPZ&XquZXN6tlMXwW1IEjycYd zEL|xOI@YJ3Wa9u>_uLtp!kUdB&|ro6_kaJlSU_GakPJR?WLouX#UE&2TRIt%QWzu6 z)1b5o5~q2P%DzkZmd8o#`FqkC4Kr)-){7MOMw&S;{^j=G^N-~4qWw}`oshq`O$Yk~h$ED${s7z^AQs(6Cnes<7sz=%2;vqb&!KpeRaRyNh8 zsiPM>yTRGl72X(!-f9z_<6lShO?}ALqwBMEMaTBJ-yl8Uqa@W=Z|E8jQKq`dt=vAk zVSYhtk5UisWtJk?P7E-`I2?He%19{xL_e#__8U1W+u_6+U>m87DEzfs@+|G_)0@wv z&VDh&lyB=?gvVGV`egx^r7xm@M<5hxya0xaQq@;)JJUBXJPjN^S`E&AHuB7O{Ai2P z-{UFW^b_&JH&JQCe*{NM+xV93`NSxy%2G9 ztZ@g=b_{qg%MJ>lN8ZJx9`>#5%q8JXcp9yTy81dc{+UF{mL6Zl3HpW;^@7#&=?QH& z!q_p1&XYL#k6MujyP-@IG4$ zzo3}&tLeItE+a-5t3i|D@6x)ej=$Xr2U7A>%f&t)R%T)CzYkWr_R3s7j7=qnEd=_p zuj_bDkkmo#fAo8pl>d#hrj6xk6dPM@PHjEK`$2!jNWM0Ym=Hc^Ne|4P?h$TQOlbkO zt%Vp{)^_COX6L?KFY~^NNWSUVQp|b?iI#3lh+O()$S@hdZQJ|?wNc?EWW-M}uqC06 z{C>nu!it}%rY_wy#`HG+=31NW5SDYCgO{J@Q2k@*p++79`Uk(Vvq zVJmnHoyk$3Dz3VpQ%La(m3>)CaQ44>EdLW=nOHNGjL_!uggQ=bWue8wz# zruAujZ8tT7#*vruzVc@hTp<*_LKkcquYy+`|D?)9O!IJ)d7qm^psZoflalo!)B$5( z9`hO5RpASG%o0>bc8m1&BR>+GJaRa^y#kF|2c!}_EkFOAo&`CNs5H~f9L{l%zJ@FY zyG-Sjb6dCA?x519xdm{_B80Vr;`@vx-SkFt|5w=EysVWG{*@Sv_S8OpTYA~ z(IJ*vTYH-4QGG_5fq=YEGJolqqIk^bvtD>g8!^Ge8OQVHQf2J89een5(rTS|h6Y5{ zehH0r?j)$&d@uevZQVWJ@HO4pE zBMD+xZt*lfB8Qn%yAbbH8E&L+m#j?)gF;F+d>?PeHyYjxwEm$jI=q+BF^E zy>ffd%<}>4G3yINlzL~1@rXqqBSd|dV@gBg>)Mn0bB#teetA>9lyIlEzcDv;0ZTSw zQ+`G2Tc}l+KCeBfyN5N9RL7_yzuRS#E9VoCdX(ANTP!M55;NoppgqhoZ4|t2j3oX* zCaSl&S{FjAN5HBIJcZe&xvx97fPnPMjd&G+d~d=5ZDD3VgAjOu*c$hgHfp;uBb}uU zP1XPpP~oTUl=nKhQ0d&OJq#Vp=YIl<7dom`7-3Wew)tFJYy{^u%FYE6Lx_QE5F(Xx zpCTSvck-W^erj!IHPiRpBatvfx*d;vJoAxi;^6#(0zoC!WUZC}6rliu+KGqj`3o_x z0%^;uq_@Q3PQ5|K$mh=a=C9qY$9-+O;UOlx5P1NxZ%BHNvoX%+SJ`Au&B$@URFf~Y z9^S7;zefIi4__J2hhiKnDFh&_$+hZ>()bCkXxWY%6>4Jh`Qb)q;6dhrA=)W25OLkh zUP$ld&}0E*d-xqt@Q)NX5qe&|lG%wK9-O+6tHUXgLGM_A%-InPUq-t;g%BhZpn|{%FgcsL!}g zm+9U9ayP(!;bl~U`;5=_Jo@LK6!c93#vBTF|5WR|F79W)15g2Pw%lM_U(iH>DD=4h zN6DE5Q{qFp1XFs~hDlmURNK}@rj)75q0}o)2X#na`&l^^_}exSeN|+G|M$v>Xw-$V z&4}OCmWIX#EE;tWGdCn!7V4Zx1JFpvGfwtsD$j&^p>59y%iG-p-wL;2{F!G5Q8QVa zzfI%J(KkJiR@I&|=jNNtt$y@6n!IrF@N9BGxT3-Tl5=G0`lYQ>mr@(McF>Y7elEj9 zpTwH_d>TaRYE+hH4%hm>{$A~``wLC)!Qaff^E!?c?~(2BTdG?OG-Qtdl;u8Lm5^m? zk*QQfx{G#HFC{$+bj75uK1<3L%H^3tX8ag^zt23h`n z7CrMY>aQn!Bp1)=vk{=u$XMx(K&tORst(kDKr-z$Tfaw($(zT>lGt&i zYi|(|^5#u}Dd}8tXPm6Uo2qNnK?tt(AAU`GT&r%TJbU>;cUpF8a@O+T4~Gk>X4TCJ zkySd@sRZL#698F+mHj^D$HLYf2Y*Ql(MhSMrd!_@I>RpErr4df2-c!10 zQf*(jcCoNu#=+hEKbni6`&tS`oKknk1iiF;^!3e?>#EOIqb&pCw=Usw8jQokab2hS zC}7+r6dA>Gn-ZiVON^AG)9d+l-J+iFHSEA)!iISy8%xK4w63b($EXQRUit)06QPt& zMPjLJj^|u)IGo|(nu5>RA$b@Nn(PpRmE*hl4qS&5S93%zKOm|j!4LIJEm;ryLm+c~ z<+qJQO69Zfvlrtw4*HQ1;UiYkn#s`8HuytOuGNWvj1Z|R^xb27j~~p1{REG7FX0p$ zZEi5Fh* zjmQ+4BfE~gvm0l@AL|T$cw4KDKLww#S{~{9EN?pUPGW>3VqiT5(L^^%F>JMZ^77#R zro+{=%aCpx?0B9OOV;g;@t4+wojZ;Ni^O(}r6L(~y-@wJc;XvJ%&^}2&QVYD{nYdM zshiD9gRhS|oDRYUe;GlgAMoIs>ihWf(&QW8nx=ZWkO-7(*6z35Z?BBcNU7t84iZXz z!ne;L^JXiT=`G)tthBBw{5Jnmr_O6V7Lov_O;`?5!nz^DmG> zo6`YU@F+gt$A{gWC%@HEF}DV@lj`>pN%T0k1^pBj7)^vpg;FYhEK~FExbpSO^I>>#F0Q zfLk#QAN6`Xiy9#QW6A}1xd};h{q#gO961nPHwp1m_)U`o{Y(icJ_}lH+AupH-h5B$ zjgZ*(-#VSdw-M*Pzr6>~{S@1EaSuKeh>uV^Y7eD(d*y8aU9IJ;Fz=3h1+&Gln$z9{e&5JNS|^ywTqx zrQZ!~4``FZSPQs#826ujt@dyz}D{&L~pmA5Q*-GiqEFKN$^bX1XCVSyyTB&v8=lLpPhd^fib z;gR698g^8_x=%DZToiUtch=($(f-Hfhi@w8K6G^L{VfvPK4|4L&14Qt+o~#sDs3?- zp6Bj;+hxz!MX{!m<5O(vH_z0ojV>4>j$K&rr9M-m7x1pbAO0~9jI2kABH0vCJeMUV zqy;;Y5c#6*I=4>?vtPChFZ;2$_&QDNn=e#Z^@w=pI< zU=aU&0>rXd6wlM+{pBg)Y9b_kNAOmwf9i{EDHi-A9or8A4fj1j>oj}M7W_Er7gJ1& ziCz$L@|%nxA4zAy0dW+=+2`HI{;X00Q$s5TrWs+>R|&YHiOr(UWAeoa(*mxt9^I(i zAM_t7mOOvn)P&$+CLkw(CzS_cU14nOhhJ-&KVv)1oWwIkN9(L9c~NRzD{TFhqxWYT zG^3(rp9^ zl4*|3O<6lcQZd;Xy!^JQ3Ehx@P}YmCa-q|a?+ZU2x)358i1?a%$UFR>j6)F&uOvi{ zDZS5~%=$qfcf}Er7S@r&U~#0l^t>;ViC#Mt9ryd5);FV8TZCV|T7h$T!0bA?zwG_p zd>iwfbcd((Do}reBlEHU&e-$2$(3u|=7G)&Eew?2S=(291|1H&sD9C23>G8*t4^>* za2z<4ARD|hR~6UHB-TDBHb+_|5=^{_Ltit9K8ieY{~O&D(iUTtN;9&iA%2b(KsPAe zK{O9CfaOIy!0P&iaMC^gWBD)O3# z`lPUPt$+@BjVaga7H9sg%c}FC3P~O#`!T56{s{0DhXg0NxxTj@ zm(J=wJZN1(eKp5YG#l7WznuweKP?6EMUDey?0msAd6pHEHzDPYcCD6I_@gHTct_ z#TkbnzTl6d$bhU>cxqxX+3Vi-_yDh#U-Vv7x5NN5Z54OUjmvTu-|42&v)%YXc%ge=wW@(2Cm$ZgDPjDS*yy z0n9Pr0)wb7zL{nYSVn%`(DyJS5arx0x2x*L18A*S>`w|FO?r_)p#b|txd=&6n8R=cDj9hqM zN^ri~9+Bga|M@)u?1f7`UvHAie%4dOL8U+Wm*~1)TqASu7Mukp8dgV<%7ZF%K&UM} zzuW3OlWkYw0uZD|WZls97=3g>&oPG@cTkfZEDrk_V0$B9SQn>_{Afr*IC`5!?-IJI z{hS$0)@pIkfGo5jbyxvSGY@%m$^c9cZFS`SdfgPvTF5q;d5R2C5*IMf(pfxS^)KGK z0(9uuE^cXz5nn2FoN4jWSAoz87bU44q;KNIbCOp_2vega&U)XvEgz_BUXgU5#s_=e zN#zibv8q&~8>A5C8oMW-dXo#{=%j^7lbuv5#lC!XUXnBY6XJ(aK0}pqG*KeXp)HfK ztfOB!{l-|_r@<)^g$xhUh{DdE!drOU4Q(g24HZErN-*F!?(%-r_V6fvfY0j8s%QQ> z)^e=g4nR~d|2DHE53NljIQaa2s?KG#dJQjhIvlitIr4lKB)pS6=KYR0MxZ0^7L$KT zLH1Mc{uRsjFn5S$8`bt>U#J47_q=bl7Jj=HG4s0?IsRnacRRUwEaA?mcb*Co0&arI ztcAuS%VxxyQyap+Zk&DMSpx1lpZ$u52%n7|zyDEfn9n+*PW5K@hDej`;vfa8g`SQ1 zxaR}Zgu@#HwDCQDS}nTft-`5VQ#irKz_4oV_R@2fj;I7NK&G-hPVmo+N`T@;<5{mrc?w1U4v*%4Y+ z+0gG6;9t~hY&s>qmRm;Nu@F;w(xaTcVkHJ!Im#ZeeCTNxq51K(cX!TZ7DosVcfiSm z*)gVbTY9zSOCnyLocL1 z7TR7eKwlda4H1>>b@K0j&*Edts5f1b{9LA4G(8F>7MT*re+As2*X0v2 zuU8iBa{dQ<@A=n6_q>mXE=my;=|x1Ubm?6{0qI407m(gd=z@q+Z#oEsBE9z(AoK_b zC|wAI9(sV#L*N%b_x=7GeowypAP=&y-JLUM&YWwmnVk)y_*S4F2WX)YenNYVG2i*f6qtg&yUJ{`rPT0g`+C=Jyy?w= z+=2=2fW`kfHB(9~vLD5UBm7%hueIR}c{-PXTURFOQydq*Hy$n(`|{+2zEJa$?upk% z$c(J(=AabC-}-kZm^!@YXhE4>UuS`bE80lm{pEl=bQPiF0*pQ!>#`|Z5L&1yl4D= zS1eRDP^2et{1vD!im_r9iiP*DXv0Zg2%j4BNd3~Q6+RD4{@_Ivv+qNIBb^22l!sUVyZzw~0`LZH76g7baH zFaiOc&6SA+UI*Xvu8r6uGMBe@Q2a=+sgh=lAaQLm_$*IrB$teY4&O7X9>%vVF!;t#}EA4 zjS>PRUgqNix{Thw#wG~*S{rLNCygx6?f>Thl_@v-UGNY_Tv*HITwLnvWLxPnveuUwtVP?ru1;-zKIJoNq%LU$tjlCi^gvu_9X z07-cvrsMUmT1EfT2)wUu^G{!#@^3JO!6j|)+;ckWn)hmOf+un*0WNm5Cx>fHXA&D0 zBS^OkKkt95ngH|J;ZjiTKI#RmdnU)+V>k1Kxbtb$^)u~rAFlDy;NJYuB?bhxrkfEB zRx-_0r=Ha|+d*L5|L&B4Vyq%)o)pB%8+1dNEGc)?8;y+&_@8-KGOFg|6HB)-OvPbE#Bl!M~-__{x70q&e z^@HkObl*^Cz2!3}ptu;VlQDT&s3Bfe?%sn79E4*`v#u(tcvO2UySF52Ou_xNR~MXQ z+a$Z}-;x|aF?K72HjvnLeY>&abRg<()E*x{@w_;fD&^Tf&?gQ@UYZgET4p~r_~BaC z!Zq(-h1hTcnMQ(4|FrA1`rnxUt60Dwc8Hm4)Uf9v)^w1YM5)hRq`(M(?_3y{6hO3~ zGxwmN)@|`z4U3k^)(l!LxRhtApSi#4jxL$&Jx{bg1Nb{a_huaz-@d|@Ed4!tI0wxS zWvLfz#I4iI2*n6OZ>OamhR()FUZ4YA_9CEQ8p-SVMsMq~=@Snx7-Sb`2Khd`*_)a1 z5CaS83CVxy+dBt`y76YM^=@)kF(u#Xd+@S9>sXE!JzxIc(4YSuy5CYW<%}!%er3M= zjl_e>qn?6Wi0!?np?~f~Q>kZ7p9Gub*RCB#BSrwhB7A^4^ta+^u?_u;*<^R}&UCX{ z4uoqEyqas`6|FlC8l-n2)zaqn?+C1(VKEx<0DtG6_96Aj@x`|&EYB-ueHM5|z9c8M zl*f|I{?f120^n!bpTnc*dC`hh$-f6fY`7HH*kX(JXO~Y8Sq=gm z5cVw1mZ<=mvZ&_wI%^#bI)r`#2LDyAi2hBacp_v9CZshZAL145*Qj?UBFz*0oA31+GGC$uJJ8I&91I z*m~u)L?~y?^YwnfgJPQIX{k0Sa75|Pzg7|O1sj*v-K%7|c*S*FPj3X1 zGs*h_`6}~8YZ{xC8Mi_KG7S}o;-UHzFbu>+>ki$w2 z=k4dtd}vwUeXswr@3sd00utqU$al|{vi3p`tHVnk&oG0!Sg9Uc=iw>0r8904o|}*$ zWaC(*l~i{1+nPrgSFH2@HGB(a#`3nDhhZO?!z{>GgkO^J#Pv0l+CHhv4ahAeqp=|D z6%2i!;}4}4h4c!oVaB8qY1HMYB!aRawlXo-@M{(Fgl5|*Mjrh2#fX+E^;0vUa; zTg*ImH4@UFVf9zL7*S%&SIE8QjSj|FW^zN(1#n-vYL0)cEnJ7fBN|!R2k9r?1N6^* zJ3^YHW)=Rrgds$bGxS>OZb`E3_IucW5!S!Y`+vXxPXqt|Xn+hUhvhiK4a~u{J9N_T z7g~l5!&>y8tPt(i-ePK8TSu_F_CM-3K{-2yVY4@KLH{G)NEz63Bh8HG-4s zQ+baXK?!%A*~jhs?+sZxaCxXQYp{Q6MRhjnh_GWv+sxu3SZRNf8O+y)OJNdP* zX!fK+#?F4(Z#!cZ%p^)Li&_o4lfG$pW;p7vzLOaW0Bl2P*6Gn%=C)zkt10Ld_?e*g zCMr~HR!;U#OGI{V9VIJ!=d8RmX7)b2!@D(4+dVv_)zH>bY^&Ers-}xS+G!u%Wc-+; zmoc1+WMHfR({aEk&OG02ztzFTYMz+e@OuVwUj#I~Lzu8eu1rjT7A566^di5Oc9A63 z;%|qKgvmM29$>F?ScfpbDVPzUkyY9@pC?N=lE9IOjN?kYZxQCb2ZWq=YI*T_F=+c& z@!)}*3{ib^%;cU^b2^{!{m&U`w#|{?qqkZQ(}0VS^$t6uj*B9HNbs8AvSBr_n%&*; z;pz@=ea9|i|6gv(am2GDT9#;~Mk&|Vu6Cfk)5YmqV&o!-sV?>je6o;Xkr&~~P_Hwt zF^yp=+!3-^ffy+)370hUZ zhS~#HSzzn(EFGF2L9-s%>kGY5S?udxm^lX4dM+ z`g2|Jt~lo_a}4Qa&J7@{-yyBwod3{!J%r{z*O!y`;9v9) z+?vq#2Q!3fk-Ja-zBtl!CB%xklY>i8dM9r(s%!2bHl|xE)OViW z@muW&`msrko`zylmB!Oe{cocisnnc~OgBHfJRZzXdNzcU%ioCaE(s(`xW8xe_SzHU zh1rN_zFQz6Tjva6L}!b=jHaK9AG})`+Mo6QJz1cGI^ASxvrE45-xh6-@*F&Xe;=0* zdb0DDPo3xLbt}Bh#%1&!Tbp7?O5^bv>w3Qax@Ih1LwZE~#V}-yb?z2Ms^7Z62O>#H zyHG6*N_1VfQ-(Y24j(k0`t~#o0^q-MWoH5?$dEvSb^Q6+2O$IioUNU=Ip1gMe;!;R z`go%w+w}3Jf1PigMZB{OI)RT*-BLHJK>AGN-RH+KQnKy*~lN2at#ynHSvJZ_;TiW!}kQlKm zsEfZxd+GN28?{mGYlpEB;%KYM=2o_n-ZZlPW+byaY+sx0w9i`5cz2VoeBCg_ej8nH zuy~MDw7ImWspXvn_9e_r7Yv;=Wtw?q3Dr~ah;|e?#HCjEm7fhNJUoc%%5pm9MEN`_ zI|N2feEk?geTEevG^d!KqvgVh#71(HmTZb+?iaP3H_yB$tRNAv^3M>dfeiDh0R0FH z6p&~@Jf9uQCc6Muc0#+xYw<=Gb1U?(58Lf}KO0^0qFKj0m|6R6=O>u@rxPV9Y{+OO zxO=H$Y%WWlDwzjMKXTQ;?@p(dZYg1I%-?odzki+isJU4 z83+Z+XS|7d<1$D~8RYu69d%FX57GkaWMdhR_Tj*U{OeoI?6cz9pwgu^Q>-X2=`Uif zttvcAUqg4^0wU1y#G{mL5K%&wCoyaM_B(GW`CXe*M9$VF$}w{IFpJ}wqi1+jVR)`N zcLd+h}h$6)aI#&v`KW9>oI<@n{f&Sol<;DK_l zD<#Z&!Cv)OLE;C6`7CA4KBFfvN9#Yzv6~pC~KjpWDtvRtv-oAT` z7sg~Yrc3JRhT&~Q|Wjd7BhS> z%J$J_uG=K&ffn=kG42}+O-~1AOrNeGpl%a3t3a?QC0rYoo69l$Pqm5DGylWy&+!DQ zL~m(R+|l6N@XlOdvK~G~f=rO9Db1Wv@(P)&hK+qpM4#q#R~NY(f{|3^;0fHEX_}v^ z|NZrj345)cy4!@W`7bZIGmje1mERx(X~JmpE`db6m9K%Z=8Rr1IM@lnN!!1+WT?=K ziBX}SV>Sb?1SL8hE%_vOA7P&exyn&8<+R<(S{!Ygg^^=NIG=x;YmPs|qGv|cA}q$?H+okI)4f2KAJywHc6Vuop_!VmM$-+x88Q3O>WC?f%vOvCddR8BrSS6R}ke%G|u z6^WFoQBe5CLUSJ;sD>Z^1leh3sJX>v!+Lo{vQ2l#b-JgByy(Y0+V#u1saM z<8R&I34p~_b56_466&-tNXmQbXv`VWE+v3GNxLw(;N4Zbgds^vcbH9>-E~&tHEo=K zY9stpC{0ZJsSB6k`P&GoCROc3MPs(%gJL4b2aqU^HtlhPnJW`br8HQA*XL3R(2vG~ z2?u6-RT7-=Xs8mU+DIx&Y7k)Rxia{E)I@)!nB*1Cb&PrYTPPOc(FiHE<-1ceUm_v=)x=d)bV2GhP*B8J=u3fQ!Jxpvf%Z5PpEa z3MZE{Xu#aslsd-Bi>-BUZYOfy8-@z~)8qcjJ}pQyO=KVX6IP@`8=LE+f|Y%g*kykT zCjWF=`I}phzcmZMz=2+^YAS7zrAb?>#OWd*P`$>9a2Vrr%$Tnrl(cXf%4s`~x`V%+q`D7d6(J zYT8ww1?5bu1jpw6)DpCAkJ7^}F>{b^-Q-Q#I5!ViRNQa#ET>t4XtIlLdBsSf8Nhj5 zgn&s65~mWHSL#>)Jos|@3M@j5by0@>ofF?khhB#KI5>E`F1>t2Z)kb?yRHk^VQgAR zvi@iM#+*Wa%B!Kj*~W^k+zpK(i=ab<&9|R)1nquOt%&;=pKr`I5GW zOsjvU&Sx!sA;-TYdJdy@c}yVRno~vZ95;Ad#A#LOfS^{^sZQA#n`$-+z74*-G3L5Y zHlQGS_QRP^Vi^MZb&(5pE!fQ48+onMlQNUzk&FJQ)t`44x&prfUV5jO)O!Yq#)-r^ zNIk_`dOF_gWX5@47JD6RvxFVG(npsydeWZV%9QU$jr3o7=Gu6nU;J@2j}4X_(NdI& zU}7xZ$!!n}MewvH%FL8@W}a0R0=E6!z}h6MUN`Pp3`PJg5izlf*%x0iGwkrhz4uGu z{Y`^p4drhWuI_|qm{Aj`hwe|}?D|<;;GtvO*Rnv_R59Tif0{i;@;v5fiP@??uL+<4 z&rB^jC9J@;v0#cK--_PBF_2hx{ji_B|L)dD3nQm#Nm(1lbPH5dy#a>bm{v$>L)51h zY3iAFN0I$^%SE;RWfN|surST3KV9E8tqQFMtn*Zd55T~TlIExO`=(y>$F)+JiKXr> z=GF*+-er7a!5x;<-D%UvD@3SL5}{KN;i#9nQ(b`hL@exlUj!Y%LG7~;rIP<6A*}+Q%(Sr=bZ#LpNWCeZlvYjp7Hy| zmpZ#}yLvleKa6%bo$I>zMC{^TVhcPogkDc82?|%9lCm+%RIcLk2W=6Yax>qw_!C@E3G54`CCs3kf z9RS4FYAaE*IyQ7>RN^>rJFCcyO7+dCB-*t)v<=lf1NljOBgH_(0)9^gc%^j9{yCo_ zn?Uc+qGW4tfO(}I@P{v>;>~8KMduV;=@O?d*_K=*@Is256eILlu#LsBa z?4vHcy1aU$_&1 zAzjNEWe%bjBER<(YNO8^21;&>ZMXkuHMukY2beQvrjsHfl$$ zD_8%wR|v=?H?S6j?Zf_xb<1KzH+TXg`}6BT(%Dm}MtWL2DRopRT4<$}mp-_}gcoY} zZQ1BteUbh;XXc&5ZB^Nru|7>?+b{cu$kCBq6mxk3UYQev;q0tjcWvFF(u4-09OPR# z+9ULk{t5V7#G`}DyK8V_udA4RbMCP|CAX8xCmxZ9tpL#wBzLwFNZ;r+M;gI1Ckd*8 z5|#m|zF~x+hHr`fQOgW*$HqBE!^hd_4ZOHRQ`h*NzUcEIV_qU2f{;?%q>_v(ovDbX zYqJZQ@|l7B$+J(_svgvE+XdTvI#EWrXeH;Yfm6Mx4PS@LQM*$!gL905bg_BXj4ow65zxHBA9E5{Q4XJ`NvOJm8yK{x3zvwvcyWhC+^Pt^8 z)Fo!_Ln0{|RI{N4PUoOjxJ)fBz`TMD*|bRqZM8a4HyEm+*s zkWyhG`L3iqomkC6yh3m#04{7k+P4_hfwC+u2LXPYXZt*2F(wF0e1>;ZJ<5w*&NG<4 zRTpWO$yhB+b~wqn4;qfHni{jO*hWihVO=62+9ktehyD!3P+?)tO&GqFQ!JTGZkRUV znNgk~zWKo5NsE_Ff<8=oh5}7*TUI$TT3OQXxdoyIamww9rf#gj|hy@1n;rp4QxN7Feli_yyJP>m@Kw+Sbe zf54i)M7-{;t|DxKDn-;-j zcglTb(t3p8A75_4X^jep#tc1J)&k0+U;Lo_K#$k?kK^f#KLyd<>zpzz1uQr;8wX z#)L4h;AsyLIX;Q2@qg0RLVjPoAoAUqUbaGQl<6qWhQp@1AVA%Ml!LuyvWZg7ZGtO| zw6hyX>%yOC%XsM-@SC2v1k2{lG%Q;y-qQmvYjK!`=5agLs=?oQCmn1ue9usr8@DaX zvM298N$i_L3luaAAMCTQbS#vA#v1R*GB+;wqY$Uf%9og;G0*%b7?XU|P_4fq=!d0N z+jtIPXjp6^JVT2s*HGWEWLa}OVsELmfT6UrhYCnHCai%w)GM{<^Rm0t9HE*|W3^kT zrQWGFrTN;Vv~7SgJJDKts>-=vprkvvkWSvE%#blF|N}zT1|9fu2UJu?S0v zX)!L1ZnyuK7JJ>P>FExfT#;1zgmiDI}}pBOC&jg>YNjfg@m^#KHc0-0_?XT2#0^>4Xw=aR+rKmCf8fFBY{4`@S8?=hT)L zunaj1ZmP?&(^u^C9d6D>^!k=Y#Z%~P`d1-dv{3DbD*T?Q7rOgjzy20%44IgF78(nr-QSXKV|1C(IbtX%o`-Ks4p!60 zp=9Y1<@Ijrn6dGTVbA^_VxKZ%lD0x^?D-lRHMH+MTu2C{JztnEOvH4VQ^KAOaVX0Z z6h+lf-@(yQ!)Il+6f?QTpQbFd;1bh<`6jWoGWW3#5_F&72mUdViQknYApD>) zjDH0GEcX^6!_Gn5hV(YzSwrG)oAnLP&by{ zqq)0J)26sHyxYpY!!N}N&*0)a3fK+;-@7(%=QR~Iv78;|I!yA)t=T*+nZ>#r+`$*y z3zgG{_7!tDA#oalG(^~jmE%Sw@3oQbrehzWT0_ZzDGCX`4-&Loto0jjW@!D=*TZcX z&=iblXBkiX6dSS*mEj@aEq8*-n+*&vB5A37eb6QesJNu_>G-GXZx+U7e;tg3EuMP+O; zvtoK7_bYf7NKACR6b=vkZ!ZeMN{dLzc62EKG;ywbTM|saLRI0bc}d}0Yk*7+nw6Ft9~l7{A@IunX@EFF)`!Z0N;*%M!r7!QDyFm7;X!Rn5+sraBEEk5A zkpK4+|6?D7r8RQA@a38U@C0&(9OziplaUk@HVB%?8fq$w6KQYjI*Jhyl*5&bD_j zX#v&vZy(M?>&75g(klzVNBz#e4qhikMehX)5mT8ccSzX=xak{=iMDNjRVjl(3HF$8 zotd=YgZ%JV;6=QpXg|udf;=>dtfT{qjw-K;cZ37-Ut0|WsJk@j25#3%1rcM>GGGlCS)hR zm3&ui&A(NCLztGX)Wztd_EiS`*!SKqVT0VBz@v)(hVk_ggI~?$^(E^oP5mZBak=4{ zq=-g+tx&wj&wCk1cx1N0x*PgJ$3IeznIaRCzGBebb2>PCAkAA#BD2O;Wu4)Jg9|Yk zf-X6HX*mJA=hXV$Y1{gN3Fm#)rSf?YZ4$uD_(unvxv}+p-#44V=9htT*jX35VpCFO zJ)5X^51MfV)=GjWrq?+K2d+`qPPITXoxMVI_e5h)y9&QAq7}OvMzd4g?pZ3#F`^jk z-Ed^Cz^vhGYKI;P;xdH3buGgIq$lo{_)B{;On2R7@>><(J5C%ww7%6;3;YJany6_l zYjQylJ=%=O48?iYZXGY0s(yMq%XQG6+rcf~GBO9;IrlF;%{*Z}3rc2{AKOxxJK!a| z4C1C2%PwDdDVxB1H9P#>`bAL1b{>pOxk-6%8rgve$ed*TAYK3NAfDsFp2U!cOt4yQ zeO$Kf#mxBYY97czSM@u ztP3%R-MRE#1g6{I&Q_9fj6zBpi08Ycv)k35x3(_Lor<3iPaye;1LD^8{dBg24sP5D z5T6@YO_mR5G8k66RqP%`p6q0Z>H(&o@8-uEIBe!nr_B-6a@2oHcl~@dsod+#H>n{6 zGdY&~Ry0ThDQ@dem1f4A_#xWP`PLp5TrojUbbL!&+rOOC+HAc@8q(;v(k?Y*Yzgvt z9U+z4tg=a|6cp-84F{#Z*60h$$b&Y9e{>}aHPdQ4yqUE&Z$EEi*f9PFX7Nscr2$$$ zvG9y6@ubtk^mK>fZrrXHdHVCFPAdEK`EXZiqxDUVJ8l_N`h&%+DegH3hIxNx&zelH zfpiqr7{-15<`Fs;jRDq(?O91Hz}JV(CTeAn%C?fNix)GW_B4^vhd7%H-x!F#jLT$_ zqB3I(4nn_^7Ac46;cNfYSyla!y}?Gko2inJaZTF!>3m{kATP}_CdBQq%)akj*U$c*%F=!Q%XoBWITG}Z_?HC5|L%9#DmSb zNn{WZ9ZU3}Op?44zp&X!72A$lTV9v}V!5z_7#>ojY>`(;ABCs%dDlY|tV17g5?$*_ z3UVfb(_A&%=vvCSPH z_TkEd@`#val*JE@iJ$;*Ya*J-b9;Hn41e27{e1ddngfhbx{&)E=J${?u$kMB@QTG&Pn{H!4V4o47mblOQ)GnO+lo`*}r0xFIwfe z&-pMgRZPu{Z;ZsWM|U*Dw&W1N_|u@o=hDP21Lb%q5q&JTvz0Gj3Kk~DZgw655?|K} zk5**-^GjnuG3?3gDVAWej>F@Gi>JGvK06zH=H2{Mp-ce(4&69^VN6x{X;7zCAwh+gy zmcyl)BQ6Q|4i&8+DMNR*&LQ+aBh2bWA$wCV%0f}TXv6EKrI4!QpEHd4cit&G}xYVhPes{+eg)cog>iXICjnN%;$A^ zhYuux9y2>KUsMV&&1VqA3CVNZ7uY7b&aNpxve7ZI`fe$Gs>v(Mm6g_U<_#DyLk*YU zz5LFy<3p3*DEvk?>trZUqRF{vTayfAER}7{ZBEui7Q5qDu{IU{hB|Hdz zqmB69|}lK5Q&muQ@1vose1Y z&p>{TkF_4bkqq#-3Na=Cc`3xd$d>&ryuX>h_VaCFs`Q&t4xt*VFshKac}vDk&wUFY zJ0>6V1GgJg_g;s`z~XDU=fs&Fc^8a#=hEqxRBf7|QZrHUWy>P|y?5CKVYj>zzdi#f zVOiHjyK*tB5KTQu>A*>of{J5uDw02CGTS;K@(%4Rh zDc_|5fBBAabc?ckr5_>_A9o#ZeEcJ?qm{MaP+(VcD1TwwN*B!OlWWjn9P1>}k_N?( zJ+))plMD&z1Ap=-+jWltuxoiqX=Q!+raol)cSpN~z=vKNtbTQZ(S{^l2hFsc!m)(@0=`EahQU8dWPsKQuAWFzy4<=n+B0bn!H5 z?)n}SYO=$h`(2WU5d6woUbgz?J#o@2ij)nzRTp!QA9Dt93@zd@itnFU!Z3j50#-}=YOx7_grf7{_ufR^fw|Ht7%DL4ey2gt7D!?xdO|={ zOkfwk8>vtpGg*H9q?&5ItFaS=s?9@rRSMU`*Y$V=ooaS-j9yiHy7keNXt3qL_2NX# zQov+@kkUZMPLdFAKyt=H;oa~R1yF{CqvKBEXDLI+z$`XZe!8);q{SYfZbjMgZl63R zAT*If-`^!JUj$K}$2cO_wj@trU+z-3f53E`P}ygjzs~lj&7WWIY9Rl?Aepw0wEnj! zv;0repJjN1$AHQI2wv+@=qp0r#)`(QSlp4dZOQrVi#;160{jl0VZta|P-DNIQ3^)9 z_vZkk*sx1Wa(0KkKBSz}>O}O>bqz)2+mFU3r+ga7fmqj{O|n6ybW^ggT{3b!MuJT(-z1&+^`BxgSM?@?JV?p7}0v)+$RT;XU z!6tiB-9Es&l(T>9dFkN&q8po&RR4}A%_ymW=iMSgUICsKG0KSv1Dn76ke*`_$Qgm( zV?Ob~!nq6TiOlZXWc!_Iz@7KPD+#|ENA0KF*l74{Zpn!|o222s{(DA`u`C-zk7!Jf z5xv!#mqi}i1#*uHUz0riXcRjgDpWAc z@z51C!q?Wlgrf1(I|5H6v-!JGM(VBxatPjAIdXM%B(uj+8}%-o%>Fc?`_uZBhy+>3 z96()BNzQoBYy*Rs2&2Pv8qTbO50cp~ptNF?Z+)AJGpYT zZ@*QTp(R%Bq!J2;AsxUjY1o@d zfP4sF^91&T&u{I-$QXqvE?rj}vN?Jc+&1)JZ#f9fx&6Y~Z))y^%L7T!4M!qc$*q51 zdr!=Occ*B1^D{>0bsWFEXfNDO!T0|FZ4+?uqydx&(@GhV0D_JSkIq7+R^YjjIoW*> zhl2Y_ZV|i1mTBKoBDP|f0O5?)x>r*VQCx>)wOBbplKxi?+;{91T%#yHqB}n z_T|7MABp;qEVd3g1BhIHl zCk&nw^5gBovuubmo3dB|+;ys(aFtYOJrpY{V7~7_=^~^2W-+8xB{|3e3pK%B@&~y# zEWgw#unlK^3sB%$Nlo0htR2|d&7R2H>w}DP9maVr@#NB^YIUd5-~)PU(#wN&zqB#w zux@G3#V`V_kY0sBpWAtdMj9fyvAyRu;8>JD&_4n_IYmuqK-Ud>S@VJbItv` zmQEwTLN&o3st<}EMSA7&3El&Qn`1rsBXVyu_t|0Tf~G8PQgi9Oulr^K7f3!lRe8f^4|LJ;Kfc9rfZ8-!uNGvPw zIPt);_Wk4)yA{cWS=!q8W!dTLSQHxzslXsGtN(uZLgxz@)0UtMxjS2okwa$rIQgtZ z_(Ij$BLGpos+hYu=6Q(3pOCbwF@)@j?%9WIeE$+z@!K$};9K`?`4hzEuaDE|Dhsdr z7}!(x?bYy1v!8Ju_-sR+w;|rTJ(Ik^6LF&LDNpWf^)&QXjaB$%%hB1^&@qf6iH0o{ zrw*Mt*h#W&&eY${jrHXl)kdk0>f2qu&pXyxX!T;}-NT`#QB6#OOv2%~)cUaTuu1xa z!KKEeX%86#IG^;4%N;lvw+Ze-qtxgouZ}`$U_$rn>(1)92tJ77%;l7`K7M)V#&maO zO90;qrqNUPq@??8&p;2a8@%jl7RzQRmZc6?%M-m7T@l+luRi6%f{I2e%Zr2B`*Zz* zEM4zz04YLmDd7Rv;Qn{)EDj&6d!IOMH#%p2!lah8(wx_ZJKriA*vHBq zXAFf--JlR5(H9M;H%?SX^e7{j+z~#`t$4h*8U(GKOuNd%5}@#xr<)mUw5tzozZkDN zk0%d^fwo*D*T-*y#+McJL3JAVMXh+zl+YDk*R$tSY%r^F-@ZPXZ(>S!*jcDq0`2*gsJ=o7qlCnRNX>jpi(8AlF7TBPh8P#m8y>wl)4UWY*)opctGIQ(7 zK5O{XfGWJ}><+k`>P>f-<(9mR>J`(ISPHQ}`~`yW;NDB~mkA-sEXyrADK&UFF|6U6 zxkh|Ahx75{^4>UWnvAPe?t)y1U9&RWU-ES7_X(<1JyB~s(U0+nWI_+lagP@dR2t8h zE6;Y-9#L)>|JF^)<3r?*o+8yBu-sk4vGID=1@K%E~@QjR>vRp20gv!}m0y$#c{)AEgXu?#veeer=}CyJHRDTz(f^X_IvgFAa5V{dJ7gN-k| zG-2_XD08hOFVc8*57&^hp((->L1kY~=Aovm zb2xAeq9CtUS;=b?%+|}uX)6;v)Q?L|71D}DA$oe)EPnodcd0BAiakATqT9woa^Bbw ze8xG2&9kbhz+|GuVy$a;Umc&cbMHxnqq6V14eln>jD1d#>{!ImuqREN=WArh8bMy2 zJJhL$miy|MwX3?{rS8iS5UM7s-z*LC4wOpDVXuLek4g@*5sp2U>G`fSW*x*Jg z^>54Ul@z7VLRB6?55LiN8>+PsekUNev&^ z?ub!tw%GhuxvGv_!|mdz_!)8i$G6ad;==O9ZplQZ#$~8`@|bq9>K4A!H)l+;+lgq? z*ZqAgw5XssR{Nc0gB)+GGmzx`ha-g_OP_SV&b5K4q8~6-MUL?0T{rJn)%?WURpmKh z+xbUzyPb4Q)eJ#(Gi#998kS$xPsr)H63Sk0< zTS{6V5)CdFe~GGIPO*8SFlUYg0y@Yt876csV+$#8cH#6~U|4sm5zMG0TTE!WZtub- zK-9@>+JZ<{QO30_CP3=Pkai5q1eHR-RqbOuc&2SSi08#)sh;n__nd_DO1mjxZ=v37 zt^K#13`6zBlq{^vL;m-4T!WF(TwUAyp?VXjP$qr2VQxBby4UfK?4$ngqKYzFA?$5; zIpK<#)Q3cKq-SC4s)u1knV(R`4K+)juz92H1$7Fa9mQY1mOf@%IuK0j$Xz#dm#bjx ztL37U>!}IcJ8KvAQQ9qri&yA~ewA&dTdjzt4~Ffp)MG>vUR@Pg16IN0r2A4HnU0NG zg<%(i`{Vu;<-sq3v6vYFe)zV39EaY|lH~PiD;p8tE&FMsXY|#w46IO zV}6je<{pXfAAYNJV00+*u>Kx{cr)dfFE9F&3;)0NzVolCCES{(2nwhmB2{UT4kDq0 z9zhL4XrUujL2Bp_DN#6zbTm?=1O({>q=Y6_AT%K=J(M6V^p?;G-0gk;gZt(Ea`JuW zH(8mP{mgpSS`$uQ?J$1I2<_N#v%*VA6%^{pkurxKKsYEJ%j>(J_mH}xebLO#ytDkajI3(Gg{oJ2idQ>ol8ex9%Byrh-wZ?h zB|97UD(?bA0Gfc~uH=7!8)UbCJ(Qz?fy8OIwShqLz{qR&RBgn=LF~s8&gj|MmX@Lw zhLH&El}*ZUH!&n{LwBT#!EWPTu5cYaMa=b%vVLghY}g0FMU{svYS)XX_q4Qrr#>5= z$}puooz6SD$_N(oWWTqX?htSETZ%OlH+&+el~_@k&;YOoO7kDTW1`GRaW+o0(frJ-BSW_-!dI~v_Se+tk4 z!E>Sq)~i%t+Mo%I&d}ZCc=zrIqugB$9LcEA55Iji~4 zqHvhECxRzvou5^|Z?3mHLWFf3{RmA69=|{3eUpjTRExhAAI;aCIK#S|DnZ8_b4e?s zpe9fk9}YsnMNjvUPgu38Ijhl(yR=Z-@hn?ob%=F+C`RlCB@zDd0Bxy{B@SB{s4fkA zYhBJLPcWO_89P18bD$~gHJNGL6~@*>Hq^Fk=psXLBhi0;fnTp1l~lA$B#U`Ut*Z?C ze!b{#&V~>9ckU13#kh8~)tNP4P?^_K%bC?;(R#!_XHkOj$}P)fuzOkeAHV@)kRWi4 z_RT`}oahn(!^ls}tGlTcmF+m6^8)=POVQLe2Z~NCZP2Wj3N`5oEUE~Nn=}}<6x4pk zb2}=$&^h%;&6q*$yEx<$Km^ZE@EW^rwuV2Ch6qQ+_T1Nps=Mh6?gerwe^&I70#@OW zsf?@Yq;nQ$n}J8Ad?H0d7N|e zJH+QGHn@E#Q=INqv6knLfu8G|++tm7tkEwA6Wf`yWA#2v9&@~p6nie!dFr~Xh!NOI zG>ML5uRTa6HKN%+eaS$9N6(e9kC)fny0+h zUd@;>{!rM6kMgFtwdzdw=|!_>&D-IR?@nd!a#cs~fV~SzIr+k6X;68KyfN*zB1Rb@ z#SX0&Y=p)_joW9g;yqx;dR+c@S)^&!Ez%+VW=TVtVxskrJlDD-4zc;0b~a|P<|>$3wxUXq z@^EV)MGOYLAPl^`Ven+a*cY8oh-hGlFH0p-t8ActjVUd@^Rt!h%s2DmykF5>`~?r$x6*wEkr0nbvLRvYrGY~qUoiTJ)=Sm|C|cy5J!T7kgO4j*(`de$vEB!mD3q1YLy?|uoYb+tu@m*7%N zf?-iJM*&tWpgQT_)tn8uQ}6u#Y2uw$g)0+j|ZEg+CVUEZt6vSv#HLQ=yX^d5xzIDPn)n z6UwmS6RbeVwn=kW-;!a0Yxr^yFX{j)3iFJCJ@WAf7F;ej-IaPis-qzL(NZ>~OyWaK zFQuYfydo!%wKl03K1GD5fobR{ zo|!A=OMSk>RZ+3}xuirm%<2NF>nq^g%Izyo9wT<$&D6@yh3Qv5XJPy(%TkXn6-P`L z1ZC^7$YBfj8UVfKn+AHdHu(L~Ouf>k2K|nSE#89(pxC@jlI%P$G2%&EJG6Dw?d_8s zh>-yqI9)G7PkksivaakF9lp}R4cd#*S$!gPe?<}EU?^5Du>!<0m_?WrJHCI0_T+4E zo#K*z;@>#l5v8Z~PN|9NLB9}i?Pr%jo=eN`lpS9vmHD2!s|(6EWc_KeB9r&~S(LD1 zQT!MWMN%`ut#j)(R`{_%L4zZ*w#8X$m3z_MT^?O(-{itu-Y+gwjwmL5EnC`N0Pbg= zm(-h+{W89#PDlmtXw ztC;&-F2#=cd><0+%$(LJUQoa|9$QX)e*yd){cA%>(?fnnE@&lb3Go!}A8+?UEG(Lo zA^wuB7*wZ~!^aI7vUzb5idT@X6c4jNE0Kn3X@+jqc9rxl-Xr(+zEGPKOndgAu)Rny zsM-?Rn3bmjsO;n_DwBmzEI%ZDiq|V9Ny%d|Q`1;oe-WcBQ-eTPi}D}7iJC@Dpxn_) zAj>fpC0wuB6c^VW7gEyj_w@V`-lz$%4zsrPe3SAwgDu9%J6*EN<@Vo^cSBMLqVEfU zrJ2S#0e#zG{NQFu{!Q%QMBfB#&ppG;==x|<+=BsQz8;Q8MP-8*fo*O$GNtTHsy`;| zVuQ21NeU>a=mJf#E6Od3eSTXjKFiuvwx&?*zAGwYniboP&o%FvBaN>D7Up>B!frT1 zgy^h6K`67DKdE$^KG^i)t*Ox6r zNH*uMsKFQ}>_t#}VBE^;i*DjIS`N25+b=J}L08JlH9t-VmXxs>D3%#L{q_+bNdkdL z&8&sr5MDvxkVwM$=n|NIwh}R&bWI)QcvFH{YgTmPVCT8%X8w^+xk-I*JjnDH*G+w4 zWU(FZmd|aJC18}-ySVzf|MpZ3nuYpQYM}xO9TUNkU%55A6rSJ^Hp?~h9ZC@(E_ToW z$2l)&wSjg=@&g?6&Iu_ehxm;P$BBro(Rt3E@6_JtZfJ;jod2dFR&MK4&Oup-EWQh- zUn)VY>K?NN3#{OCz8?<{KAaaY3Wdjsx%j@?9$wxG8FtX9)-3shAToqTl9^X6^&+Q2 zxmO0hMfZ}P9cYbYa+8F0C#oGNt{uZV>^7zu@;i2TA4~<@?-sy79-lW9!wF9R_?yhJN zdU;>+g@vFJOl;7ImG6za14db^JVN~v37>|>&h-3CA=bJ&7Dv@ac-Ll9%JLSYH!ow{ zXV>&vN&2w4$~JKIu#dH1>Fw4gO`3K7LFx@c6FX*>V`#MxvJP z1U-t2WN9p^Yn;yWiKIirY&b=_+#K39utahiu1yB8`dG_#7IO(*3`HEv>-VU1Ov*JJtFh5{O> zQ%na7TlG_;)|&_W0~^&h6rxo=F$kigYFU!!;6))caBy|{XtA7rs&8|t-vHCkTmp2w z$wMwggT=Q>4qfG@yB5TS90|EvH8}AZx(Xv&dASWc0;Yv;WcVq9ZuePki+#devgN2L zX}QlT1)cy>3=Wxg^H|;3vsGw*y?u9hw}v=@W1rHTT9()|40H-SiWcg>pozqbM9GDqe@kGsUlHK8mT7# zrZekeneoZPPigF84?(p@?fSKZSR@-V?4_11*|!+U{*0T@GRkij-gtqVT%#0!#__YP zS#~kIO&N4gW=CyiK~}$Xc>RG4ZZktu;O$w{=>Rf|G&@JDKxUdmjTTLt#nJnN=7!Bp zjiae?p}mfd$VU%|clPAE*h{Xr>`CR%#9>ojXuV{Jx$XjB;e19{o zH-oAhV!j5S&8mV<=(;`JD5^tdN>3I*LRpn<*m?Fo^{Ssa(zSSh+N+fd1jnw*yxql4 z@7!XVX9!$+5~iLyrK2`dmww#z`ku-DydNEYd(m|2)_}jO?`N-G@B`Zr!=C*fc0yy~ zl~9NM;Vr%a*n0z@ zC|v05aD-^0T2QN~8?H(b0;w>Ye${I#qF(D%SLWO3;V6x45V8=#)!hg`8mc+)f8X2~ zpr~>|Hp#5BmOyMVy2PNuRJUl-zM$M3R!I>Zo@~LuoNKsv)b%-KXiq66 z1pU4PYW@Lu9gxH{+%j*gF@^lLlEQBdU9GSIL7;{^;cZxl!XreP3!}GGdTN*n{DJPm z`ps&$_q{Tf*8T=0AzYktqN;J;xQ{!-J-)KY`Wp)vl;U<92k_s45#iaTZHp{T%E{XMHl{dZ{s1+tW-k50@@u+?vk%uUaG6Lhh&Y} zh8&*dG#h!LWek-A+?9uS1c=gXvU%H5-lh-@BQntHJ@$Ff47;?}=JMe#kHXFLqnsR+ zMQ_a^=jVby{?AdEDp;39xFTfc+ZW#3%>ejm=c?7SREqXjIjUYz|G_#vDW{y#m{^Ex zzxgm{%#iY|#gKoKgrwY2mSeGALfWsE@Oumm&x46CnuBq?z$yWv)b>RQZveE{{14 z*ll0UZdQ({Io#sCMCW(cD%MNW5qq&yv9h zaL=N$U)Sy0o^}8GbOOd0LpzwP|I@~d5(?Eo4h(sOUgD6|S1brk;g6yC729||QluSy zS~$I?G&;0TpZb9En}p$@zbk}qvJra=ctkr-S)HvDwgYHgZ|J|AW}9HdHk`UjS6Yor zX(GeSI1K#OM6NGxLF2stS^)ggzV>DR!8(k6ONrAT^5xkzu6$K1!%0hU(RXWzBo&4H zUanm^(2R52b4p@}D0Z7&Ce$4zK9KysOdb6_tS{4cB(;;)G@3RIHTtCE zEBfKurflgo<6Qqrw0~g$r2v<;pVUxg(xlY1i+?3&F41AE0(1y;?d+~&K#nQ=YkSo$ zH_uE#gth6#i%Zq^#^dBfc6Oo(*QKxQ!HN>0;3Ta46{er+qW#S*4I9408GMqcy7Tui zzRce5s6XIl(R67ddzGORxA$rVz$^yA)Q^33A==>sU=v{fLen zG|vV6_(=z7BZUOdq81FPUtARlgv zel+$^I?}*o?-N_%w)>d~Ct#41!qg}kpM`k-yjm9=sOF#XqT&^I(*vDy}=DqP_K?5<*&4A;^m9(%=7p4*n3mXzetcSAAIK9t5h`L@yV`Zzi;`vM;Lj( zu7)&oXE=}!&VM$~PVZ6ta#G0~bGz_|G_dV;hC3vL+?=8PC{f=B!2F#trJ%D_&E|@xLGV#uKkySy~lUlQ9U$ z1eC*r)euEU1?T0$U#r5OH-d4-eP+?K5`Ds4+f6ES^((n7m}L#T22xsFvcTIoN$;Qi z;O7~SI|ZR|qMt@{9jhx_yzvjG^8~r(3f5OI7YFj`X`>)$> zSIxg!NwU3(^V@=&N z#9U*Rs31eTJ`5|341*Wl<^raP%h;Fndt+xV9iLL=x<`)7g42!Bo|nc-Riq=#AhP8o zaBj^gmu-If;G~;Wc}gZD15Rb`THw%zaG}(%lza+!so|nFo<9SizaZvpz8@w%;VRPf zjEXe50FCX{q*~F^vWI0g%vlKV4T+&*Nz|6rFSw)xfXz5o8c;1mn?Jm#zHWlAKtyb+pu<47B$RY}-SVnuYz)qOX|=#l*g$M>)r$p_yaS5XAmYW9HJdDtH&~&7d}) zCpcE(@2a^MxL>>CycDW-=;o^F?2vRc)!_@c6#X4rmUolSsGG&-UX+Vh-UuU~t^X|h z#RM=MtAn!l5emAdr|{Hl%m*zILfL-b=jK}QW2*w07|SR4?Y8sva}tN(I5jqaXA9sj z6DUXuEdaKGIVNmROTG+k3nyV-@2E27sb>3-WO&&(Bg&uW?-jwkVqtqTuq!mW0hd0I zWTiv|ZA9QU=lJ27!XCWE)>bjpJjwzKQBx$U%qwth*Vt7e!2#9G`)qEey}e%>x96wu zhbTMp{^?3H`=q_)x=D#!t642>OQM$V_PVA9TiEHz3F7RKEIlPGv~cd!BEo;BDfsEh zVDyO^ko0yU*A~3hwPlU>qrVj&*+3?Btmtj9apD*V?T=oXSx~8|`RRp0M)n8|Ctk!S zPv}qhFSTr4qC{7s&k5HM@hVbahot+>AS8CkwZ+?|6rwFB_Ix=P?Lm6M#S^0I@Jhkr z{KsV@WoSO{lhd+&mfBF{%Yo>QQ|Up<$i9)5g9gD0fkg8;*T04t$769Q%D{%&>;YZX4Z^?nXmL)JASytM#nrUw}}n zV4GrX^^?dair+3O7TcTnlMa6h44Vg*c@C$K9KS{U^c^qGWnQHWbtyf1pdJc7Q7&0K z4s95865b8oTnNVS#-uoE5x>fr9>-W1r0;(``t9@0U`P3d0{;~SX-iPPtbm%4jHp#I zW#V++8xl`{nz5q0Q_sKA1|;}JMP8Zf;Ott(Bs=yHcZ>dz`h87D>IUxW`+GvU=a2$M z0&eHAYV1vJ6?#ey@@Tc<>Pd2HWn|FV5Fz^z)133R!B_o zk~6AY#?WBtJ7w%iX)%*fIuo;31+gANzV`ep`(<&yVimk`3^rYu^+M}hf7aHfj$P#POV{r^mhZPa8XV&; z6t+pKtB+4{{l64$;DP@>{~_=n0{>?OUY!y7d4YY1hUUW28R5F<|M`pld+A;>NRujEq(})xDM}3znpCCtP6%B@A@mN?g3>}qTBrg_=n#5u z5}I^F@9eGb`#j(5%|ZP1U$j})VPI*$Bd^W|4a*Jyp;hi7E$t=BjxFN68HT!Yfqdw)1&(;Bth&Q zniQOd%&*eb@UBm=&%FJLWe|Ee-SY9JI`8%VuZOC&l}b79t`~2<46c)}VBiW(p=G6g zAUN}y>^6-h?_@e}?{j_zuQG^xs#>-pRhl z!*bz==lnYy4<~=;pOJWhg!pI(0gckb|4;%3VMFi#4`pHkIFgVz?)iTw#=}Qb3jRBi zkb;m5OsvQD@n1&aoTmSdyvcTx8A0*&<*k3&CIh4Y9ZB|*OcuocCYI_y90PMQBjEpz zWR78e2UBig;rd4dz+m!g|4Q)xLxE+nYaFqN|1sj5K0-ty?DTso@c{H+yT>s9)<#3# z|Bp5Gr0~(h>vDK_|ESI!Q1g?jm$(0`>6Ue3W`qtC0p33rXO;t?^hH7cpDA^~c(|%l zGQ5B7MhgJq4&Tr}fcWYSd>;+@<23)7vJ@{=f6W>=N+}B}ktPIO>_1b=1_Nl6 z3$OZzp<)Cc*5=?L9^O9`p8%Mm)zA3{Q*RD{??t5ec>f?a=HWY7_W%puKgcNJdpDL-YujGw*&LqgKBzKqaelbl zz!d#tSDX-&fQMaEWl*VP#tZbIIPQ^r~;pk^o__49(-3JJFZg8~1e zb0y0AgXT_(7`-@+^=+w$=htB-IR&&4gs9=8if)!8SJQGzS^rp#=m1_G4ojd;}8cQwkSSHy7adWCdJ)A zZc$&zXj?~Y)NvtMIdI%Fs{lIbmdJ_k;l-JUS?En@4^ON6$-Y5uhk6x1(7OcZq@?On zq&S|PKgsA5xXKQwsyiPD5zV~XnrD1Hl{0A~WV5z-Yn*xZ$D4d&xod7kx;*K&zhgDN z@gGqxH!GGhF4xlAkB$Unlu8odyitO(3- znM3t@Xb020@BXWj?knf%ZND9#ot2OGnr4$?%k+X^VN$?{)*#k39$c+G72UaNxxtwK`{O<1iSrJV zs{@_uR9G$&Qecip%3oxXSzfi+Lgd#&GMh_h#+Mzpa?{|P{Q;{$J!tiHlWmfOkUM)uLyB=N`}1d1f?s_H#=e zgee@3Y>gmOcR5$hFjdF@2uqzxb4ZGY*$xZzR45mzUmY}G*4(%x>=~dD{(AZW7M2kL zo9c&;lcURpbi?WhsjxQu(I{Y?{I3bieNU4=x+=s8nVP@9Onfe5J(_}MMLOi z+;U^y)$<)C%>R%B^)2_I)}Mi@m!p^Ug$}>M#&-jb%A*~mFVdR5l*s@@N%MfqEcf+J zr~`gJjmoHls9w-rLl4g|I%G?uArJiZP}JVyD>Y3AKfWtki>##u99pIAoHy^-`{V9i z&0W-lGM%P*W_n>m`?8~L7$qhF7ae3pFq-e@?wWinjxACn*zLQ=@#HQ}n0%r=TmdAq z{aNADQS1xG$@8&z@LY|yK!fl0q}9{;<6$TJ%ipAz&U=YgO|DlvV{3*Z-?qN>#e=0h zWMnpiH?i5@U0v^vZmoZL)9&T*xuM{l-U7Yt{ov)NQ`E6V)dg*9at)E*H zf0cQ)*UY3>;<~4+9s&ysWI_0M<}Zf|9b!*4?N#DEJ~yx6?1FlZoidw6A&79PMt|B9jwE6L1u4Oiw9En(VMv6x>)ryX%uv;q zeuj7JgE@_9MKna!eG9v`_WswC_9{4)#AXv;&E=@aVC5<5yx1U_@Ws_txb+M^>*$=5 zt}Pz6fTHswbr4MdQ>&$r?tE~A|LIy#8P%u07*=YveNk5+49|#!bAD4We4b57Em(rm z{M8nFy56)M?rPP4W!<3pd_COL)1YLpq>fw3&R6IiQ(z))3R##na|PyR^*Hf=ur^u?)%e(#+$~%!$Tr z54s@HwC0QH=2_oW$$77n%BSDf)C8{1hg1X{F0lfa*vqSc{TBiIfxDLgD17&x2JAgO zlG#W`UL9?mu4P`X^+lg|MmHLc3z?jBuUrFyRHWs0QXnj>pi~=VGiuZD_{(P!?m;cH z#AOY0c=&p4lpL~vD!DDSKdR~`PMG57^Ga3(&3f%*@7NdIpJ048?b#skHKF#jKl5_m z&j4C8;D6-lZ?)I&zpT3*a9G52(%Cbg1n~+u4!PR6WFjBqxixo)YWBHePpz-gKCbHz zxV-Fd@Hn{gpF=x6d;w}3tk%Je?8?{m+uiegzY*iA!N`pV7942n}gyvgxR3J}qjl7eHM8JPHWdBMmr7HW4kpvcwrZ8zN16X(TjII_SnW?)9sc@v&{@5c#5^CMOFcgx`_Sv1I za8xBr$yZwIyDS=V9e$ga09Pf8>~nPGghF+bPq78f^=#M9ur^2bn!0mMGHpYlNL8c6 zKxTyLXFDn|A2_aov7wah4)I(A_nuF3yKo5SV`Cfx!n@VZZyEP&g;4A)h**)8v}dnBRQspceNxA(fC0 zCrX{_M*tP#8;G}>=wVukYVUY5@MtUv-`Au^_w@sko$m60OKNb1VrE=c8PLT(KPR0Y zK;6Pns@G6|^l-(+({Bem{zna>%||{aO(uhX z)4o50n0!wvFPVrgJ(Y!Mrzm+FI^KDipzZ|AG|nj5)~ zC{S!2_Hydqt4;Fm^J~8W_gUHl#cMfXztmMW)5Wh99OqQ3T+>OPljGcOQjO|IMjTbV zQ4lQktSw6LKv%Qs(wGy;cP8J_mSJtX045W6(4a%dtE@K;0r=|4^e`B{h@Gp?9piC0 ziYC|Pro~YOfjn_JZsHPv0*X~IvIf^DmR+k;QmzwrBNcGolve#a_@1mCXF`ALx*0`Zev6JWF!6hRc z=wS(l=syK}bPXMD#9k|c`g%1Tbejjv*E}CO`a%DdA(9>qVTe-UxsIz6j_!L~X8i0o z;z<4ADQKhS=a-PeOEoQ^e!G`Z3G*%&4tT&S_Bu?5aK8&rSVs_BAQ;kXPJ*@J7|^Pu z2bwJtx~seheWz&$m;Si<9jX`O6`IV5q~$XGF&2bvY)*P5&>sminyhcRUnw!XYyPPJ zoEb{WWyv<++Gt2kLVrJ#<31U9*g1FPI?$PE!$?{I@iwike_{EPi#s3Bb*#SIOhGgl zbUCm#^v$^|iXgsGw+Sg)pdAx&nBE5IxeTbPUBOLA<$Q_-dOnI1ceOvlY&&T`4G{$< zarURZ&;KZ65eSn|D>hEF702_XI}EW^_)}Td6+Z*@DWrPS0KF-yhFic&FO>!0^H$+v zw>&6vv1Vijj?DEYY2ai9Bp*Z+!Msa_jpnWG4xWRmSAj*Ak90~a3woG7p}_1F&`c_C zz-WW2=lFpoPnsK27SyNK7?FYaM8KjV{zyX_A3e_U<35s{>53Dgx_@yqDj*hpDtW z5<_8h9Zm&xC_&xj2x+Cu;5TxI)*8-K);xV7dQ>;w^qIJ6qXb_lI{YRa1 z2DdJLP+f)?afzCxG7m`x$Y311!~rsg zj41GPfQ*@xE^a?LcdaZuEuex5j*R~zqXz&=Dzo=3Io5`xd!+o)ALALVawA4|lP(0_ z9$oz3TgSTdEZjC;0W`|7o_usohKtJzXwjzPy9Q|k9S!$e92rSKV{at@gIzPWxpav5 zY0ib<6OnPRm@0rJ1Ln>U4E*CEHV5PYNih)SHRxNVunCWEiE%~A$I%X*lU|2={})yzN5G`dpVF=M^fB9 zWdKf+n3Qv@W}eb3IZ#){c=B1UjcT#Zx&xO@=zM+8zTnAT#Y_of%nOkA?NtTp4>0|N zhR0A6f|Ni%5}#9#nS`sVuNi|CuzKzY+s43#12=G3xV}S%P*g}e=CJfzNhr`bNgo_m zH-aOfzJctKWY(`iQm^j&RpG1KeR`baysdPjqx!Ter|c|x%cLYUUu6FyQE>W-sw_xk zmEw+sNMJ`8J_Q$_aY?aoRd4>-v-Nu_c-C2t7q;vi^y+fD8Hb6pVesc5afD2>FdVtJ z$Hhmd^m+OF@2o0^&9}c|VcS+r4c;29!EzQe38c0T4wuilHYT|uOEgeAndW92R+;<8 zoD4sjO9oc_$!(jBT|S>t@i_BE-&3I&OKdgW#gc*JS@YiKl3RN<(Olsnzq z>9Ff5AE>FMe&ttO2L7h+#SL_s^rvo`bQu512nnu=gtm@+s(}hccSzMtSsTD z*3?$iE{QnZ((fM2uyd$vw^WLQx$Uj6_y4stK0$%5Kb0r-iyRmaT$hJR8 zY3f}&;^+6{G+JA#tsy$;s|P0s#oeczG-GGJ*_ZCGw(CsJm>I)Did?~UxuGyy_s5?m zc+tb?cU=A{g!*$y6ob>DoFC+j?flp+!$yODdR~#zL;e_OBHzdo zsAHa71dmcuTKiSM4Wp*HVbgP?&EiU}&W?d*2lngp9%{y|EM4q!B3aQO8S5O@I_&48 zPppiuSPKh%67gZ`^I8$36Jf#Xz%$MM>OB;SI6rvzApd zjZBWRMt|KSNj%;9Od|Cw`Tc_^*d^!(5WoyEl~J$EWnXo zVvyT}ij>wD1F&&f;zxIRA?K4x>}q#vK7Rj1{o&D@B$oW6YP0UL9XoAx9A_Y^N<}n! z_S9ID>2+$r=^+auX;aGHggP*{MA&df%~S;A^6P;mT`}9sB=|K_Gj^?61B0M^|ecoxRWx zD5H8}7p|-VyBZE$InPb?UOuk_n;Jj;$hcoxjlWDTOx~M%9;mx~;WKFafU0%ezVv`q zrz>vd<30l^siQ|XmktB!YfaT>ejL_9K}x(Msu!QdA%9V%BC|2ZHj(jmouhTEUzouy z&%Xa=n_yshmD60L%|_kIw?}u24xX}*gZJc#u{MmD5rRN&Ld@H=yj$?#+jYFCzLR#3 zP}|T!_VB*oS@Ce2n%pG))kQLJW$osrAb}2I<*gbY*?l!xs{mnfw`vvHB5SwiemHUE zEDX*&{FHzxnu1-LlZN7}BAWsz^4$xao9XXcHeOqZU56H7!s80Z4#TzI3JiYR-E$D7 zTmvh=F|cJivwc5H#Ee*R;rcH_wuJZTi@p>a52$gKw||*`7@RS@fP1)QVv69xe#E^+ zyaXzO))akajmVavOVsP?;HSm|2~Jd=X_tCR`N?js)!@&EP@{2E^f0LD#eat;;$1V> zPS?KGz?VBBu`fBoOuP~9YR3aFG9r-p835VlYKrZecpNn*nenhg)e4S5gX6lBYOhfmMGxRa<-d(n*p~7m_Ro)mB zmfVuO=1(S^L_ z9!jaLQxFBn%CP=dph!FdTe=Yy8g&M8!V%%}a)ZJT!}KAoN7Y0);ppi98lYDh4`2J< z5sK=l%@urL+FC!xC~y~Fgl`KHaE%ftToTYQM9%&p*yEqG0RJ&tull=ZRV2HRbb|u3 z6Pza5ga?1vwySo=nr6#0_!LZa2p=#NmY=rwXyFISW?r~GeCIu52wr3V3 z-o7f8B+KEF3&KYyd46N8i1lM(?&~-za;)1;-t>2K*VxHhn8N$Sck9_Qcl)iEic|PS z0&Y9ePeYuBxAdc7bgST}p7Gc&5rq3cyQi|i_NZ~C_y6qQ;t~Asj{W~0QTYG-nG9J@ z1nT<7ZL@Ke^0czDs-C ztvn4vLQH&10Xp7#uIRDYY{HYQu5Ma3er55fU&Af+e4bTt)C%Edo_BFMP#fmR`wEBK zXNK{4-8u$Ok~!)G?$e?r^tFYyLr0ILeQ?!VU&n~{SwR)%)`Ui&OQ)s7qA#DV#)>}-|ELV}h(^zoNkJm6{5{p!K1j;fL#1GA64)L=PNrRL?_LK>x?BiOaJ=W6j61NdusOBp`PN>NFAF|%?49orAFN}>gu z;+%<5fv8F00&#+MEd$S*Ht82X8>MOE9etpS7M)?iLV_fbJr7S-Xu!#Bo&6+&RnHj@ zeA{pliPdZ-Hq-OYCmEuBsLtUq55d5{ggQ?N0pxxL8h4HFGsqMS`pxpeRU6bf0LA#bqXU}k9Lo?(J== z^f5F9MJxkhFpB*U(mOvo=&^V5|6rG!mIYy+2Dx;6K;K}5OQ<#?cotMdnCxRTw;YOo z(F_Xdap?M)kYbcE>5$Ab5?t(B=OEU8YJ8%xtm;uGh&}GD9wfhA3e!Bdz=$gebG4VL znN_>;kQYx=zgmA0#xw3j679EQsgT;OF-;E6+fyP6d`PHI0hU93cT~>KM!vFo?#!9& z7a^kI6#tt6;9x0XGzH1|TFRo~nt$`_)HnN7Ot|gw+^*$`<doyX*P8`G#O7O2G^E|}h*y(JG^KTL zFf5jXXSH!4hB#-QM6GG?);JltuTi%Ls+A>AZau1dGhn+tbXa%Bo1y&Y{sY}NJ*5$! z#7CkwPo8;>4lKBI=53DgW4j_Xhn~G*4jeI)1S-ys1=X)VL4-WGUS1oeorma3X&)>kH+{3YJ zV-eN*q&Kj2-@;w2s(T{S1Oa!n@O9H3s@z@LzcVBYP^4*tti&v-*?8XO0sqMKl5pRQ zLdQ#b^`NFGD0D$S1%8-f}vlF7HY=gS)mUbzy!V->yu-D?Zu)IGLr z``9{2&dl9$5%*mWm+(5n-M$|#7;?{s`71X8Ul^x&ixk@$oXjew6CP-WPvHRZ@M36S z#Vx7M6$%LbvV1>p6SUY9ansk2>#+2?Ux`RAe53tPNB}~c;?cnS!?(vsf9h4S$aD8YAEHV3HrsSmmTpf{Fd8m0AtlN zl#_+xzxZ5_ZL4m`#E?H!-Z}1DAfNo@*enSh-}f+onkffl$0}|F;pv*I-Fs=MI18GV z4G0dz@2sC|&_>P1!s_{!#a5&8^!qdfcVR*hjBe3m_c=4O^DSHsJ|sSRPiMt?*OS8ua8e@M$r2vAganS%7=Vep z?NQ$5gCWXEfx}OEJrXmOKyeIZ?*EYf%iO&Zib?CRQnNj0EAF z&fK^h%$B{G{IyLrrN`qnTfzf&4_-oF6wy|keR|`(Db0bu(I60fL zTn5X%Y#k@>vr7@uDEv&ob}ZS`3v6bsu8A9x! z&@Y7J8Rr!RI=+E=IgIKlV^)c%CxI)9@{D1+TtK2_6JDPmvH4~ZUDNG;8fM_hM#F+z z+9ywRDbB1#F{-RqgzM##S0qL3#>XQM zsMR|UfatqT(x_?EO4JU0!%@aZ=grcG2wSJC&D-17nqs1zJ4vfyh?fzgWa4L2>-1Cs z_2!MBC%42+}Ne)6Q*GYz78TiVmZ66>w0rc_^dLz>9Oc!zFalVIGHPWnZ|qp=t=^JF91( zujANaqCRQV&wd~4TD?PoS*mdQ?8$jLt4-LkO^3Cy;Q{ZK3;pJq{gRmCaMCNDyo6S0 zj+eA@Hs+<(3UC+4s#}cgW>U@<3iK@LNs@y}heBbSls)Rb1xd4u`07jmrAKoo^aNHf zfV96P9l4|a=)bm`u^J|IF8V^oEajh3Uw8MzUK|~ex6Q^Z;seb^sgJ&7kBO^*OkFy>kXS0y zDaL|MAxrOC9*_+%vUhFrzjRmf^jf{wvCR(W3^5Q^+PM`qOFXdL^d({Y$YIrn>{zf*<%?oU0>Jo1kXz-O0or5b%W} zABM0okYoQS&ehtP-u2gP`PnC!t1f?5894f``H`WbaQWuc0%~U=?iIGW0kwR?s)yhE z%R;GC&GNlL@#0lwx{}ZJ$qnq4(~33c{t}!`iE{uzE@JgG#5=G*r1VUNSNt3rxSP*E z4F2kjf_IdUzUI6%H@(Lb)ff9sFkWV*CC-*j84j=EA1%f=G+?-IqPG~ zs4puY=t8eg`U9b`T;$-|dmdL-D0#G*KlEapfmA~VPH19Y_P`(~sD+!jiUYAk==pW1 zrRZ5M0HlVDEtcHjHv+NuCxJj0d zzKWilW?hPT%O{&T+A?14ohEM2Bhl}B#W@g$X_@@XhI9@OQkQb$2EEw3$}bD+Ss7zr zLKihaR6sB33nS;B)3AJDNQd%iDYgRS#jmwlz~X_Y6S4v$+h07T7;I&uHlv8lJT;gk zag4WEJw0BYWTQ5V|J*lBgXc0Dw25U*-!hMRgVyaM};$k@$nmgYMnWfUxKcm5E#_X1Q$>2F>s9SsyHG21?& z2uMIed&We?wE2a1Sx-PZpHK;hlBzV-{frFr42Kptq@=$Rb+qAuHCO{`2NWm8ZEntW zNGYr<%oKSyrD-#LEgV+sP|MZ+qDWc&43MlKT9{0Xhk!4f)3YTSsDLTdjRs}sCtY6q zJEPKAfP$rp@4DEu7KV*_vf|7uFEYiUV%FPTbn|wwi}&tTek}i9HPo}GJs+h^;psZ7 zn?gC?{YR&Qv3kzfp@ZgbSHcLph9RTG>DL!f-RrE3r2%$re{xxE+}~hifn#eKUxw;1 zMv1r5vZZ&mQG+X%^JdI4Nmy|?-ZLeVxeTt>K1|~dC%HZxed4z%JlKxxb+s_tPxrF+ zMN9<>S|IX7?A+LBw4#QQjw%vX8>K6^>=ZwPj5ZsDKg)v*aXE!E)OF>H zS%bWBvTrg7_3wdGa`)sI-Ty>e7ot-P5%C>Q?O!poQLt`Mik<5#Np|00_VbdREg*CX?qwotE8B!=_7L^5)Yc!A6Phm|HR3@p`%j z?6o1r6zX9vs}G=st$vR}VdiK^kXgA{9lOnv3b=Ml5`txKUtZaxppbXh` zQ*cHx82PFD@{|ng8U`quK3f($uXz59Kp8YDP@$_MWvqF-lmfL$D5{dX_EUS9o zO@!>)PN7tSQHR*U6zO8(qS_*TupXW1h7z~Tr`%nsf*|HAJ zY}Yo4)J9?))jr6H7vAx-%Ps1UtnpzFvM+L}bD;k*8c7b+a}Izzce|Wv9pWpq?5*>+ zGx#*z_tdSee=@7hnHvo=Z;S7CUvy^*0wU`Dcp?H|X9noj_pS&1d^X zI~A=57#WLfy@Rx7jzGWPwK`2O9hv3d?l|^1>F=AJ4banw2oK+WxXN8=kWU`{&|mvO zy58(+QEF3^X<+|DXDDG33xd%9*W|sw-rXxZPnz)XhvJD4)@GAix38tt%ekh~u9ppG z$|Zj?+Y?#&kVm$|zOzcO0lN%95CB4t;2)10MphWumS)He-4!>W#@z>!)R}f&2uN>a z|9~ubDX=Arm{$p8(J$>D^|z?$y0d@rc_1erxw5&grU)u%(&0$%)ltmbyYt#h<7ASW zphR7)sk`y8#bH%V>6bm&YI+Inxq($WG)kHl4`113j8iAQv2It>)e8wlej!!I)PAyO z>3aB;kwAq4yxSck7l&b9Q013vi{EVG_B>pB%!AM;)2P-pJCzdj+0N}rBX`?gO846e zl+3Cgx!dB4tlYi_3FQ=YxtNZYvodsFOaiVfFa+j?a*F@To52iwt*Qcg zBFY4oSSWK{^LYyxcA2z*)Vt;$+`{K|ruAwc}Yb$WN38-p!6UhtJeFYRi9t6tM zMVMP}ldit(hvoJ(_=9qKxd7f=%$^GIlh|;2F@L>9ph5+nRH_0h2=zBcKkrh5yUTLV zH(Z;of**~&zN^MvBQ%nj!OX}bY7^(d|FpECNLqdNLU=dL?VY%rVtb?%0L86P0E)DG zvRNfU<=u=do?AP}VdZSo#(%8CzhXg2--64C;CUg*4Kwck?7V>WhYFxcJJ++e-`cYup#J4_o~w!non)76FhL| z0z*|jl&F0BcxN2`lt)8rJb5+?x_jE{k<#oYs@1o0@9UmCb=Nz(@vtoM#V)l76- z)JqXxl8AEGh;6{%q27mgAkl{3)zf-)iy>;JrvYVPit%t5NgVMr!+kDx)2zdS4LHgL~OHWfGq5gBpkpG}eC z6yUr`-yCx5p9eX>5s;zI&VR0;wWI>y$2R?@NdCE#_P-PSKT%=?Ik=3c`rF0!SpUUF z-udd`w)z7FqQCd{tW)2$UpkUZFkD$2S1$V(961d~eiyrGPHf&bjM8%U@@yW=-)xIp zIo(eBWP7kaq0_NhD;VM4Ef`iO5S4k8g0ZlOIxpjdu9soHzfrXzlV@(^A3G({RTKXBt3qb7wIWqkf6uW)oFcuZ%YXeMHm*^W>~-<~|wmcikF>u`s!o#JuA{jJT9`Uks8*NW19<6Ge^jS8q|? zy?@Xpso0@<68Lu2BuRMMHQK`ORX2y1t;uicqI8`vIK|CPn%{IB zW#66Tl7$*28&J*v*;QyuR z{0ly6tLMqs3+_EC|EcjL&$&rW;=66Uq3?#j?3-tQ-}`dwu1{$KZZ0rL{^L3+&6n>B z>F9X6Q};T77th^@EYZU+J3S{2sKG`X!fR_v29$n>sVX23=-R?FlwQN)J$b*KNvK|535>bY|wHTP~cd+g71g_e$7&6vNm_;I@9V0>6mi`DhduNmD z)JscZ^+pji8mff^rz?NhL_L;V$Qas=c$aG1*rWI|Z(hPrm!q0VrRVQoP9i%&I{ z6CJ-%E~M(I3NlJM^oRZsl`-tr;dEG#(8aN#CPPbiNdGhAPxesGYB3=fVDq7CtfRX` zNMUfaJ12duMx9C9YcR;QLy=_#cXNa=v$-r`&5^hUi&SO$gh#7@h-)b)$=#~|l^&0w zvDR2;8W>Ryk$6+Jw4qAlR$j+VtyW!=X%ociUO^e_%a%D~d8bZg<4!LeiT~!v+~rhm z?8t+6+9V7$Ut@WlZ^Ezt*R>MWZU&tWOJsB*=mlsk{23jmE#vTGIrI3FI29h?#!%gy zRI7W3M1s)Ii|21$e-))-D0??l{5_oll+S^KXy`4K%Ff zXjRrVK!#zJe&gLaGu1!JC)ct|Vck(dQ^r(6kqf7~WxMw6{anAYrd>ozbPS>WT) zy39lYRu6IKSehO>G}{TXWj~&ICU>ar6`Bm}vJHe<-?ZZ-A-M~iWlmkD{zms~+2+AY zjJ1qbCeg88lSS_!OnHSz~;I0{BYFOgjQm)joF4gF{hXtx~FVR@_w5)U~q4f<}{`N6ngjg%@ouw@eEM)a9$b0c|8 zRsPK0`9_|g1i%Wc;q+#{9gd$#NJhY1e#N_T;iG=s<#siQL74B_n4~Xz~!LoDGP=q z{9wwNmiCdT?^!tIEe0NhRxpOfX7tBv@$ggKlH+f@hw>(5-M+V-YnsLF6FbCbb`rE( z!Gn5jt2`Xen>JIlzoV|7qMR?FEn~E>Rp)-~0`t3ACElIHv#}5BcX|hZI_ey_KH=Q{ zD=}?NQX&#VJ`NQA;aw@4d4~nl0oh#v7^O*ao?Qht0zk@EXH}DN(T#f%-Tgm2Kq51B`iNU9sB~PoLdP9WXyh+*LYct1bKXu&6 zKif?A&YCS5wponxHR)m6UfLdcS`8MN^PQ(}iH;O^Q|~VAdlgVZ-Hf^a>t>pnqcfJ- zRsh>|$30F><>!Pf7Qs0%oG#()>8#%KYdqN5l{8IVp`b^ zno^k#{amuoexSEz&s~ap>n@g1(e6Af&c$+TT`vPS>FKwUTG?wyh%-PUoGs=2ZbVVm zKN;+T(&lNMvnz}nAE2|G!o;ps3VA6W?#p;i=?X#9Mftmqs?Qf(UDnfDk(dv3Cxcw9 z6hhTzQic5o5H`e&g9!1XTh73FtI#CH#N0wmP8_JYQoq_-dy^`3{!hAX{Ky|DTj88{?#Y&T?@lis9v0b=#sK?ziMV>Y{dXf69y!$F-L z_?{Pq$0?n>>t6vGz<`uX2fS%4l?yarc#JXPP!GMw!k$ zeJ)wXrE$j45OS(T>Y1vV!Fp}*zVJa#v0IMBy>-w8JWYtd7Po=cTS+gX99JF=EpW8x z?(^i$SVYnt&~uxqGNldicOznfRBRqaq^;JD!K=1w!aO%hI-~Mg1h9JubtUHv&RyqBWZ|LV#e<0LEA2+rYLh_(3j^p0Z&<8I3tblCY z@ckaGW@)OY4IYwEQd~hhb*Pl5VOWy|x8u&u7Mtp=sgFL%>VkPZ+&(pWA)(#=?O!`0 z1wCgT7y4>bv_(vGS=Gqhs_j`kwvorZ9h)*U)_X`i#Y*P!=x)C5GSsA`dHRP=%^Gw| z>%lDYJ6EIFM_612MKOl^#}`glz-m%4sv?7oyJ^GiT)uMxLhB($`XPNIDClxSkvb5+ z8Hlf+D2)Rb)qPTzgscQbTIodw4m zRIau%ql|k*%*;In#Pk~)bm^r%ThgOjb}Ch>{_BUH2PTP3m{%YNm4+GWR=<#rzgp5X z%j!cX4!5g%$qm(0rnOqWyqE-m=hePCHqmTCvHK(Ot{rYivtAuy4Y-YVJ>7AOlef0` zx%KqTo2aW1e>&63Y2BAKWCS4+T55tg=eI7iV$rEv3_~LYItcUdX_Q|;{SN>pq-+@Z z2PK;3zCWu3A#*WR+vt_Aw3-1NU>&i7O~~|?qaeatlcp%bS=0Ne|LpyZj`!VT6B(}; zdeEB5qSGsovx37Nl|C$~a+ER~sv|H{W$4&d=R#13ww z@irI;VpR3BZoU` zzt^d1IDh8gZ_w9lNhECJHJp9eUMiA`5u@b8+BB)}nieQ8zL$qsYVH{PI(9FlvCwG( z3vw0pui0m{e|~6|IsBpxnh#q)XCcqcrl)v?37Q}as9$YVUqJf%*hYKF>BX+12~Qc; zD<3J+sS~atAh#U#$-K8Et>L1|=#XDh1Bun?6j6dc1wMmbDbx)CKvE z=n#&2H=EI``Wq>wOe@MT58Do;*~Ub&3~PFV$(Bb)rQo4$Ze2gD_x|est4RqR(7|*A z-&JhPkWpH4rLtIZCdo-HpmdI;P9GKmqmUs;n?qfO#p}DJ>%zC*EDtwt$G;4C>?R@G zM-p%cr+qR&4tAS#>(#MhnX^SejR6kzV{?d?U9RbQ!VH^C zm)AmC^3r|pB+r1c@E9XOp21>iZWH6AX{qz+fS0aYk_nh{AA5%GGQq|AnJJ<%7$io3R=7Hido1~>-eM=u%|T`qZ=_~C1s*lYg?}z`EdgDjQXjBPbNVn(sx=Du0xoS znEWET<%ebuf^Y#sNF-*caBeN*oC7l{{DSxcW0ZawOUweelzaL#I7a686earwwP zts|wFA=A@l1!0~1NS-n}NB>629=cv9=|APw_&@sxF1*VDu-)+XHSs4kQf z=fb2Zk%W2L2d#^aoOj@QED=yB5i)@iP&DL#BUMRRw>Al>K3Crml`45DTX#0y5DC?- zv;Co;2BT=`6|Xicp6!}C(A|PXtTRZS$S;qd&%BMty@2{~O{t5I=yYtmQGw+M*T1;s zhD?mXO*&-$j{r~xulYk)#&+%2Q2^&lD~P9>BL`(wCoqM0l96tQ-q)bV$}jbFGUv5M z@g%-C<&F+sMt;al)=^pd+!@GgPPA^UE@jm*>kl{fJKqiIpL6@viL-raoc@p%kW&lP z8u9D2d(6sXpS2rrh^L`ZOuktNC_uH39jy`#88F=^jDADAugK5R_+BM7I`mvNI}?#R z(Qk{<&XWDHwq+;lh?CPk#M5DlL;T@Po?VT{zIA)Zs=0j{#n_?G9S&LXq`KVkWr#qn zA)ef=v>~yz%i3YA80*ej?empW#t=UZjT`ch%$D%Z9imVjRCb^w$nbuQ(f`2EyX=s?&u+^t2H|w%lOHXlTr~l8s41R0ROWTL-6z>yC)9kqvE$&i zizjyg-p4W;=p6q2G;>e1Zrh{DC)>^;=^Zv>{NYSWo!yx;Fpk~lE}q2A9cMbm&Ntj@ z#c#$o`CjRrv#ENBmN3`t&Ii0>WW6T)q&)meGyI*o+UzO6NhCUuhRYSW=c z>l+^Gq*HI>Wd@F^9TZI>&O|h1qSq?nkau*AnXLD*blMj&%J|5gd@^MYO&hUv*hFO< zvu#^G%xvGet0RuxHGMji|BW$rMO#Wy-I?vX7fWGUu{k#Wx$zr~30dE(oth6c7pP6Q zI}MlJx-}=bqDe(Kd>ubUeyH_%#I;sEl+zf2&heMUuFocIQ;_$sT7qfU3=JT%PaS5e z>#7v|iKz-tmK#kX&O|h%LvM?nnTfM&)|kn99~!595u*(9i<0=6Ooj>5Ml2mRQ5li> z+3h>W7mnRdIg#ySKi3!&jbqN_e$0;S_FeRf05^V}F`q)UFl=jn4L{oz6rwv_oenPT4$mvflNX)4qsNCJx-mCsXFov=K{( zO;m z$tP3h(6kXthfP$5W1GZKW)(83)3LjzPn|ZNQaq{dOg}p&*xdMa$Aql!hqB(ym-(U) z;;9yO${9>xw?nyy#|KwfGHRdvvfL6Z&R2Kmc=r?H=@pN8Q~=R5KnF|Cf#HN z_I0Q!JC2^9B+zsK@^$6bA?0Id3^L#783PIN^dPbb9V0_oM%=X>B zZ#TN}J9JFAECy?QeB)542l8pPNppgjXD`Q3*)oTwAIf!TedKF|K;(E0p6WQ+ubXzw zQwNa<(+ZPTn+{zX0IqjBXzfY)7;?37?ccWB<#Snn;d}$Lwx8ynXcc>ir^CG?vwe4H zb!2Xz4jo>dN%`0c+mL#*+jqMU4sQHLV|`@1#skd*LtbanmHlG*L5wvgNHh+;96t>$ zJDYDT*KB>HZ-hX`@#^I2sM~Vu=R=nQ`}VGr=wJ8JYKI2u?rB6Fl?wt8fB*#ABA|Id zb3il~X#CeLp`<%AAGFnCtbxD|fsA;X3!X%ju45}zbJ;>Y5P$##AOHafK;Qua{~uOK V#;9wW`+)!e002ovPDHLkV1juc7DE64 literal 0 HcmV?d00001 diff --git a/frontend/src/pages/Index.tsx b/frontend/src/pages/Index.tsx index 61c2115..17b8828 100644 --- a/frontend/src/pages/Index.tsx +++ b/frontend/src/pages/Index.tsx @@ -4,11 +4,11 @@ import Logo from '@/assets/images/CoverMax.svg'; import { Button } from '@/components/ui/button'; import { Card } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; -import { - Shield, - TrendingUp, - Clock, - ArrowRight, +import { + Shield, + TrendingUp, + Clock, + ArrowRight, Zap, BarChart3, Globe @@ -68,7 +68,7 @@ const Index = () => { CoverMax CoverMax - +

- + - +
2 @@ -199,9 +199,9 @@ const Index = () => {

Get Tokens

Receive senior + junior

- + - +
3 @@ -210,7 +210,7 @@ const Index = () => {

Buy/sell on Uniswap

- +

Why? Because now you can buy/sell insurance risk like any other token. @@ -255,7 +255,7 @@ const Index = () => {

- +

Both types are tradeable on Uniswap • Adjust your risk anytime @@ -278,7 +278,7 @@ const Index = () => {

Turn your DeFi assets into tradeable risk tokens.

- +
+ {/* Partners Section */} +
+
+
+

+ Our Partners +

+

+ Backed by leading organizations in the blockchain ecosystem +

+
+ +
+
+ CBT Partner +
+
+ UCLIE Partner +
+
+
+
+ {/* Footer */}
@@ -307,7 +338,7 @@ const Index = () => { Built for the future of protected finance.

- +

Protocol

@@ -316,7 +347,7 @@ const Index = () => { Analytics
- +

Resources

@@ -326,7 +357,7 @@ const Index = () => {
- +

© {new Date().getFullYear()} CoverMax Protocol. Decentralized and open source. @@ -343,4 +374,4 @@ const Index = () => { ); }; -export default Index; \ No newline at end of file +export default Index; From d503c8b632dd3bbb5abaa6dd4eda705de89df95e Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 12:27:03 +0100 Subject: [PATCH 13/50] update UI to match updated protocol design --- frontend/src/components/PhaseDisplay.tsx | 21 +++++++-------------- frontend/src/components/QuickTrade.tsx | 22 ++++++++++------------ frontend/src/config/contracts.ts | 13 +++++-------- frontend/src/context/PrivyWeb3Context.tsx | 6 +++--- frontend/src/pages/Index.tsx | 8 ++++---- 5 files changed, 29 insertions(+), 41 deletions(-) diff --git a/frontend/src/components/PhaseDisplay.tsx b/frontend/src/components/PhaseDisplay.tsx index 6abbf4b..acdf99a 100644 --- a/frontend/src/components/PhaseDisplay.tsx +++ b/frontend/src/components/PhaseDisplay.tsx @@ -35,8 +35,7 @@ const PhaseDisplay: React.FC = () => { // Calculate progress based on phase duration const phaseDurations: { [key: number]: number } = { - [Phase.DEPOSIT]: 2 * 24 * 60 * 60, - [Phase.COVERAGE]: 3 * 24 * 60 * 60, + [Phase.ACTIVE]: 5 * 24 * 60 * 60, [Phase.CLAIMS]: 1 * 24 * 60 * 60, [Phase.FINAL_CLAIMS]: 1 * 24 * 60 * 60, }; @@ -53,9 +52,7 @@ const PhaseDisplay: React.FC = () => { const getPhaseIcon = () => { switch (vaultInfo.currentPhase) { - case Phase.DEPOSIT: - return ; - case Phase.COVERAGE: + case Phase.ACTIVE: return ; case Phase.CLAIMS: case Phase.FINAL_CLAIMS: @@ -67,9 +64,7 @@ const PhaseDisplay: React.FC = () => { const getPhaseColor = () => { switch (vaultInfo.currentPhase) { - case Phase.DEPOSIT: - return 'bg-green-500'; - case Phase.COVERAGE: + case Phase.ACTIVE: return 'bg-blue-500'; case Phase.CLAIMS: return 'bg-orange-500'; @@ -82,14 +77,12 @@ const PhaseDisplay: React.FC = () => { const getPhaseDescription = () => { switch (vaultInfo.currentPhase) { - case Phase.DEPOSIT: - return 'Users can deposit aUSDC or cUSDT to receive CM-SENIOR and CM-JUNIOR tokens'; - case Phase.COVERAGE: - return 'Coverage is active. Tokens are locked and earning yield'; + case Phase.ACTIVE: + return 'Deposits and withdrawals allowed. Coverage is active. Equal senior/junior amounts required for withdrawals'; case Phase.CLAIMS: - return 'Senior token holders can withdraw their funds'; + return 'Any combination of senior and junior tokens can be withdrawn. Emergency mode restricts to senior only'; case Phase.FINAL_CLAIMS: - return 'All token holders can withdraw remaining funds'; + return 'All token holders can withdraw remaining funds with any token combination'; default: return ''; } diff --git a/frontend/src/components/QuickTrade.tsx b/frontend/src/components/QuickTrade.tsx index 4810e1f..2920542 100644 --- a/frontend/src/components/QuickTrade.tsx +++ b/frontend/src/components/QuickTrade.tsx @@ -294,15 +294,13 @@ const QuickTrade: React.FC = () => {

- {/* Deposit Phase Check */} - {Number(vaultInfo.currentPhase) !== Phase.DEPOSIT && ( - - - - Deposits are only allowed during the Deposit phase. Current phase: {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} - - - )} + {/* Phase Info */} + + + + Current phase: {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'}. Deposits and withdrawals allowed at any time. + + {/* Deposit Action Buttons */}
@@ -310,7 +308,7 @@ const QuickTrade: React.FC = () => {
+ + + + + + + {/* Enhanced Key Metrics */} +
+ + +
+
+

Portfolio Value

+

${totalPortfolioValue.toFixed(2)}

+
+ +
+
+ {userSharePercent.toFixed(4)}% of protocol +
+
+
+ + + +
+
+

Senior Tokens

+

{seniorTokenAmount.toFixed(2)}

+
+ +
+
+ ${(seniorTokenAmount * parseFloat(seniorPrice)).toFixed(2)} value +
+
+
+ + + +
+
+

Junior Tokens

+

{juniorTokenAmount.toFixed(2)}

+
+ +
+
+ ${(juniorTokenAmount * parseFloat(juniorPrice)).toFixed(2)} value +
+
+
+ + + +
+
+

Protocol TVL

+

${protocolTVL.toFixed(0)}

+
+ +
+
+ Phase: {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} +
+
+
+
{/* Quick Trade - Hero Section */}
- {/* Portfolio Overview */} + {/* Enhanced Portfolio Overview */}
-
-

Your Portfolio

-
Current positions and protocol status
+
+

+ + Portfolio Analysis +

+
+ + {/* Risk Profile Visualization */} + + + + + Risk Distribution + + + +
+ Current Risk Level: {riskProfile.level} + + {riskProfile.percentage.toFixed(1)}% Senior Allocation + +
+ +
+ Conservative (More Senior) + Aggressive (More Junior) +
+
+
+

Senior Price

+

${seniorPrice}

+
+
+

Junior Price

+

${juniorPrice}

+
+
+

Pool Liquidity

+

+ ${((parseFloat(poolReserves.senior)) + (parseFloat(poolReserves.junior))).toLocaleString('en-US', { maximumFractionDigits: 0 })} +

+
+
+
+
+
- + - Your Positions - Current risk token holdings + + + Token Holdings + + Your current risk token positions -
+
-

SENIOR

-

Priority claims

+

SENIOR

+

Priority claims

-

{formatTokenAmount(balances.seniorTokens)}

-

Value: ${(seniorTokenAmount * parseFloat(seniorPrice)).toFixed(2)}

+

{formatTokenAmount(balances.seniorTokens)}

+

Value: ${(seniorTokenAmount * parseFloat(seniorPrice)).toFixed(2)}

-
+
-

JUNIOR

-

Higher upside

+

JUNIOR

+

Higher upside

-

{formatTokenAmount(balances.juniorTokens)}

-

Value: ${(juniorTokenAmount * parseFloat(juniorPrice)).toFixed(2)}

+

{formatTokenAmount(balances.juniorTokens)}

+

Value: ${(juniorTokenAmount * parseFloat(juniorPrice)).toFixed(2)}

-
+
-

LP TOKENS

-

Liquidity provider

+

LP TOKENS

+

Liquidity provider

-

{formatTokenAmount(balances.lpTokens)}

-

Pool share

+

{formatTokenAmount(balances.lpTokens)}

+

Pool share

- + - Protocol Status - Current protocol information + Protocol Status + Current protocol information
- Current Phase: - {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} + Current Phase: + {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'}
- Emergency Mode: - + Emergency Mode: + {vaultInfo.emergencyMode ? '🚨 Active' : '✅ Inactive'}
- Total TVL: - ${((Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18).toFixed(2)} + Total TVL: + ${((Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18).toFixed(2)}
- Your Share: - + Your Share: + {vaultInfo.totalTokensIssued > 0n ? ((seniorTokenAmount + juniorTokenAmount) / (Number(vaultInfo.totalTokensIssued) / 1e18) * 100).toFixed(2) : '0.00'}% diff --git a/frontend/src/pages/UnifiedDashboard.tsx b/frontend/src/pages/UnifiedDashboard.tsx new file mode 100644 index 0000000..d2ab9cf --- /dev/null +++ b/frontend/src/pages/UnifiedDashboard.tsx @@ -0,0 +1,921 @@ +import React, { useEffect, useState } from 'react'; +import { useWeb3 } from '@/context/PrivyWeb3Context'; +import Navbar from '@/components/Navbar'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Alert, AlertDescription } from '@/components/ui/alert'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { Badge } from '@/components/ui/badge'; +import { Progress } from '@/components/ui/progress'; +import { Slider } from '@/components/ui/slider'; +import { + Shield, + TrendingUp, + ArrowUpRight, + ArrowDownRight, + DollarSign, + Zap, + Activity, + Clock, + AlertCircle, + Info, + RefreshCw, + Droplets, + BarChart3, + Target, + Users, + Lock, + Unlock, + ExternalLink, + ChevronRight, + Plus, + Minus, + Settings, + TrendingDown +} from 'lucide-react'; +import { Phase, ContractName, getContractAddress } from '@/config/contracts'; +import { ethers } from 'ethers'; + +const UnifiedDashboard = () => { + const { + isConnected, + balances, + vaultInfo, + depositAsset, + withdraw, + swapExactTokensForTokens, + getAmountsOut, + seniorTokenAddress, + juniorTokenAddress, + addLiquidity, + refreshData, + getPairReserves, + getTokenBalance, + currentChain, + } = useWeb3(); + + // State Management + const [activeStrategy, setActiveStrategy] = useState<'safety' | 'upside' | 'balanced' | 'custom'>('balanced'); + const [amount, setAmount] = useState(''); + const [selectedAsset, setSelectedAsset] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); + const [isExecuting, setIsExecuting] = useState(false); + const [seniorPrice, setSeniorPrice] = useState('1.00'); + const [juniorPrice, setJuniorPrice] = useState('1.00'); + const [poolReserves, setPoolReserves] = useState({ senior: '0', junior: '0' }); + const [activeTab, setActiveTab] = useState('overview'); + const [targetSeniorPercent, setTargetSeniorPercent] = useState(50); + const [isRebalancePreview, setIsRebalancePreview] = useState(false); + + // Format utilities + const formatTokenAmount = (amount: bigint) => ethers.formatEther(amount); + const formatNumber = (num: number, decimals = 2) => num.toFixed(decimals); + + // Calculated values + const seniorBalance = Number(formatTokenAmount(balances.seniorTokens)); + const juniorBalance = Number(formatTokenAmount(balances.juniorTokens)); + const aUSDCBalance = Number(formatTokenAmount(balances.aUSDC)); + const cUSDTBalance = Number(formatTokenAmount(balances.cUSDT)); + const lpBalance = Number(formatTokenAmount(balances.lpTokens)); + + const totalPortfolioValue = + (seniorBalance * parseFloat(seniorPrice)) + + (juniorBalance * parseFloat(juniorPrice)); + + const protocolTVL = (Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18; + const userSharePercent = vaultInfo.totalTokensIssued > 0n + ? ((seniorBalance + juniorBalance) / (Number(vaultInfo.totalTokensIssued) / 1e18) * 100) + : 0; + + // Risk Assessment + const getRiskProfile = () => { + const totalTokens = seniorBalance + juniorBalance; + if (totalTokens === 0) return { level: 'None', color: 'slate', percentage: 0 }; + + const seniorRatio = seniorBalance / totalTokens; + if (seniorRatio >= 0.8) return { level: 'Conservative', color: 'blue', percentage: seniorRatio * 100 }; + if (seniorRatio >= 0.6) return { level: 'Moderate', color: 'purple', percentage: seniorRatio * 100 }; + if (seniorRatio >= 0.4) return { level: 'Balanced', color: 'green', percentage: seniorRatio * 100 }; + if (seniorRatio >= 0.2) return { level: 'Growth', color: 'yellow', percentage: seniorRatio * 100 }; + return { level: 'Aggressive', color: 'red', percentage: seniorRatio * 100 }; + }; + + const riskProfile = getRiskProfile(); + + // Initialize target percent to current allocation + useEffect(() => { + setTargetSeniorPercent(Math.round(riskProfile.percentage)); + }, [riskProfile.percentage]); + + // Fetch prices and reserves + useEffect(() => { + const fetchPrices = async () => { + if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !currentChain) return; + + try { + const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); + const reserves = await getPairReserves(pairAddress); + + setPoolReserves({ + senior: ethers.formatEther(reserves.reserve0), + junior: ethers.formatEther(reserves.reserve1), + }); + + // Get real prices from AMM + const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; + const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; + + const seniorRate = await getAmountsOut('1', seniorToJuniorPath); + const juniorRate = await getAmountsOut('1', juniorToSeniorPath); + + setSeniorPrice(parseFloat(juniorRate).toFixed(2)); + setJuniorPrice(parseFloat(seniorRate).toFixed(2)); + } catch (error) { + console.error('Error fetching prices:', error); + } + }; + + fetchPrices(); + const interval = setInterval(fetchPrices, 30000); + return () => clearInterval(interval); + }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, getPairReserves, currentChain]); + + // Strategy execution + const executeStrategy = async (strategy: 'safety' | 'upside' | 'balanced') => { + if (!amount || parseFloat(amount) <= 0) return; + + setIsExecuting(true); + try { + // First deposit to get tokens + await depositAsset(selectedAsset, amount); + + if (strategy === 'safety') { + // Convert all junior to senior + const freshJuniorBalance = await getTokenBalance(juniorTokenAddress!); + if (Number(freshJuniorBalance) > 0) { + const path = [juniorTokenAddress!, seniorTokenAddress!]; + const balanceString = ethers.formatEther(freshJuniorBalance); + const estimate = await getAmountsOut(balanceString, path); + const minOutput = (parseFloat(estimate) * 0.95).toFixed(18); + await swapExactTokensForTokens(balanceString, minOutput, path); + } + } else if (strategy === 'upside') { + // Convert all senior to junior + const freshSeniorBalance = await getTokenBalance(seniorTokenAddress!); + if (Number(freshSeniorBalance) > 0) { + const path = [seniorTokenAddress!, juniorTokenAddress!]; + const balanceString = ethers.formatEther(freshSeniorBalance); + const estimate = await getAmountsOut(balanceString, path); + const minOutput = (parseFloat(estimate) * 0.95).toFixed(18); + await swapExactTokensForTokens(balanceString, minOutput, path); + } + } + // For balanced, keep 50/50 split from deposit + + setAmount(''); + await refreshData(); + } catch (error) { + console.error('Strategy execution failed:', error); + } finally { + setIsExecuting(false); + } + }; + + if (!isConnected) { + return ( +
+ +
+ + + +

Connect Your Wallet

+

+ Connect to start earning yield with risk management +

+
+
+
+
+ ); + } + + return ( +
+ {/* Animated background */} +
+
+
+
+
+ + + +
+ {/* Header */} +
+
+
+

Portfolio Dashboard

+

+ Smart risk management with tradeable insurance tokens +

+
+
+ + {riskProfile.level} Risk Profile + + +
+
+
+ + {/* Key Metrics Row */} +
+ + +
+
+

Portfolio Value

+

${formatNumber(totalPortfolioValue)}

+
+ +
+
+ {formatNumber(userSharePercent, 4)}% of protocol +
+
+
+ + + +
+
+

Senior Tokens

+

{formatNumber(seniorBalance)}

+
+ +
+
+ ${formatNumber(seniorBalance * parseFloat(seniorPrice))} value +
+
+
+ + + +
+
+

Junior Tokens

+

{formatNumber(juniorBalance)}

+
+ +
+
+ ${formatNumber(juniorBalance * parseFloat(juniorPrice))} value +
+
+
+ + + +
+
+

Protocol Phase

+

+ {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} +

+
+ +
+
+ TVL: ${formatNumber(protocolTVL, 0)} +
+
+
+
+ + {/* Main Content Tabs */} + + + Overview + Deposit & Trade + Manage Positions + Advanced + + + {/* Overview Tab */} + +
+ {/* Portfolio Breakdown */} + + + + + Portfolio Breakdown + + + + {/* Risk Profile Visualization */} +
+
+ Risk Distribution + + {formatNumber(riskProfile.percentage)}% Senior + +
+ +
+ Conservative + Aggressive +
+
+ + {/* Token Holdings */} +
+
+
+ +
+

Senior Tokens

+

Priority claims • Lower risk

+
+
+
+

{formatNumber(seniorBalance)}

+

${seniorPrice} each

+
+
+ +
+
+ +
+

Junior Tokens

+

Higher upside • Higher risk

+
+
+
+

{formatNumber(juniorBalance)}

+

${juniorPrice} each

+
+
+ + {lpBalance > 0 && ( +
+
+ +
+

LP Tokens

+

Liquidity provider rewards

+
+
+
+

{formatNumber(lpBalance)}

+

Pool share

+
+
+ )} +
+
+
+ + {/* Quick Actions */} + + + + + Quick Actions + + + + + + + + + + {/* Protocol Status */} +
+
+
+ Protocol Status: + {Phase[vaultInfo.currentPhase] || 'Loading...'} +
+
+ Emergency Mode: + + {vaultInfo.emergencyMode ? 'Active' : 'Inactive'} + +
+
+
+
+
+
+ + {/* Market Overview */} + + + + + Market Overview + + + +
+
+

Senior Price

+

${seniorPrice}

+
+ + Stable +
+
+
+

Junior Price

+

${juniorPrice}

+
+ + Volatile +
+
+
+

Pool Liquidity

+

+ ${formatNumber((parseFloat(poolReserves.senior) + parseFloat(poolReserves.junior)), 0)} +

+
+ + Deep +
+
+
+

Protocol TVL

+

${formatNumber(protocolTVL, 0)}

+
+ + Growing +
+
+
+
+
+
+ + {/* Deposit & Trade Tab */} + + + + + + Smart Deposit Strategies + + + Choose your risk strategy and we'll optimize your token allocation + + + + {/* Strategy Selection */} +
+ setActiveStrategy('safety')} + > + + +

Max Safety

+

All funds → Senior tokens

+ + Priority Claims + +
+
+ + setActiveStrategy('balanced')} + > + + +

Balanced

+

50% Senior / 50% Junior

+ + Moderate Risk + +
+
+ + setActiveStrategy('upside')} + > + + +

Max Upside

+

All funds → Junior tokens

+ + Higher Returns + +
+
+
+ + {/* Deposit Form */} +
+
+ +
+ + +
+
+ +
+ + setAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white text-lg py-6" + /> +
+ Available: {formatNumber(selectedAsset === 'aUSDC' ? aUSDCBalance : cUSDTBalance, 4)} + +
+
+
+ + {/* Strategy Preview */} + {amount && parseFloat(amount) > 0 && ( + + + +
+
Strategy Preview:
+
+ {activeStrategy === 'safety' && ( +
Depositing ${amount} will get you ~${amount} in Senior tokens (priority claims)
+ )} + {activeStrategy === 'balanced' && ( +
Depositing ${amount} will get you ~${formatNumber(parseFloat(amount) / 2)} Senior + ~${formatNumber(parseFloat(amount) / 2)} Junior tokens
+ )} + {activeStrategy === 'upside' && ( +
Depositing ${amount} will get you ~${amount} in Junior tokens (higher upside potential)
+ )} +
+
+
+
+ )} + + {/* Execute Button */} + +
+
+
+ + {/* Manage Positions Tab */} + +
+ {/* Rebalance Portfolio */} + + + + + Rebalance Portfolio + + + Adjust your risk exposure by trading between Senior and Junior tokens + + + + {/* Current vs Target Visualization */} +
+
+
+ Current Allocation + {formatNumber(riskProfile.percentage)}% Senior / {formatNumber(100 - riskProfile.percentage)}% Junior +
+ +
+ + {isRebalancePreview && ( +
+
+ Target Allocation + {targetSeniorPercent}% Senior / {100 - targetSeniorPercent}% Junior +
+ +
+ +
+ )} +
+ + {/* Slider Control */} +
+ +
+ { + setTargetSeniorPercent(value[0]); + setIsRebalancePreview(true); + }} + max={100} + min={0} + step={5} + className="w-full" + /> +
+
+ 0% Senior
Max Risk
+ 50% Senior
Balanced
+ 100% Senior
Max Safety
+
+
+ + {/* Trade Preview */} + {isRebalancePreview && Math.abs(targetSeniorPercent - riskProfile.percentage) > 0 && ( +
+
Rebalance Preview
+ {targetSeniorPercent > riskProfile.percentage ? ( +
+
+ + Swap ~{formatNumber((juniorBalance * (targetSeniorPercent - riskProfile.percentage) / 100))} Junior → Senior +
+
+ Estimated output: ~{formatNumber((juniorBalance * (targetSeniorPercent - riskProfile.percentage) / 100) * parseFloat(juniorPrice))} Senior tokens +
+
+ ) : ( +
+
+ + Swap ~{formatNumber((seniorBalance * (riskProfile.percentage - targetSeniorPercent) / 100))} Senior → Junior +
+
+ Estimated output: ~{formatNumber((seniorBalance * (riskProfile.percentage - targetSeniorPercent) / 100) / parseFloat(juniorPrice))} Junior tokens +
+
+ )} +
+ + Estimated gas: ~0.15 GLMR +
+
+ )} + + {/* Action Buttons */} + {isRebalancePreview && Math.abs(targetSeniorPercent - riskProfile.percentage) > 0 ? ( +
+ + +
+ ) : ( + + + + Use the slider above to set your target allocation. Trades will be executed on Uniswap V2. + + + )} + + + + {/* Withdraw Funds */} + + + + + Withdraw Funds + + + Convert tokens back to underlying assets + + + +
+ + +
+ Max withdrawable: ${formatNumber(totalPortfolioValue)} +
+
+ +
+ +
+ + +
+
+ + + + + + + Current phase: {Phase[vaultInfo.currentPhase] || 'Loading...'}. Phase affects withdrawal rules. + + +
+
+
+ + + {/* Advanced Tab */} + +
+ {/* Liquidity Management */} + + + + + Liquidity Management + + + Provide liquidity to earn trading fees + + + +
+

Current LP Position

+

{formatNumber(lpBalance)} LP

+

Pool share

+
+ + + + {lpBalance > 0 && ( + + )} +
+
+ + {/* Protocol Analytics */} + + + + + Protocol Analytics + + + +
+
+

Total TVL

+

${formatNumber(protocolTVL, 0)}

+
+
+

Your Share

+

{formatNumber(userSharePercent, 4)}%

+
+
+

Pool Ratio

+

+ {parseFloat(poolReserves.junior) > 0 + ? formatNumber(parseFloat(poolReserves.senior) / parseFloat(poolReserves.junior), 2) + : '1.00' + } +

+
+
+

Emergency Mode

+

+ {vaultInfo.emergencyMode ? 'Active' : 'Inactive'} +

+
+
+ + +
+
+
+
+ +
+
+ ); +}; + +export default React.memo(UnifiedDashboard); \ No newline at end of file From fcfafaf71925be6f096360014f3b1a6d26fbcbad Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 16:52:45 +0100 Subject: [PATCH 15/50] rebalance portfolio risk --- frontend/src/pages/UnifiedDashboard.tsx | 376 ++++++++++++++++++------ 1 file changed, 281 insertions(+), 95 deletions(-) diff --git a/frontend/src/pages/UnifiedDashboard.tsx b/frontend/src/pages/UnifiedDashboard.tsx index d2ab9cf..7b9ead6 100644 --- a/frontend/src/pages/UnifiedDashboard.tsx +++ b/frontend/src/pages/UnifiedDashboard.tsx @@ -10,17 +10,17 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Badge } from '@/components/ui/badge'; import { Progress } from '@/components/ui/progress'; import { Slider } from '@/components/ui/slider'; -import { - Shield, - TrendingUp, - ArrowUpRight, - ArrowDownRight, - DollarSign, - Zap, - Activity, - Clock, - AlertCircle, - Info, +import { + Shield, + TrendingUp, + ArrowUpRight, + ArrowDownRight, + DollarSign, + Zap, + Activity, + Clock, + AlertCircle, + Info, RefreshCw, Droplets, BarChart3, @@ -57,7 +57,7 @@ const UnifiedDashboard = () => { } = useWeb3(); // State Management - const [activeStrategy, setActiveStrategy] = useState<'safety' | 'upside' | 'balanced' | 'custom'>('balanced'); + const [activeStrategy, setActiveStrategy] = useState<'safety' | 'upside' | 'balanced'>('balanced'); const [amount, setAmount] = useState(''); const [selectedAsset, setSelectedAsset] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); const [isExecuting, setIsExecuting] = useState(false); @@ -67,6 +67,12 @@ const UnifiedDashboard = () => { const [activeTab, setActiveTab] = useState('overview'); const [targetSeniorPercent, setTargetSeniorPercent] = useState(50); const [isRebalancePreview, setIsRebalancePreview] = useState(false); + const [rebalancePreview, setRebalancePreview] = useState<{ + amountIn: string; + amountOut: string; + tokenIn: 'senior' | 'junior'; + tokenOut: 'senior' | 'junior'; + } | null>(null); // Format utilities const formatTokenAmount = (amount: bigint) => ethers.formatEther(amount); @@ -78,13 +84,13 @@ const UnifiedDashboard = () => { const aUSDCBalance = Number(formatTokenAmount(balances.aUSDC)); const cUSDTBalance = Number(formatTokenAmount(balances.cUSDT)); const lpBalance = Number(formatTokenAmount(balances.lpTokens)); - - const totalPortfolioValue = - (seniorBalance * parseFloat(seniorPrice)) + + + const totalPortfolioValue = + (seniorBalance * parseFloat(seniorPrice)) + (juniorBalance * parseFloat(juniorPrice)); - + const protocolTVL = (Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18; - const userSharePercent = vaultInfo.totalTokensIssued > 0n + const userSharePercent = vaultInfo.totalTokensIssued > 0n ? ((seniorBalance + juniorBalance) / (Number(vaultInfo.totalTokensIssued) / 1e18) * 100) : 0; @@ -92,7 +98,7 @@ const UnifiedDashboard = () => { const getRiskProfile = () => { const totalTokens = seniorBalance + juniorBalance; if (totalTokens === 0) return { level: 'None', color: 'slate', percentage: 0 }; - + const seniorRatio = seniorBalance / totalTokens; if (seniorRatio >= 0.8) return { level: 'Conservative', color: 'blue', percentage: seniorRatio * 100 }; if (seniorRatio >= 0.6) return { level: 'Moderate', color: 'purple', percentage: seniorRatio * 100 }; @@ -108,15 +114,84 @@ const UnifiedDashboard = () => { setTargetSeniorPercent(Math.round(riskProfile.percentage)); }, [riskProfile.percentage]); + // Calculate rebalance preview with actual AMM pricing + const calculateRebalancePreview = async (targetPercent: number) => { + if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut) return; + + const currentSeniorPercent = riskProfile.percentage; + const percentDiff = targetPercent - currentSeniorPercent; + + if (Math.abs(percentDiff) < 1) { + setRebalancePreview(null); + return; + } + + try { + let amountIn: string; + let path: string[]; + let tokenIn: 'senior' | 'junior'; + let tokenOut: 'senior' | 'junior'; + + if (targetPercent === 100) { + // Swap ALL Junior tokens to Senior + amountIn = juniorBalance.toFixed(18); + path = [juniorTokenAddress, seniorTokenAddress]; + tokenIn = 'junior'; + tokenOut = 'senior'; + } else if (targetPercent === 0) { + // Swap ALL Senior tokens to Junior + amountIn = seniorBalance.toFixed(18); + path = [seniorTokenAddress, juniorTokenAddress]; + tokenIn = 'senior'; + tokenOut = 'junior'; + } else if (percentDiff > 0) { + // Need more Senior tokens - calculate Junior to swap based on target percentage + const totalTokens = seniorBalance + juniorBalance; + const targetSeniorAmount = (totalTokens * targetPercent) / 100; + const seniorNeeded = targetSeniorAmount - seniorBalance; + const juniorToSwap = Math.min(seniorNeeded / parseFloat(juniorPrice), juniorBalance); + + amountIn = juniorToSwap.toFixed(18); + path = [juniorTokenAddress, seniorTokenAddress]; + tokenIn = 'junior'; + tokenOut = 'senior'; + } else { + // Need more Junior tokens - calculate Senior to swap based on target percentage + const totalTokens = seniorBalance + juniorBalance; + const targetJuniorAmount = (totalTokens * (100 - targetPercent)) / 100; + const juniorNeeded = targetJuniorAmount - juniorBalance; + const seniorToSwap = Math.min(juniorNeeded * parseFloat(juniorPrice), seniorBalance); + + amountIn = seniorToSwap.toFixed(18); + path = [seniorTokenAddress, juniorTokenAddress]; + tokenIn = 'senior'; + tokenOut = 'junior'; + } + + if (parseFloat(amountIn) > 0) { + const amountOut = await getAmountsOut(amountIn, path); + setRebalancePreview({ + amountIn: parseFloat(amountIn).toFixed(4), + amountOut: parseFloat(amountOut).toFixed(4), + tokenIn, + tokenOut + }); + } + } catch (error) { + console.error('Error calculating rebalance preview:', error); + setRebalancePreview(null); + } + }; + // Fetch prices and reserves useEffect(() => { const fetchPrices = async () => { if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !currentChain) return; - + try { const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); const reserves = await getPairReserves(pairAddress); - + setPoolReserves({ senior: ethers.formatEther(reserves.reserve0), junior: ethers.formatEther(reserves.reserve1), @@ -125,10 +200,10 @@ const UnifiedDashboard = () => { // Get real prices from AMM const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; - + const seniorRate = await getAmountsOut('1', seniorToJuniorPath); const juniorRate = await getAmountsOut('1', juniorToSeniorPath); - + setSeniorPrice(parseFloat(juniorRate).toFixed(2)); setJuniorPrice(parseFloat(seniorRate).toFixed(2)); } catch (error) { @@ -141,15 +216,74 @@ const UnifiedDashboard = () => { return () => clearInterval(interval); }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, getPairReserves, currentChain]); + // Execute rebalancing + const executeRebalance = async () => { + if (!seniorTokenAddress || !juniorTokenAddress || !swapExactTokensForTokens || !getAmountsOut) return; + + const currentSeniorPercent = riskProfile.percentage; + const targetPercent = targetSeniorPercent; + const percentDiff = targetPercent - currentSeniorPercent; + + if (Math.abs(percentDiff) < 1) return; // No significant change + + setIsExecuting(true); + try { + let amountIn: string; + let path: string[]; + + if (targetPercent === 100) { + // Swap ALL Junior tokens to Senior + amountIn = juniorBalance.toFixed(18); + path = [juniorTokenAddress, seniorTokenAddress]; + } else if (targetPercent === 0) { + // Swap ALL Senior tokens to Junior + amountIn = seniorBalance.toFixed(18); + path = [seniorTokenAddress, juniorTokenAddress]; + } else if (percentDiff > 0) { + // Need more Senior tokens - calculate Junior to swap based on target percentage + const totalTokens = seniorBalance + juniorBalance; + const targetSeniorAmount = (totalTokens * targetPercent) / 100; + const seniorNeeded = targetSeniorAmount - seniorBalance; + const juniorToSwap = Math.min(seniorNeeded / parseFloat(juniorPrice), juniorBalance); + + amountIn = juniorToSwap.toFixed(18); + path = [juniorTokenAddress, seniorTokenAddress]; + } else { + // Need more Junior tokens - calculate Senior to swap based on target percentage + const totalTokens = seniorBalance + juniorBalance; + const targetJuniorAmount = (totalTokens * (100 - targetPercent)) / 100; + const juniorNeeded = targetJuniorAmount - juniorBalance; + const seniorToSwap = Math.min(juniorNeeded * parseFloat(juniorPrice), seniorBalance); + + amountIn = seniorToSwap.toFixed(18); + path = [seniorTokenAddress, juniorTokenAddress]; + } + + if (parseFloat(amountIn) > 0) { + const amountsOut = await getAmountsOut(amountIn, path); + const minAmountOut = (parseFloat(amountsOut) * 0.95).toFixed(18); // 5% slippage + await swapExactTokensForTokens(amountIn, minAmountOut, path); + } + + await refreshData(); + setIsRebalancePreview(false); + setTargetSeniorPercent(Math.round(riskProfile.percentage)); + } catch (error) { + console.error('Rebalancing failed:', error); + } finally { + setIsExecuting(false); + } + }; + // Strategy execution const executeStrategy = async (strategy: 'safety' | 'upside' | 'balanced') => { if (!amount || parseFloat(amount) <= 0) return; - + setIsExecuting(true); try { // First deposit to get tokens await depositAsset(selectedAsset, amount); - + if (strategy === 'safety') { // Convert all junior to senior const freshJuniorBalance = await getTokenBalance(juniorTokenAddress!); @@ -172,7 +306,7 @@ const UnifiedDashboard = () => { } } // For balanced, keep 50/50 split from deposit - + setAmount(''); await refreshData(); } catch (error) { @@ -209,9 +343,9 @@ const UnifiedDashboard = () => {
- + - +
{/* Header */}
@@ -223,8 +357,8 @@ const UnifiedDashboard = () => {

- {riskProfile.level} Risk Profile @@ -331,8 +465,8 @@ const UnifiedDashboard = () => { {formatNumber(riskProfile.percentage)}% Senior
-
@@ -399,16 +533,16 @@ const UnifiedDashboard = () => { - - - -
- {/* Slider Control */} + {/* Target Allocation Buttons */}
-
- { - setTargetSeniorPercent(value[0]); +
+ + + + +
-
- 0% Senior
Max Risk
- 50% Senior
Balanced
- 100% Senior
Max Safety
+
+ Max Risk + Balanced + Max Safety
{/* Trade Preview */} - {isRebalancePreview && Math.abs(targetSeniorPercent - riskProfile.percentage) > 0 && ( + {isRebalancePreview && rebalancePreview && (
Rebalance Preview
- {targetSeniorPercent > riskProfile.percentage ? ( -
-
+
+
+ {rebalancePreview.tokenIn === 'junior' ? ( - Swap ~{formatNumber((juniorBalance * (targetSeniorPercent - riskProfile.percentage) / 100))} Junior → Senior -
-
- Estimated output: ~{formatNumber((juniorBalance * (targetSeniorPercent - riskProfile.percentage) / 100) * parseFloat(juniorPrice))} Senior tokens -
-
- ) : ( -
-
+ ) : ( - Swap ~{formatNumber((seniorBalance * (riskProfile.percentage - targetSeniorPercent) / 100))} Senior → Junior -
-
- Estimated output: ~{formatNumber((seniorBalance * (riskProfile.percentage - targetSeniorPercent) / 100) / parseFloat(juniorPrice))} Junior tokens -
+ )} + + Swap {rebalancePreview.amountIn} {rebalancePreview.tokenIn === 'junior' ? 'Junior' : 'Senior'} → {rebalancePreview.tokenOut === 'junior' ? 'Junior' : 'Senior'} + +
+
+ Expected output: {rebalancePreview.amountOut} {rebalancePreview.tokenOut === 'junior' ? 'Junior' : 'Senior'} tokens +
+
+ Price impact: ~{formatNumber((1 - parseFloat(rebalancePreview.amountOut) / (parseFloat(rebalancePreview.amountIn) * (rebalancePreview.tokenIn === 'junior' ? parseFloat(juniorPrice) : 1/parseFloat(juniorPrice)))) * 100, 2)}%
- )} -
- - Estimated gas: ~0.15 GLMR
)} {/* Action Buttons */} - {isRebalancePreview && Math.abs(targetSeniorPercent - riskProfile.percentage) > 0 ? ( + {isRebalancePreview && rebalancePreview ? (
- -
) : ( @@ -886,7 +1072,7 @@ const UnifiedDashboard = () => {

Pool Ratio

- {parseFloat(poolReserves.junior) > 0 + {parseFloat(poolReserves.junior) > 0 ? formatNumber(parseFloat(poolReserves.senior) / parseFloat(poolReserves.junior), 2) : '1.00' } @@ -900,8 +1086,8 @@ const UnifiedDashboard = () => {

-
{/* Key Metrics Row */} -
+
- +

Portfolio Value

@@ -389,7 +390,7 @@ const UnifiedDashboard = () => { - +

Senior Tokens

@@ -404,7 +405,7 @@ const UnifiedDashboard = () => { - +

Junior Tokens

@@ -419,7 +420,7 @@ const UnifiedDashboard = () => { - +

Protocol Phase

@@ -436,9 +437,10 @@ const UnifiedDashboard = () => {
+ {/* Main Content Tabs */} - - + + Overview Deposit & Trade Manage Positions @@ -446,8 +448,8 @@ const UnifiedDashboard = () => { {/* Overview Tab */} - -
+ +
{/* Portfolio Breakdown */} @@ -553,10 +555,10 @@ const UnifiedDashboard = () => { {/* Protocol Status */} @@ -578,57 +580,10 @@ const UnifiedDashboard = () => {
- {/* Market Overview */} - - - - - Market Overview - - - -
-
-

Senior Price

-

${seniorPrice}

-
- - Stable -
-
-
-

Junior Price

-

${juniorPrice}

-
- - Volatile -
-
-
-

Pool Liquidity

-

- ${formatNumber((parseFloat(poolReserves.senior) + parseFloat(poolReserves.junior)), 0)} -

-
- - Deep -
-
-
-

Protocol TVL

-

${formatNumber(protocolTVL, 0)}

-
- - Growing -
-
-
-
-
{/* Deposit & Trade Tab */} - + @@ -641,7 +596,7 @@ const UnifiedDashboard = () => { {/* Strategy Selection */} -
+
{ }`} onClick={() => setActiveStrategy('safety')} > - +

Max Safety

All funds → Senior tokens

@@ -668,7 +623,7 @@ const UnifiedDashboard = () => { }`} onClick={() => setActiveStrategy('balanced')} > - +

Balanced

50% Senior / 50% Junior

@@ -686,7 +641,7 @@ const UnifiedDashboard = () => { }`} onClick={() => setActiveStrategy('upside')} > - +

Max Upside

All funds → Junior tokens

@@ -698,7 +653,7 @@ const UnifiedDashboard = () => {
{/* Deposit Form */} -
+
@@ -797,8 +752,8 @@ const UnifiedDashboard = () => { {/* Manage Positions Tab */} - -
+ +
{/* Rebalance Portfolio */} @@ -837,72 +792,72 @@ const UnifiedDashboard = () => { {/* Target Allocation Buttons */}
-
+
-
- Max Risk - Balanced - Max Safety +
+ Max Risk + Balanced + Max Safety
@@ -933,7 +888,7 @@ const UnifiedDashboard = () => { {/* Action Buttons */} {isRebalancePreview && rebalancePreview ? ( -
+
@@ -1019,33 +974,46 @@ const UnifiedDashboard = () => { {/* Advanced Tab */} - -
- {/* Liquidity Management */} + +
+ {/* Stake Risk Tokens */} - Liquidity Management + Stake Risk Tokens - Provide liquidity to earn trading fees + Add your Senior/Junior tokens to Uniswap pool to earn trading fees
-

Current LP Position

+

Current Staked Position

{formatNumber(lpBalance)} LP

-

Pool share

+

Earning fees from {formatNumber(seniorBalance)} Senior + {formatNumber(juniorBalance)} Junior

+
+ +
+
+ Available to Stake: + {formatNumber(seniorBalance + juniorBalance)} tokens +
+
+ Estimated APR: + 12.5% +
{lpBalance > 0 && ( )}
@@ -1060,7 +1028,7 @@ const UnifiedDashboard = () => { -
+

Total TVL

${formatNumber(protocolTVL, 0)}

@@ -1099,6 +1067,54 @@ const UnifiedDashboard = () => {
+ + {/* Market Overview - Always Visible at Bottom */} + + + + + Market Overview + + + +
+
+

Senior Price

+

${seniorPrice}

+
+ + Stable +
+
+
+

Junior Price

+

${juniorPrice}

+
+ + Volatile +
+
+
+

Pool Liquidity

+

+ ${formatNumber((parseFloat(poolReserves.senior) + parseFloat(poolReserves.junior)), 0)} +

+
+ + Deep +
+
+
+

Protocol TVL

+

${formatNumber(protocolTVL, 0)}

+
+ + Growing +
+
+
+
+
); From 85f5aaa487f3c2c94bd2123d72a3a01d3919a438 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 17:19:34 +0100 Subject: [PATCH 17/50] clean up imports --- frontend/src/pages/UnifiedDashboard.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/frontend/src/pages/UnifiedDashboard.tsx b/frontend/src/pages/UnifiedDashboard.tsx index 8e3e43d..864934c 100644 --- a/frontend/src/pages/UnifiedDashboard.tsx +++ b/frontend/src/pages/UnifiedDashboard.tsx @@ -9,7 +9,6 @@ import { Alert, AlertDescription } from '@/components/ui/alert'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Badge } from '@/components/ui/badge'; import { Progress } from '@/components/ui/progress'; -import { Slider } from '@/components/ui/slider'; import { Shield, TrendingUp, @@ -26,14 +25,10 @@ import { BarChart3, Target, Users, - Lock, - Unlock, ExternalLink, - ChevronRight, Plus, Minus, Settings, - TrendingDown } from 'lucide-react'; import { Phase, ContractName, getContractAddress } from '@/config/contracts'; import { ethers } from 'ethers'; From 0d082248afa3ed67552699c2b67ae898a9e02ba2 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 18:00:21 +0100 Subject: [PATCH 18/50] unified dashboard with all the info, clean --- frontend/src/pages/UnifiedDashboard.tsx | 748 ++++++++++++++++++++---- 1 file changed, 641 insertions(+), 107 deletions(-) diff --git a/frontend/src/pages/UnifiedDashboard.tsx b/frontend/src/pages/UnifiedDashboard.tsx index 864934c..9cfd5f8 100644 --- a/frontend/src/pages/UnifiedDashboard.tsx +++ b/frontend/src/pages/UnifiedDashboard.tsx @@ -40,11 +40,13 @@ const UnifiedDashboard = () => { vaultInfo, depositAsset, withdraw, + emergencyWithdraw, swapExactTokensForTokens, getAmountsOut, seniorTokenAddress, juniorTokenAddress, addLiquidity, + removeLiquidity, refreshData, getPairReserves, getTokenBalance, @@ -69,6 +71,22 @@ const UnifiedDashboard = () => { tokenOut: 'senior' | 'junior'; } | null>(null); + // Withdrawal state + const [selectedWithdrawAsset, setSelectedWithdrawAsset] = useState<'aUSDC' | 'cUSDT' | null>(null); + const [withdrawAssetAmount, setWithdrawAssetAmount] = useState(''); + const [calculatedTokenAmounts, setCalculatedTokenAmounts] = useState({ senior: '0', junior: '0' }); + const [effectivePhase, setEffectivePhase] = useState(Phase.DEPOSIT); + + // Emergency withdrawal state + const [emergencyAmount, setEmergencyAmount] = useState(''); + const [preferredAsset, setPreferredAsset] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); + + // Liquidity management state + const [liquiditySeniorAmount, setLiquiditySeniorAmount] = useState(''); + const [liquidityJuniorAmount, setLiquidityJuniorAmount] = useState(''); + const [removeLiquidityAmount, setRemoveLiquidityAmount] = useState(''); + const [liquidityMode, setLiquidityMode] = useState<'manual' | 'optimal'>('optimal'); + // Format utilities const formatTokenAmount = (amount: bigint) => ethers.formatEther(amount); const formatNumber = (num: number, decimals = 2) => num.toFixed(decimals); @@ -109,6 +127,57 @@ const UnifiedDashboard = () => { setTargetSeniorPercent(Math.round(riskProfile.percentage)); }, [riskProfile.percentage]); + // Calculate optimal token amounts when user selects asset and amount + useEffect(() => { + const calculateOptimalTokens = () => { + if (!selectedWithdrawAsset || !withdrawAssetAmount || parseFloat(withdrawAssetAmount) <= 0) { + setCalculatedTokenAmounts({ senior: '0', junior: '0' }); + return; + } + + const targetAmount = parseFloat(withdrawAssetAmount); + const seniorBalanceNum = seniorBalance; + const juniorBalanceNum = juniorBalance; + + let seniorToUse = 0; + let juniorToUse = 0; + + // Handle case where phase is not loaded yet - default to DEPOSIT phase logic + // Convert bigint to number for comparison + const currentPhase = vaultInfo.currentPhase !== undefined ? Number(vaultInfo.currentPhase) : Phase.DEPOSIT; + setEffectivePhase(currentPhase); + + if (currentPhase === Phase.DEPOSIT) { + // Deposit phase: equal amounts required + const requiredPerToken = targetAmount / 2; // Each token contributes half + const maxPossible = Math.min(seniorBalanceNum, juniorBalanceNum); + const actualPerToken = Math.min(requiredPerToken, maxPossible); + seniorToUse = actualPerToken; + juniorToUse = actualPerToken; + } else if (currentPhase === Phase.CLAIMS) { + // Claims phase: senior tokens only + seniorToUse = Math.min(targetAmount, seniorBalanceNum); + juniorToUse = 0; + } else { + // Other phases: prefer junior tokens first + if (juniorBalanceNum >= targetAmount) { + juniorToUse = targetAmount; + seniorToUse = 0; + } else { + juniorToUse = juniorBalanceNum; + seniorToUse = Math.min(targetAmount - juniorBalanceNum, seniorBalanceNum); + } + } + + setCalculatedTokenAmounts({ + senior: seniorToUse.toFixed(6), + junior: juniorToUse.toFixed(6), + }); + }; + + calculateOptimalTokens(); + }, [selectedWithdrawAsset, withdrawAssetAmount, seniorBalance, juniorBalance, vaultInfo.currentPhase]); + // Calculate rebalance preview with actual AMM pricing const calculateRebalancePreview = async (targetPercent: number) => { if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut) return; @@ -178,36 +247,89 @@ const UnifiedDashboard = () => { } }; - // Fetch prices and reserves + // Fetch prices and reserves with enhanced change detection useEffect(() => { - const fetchPrices = async () => { + const fetchTokenPrices = async () => { if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !currentChain) return; try { + // Get pool reserves to calculate proper AMM pricing const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); const reserves = await getPairReserves(pairAddress); + const seniorReserve = parseFloat(ethers.formatEther(reserves.reserve0)); + const juniorReserve = parseFloat(ethers.formatEther(reserves.reserve1)); + + // Calculate prices directly from Uniswap AMM reserves + // In a Uniswap pair, price = other_reserve / this_reserve + const seniorPriceInJunior = juniorReserve / seniorReserve; + const juniorPriceInSenior = seniorReserve / juniorReserve; + + // For USD pricing, we need to establish a base. + // Let's use getAmountsOut to get actual market prices + try { + // Get price of 1 SENIOR in terms of JUNIOR + const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; + const seniorPrice1Unit = await getAmountsOut('1', seniorToJuniorPath); + + // Get price of 1 JUNIOR in terms of SENIOR + const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; + const juniorPrice1Unit = await getAmountsOut('1', juniorToSeniorPath); + + setSeniorPrice(parseFloat(seniorPrice1Unit).toFixed(2)); + setJuniorPrice(parseFloat(juniorPrice1Unit).toFixed(2)); + } catch (error) { + console.error('Error getting AMM prices:', error); + // Fallback to reserve-based calculation + setSeniorPrice(seniorPriceInJunior.toFixed(2)); + setJuniorPrice(juniorPriceInSenior.toFixed(2)); + } + } catch (error) { + console.error('Error fetching token prices:', error); + // Keep default prices on error (equal weighting) + setSeniorPrice('1.00'); + setJuniorPrice('1.00'); + } + }; - setPoolReserves({ - senior: ethers.formatEther(reserves.reserve0), - junior: ethers.formatEther(reserves.reserve1), - }); - - // Get real prices from AMM - const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; - const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; + const fetchPoolReserves = async () => { + if (!getPairReserves || !currentChain) return; - const seniorRate = await getAmountsOut('1', seniorToJuniorPath); - const juniorRate = await getAmountsOut('1', juniorToSeniorPath); + try { + const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); + const reserves = await getPairReserves(pairAddress); - setSeniorPrice(parseFloat(juniorRate).toFixed(2)); - setJuniorPrice(parseFloat(seniorRate).toFixed(2)); + // Format reserves from wei to ether + const seniorReserve = ethers.formatEther(reserves.reserve0); + const juniorReserve = ethers.formatEther(reserves.reserve1); + + // Only update if values have changed significantly (avoid micro-updates) + const currentSenior = parseFloat(poolReserves.senior); + const currentJunior = parseFloat(poolReserves.junior); + const newSenior = parseFloat(seniorReserve); + const newJunior = parseFloat(juniorReserve); + + if (Math.abs(currentSenior - newSenior) > 0.01 || Math.abs(currentJunior - newJunior) > 0.01) { + setPoolReserves({ + senior: seniorReserve, + junior: juniorReserve, + }); + } } catch (error) { - console.error('Error fetching prices:', error); + console.error('Error fetching pool reserves:', error); + // Only reset if we don't have valid data + if (poolReserves.senior === '0' && poolReserves.junior === '0') { + setPoolReserves({ senior: '0', junior: '0' }); + } } }; - fetchPrices(); - const interval = setInterval(fetchPrices, 30000); + fetchTokenPrices(); + fetchPoolReserves(); + const interval = setInterval(() => { + fetchTokenPrices(); + fetchPoolReserves(); + }, 30000); // Update every 30 seconds to reduce twitching + return () => clearInterval(interval); }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, getPairReserves, currentChain]); @@ -270,6 +392,109 @@ const UnifiedDashboard = () => { } }; + // Optimal withdrawal handler + const handleOptimalWithdraw = async () => { + if (!selectedWithdrawAsset || !withdrawAssetAmount || parseFloat(withdrawAssetAmount) <= 0) return; + + const { senior, junior } = calculatedTokenAmounts; + if (parseFloat(senior) <= 0 && parseFloat(junior) <= 0) return; + + setIsExecuting(true); + try { + await withdraw(senior, junior); + setSelectedWithdrawAsset(null); + setWithdrawAssetAmount(''); + setCalculatedTokenAmounts({ senior: '0', junior: '0' }); + await refreshData(); + } catch (error) { + console.error('Withdrawal failed:', error); + } finally { + setIsExecuting(false); + } + }; + + // Emergency withdrawal handler + const handleEmergencyWithdraw = async () => { + if (!emergencyAmount || parseFloat(emergencyAmount) <= 0) return; + setIsExecuting(true); + try { + await emergencyWithdraw(emergencyAmount, preferredAsset); + setEmergencyAmount(''); + await refreshData(); + } catch (error) { + console.error('Emergency withdrawal failed:', error); + } finally { + setIsExecuting(false); + } + }; + + // Liquidity management handlers + const handleAddLiquidity = async () => { + if (!liquiditySeniorAmount || !liquidityJuniorAmount || !seniorTokenAddress || !juniorTokenAddress) return; + if (parseFloat(liquiditySeniorAmount) <= 0 || parseFloat(liquidityJuniorAmount) <= 0) return; + + setIsExecuting(true); + try { + await addLiquidity(liquiditySeniorAmount, liquidityJuniorAmount, seniorTokenAddress, juniorTokenAddress); + setLiquiditySeniorAmount(''); + setLiquidityJuniorAmount(''); + await refreshData(); + } catch (error) { + console.error('Add liquidity failed:', error); + } finally { + setIsExecuting(false); + } + }; + + const handleOptimalLiquidity = () => { + const seniorBalanceNum = seniorBalance; + const juniorBalanceNum = juniorBalance; + const poolSenior = parseFloat(poolReserves.senior); + const poolJunior = parseFloat(poolReserves.junior); + + if (poolSenior > 0 && poolJunior > 0) { + // Calculate optimal amounts based on pool ratio + const poolRatio = poolSenior / poolJunior; + const userRatio = seniorBalanceNum / juniorBalanceNum; + + let optimalSenior: number, optimalJunior: number; + + if (userRatio > poolRatio) { + // User has more senior relative to pool ratio + optimalJunior = juniorBalanceNum; + optimalSenior = Math.min(optimalJunior * poolRatio, seniorBalanceNum); + } else { + // User has more junior relative to pool ratio + optimalSenior = seniorBalanceNum; + optimalJunior = Math.min(optimalSenior / poolRatio, juniorBalanceNum); + } + + setLiquiditySeniorAmount(optimalSenior.toFixed(6)); + setLiquidityJuniorAmount(optimalJunior.toFixed(6)); + } else { + // If no pool reserves, use equal amounts + const maxAmount = Math.min(seniorBalanceNum, juniorBalanceNum); + setLiquiditySeniorAmount(maxAmount.toFixed(6)); + setLiquidityJuniorAmount(maxAmount.toFixed(6)); + } + }; + + const handleRemoveLiquidity = async () => { + if (!removeLiquidityAmount || !seniorTokenAddress || !juniorTokenAddress) return; + if (parseFloat(removeLiquidityAmount) <= 0) return; + + setIsExecuting(true); + try { + await removeLiquidity(removeLiquidityAmount, seniorTokenAddress, juniorTokenAddress); + setRemoveLiquidityAmount(''); + await refreshData(); + } catch (error) { + console.error('Remove liquidity failed:', error); + } finally { + setIsExecuting(false); + } + }; + // Strategy execution const executeStrategy = async (strategy: 'safety' | 'upside' | 'balanced') => { if (!amount || parseFloat(amount) <= 0) return; @@ -556,20 +781,40 @@ const UnifiedDashboard = () => { - {/* Protocol Status */} + {/* Protocol Analytics */}
-
-
- Protocol Status: - {Phase[vaultInfo.currentPhase] || 'Loading...'} +
+

+ + Protocol Analytics +

+
+
+
+

Total TVL

+

${formatNumber(protocolTVL, 0)}

-
- Emergency Mode: - +
+

Your Share

+

{formatNumber(userSharePercent, 4)}%

+
+
+

Pool Ratio

+

+ {parseFloat(poolReserves.junior) > 0 + ? formatNumber(parseFloat(poolReserves.senior) / parseFloat(poolReserves.junior), 2) + : '1.00' + } +

+
+
+

Emergency

+

{vaultInfo.emergencyMode ? 'Active' : 'Inactive'} - +

+
@@ -921,40 +1166,108 @@ const UnifiedDashboard = () => { - {/* Withdraw Funds */} + {/* Optimal Asset Redemption */} - Withdraw Funds + Optimal Asset Redemption - Convert tokens back to underlying assets + Choose target asset and amount - system calculates optimal token usage -
- - -
- Max withdrawable: ${formatNumber(totalPortfolioValue)} + {/* Asset Selection */} +
+ +
+ +
-
- -
- - + {/* Amount Input */} + {selectedWithdrawAsset && ( +
+ + setWithdrawAssetAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +
+ Max withdrawable: ${formatNumber(totalPortfolioValue)} +
-
+ )} - @@ -971,94 +1284,313 @@ const UnifiedDashboard = () => { {/* Advanced Tab */}
- {/* Stake Risk Tokens */} + {/* Add Liquidity */} - Stake Risk Tokens + Add Liquidity - Add your Senior/Junior tokens to Uniswap pool to earn trading fees + Provide liquidity to earn trading fees. Choose optimal or manual mode. -
-

Current Staked Position

-

{formatNumber(lpBalance)} LP

-

Earning fees from {formatNumber(seniorBalance)} Senior + {formatNumber(juniorBalance)} Junior

+ {/* Mode Selection */} +
+ +
+ + +
-
-
- Available to Stake: - {formatNumber(seniorBalance + juniorBalance)} tokens -
-
- Estimated APR: - 12.5% + {liquidityMode === 'optimal' ? ( +
+ {/* Available Tokens Display */} +
+
+
+

Available tokens:

+

+ {formatNumber(seniorBalance, 4)} SENIOR + {formatNumber(juniorBalance, 4)} JUNIOR +

+

+ Will add optimal amounts to match pool ratio +

+
+
+
+ + {/* Quick Actions */} +
+ + + {(liquiditySeniorAmount || liquidityJuniorAmount) && ( + + )} +
+ + {/* Show calculated amounts */} + {(liquiditySeniorAmount || liquidityJuniorAmount) && ( + + + +
+
Ready to add:
+
+ {liquiditySeniorAmount} SENIOR + {liquidityJuniorAmount} JUNIOR +
+
+ These amounts match the current pool ratio for optimal liquidity provision +
+
+
+
+ )}
-
+ ) : ( +
+ {/* Manual Input */} +
+
+ + setLiquiditySeniorAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +

+ Balance: {formatNumber(seniorBalance)} +

+
- +
+ + setLiquidityJuniorAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +

+ Balance: {formatNumber(juniorBalance)} +

+
+
- {lpBalance > 0 && ( - + {liquiditySeniorAmount && liquidityJuniorAmount && ( + + + + You'll receive LP tokens proportional to your share of the pool + + + )} + + +
)} - {/* Protocol Analytics */} + {/* Remove Liquidity */} - - Protocol Analytics + + Remove Liquidity + + Remove liquidity from the SENIOR/JUNIOR pool + -
-
-

Total TVL

-

${formatNumber(protocolTVL, 0)}

-
-
-

Your Share

-

{formatNumber(userSharePercent, 4)}%

-
-
-

Pool Ratio

-

- {parseFloat(poolReserves.junior) > 0 - ? formatNumber(parseFloat(poolReserves.senior) / parseFloat(poolReserves.junior), 2) - : '1.00' - } -

-
-
-

Emergency Mode

-

- {vaultInfo.emergencyMode ? 'Active' : 'Inactive'} -

-
+
+

Current LP Position

+

{formatNumber(lpBalance)} LP

+

Pool share tokens

+
+ + setRemoveLiquidityAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +

+ LP Balance: {formatNumber(lpBalance)} +

+
+ + {removeLiquidityAmount && parseFloat(removeLiquidityAmount) > 0 && ( + + + + You'll receive proportional amounts of SENIOR and JUNIOR tokens + + + )} + + + {/* Emergency Withdrawal */} + {vaultInfo.emergencyMode && ( + + + Emergency Withdrawal + + Emergency mode is active. Senior token holders can withdraw with preferred asset. + + + +
+
+ + setEmergencyAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +
+
+ +
+ + +
+
+
+ +
+
+ )} +
@@ -1066,10 +1598,12 @@ const UnifiedDashboard = () => { {/* Market Overview - Always Visible at Bottom */} - - - Market Overview - +
+ + + Market Overview + tics +
From b3cd3e2d767b59357ebb179c9820ea5c9a23b56a Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 18:08:56 +0100 Subject: [PATCH 19/50] unified page components are also unified --- frontend/src/pages/UnifiedDashboard.tsx | 82 ++++++++++++------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/frontend/src/pages/UnifiedDashboard.tsx b/frontend/src/pages/UnifiedDashboard.tsx index 9cfd5f8..411302d 100644 --- a/frontend/src/pages/UnifiedDashboard.tsx +++ b/frontend/src/pages/UnifiedDashboard.tsx @@ -144,17 +144,17 @@ const UnifiedDashboard = () => { // Handle case where phase is not loaded yet - default to DEPOSIT phase logic // Convert bigint to number for comparison - const currentPhase = vaultInfo.currentPhase !== undefined ? Number(vaultInfo.currentPhase) : Phase.DEPOSIT; + const currentPhase = vaultInfo.currentPhase !== undefined ? Number(vaultInfo.currentPhase) : 0; // 0 = DEPOSIT setEffectivePhase(currentPhase); - if (currentPhase === Phase.DEPOSIT) { + if (currentPhase === 0) { // DEPOSIT phase // Deposit phase: equal amounts required const requiredPerToken = targetAmount / 2; // Each token contributes half const maxPossible = Math.min(seniorBalanceNum, juniorBalanceNum); const actualPerToken = Math.min(requiredPerToken, maxPossible); seniorToUse = actualPerToken; juniorToUse = actualPerToken; - } else if (currentPhase === Phase.CLAIMS) { + } else if (currentPhase === 2) { // CLAIMS phase // Claims phase: senior tokens only seniorToUse = Math.min(targetAmount, seniorBalanceNum); juniorToUse = 0; @@ -644,7 +644,7 @@ const UnifiedDashboard = () => {

Protocol Phase

-

+

{vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'}

@@ -836,7 +836,7 @@ const UnifiedDashboard = () => { {/* Strategy Selection */} -
+
{ }`} onClick={() => setActiveStrategy('safety')} > - - -

Max Safety

+ + +

Max Safety

All funds → Senior tokens

- + Priority Claims
@@ -863,11 +863,11 @@ const UnifiedDashboard = () => { }`} onClick={() => setActiveStrategy('balanced')} > - - -

Balanced

+ + +

Balanced

50% Senior / 50% Junior

- + Moderate Risk
@@ -881,11 +881,11 @@ const UnifiedDashboard = () => { }`} onClick={() => setActiveStrategy('upside')} > - - -

Max Upside

+ + +

Max Upside

All funds → Junior tokens

- + Higher Returns
@@ -893,52 +893,52 @@ const UnifiedDashboard = () => {
{/* Deposit Form */} -
+
- -
+ +
- + setAmount(e.target.value)} - className="bg-slate-700/50 border-slate-600 text-white text-lg py-6" + className="bg-slate-700/50 border-slate-600 text-white" />
- Available: {formatNumber(selectedAsset === 'aUSDC' ? aUSDCBalance : cUSDTBalance, 4)} + Available: {formatNumber(selectedAsset === 'aUSDC' ? aUSDCBalance : cUSDTBalance, 2)} - - + +
+
+ + setLiquiditySeniorAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +

+ Balance: {formatNumber(seniorBalance)} +

+
+ +
+ + setLiquidityJuniorAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +

+ Balance: {formatNumber(juniorBalance)} +

+
+
+ + {liquiditySeniorAmount && liquidityJuniorAmount && ( + + + + You'll receive LP tokens proportional to your share of the pool + + + )} + + + + + + {/* Remove Liquidity */} + + + + + Remove Liquidity + + + Remove liquidity from the SENIOR/JUNIOR pool + + + +
+

Current LP Position

+

{formatNumber(lpBalance)} LP

+

Pool share tokens

+
+ +
+ + setRemoveLiquidityAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +

+ LP Balance: {formatNumber(lpBalance)} +

+
+ + {removeLiquidityAmount && parseFloat(removeLiquidityAmount) > 0 && ( + + + + You'll receive proportional amounts of SENIOR and JUNIOR tokens + + + )} + + +
+
+ + {/* Emergency Withdrawal */} + {vaultInfo.emergencyMode && ( + + + Emergency Withdrawal + + Emergency mode is active. Senior token holders can withdraw with preferred asset. + + + +
+
+ + setEmergencyAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +
+
+ +
+ + +
+
+
+ +
+
+ )} +
+ ); +}; + +export default AdvancedFeatures; \ No newline at end of file diff --git a/frontend/src/components/dashboard/DepositStrategies.tsx b/frontend/src/components/dashboard/DepositStrategies.tsx new file mode 100644 index 0000000..8023837 --- /dev/null +++ b/frontend/src/components/dashboard/DepositStrategies.tsx @@ -0,0 +1,211 @@ +import React, { useState } from 'react'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Alert, AlertDescription } from '@/components/ui/alert'; +import { Badge } from '@/components/ui/badge'; +import { + Shield, + TrendingUp, + Activity, + Target, + Info, + RefreshCw, +} from 'lucide-react'; + +interface DepositStrategiesProps { + aUSDCBalance: number; + cUSDTBalance: number; + formatNumber: (num: number, decimals?: number) => string; + isExecuting: boolean; + onExecuteStrategy: (strategy: 'safety' | 'upside' | 'balanced', amount: string, asset: 'aUSDC' | 'cUSDT') => void; +} + +const DepositStrategies: React.FC = ({ + aUSDCBalance, + cUSDTBalance, + formatNumber, + isExecuting, + onExecuteStrategy, +}) => { + const [activeStrategy, setActiveStrategy] = useState<'safety' | 'upside' | 'balanced'>('balanced'); + const [amount, setAmount] = useState(''); + const [selectedAsset, setSelectedAsset] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); + + const handleExecute = () => { + if (!amount || parseFloat(amount) <= 0) return; + onExecuteStrategy(activeStrategy, amount, selectedAsset); + setAmount(''); + }; + + return ( + + + + + Smart Deposit Strategies + + + Choose your risk strategy and we'll optimize your token allocation + + + + {/* Strategy Selection */} +
+ setActiveStrategy('safety')} + > + + +

Max Safety

+

All funds → Senior tokens

+ + Priority Claims + +
+
+ + setActiveStrategy('balanced')} + > + + +

Balanced

+

50% Senior / 50% Junior

+ + Moderate Risk + +
+
+ + setActiveStrategy('upside')} + > + + +

Max Upside

+

All funds → Junior tokens

+ + Higher Returns + +
+
+
+ + {/* Deposit Form */} +
+
+ +
+ + +
+
+ +
+ + setAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white" + /> +
+ Available: {formatNumber(selectedAsset === 'aUSDC' ? aUSDCBalance : cUSDTBalance, 2)} + +
+
+
+ + {/* Strategy Preview */} + {amount && parseFloat(amount) > 0 && ( + + + +
+
Strategy Preview:
+
+ {activeStrategy === 'safety' && ( +
Depositing ${amount} will get you ~${amount} in Senior tokens (priority claims)
+ )} + {activeStrategy === 'balanced' && ( +
Depositing ${amount} will get you ~${formatNumber(parseFloat(amount) / 2)} Senior + ~${formatNumber(parseFloat(amount) / 2)} Junior tokens
+ )} + {activeStrategy === 'upside' && ( +
Depositing ${amount} will get you ~${amount} in Junior tokens (higher upside potential)
+ )} +
+
+
+
+ )} + + {/* Execute Button */} + +
+
+ ); +}; + +export default DepositStrategies; \ No newline at end of file diff --git a/frontend/src/components/dashboard/MarketOverview.tsx b/frontend/src/components/dashboard/MarketOverview.tsx new file mode 100644 index 0000000..22ff639 --- /dev/null +++ b/frontend/src/components/dashboard/MarketOverview.tsx @@ -0,0 +1,79 @@ +import React from 'react'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Button } from '@/components/ui/button'; +import { + Activity, + TrendingUp, + Droplets, + Users, + ExternalLink, +} from 'lucide-react'; + +interface MarketOverviewProps { + seniorPrice: string; + juniorPrice: string; + poolReserves: { senior: string; junior: string }; + protocolTVL: number; + formatNumber: (num: number, decimals?: number) => string; +} + +const MarketOverview: React.FC = ({ + seniorPrice, + juniorPrice, + poolReserves, + protocolTVL, + formatNumber, +}) => { + return ( + + +
+ + + Market Overview + +
+
+ +
+
+

Senior Price

+

${seniorPrice}

+
+ + Stable +
+
+
+

Junior Price

+

${juniorPrice}

+
+ + Volatile +
+
+
+

Pool Liquidity

+

+ ${formatNumber((parseFloat(poolReserves.senior) + parseFloat(poolReserves.junior)), 0)} +

+
+ + Deep +
+
+
+

Protocol TVL

+

${formatNumber(protocolTVL, 0)}

+
+ + Growing +
+
+
+
+
+ ); +}; + +export default MarketOverview; diff --git a/frontend/src/components/dashboard/PortfolioOverview.tsx b/frontend/src/components/dashboard/PortfolioOverview.tsx new file mode 100644 index 0000000..2f76bef --- /dev/null +++ b/frontend/src/components/dashboard/PortfolioOverview.tsx @@ -0,0 +1,196 @@ +import React from 'react'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Button } from '@/components/ui/button'; +import { Progress } from '@/components/ui/progress'; +import { + Shield, + TrendingUp, + Zap, + Activity, + Settings, + Droplets, + Plus, + BarChart3, + ExternalLink, +} from 'lucide-react'; + +interface PortfolioOverviewProps { + seniorBalance: number; + juniorBalance: number; + lpBalance: number; + seniorPrice: string; + juniorPrice: string; + riskProfile: { + level: string; + color: string; + percentage: number; + }; + formatNumber: (num: number, decimals?: number) => string; + protocolTVL: number; + userSharePercent: number; + vaultInfo: any; + onTabChange: (tab: string) => void; +} + +const PortfolioOverview: React.FC = ({ + seniorBalance, + juniorBalance, + lpBalance, + seniorPrice, + juniorPrice, + riskProfile, + formatNumber, + protocolTVL, + userSharePercent, + vaultInfo, + onTabChange, +}) => { + return ( +
+ {/* Portfolio Breakdown */} + + + + + Portfolio Breakdown + + + + {/* Risk Profile Visualization */} +
+
+ Risk Distribution + + {formatNumber(riskProfile.percentage)}% Senior + +
+ +
+ Conservative + Aggressive +
+
+ + {/* Token Holdings */} +
+
+
+ +
+

Senior Tokens

+

Priority claims • Lower risk

+
+
+
+

{formatNumber(seniorBalance)}

+

${seniorPrice} each

+
+
+ +
+
+ +
+

Junior Tokens

+

Higher upside • Higher risk

+
+
+
+

{formatNumber(juniorBalance)}

+

${juniorPrice} each

+
+
+ + {lpBalance > 0 && ( +
+
+ +
+

LP Tokens

+

Liquidity provider rewards

+
+
+
+

{formatNumber(lpBalance)}

+

Pool share

+
+
+ )} +
+
+
+ + {/* Quick Actions */} + + + + + Quick Actions + + + + + + + + + + {/* Protocol Analytics */} +
+
+

+ + Protocol Analytics +

+
+
+
+

Total TVL

+

${formatNumber(protocolTVL, 0)}

+
+
+

Your Share

+

{formatNumber(userSharePercent, 4)}%

+
+
+

Pool Ratio

+

1.00

+
+
+

Emergency

+

+ {vaultInfo.emergencyMode ? 'Active' : 'Inactive'} +

+
+
+
+
+
+
+ ); +}; + +export default PortfolioOverview; diff --git a/frontend/src/components/dashboard/PositionManagement.tsx b/frontend/src/components/dashboard/PositionManagement.tsx new file mode 100644 index 0000000..84c2bfe --- /dev/null +++ b/frontend/src/components/dashboard/PositionManagement.tsx @@ -0,0 +1,259 @@ +import React, { useState, useEffect } from 'react'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Alert, AlertDescription } from '@/components/ui/alert'; +import { Progress } from '@/components/ui/progress'; +import { + Activity, + Minus, + ArrowUpRight, + ArrowDownRight, + RefreshCw, + Info, + AlertCircle, +} from 'lucide-react'; + +interface PositionManagementProps { + riskProfile: { percentage: number }; + totalPortfolioValue: number; + formatNumber: (num: number, decimals?: number) => string; + isExecuting: boolean; + onRebalance: (targetPercent: number) => void; + onWithdraw: (asset: 'aUSDC' | 'cUSDT', amount: string) => void; + vaultInfo: any; +} + +const PositionManagement: React.FC = ({ + riskProfile, + totalPortfolioValue, + formatNumber, + isExecuting, + onRebalance, + onWithdraw, + vaultInfo, +}) => { + const [targetSeniorPercent, setTargetSeniorPercent] = useState(50); + const [isRebalancePreview, setIsRebalancePreview] = useState(false); + const [selectedWithdrawAsset, setSelectedWithdrawAsset] = useState<'aUSDC' | 'cUSDT' | null>(null); + const [withdrawAssetAmount, setWithdrawAssetAmount] = useState(''); + + // Initialize target percent to current allocation + useEffect(() => { + setTargetSeniorPercent(Math.round(riskProfile.percentage)); + }, [riskProfile.percentage]); + + const handleRebalancePreview = (targetPercent: number) => { + setTargetSeniorPercent(targetPercent); + setIsRebalancePreview(true); + }; + + const handleRebalanceExecute = () => { + onRebalance(targetSeniorPercent); + setIsRebalancePreview(false); + }; + + const handleWithdrawExecute = () => { + if (!selectedWithdrawAsset || !withdrawAssetAmount) return; + onWithdraw(selectedWithdrawAsset, withdrawAssetAmount); + setSelectedWithdrawAsset(null); + setWithdrawAssetAmount(''); + }; + + return ( +
+ {/* Rebalance Portfolio */} + + + + + Rebalance Portfolio + + + Adjust your risk exposure by trading between Senior and Junior tokens + + + + {/* Current vs Target Visualization */} +
+
+
+ Current Allocation + {formatNumber(riskProfile.percentage)}% Senior / {formatNumber(100 - riskProfile.percentage)}% Junior +
+ +
+ + {isRebalancePreview && ( +
+
+ Target Allocation + {targetSeniorPercent}% Senior / {100 - targetSeniorPercent}% Junior +
+ +
+ +
+ )} +
+ + {/* Target Allocation Buttons */} +
+ +
+ {[0, 25, 50, 75, 100].map((percent) => ( + + ))} +
+
+ Max Risk + Balanced + Max Safety +
+
+ + {/* Action Buttons */} + {isRebalancePreview ? ( +
+ + +
+ ) : ( + + + + Use the buttons above to set your target allocation. Trades will be executed via AMM. + + + )} + + + + {/* Optimal Asset Redemption */} + + + + + Optimal Asset Redemption + + + Choose target asset and amount - system calculates optimal token usage + + + + {/* Asset Selection */} +
+ +
+ + +
+
+ + {/* Amount Input */} + {selectedWithdrawAsset && ( +
+ + setWithdrawAssetAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +
+ Max withdrawable: ${formatNumber(totalPortfolioValue)} +
+
+ )} + + + + + + + Current phase: {vaultInfo.currentPhase !== undefined ? `Phase ${vaultInfo.currentPhase}` : 'Loading...'}. Phase affects withdrawal rules. + + +
+
+
+ ); +}; + +export default PositionManagement; \ No newline at end of file diff --git a/frontend/src/hooks/usePortfolioCalculations.ts b/frontend/src/hooks/usePortfolioCalculations.ts new file mode 100644 index 0000000..143ecd5 --- /dev/null +++ b/frontend/src/hooks/usePortfolioCalculations.ts @@ -0,0 +1,54 @@ +import { useWeb3 } from '@/context/PrivyWeb3Context'; +import { ethers } from 'ethers'; + +export const usePortfolioCalculations = (seniorPrice: string, juniorPrice: string) => { + const { balances, vaultInfo } = useWeb3(); + + const formatTokenAmount = (amount: bigint) => ethers.formatEther(amount); + const formatNumber = (num: number, decimals = 2) => num.toFixed(decimals); + + // Calculated values + const seniorBalance = Number(formatTokenAmount(balances.seniorTokens)); + const juniorBalance = Number(formatTokenAmount(balances.juniorTokens)); + const aUSDCBalance = Number(formatTokenAmount(balances.aUSDC)); + const cUSDTBalance = Number(formatTokenAmount(balances.cUSDT)); + const lpBalance = Number(formatTokenAmount(balances.lpTokens)); + + const totalPortfolioValue = + (seniorBalance * parseFloat(seniorPrice)) + + (juniorBalance * parseFloat(juniorPrice)); + + const protocolTVL = (Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18; + const userSharePercent = vaultInfo.totalTokensIssued > 0n + ? ((seniorBalance + juniorBalance) / (Number(vaultInfo.totalTokensIssued) / 1e18) * 100) + : 0; + + // Risk Assessment + const getRiskProfile = () => { + const totalTokens = seniorBalance + juniorBalance; + if (totalTokens === 0) return { level: 'None', color: 'slate', percentage: 0 }; + + const seniorRatio = seniorBalance / totalTokens; + if (seniorRatio >= 0.8) return { level: 'Conservative', color: 'blue', percentage: seniorRatio * 100 }; + if (seniorRatio >= 0.6) return { level: 'Moderate', color: 'purple', percentage: seniorRatio * 100 }; + if (seniorRatio >= 0.4) return { level: 'Balanced', color: 'green', percentage: seniorRatio * 100 }; + if (seniorRatio >= 0.2) return { level: 'Growth', color: 'yellow', percentage: seniorRatio * 100 }; + return { level: 'Aggressive', color: 'red', percentage: seniorRatio * 100 }; + }; + + const riskProfile = getRiskProfile(); + + return { + formatTokenAmount, + formatNumber, + seniorBalance, + juniorBalance, + aUSDCBalance, + cUSDTBalance, + lpBalance, + totalPortfolioValue, + protocolTVL, + userSharePercent, + riskProfile, + }; +}; \ No newline at end of file diff --git a/frontend/src/hooks/usePricing.ts b/frontend/src/hooks/usePricing.ts new file mode 100644 index 0000000..9791695 --- /dev/null +++ b/frontend/src/hooks/usePricing.ts @@ -0,0 +1,103 @@ +import { useState, useEffect } from 'react'; +import { useWeb3 } from '@/context/PrivyWeb3Context'; +import { ContractName, getContractAddress } from '@/config/contracts'; +import { ethers } from 'ethers'; + +export const usePricing = () => { + const { + seniorTokenAddress, + juniorTokenAddress, + getAmountsOut, + getPairReserves, + currentChain, + } = useWeb3(); + + const [seniorPrice, setSeniorPrice] = useState('1.00'); + const [juniorPrice, setJuniorPrice] = useState('1.00'); + const [poolReserves, setPoolReserves] = useState({ senior: '0', junior: '0' }); + + useEffect(() => { + const fetchTokenPrices = async () => { + if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !currentChain) return; + + try { + // Get pool reserves to calculate proper AMM pricing + const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); + const reserves = await getPairReserves(pairAddress); + const seniorReserve = parseFloat(ethers.formatEther(reserves.reserve0)); + const juniorReserve = parseFloat(ethers.formatEther(reserves.reserve1)); + + // Calculate prices directly from Uniswap AMM reserves + const seniorPriceInJunior = juniorReserve / seniorReserve; + const juniorPriceInSenior = seniorReserve / juniorReserve; + + try { + // Get price of 1 SENIOR in terms of JUNIOR + const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; + const seniorPrice1Unit = await getAmountsOut('1', seniorToJuniorPath); + + // Get price of 1 JUNIOR in terms of SENIOR + const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; + const juniorPrice1Unit = await getAmountsOut('1', juniorToSeniorPath); + + setSeniorPrice(parseFloat(seniorPrice1Unit).toFixed(2)); + setJuniorPrice(parseFloat(juniorPrice1Unit).toFixed(2)); + } catch (error) { + console.error('Error getting AMM prices:', error); + // Fallback to reserve-based calculation + setSeniorPrice(seniorPriceInJunior.toFixed(2)); + setJuniorPrice(juniorPriceInSenior.toFixed(2)); + } + } catch (error) { + console.error('Error fetching token prices:', error); + setSeniorPrice('1.00'); + setJuniorPrice('1.00'); + } + }; + + const fetchPoolReserves = async () => { + if (!getPairReserves || !currentChain) return; + + try { + const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); + const reserves = await getPairReserves(pairAddress); + + const seniorReserve = ethers.formatEther(reserves.reserve0); + const juniorReserve = ethers.formatEther(reserves.reserve1); + + // Only update if values have changed significantly + const currentSenior = parseFloat(poolReserves.senior); + const currentJunior = parseFloat(poolReserves.junior); + const newSenior = parseFloat(seniorReserve); + const newJunior = parseFloat(juniorReserve); + + if (Math.abs(currentSenior - newSenior) > 0.01 || Math.abs(currentJunior - newJunior) > 0.01) { + setPoolReserves({ + senior: seniorReserve, + junior: juniorReserve, + }); + } + } catch (error) { + console.error('Error fetching pool reserves:', error); + if (poolReserves.senior === '0' && poolReserves.junior === '0') { + setPoolReserves({ senior: '0', junior: '0' }); + } + } + }; + + fetchTokenPrices(); + fetchPoolReserves(); + const interval = setInterval(() => { + fetchTokenPrices(); + fetchPoolReserves(); + }, 30000); + + return () => clearInterval(interval); + }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, getPairReserves, currentChain, poolReserves.senior, poolReserves.junior]); + + return { + seniorPrice, + juniorPrice, + poolReserves, + }; +}; \ No newline at end of file diff --git a/frontend/src/pages/Advanced.tsx b/frontend/src/pages/Advanced.tsx deleted file mode 100644 index 7286098..0000000 --- a/frontend/src/pages/Advanced.tsx +++ /dev/null @@ -1,939 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { useWeb3 } from '@/context/PrivyWeb3Context'; -import Navbar from '@/components/Navbar'; -import PhaseDisplay from '@/components/PhaseDisplay'; -import Trade from '@/components/Trade'; -import SmartLiquiditySuggestion from '@/components/SmartLiquiditySuggestion'; -import StatCard from '@/components/StatCard'; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; -import { Button } from '@/components/ui/button'; -import { Alert, AlertDescription } from '@/components/ui/alert'; -import { Input } from '@/components/ui/input'; -import { Label } from '@/components/ui/label'; -import { Info, DollarSign, Coins, Shield, AlertCircle, RefreshCw, Droplets, Minus, Activity, Settings, BarChart3 } from 'lucide-react'; -import { Phase, ContractName, getContractAddress, SupportedChainId } from '@/config/contracts'; -import { ethers } from 'ethers'; - -const Advanced = () => { - const { - isConnected, - balances, - vaultInfo, - depositAsset, - withdraw, - emergencyWithdraw, - getAmountsOut, - seniorTokenAddress, - juniorTokenAddress, - addLiquidity, - removeLiquidity, - getPairReserves, - currentChain, - isUnsupportedChain, - } = useWeb3(); - - const [depositAmount, setDepositAmount] = useState(''); - const [depositAssetType, setDepositAssetType] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); - const [emergencyAmount, setEmergencyAmount] = useState(''); - const [preferredAsset, setPreferredAsset] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); - const [seniorPrice, setSeniorPrice] = useState('0.98'); - const [juniorPrice, setJuniorPrice] = useState('1.05'); - const [pricesLoading, setPricesLoading] = useState(false); - - // Pool reserves state - const [poolReserves, setPoolReserves] = useState({ senior: '0', junior: '0' }); - - // Liquidity management state - const [liquiditySeniorAmount, setLiquiditySeniorAmount] = useState(''); - const [liquidityJuniorAmount, setLiquidityJuniorAmount] = useState(''); - const [removeLiquidityAmount, setRemoveLiquidityAmount] = useState(''); - const [showLiquiditySuggestion, setShowLiquiditySuggestion] = useState(false); - const [liquidityMode, setLiquidityMode] = useState<'manual' | 'optimal'>('optimal'); - - // New redemption state - const [selectedWithdrawAsset, setSelectedWithdrawAsset] = useState<'aUSDC' | 'cUSDT' | null>(null); - const [withdrawAssetAmount, setWithdrawAssetAmount] = useState(''); - const [calculatedTokenAmounts, setCalculatedTokenAmounts] = useState({ senior: '0', junior: '0' }); - const [effectivePhase, setEffectivePhase] = useState(Phase.DEPOSIT); - - // Format token amounts for display - const formatTokenAmount = (amount: bigint) => { - return ethers.formatEther(amount); - }; - - // Fetch token prices and pool reserves from Uniswap pair - useEffect(() => { - const fetchTokenPrices = async () => { - if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !currentChain) return; - - setPricesLoading(true); - try { - // Get pool reserves to calculate proper AMM pricing - const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); - const reserves = await getPairReserves(pairAddress); - const seniorReserve = parseFloat(ethers.formatEther(reserves.reserve0)); - const juniorReserve = parseFloat(ethers.formatEther(reserves.reserve1)); - - // Calculate prices directly from Uniswap AMM reserves - // In a Uniswap pair, price = other_reserve / this_reserve - const seniorPriceInJunior = juniorReserve / seniorReserve; - const juniorPriceInSenior = seniorReserve / juniorReserve; - - // For USD pricing, we need to establish a base. - // Let's use getAmountsOut to get actual market prices - try { - // Get price of 1 SENIOR in terms of JUNIOR - const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; - const seniorPrice1Unit = await getAmountsOut('1', seniorToJuniorPath); - - // Get price of 1 JUNIOR in terms of SENIOR - const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; - const juniorPrice1Unit = await getAmountsOut('1', juniorToSeniorPath); - - setSeniorPrice(parseFloat(seniorPrice1Unit).toFixed(2)); - setJuniorPrice(parseFloat(juniorPrice1Unit).toFixed(2)); - } catch (error) { - console.error('Error getting AMM prices:', error); - // Fallback to reserve-based calculation - setSeniorPrice(seniorPriceInJunior.toFixed(2)); - setJuniorPrice(juniorPriceInSenior.toFixed(2)); - } - } catch (error) { - console.error('Error fetching token prices:', error); - // Keep default prices on error (equal weighting) - setSeniorPrice('1.00'); - setJuniorPrice('1.00'); - } finally { - setPricesLoading(false); - } - }; - - const fetchPoolReserves = async () => { - if (!getPairReserves || !currentChain) return; - - try { - const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); - const reserves = await getPairReserves(pairAddress); - - // Format reserves from wei to ether - const seniorReserve = ethers.formatEther(reserves.reserve0); - const juniorReserve = ethers.formatEther(reserves.reserve1); - - // Only update if values have changed significantly (avoid micro-updates) - const currentSenior = parseFloat(poolReserves.senior); - const currentJunior = parseFloat(poolReserves.junior); - const newSenior = parseFloat(seniorReserve); - const newJunior = parseFloat(juniorReserve); - - if (Math.abs(currentSenior - newSenior) > 0.01 || Math.abs(currentJunior - newJunior) > 0.01) { - setPoolReserves({ - senior: seniorReserve, - junior: juniorReserve, - }); - } - } catch (error) { - console.error('Error fetching pool reserves:', error); - // Only reset if we don't have valid data - if (poolReserves.senior === '0' && poolReserves.junior === '0') { - setPoolReserves({ senior: '0', junior: '0' }); - } - } - }; - - fetchTokenPrices(); - fetchPoolReserves(); - const interval = setInterval(() => { - fetchTokenPrices(); - fetchPoolReserves(); - }, 30000); // Update every 30 seconds to reduce twitching - - return () => clearInterval(interval); - }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, getPairReserves, currentChain]); - - - // Calculate optimal token amounts when user selects asset and amount - useEffect(() => { - const calculateOptimalTokens = () => { - if (!selectedWithdrawAsset || !withdrawAssetAmount || parseFloat(withdrawAssetAmount) <= 0) { - setCalculatedTokenAmounts({ senior: '0', junior: '0' }); - return; - } - - const targetAmount = parseFloat(withdrawAssetAmount); - const seniorBalance = parseFloat(formatTokenAmount(balances.seniorTokens)); - const juniorBalance = parseFloat(formatTokenAmount(balances.juniorTokens)); - - let seniorToUse = 0; - let juniorToUse = 0; - - // Handle case where phase is not loaded yet - default to DEPOSIT phase logic - // Convert bigint to number for comparison - const currentPhase = vaultInfo.currentPhase !== undefined ? Number(vaultInfo.currentPhase) : Phase.DEPOSIT; - setEffectivePhase(currentPhase); - - if (currentPhase === Phase.DEPOSIT) { - // Deposit phase: equal amounts required - const requiredPerToken = targetAmount / 2; // Each token contributes half - const maxPossible = Math.min(seniorBalance, juniorBalance); - const actualPerToken = Math.min(requiredPerToken, maxPossible); - seniorToUse = actualPerToken; - juniorToUse = actualPerToken; - } else if (currentPhase === Phase.CLAIMS) { - // Claims phase: senior tokens only - seniorToUse = Math.min(targetAmount, seniorBalance); - juniorToUse = 0; - } else { - // Other phases: prefer junior tokens first - if (juniorBalance >= targetAmount) { - juniorToUse = targetAmount; - seniorToUse = 0; - } else { - juniorToUse = juniorBalance; - seniorToUse = Math.min(targetAmount - juniorBalance, seniorBalance); - } - } - - setCalculatedTokenAmounts({ - senior: seniorToUse.toFixed(6), - junior: juniorToUse.toFixed(6), - }); - }; - - calculateOptimalTokens(); - }, [selectedWithdrawAsset, withdrawAssetAmount, balances.seniorTokens, balances.juniorTokens, vaultInfo.currentPhase]); - - const handleDeposit = async () => { - if (!depositAmount || parseFloat(depositAmount) <= 0) return; - await depositAsset(depositAssetType, depositAmount); - setDepositAmount(''); - }; - - - const handleOptimalWithdraw = async () => { - if (!selectedWithdrawAsset || !withdrawAssetAmount || parseFloat(withdrawAssetAmount) <= 0) return; - - const { senior, junior } = calculatedTokenAmounts; - if (parseFloat(senior) <= 0 && parseFloat(junior) <= 0) return; - - await withdraw(senior, junior); - setSelectedWithdrawAsset(null); - setWithdrawAssetAmount(''); - setCalculatedTokenAmounts({ senior: '0', junior: '0' }); - }; - - const handleEmergencyWithdraw = async () => { - if (!emergencyAmount || parseFloat(emergencyAmount) <= 0) return; - await emergencyWithdraw(emergencyAmount, preferredAsset); - setEmergencyAmount(''); - }; - - const handleAddLiquidity = async () => { - if (!liquiditySeniorAmount || !liquidityJuniorAmount || !seniorTokenAddress || !juniorTokenAddress) return; - if (parseFloat(liquiditySeniorAmount) <= 0 || parseFloat(liquidityJuniorAmount) <= 0) return; - - await addLiquidity(liquiditySeniorAmount, liquidityJuniorAmount, seniorTokenAddress, juniorTokenAddress); - setLiquiditySeniorAmount(''); - setLiquidityJuniorAmount(''); - setShowLiquiditySuggestion(false); - }; - - const handleOptimalLiquidity = () => { - const seniorBalance = parseFloat(formatTokenAmount(balances.seniorTokens)); - const juniorBalance = parseFloat(formatTokenAmount(balances.juniorTokens)); - const poolSenior = parseFloat(poolReserves.senior); - const poolJunior = parseFloat(poolReserves.junior); - - if (poolSenior > 0 && poolJunior > 0) { - // Calculate optimal amounts based on pool ratio - const poolRatio = poolSenior / poolJunior; - const userRatio = seniorBalance / juniorBalance; - - let optimalSenior: number, optimalJunior: number; - - if (userRatio > poolRatio) { - // User has more senior relative to pool ratio - optimalJunior = juniorBalance; - optimalSenior = Math.min(optimalJunior * poolRatio, seniorBalance); - } else { - // User has more junior relative to pool ratio - optimalSenior = seniorBalance; - optimalJunior = Math.min(optimalSenior / poolRatio, juniorBalance); - } - - setLiquiditySeniorAmount(optimalSenior.toFixed(6)); - setLiquidityJuniorAmount(optimalJunior.toFixed(6)); - } else { - // If no pool reserves, use equal amounts - const maxAmount = Math.min(seniorBalance, juniorBalance); - setLiquiditySeniorAmount(maxAmount.toFixed(6)); - setLiquidityJuniorAmount(maxAmount.toFixed(6)); - } - }; - - - const handleRemoveLiquidity = async () => { - if (!removeLiquidityAmount || !seniorTokenAddress || !juniorTokenAddress) return; - if (parseFloat(removeLiquidityAmount) <= 0) return; - - await removeLiquidity(removeLiquidityAmount, seniorTokenAddress, juniorTokenAddress); - setRemoveLiquidityAmount(''); - }; - - // Calculate total portfolio value based on risk token holdings and current market prices - const seniorTokenAmount = parseFloat(formatTokenAmount(balances.seniorTokens)); - const juniorTokenAmount = parseFloat(formatTokenAmount(balances.juniorTokens)); - - const totalPortfolioValue = - (seniorTokenAmount * parseFloat(seniorPrice)) + - (juniorTokenAmount * parseFloat(juniorPrice)); - - return ( -
- {/* Animated background elements */} -
-
-
-
-
- - - -
-
-
-
-

- - Advanced Trading -

-

- Complete control over protocol operations, manual trading, and liquidity management -

-
-
- - Real-time data -
-
-
- - {/* Connection Status */} - {!isConnected && ( - - - - Please connect your wallet to interact with advanced protocol features - - - )} - - {/* Phase Display */} -
- -
- - {/* Advanced Portfolio Overview */} -
- } - description={`${seniorTokenAmount.toFixed(2)} SENIOR + ${juniorTokenAmount.toFixed(2)} JUNIOR`} - className="transition-all duration-300" - /> - } - description="Priority claims token" - className="transition-all duration-300" - /> - } - description="Higher yield token" - className="transition-all duration-300" - /> - } - description={`${(parseFloat(poolReserves.senior) / 1000).toFixed(3)}K SENIOR / ${(parseFloat(poolReserves.junior) / 1000).toFixed(3)}K JUNIOR`} - className="transition-all duration-300" - /> -
- - {/* Manual Risk Trading */} -
- -
- - {/* Advanced Protocol Actions */} -
-
-

- - Advanced Protocol Actions -

-
-
- {/* Issue Risk Tokens */} - - - Issue Risk Tokens - - Deposit assets to receive CM-SENIOR and CM-JUNIOR tokens - - - - {Number(vaultInfo.currentPhase) !== Phase.DEPOSIT ? ( - - - - Deposits are only allowed during the Deposit phase. Current phase: {Phase[vaultInfo.currentPhase]} - - - ) : ( - <> -
- -
- - -
-
-
- - setDepositAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -
- - - - You will receive {depositAmount ? (parseFloat(depositAmount) / 2) : '0'} CM-SENIOR and {depositAmount ? (parseFloat(depositAmount) / 2) : '0'} CM-JUNIOR tokens - - - - - )} -
-
- - {/* Optimal Asset Redemption */} - - - Optimal Asset Redemption - - Choose target asset and amount - system calculates optimal token usage - - - - {/* Asset Selection */} -
- -
- - -
-
- - {/* Amount Input */} - {selectedWithdrawAsset && ( -
- - setWithdrawAssetAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -
- )} - - {/* Automatic Token Allocation Display */} - {selectedWithdrawAsset && withdrawAssetAmount && parseFloat(withdrawAssetAmount) > 0 && ( - - - -
-
Optimal Token Allocation:
-
-
Senior Tokens: {calculatedTokenAmounts.senior}
-
Junior Tokens: {calculatedTokenAmounts.junior}
-
- {effectivePhase === Phase.DEPOSIT - ? 'Deposit phase: Using equal amounts of senior and junior tokens' - : effectivePhase === Phase.CLAIMS - ? 'Claims phase: Using senior tokens only' - : 'Using max junior tokens first, then senior tokens'} -
-
-
-
-
- )} - - -
-
- - {/* Add Liquidity */} - - - - - Add Liquidity - - - Provide liquidity to earn trading fees. Choose optimal or manual mode. - - - - {/* Mode Selection */} -
- -
- - -
-
- - {liquidityMode === 'optimal' ? ( -
- {/* Available Tokens Display */} -
-
-
-

Available tokens:

-

- {seniorTokenAmount.toFixed(4)} SENIOR + {juniorTokenAmount.toFixed(4)} JUNIOR -

-

- Will add optimal amounts to match pool ratio -

-
-
-
- - {/* Quick Actions */} -
- - - {(liquiditySeniorAmount || liquidityJuniorAmount) && ( - - )} -
- - {/* Show calculated amounts */} - {(liquiditySeniorAmount || liquidityJuniorAmount) && ( - - - -
-
Ready to add:
-
- {liquiditySeniorAmount} SENIOR + {liquidityJuniorAmount} JUNIOR -
-
- These amounts match the current pool ratio for optimal liquidity provision -
-
-
-
- )} -
- ) : ( -
- {/* Manual Input */} -
-
- - setLiquiditySeniorAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -

- Balance: {formatTokenAmount(balances.seniorTokens)} -

-
- -
- - setLiquidityJuniorAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -

- Balance: {formatTokenAmount(balances.juniorTokens)} -

-
-
- - {liquiditySeniorAmount && liquidityJuniorAmount && ( - - - - You'll receive LP tokens proportional to your share of the pool - - - )} - - -
- )} -
-
- - {/* Remove Liquidity */} - - - - - Remove Liquidity - - - Remove liquidity from the SENIOR/JUNIOR pool - - - -
- - setRemoveLiquidityAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -

- LP Balance: {formatTokenAmount(balances.lpTokens)} -

-
- - {removeLiquidityAmount && parseFloat(removeLiquidityAmount) > 0 && ( - - - - You'll receive proportional amounts of SENIOR and JUNIOR tokens - - - )} - - -
-
- - {/* Emergency Withdrawal */} - {vaultInfo.emergencyMode && ( - - - Emergency Withdrawal - - Emergency mode is active. Senior token holders can withdraw with preferred asset. - - - -
-
- - setEmergencyAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -
-
- -
- - -
-
-
- -
-
- )} -
-
- - {/* Smart Liquidity Suggestion */} - setShowLiquiditySuggestion(false)} - /> - - {/* Advanced Portfolio Analytics */} -
-
-

Advanced Portfolio Analytics

-
-
- - - Current Positions - Detailed breakdown of your holdings - - -
-
-
- -
-
-

SENIOR

-

Priority claims

-
-
-
-

{formatTokenAmount(balances.seniorTokens)}

-

Value: ${(seniorTokenAmount * parseFloat(seniorPrice)).toFixed(2)}

-
-
- -
-
-
- -
-
-

JUNIOR

-

Higher upside

-
-
-
-

{formatTokenAmount(balances.juniorTokens)}

-

Value: ${(juniorTokenAmount * parseFloat(juniorPrice)).toFixed(2)}

-
-
- -
-
-
- -
-
-

LP TOKENS

-

Liquidity provider

-
-
-
-

{formatTokenAmount(balances.lpTokens)}

-

Pool share

-
-
-
-
- - - - Protocol Status - Current protocol information - - -
- Current Phase: - {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} -
- -
- Emergency Mode: - - {vaultInfo.emergencyMode ? '🚨 Active' : '✅ Inactive'} - -
- -
- Total TVL: - ${((Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18).toFixed(2)} -
- -
- Your Share: - - {vaultInfo.totalTokensIssued > 0n - ? ((seniorTokenAmount + juniorTokenAmount) / (Number(vaultInfo.totalTokensIssued) / 1e18) * 100).toFixed(2) - : '0.00'}% - -
-
-
-
-
-
-
- ); -}; - -export default React.memo(Advanced); \ No newline at end of file diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx deleted file mode 100644 index 0898687..0000000 --- a/frontend/src/pages/Dashboard.tsx +++ /dev/null @@ -1,451 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { Link } from 'react-router-dom'; -import { useWeb3 } from '@/context/PrivyWeb3Context'; -import Navbar from '@/components/Navbar'; -import PhaseDisplay from '@/components/PhaseDisplay'; -import QuickTrade from '@/components/QuickTrade'; -import StatCard from '@/components/StatCard'; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; -import { Button } from '@/components/ui/button'; -import { Alert, AlertDescription } from '@/components/ui/alert'; -import { Badge } from '@/components/ui/badge'; -import { Progress } from '@/components/ui/progress'; -import { DollarSign, Coins, Shield, AlertCircle, RefreshCw, Activity, ArrowRight, Droplets, BarChart3, TrendingUp, ExternalLink, Zap, Users } from 'lucide-react'; -import { Phase, ContractName, getContractAddress, SupportedChainId } from '@/config/contracts'; -import { ethers } from 'ethers'; - -const Dashboard = () => { - const { - isConnected, - balances, - vaultInfo, - getAmountsOut, - seniorTokenAddress, - juniorTokenAddress, - getPairReserves, - currentChain, - isUnsupportedChain, - } = useWeb3(); - - const [seniorPrice, setSeniorPrice] = useState('0.98'); - const [juniorPrice, setJuniorPrice] = useState('1.05'); - const [pricesLoading, setPricesLoading] = useState(false); - - // Pool reserves state - const [poolReserves, setPoolReserves] = useState({ senior: '0', junior: '0' }); - - // Format token amounts for display - const formatTokenAmount = (amount: bigint) => { - return ethers.formatEther(amount); - }; - - // Fetch token prices and pool reserves from Uniswap pair - useEffect(() => { - const fetchTokenPrices = async () => { - if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !currentChain) return; - - setPricesLoading(true); - try { - // Get pool reserves to calculate proper AMM pricing - const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); - const reserves = await getPairReserves(pairAddress); - const seniorReserve = parseFloat(ethers.formatEther(reserves.reserve0)); - const juniorReserve = parseFloat(ethers.formatEther(reserves.reserve1)); - - // Calculate prices directly from Uniswap AMM reserves - // In a Uniswap pair, price = other_reserve / this_reserve - const seniorPriceInJunior = juniorReserve / seniorReserve; - const juniorPriceInSenior = seniorReserve / juniorReserve; - - // For USD pricing, we need to establish a base. - // Let's use getAmountsOut to get actual market prices - try { - // Get price of 1 SENIOR in terms of JUNIOR - const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; - const seniorPrice1Unit = await getAmountsOut('1', seniorToJuniorPath); - - // Get price of 1 JUNIOR in terms of SENIOR - const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; - const juniorPrice1Unit = await getAmountsOut('1', juniorToSeniorPath); - - setSeniorPrice(parseFloat(seniorPrice1Unit).toFixed(2)); - setJuniorPrice(parseFloat(juniorPrice1Unit).toFixed(2)); - } catch (error) { - console.error('Error getting AMM prices:', error); - // Fallback to reserve-based calculation - setSeniorPrice(seniorPriceInJunior.toFixed(2)); - setJuniorPrice(juniorPriceInSenior.toFixed(2)); - } - } catch (error) { - console.error('Error fetching token prices:', error); - // Keep default prices on error (equal weighting) - setSeniorPrice('1.00'); - setJuniorPrice('1.00'); - } finally { - setPricesLoading(false); - } - }; - - const fetchPoolReserves = async () => { - if (!getPairReserves || !currentChain) return; - - try { - const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); - const reserves = await getPairReserves(pairAddress); - - // Format reserves from wei to ether - const seniorReserve = ethers.formatEther(reserves.reserve0); - const juniorReserve = ethers.formatEther(reserves.reserve1); - - // Only update if values have changed significantly (avoid micro-updates) - const currentSenior = parseFloat(poolReserves.senior); - const currentJunior = parseFloat(poolReserves.junior); - const newSenior = parseFloat(seniorReserve); - const newJunior = parseFloat(juniorReserve); - - if (Math.abs(currentSenior - newSenior) > 0.01 || Math.abs(currentJunior - newJunior) > 0.01) { - setPoolReserves({ - senior: seniorReserve, - junior: juniorReserve, - }); - } - } catch (error) { - console.error('Error fetching pool reserves:', error); - // Only reset if we don't have valid data - if (poolReserves.senior === '0' && poolReserves.junior === '0') { - setPoolReserves({ senior: '0', junior: '0' }); - } - } - }; - - fetchTokenPrices(); - fetchPoolReserves(); - const interval = setInterval(() => { - fetchTokenPrices(); - fetchPoolReserves(); - }, 30000); // Update every 30 seconds to reduce twitching - - return () => clearInterval(interval); - }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, getPairReserves, currentChain]); - - // Calculate total portfolio value based on risk token holdings and current market prices - const seniorTokenAmount = parseFloat(formatTokenAmount(balances.seniorTokens)); - const juniorTokenAmount = parseFloat(formatTokenAmount(balances.juniorTokens)); - - const totalPortfolioValue = - (seniorTokenAmount * parseFloat(seniorPrice)) + - (juniorTokenAmount * parseFloat(juniorPrice)); - - // Risk Assessment - const getRiskProfile = () => { - const totalTokens = seniorTokenAmount + juniorTokenAmount; - if (totalTokens === 0) return { level: 'None', color: 'slate', percentage: 0 }; - - const seniorRatio = seniorTokenAmount / totalTokens; - if (seniorRatio >= 0.8) return { level: 'Conservative', color: 'blue', percentage: seniorRatio * 100 }; - if (seniorRatio >= 0.6) return { level: 'Moderate', color: 'purple', percentage: seniorRatio * 100 }; - if (seniorRatio >= 0.4) return { level: 'Balanced', color: 'green', percentage: seniorRatio * 100 }; - if (seniorRatio >= 0.2) return { level: 'Growth', color: 'yellow', percentage: seniorRatio * 100 }; - return { level: 'Aggressive', color: 'red', percentage: seniorRatio * 100 }; - }; - - const riskProfile = getRiskProfile(); - const protocolTVL = (Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18; - const userSharePercent = vaultInfo.totalTokensIssued > 0n - ? ((seniorTokenAmount + juniorTokenAmount) / (Number(vaultInfo.totalTokensIssued) / 1e18) * 100) - : 0; - - return ( -
- {/* Animated background elements */} -
-
-
-
-
- - - -
-
-
-
-

- Portfolio Dashboard -

-

- Smart risk management with tradeable insurance tokens -

-
-
- - {riskProfile.level} Risk Profile - -
- - Real-time data -
-
-
-
- - {/* Connection Status */} - {!isConnected && ( - - - - Please connect your wallet to interact with the protocol - - - )} - - {/* New Unified Dashboard CTA */} - - - -
- Try our new Unified Dashboard! -

Enhanced user experience with smart risk strategies and streamlined interface.

-
- - - -
-
- - - {/* Enhanced Key Metrics */} -
- - -
-
-

Portfolio Value

-

${totalPortfolioValue.toFixed(2)}

-
- -
-
- {userSharePercent.toFixed(4)}% of protocol -
-
-
- - - -
-
-

Senior Tokens

-

{seniorTokenAmount.toFixed(2)}

-
- -
-
- ${(seniorTokenAmount * parseFloat(seniorPrice)).toFixed(2)} value -
-
-
- - - -
-
-

Junior Tokens

-

{juniorTokenAmount.toFixed(2)}

-
- -
-
- ${(juniorTokenAmount * parseFloat(juniorPrice)).toFixed(2)} value -
-
-
- - - -
-
-

Protocol TVL

-

${protocolTVL.toFixed(0)}

-
- -
-
- Phase: {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} -
-
-
-
- - {/* Quick Trade - Hero Section */} -
- -
- - {/* Enhanced Portfolio Overview */} -
-
-

- - Portfolio Analysis -

- -
- - {/* Risk Profile Visualization */} - - - - - Risk Distribution - - - -
- Current Risk Level: {riskProfile.level} - - {riskProfile.percentage.toFixed(1)}% Senior Allocation - -
- -
- Conservative (More Senior) - Aggressive (More Junior) -
-
-
-

Senior Price

-

${seniorPrice}

-
-
-

Junior Price

-

${juniorPrice}

-
-
-

Pool Liquidity

-

- ${((parseFloat(poolReserves.senior)) + (parseFloat(poolReserves.junior))).toLocaleString('en-US', { maximumFractionDigits: 0 })} -

-
-
-
-
- -
- - - - - Token Holdings - - Your current risk token positions - - -
-
-
- -
-
-

SENIOR

-

Priority claims

-
-
-
-

{formatTokenAmount(balances.seniorTokens)}

-

Value: ${(seniorTokenAmount * parseFloat(seniorPrice)).toFixed(2)}

-
-
- -
-
-
- -
-
-

JUNIOR

-

Higher upside

-
-
-
-

{formatTokenAmount(balances.juniorTokens)}

-

Value: ${(juniorTokenAmount * parseFloat(juniorPrice)).toFixed(2)}

-
-
- -
-
-
- -
-
-

LP TOKENS

-

Liquidity provider

-
-
-
-

{formatTokenAmount(balances.lpTokens)}

-

Pool share

-
-
-
-
- - - - Protocol Status - Current protocol information - - -
- Current Phase: - {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} -
- -
- Emergency Mode: - - {vaultInfo.emergencyMode ? '🚨 Active' : '✅ Inactive'} - -
- -
- Total TVL: - ${((Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18).toFixed(2)} -
- -
- Your Share: - - {vaultInfo.totalTokensIssued > 0n - ? ((seniorTokenAmount + juniorTokenAmount) / (Number(vaultInfo.totalTokensIssued) / 1e18) * 100).toFixed(2) - : '0.00'}% - -
-
-
-
-
-
-
- ); -}; - -export default React.memo(Dashboard); \ No newline at end of file diff --git a/frontend/src/pages/Index.tsx b/frontend/src/pages/Index.tsx index a4e12c9..624b411 100644 --- a/frontend/src/pages/Index.tsx +++ b/frontend/src/pages/Index.tsx @@ -89,7 +89,7 @@ const Index = () => { +
+
+
+ + {/* Key Metrics Row */} +
+ + +
+
+

Portfolio Value

+

${formatNumber(totalPortfolioValue)}

+
+ +
+
+ {formatNumber(userSharePercent, 4)}% of protocol +
+
+
+ + + +
+
+

Senior Tokens

+

{formatNumber(seniorBalance)}

+
+ +
+
+ ${formatNumber(seniorBalance * parseFloat(seniorPrice))} value +
+
+
+ + + +
+
+

Junior Tokens

+

{formatNumber(juniorBalance)}

+
+ +
+
+ ${formatNumber(juniorBalance * parseFloat(juniorPrice))} value +
+
+
+ + + +
+
+

Protocol Phase

+

+ {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} +

+
+ +
+
+ TVL: ${formatNumber(protocolTVL, 0)} +
+
+
+
+ + + {/* Main Content Tabs */} + + + Overview + Deposit & Trade + Manage Positions + Advanced + + + {/* Overview Tab */} + +
+ {/* Portfolio Breakdown */} + + + + + Portfolio Breakdown + + + + {/* Risk Profile Visualization */} +
+
+ Risk Distribution + + {formatNumber(riskProfile.percentage)}% Senior + +
+ +
+ Conservative + Aggressive +
+
+ + {/* Token Holdings */} +
+
+
+ +
+

Senior Tokens

+

Priority claims • Lower risk

+
+
+
+

{formatNumber(seniorBalance)}

+

${seniorPrice} each

+
+
+ +
+
+ +
+

Junior Tokens

+

Higher upside • Higher risk

+
+
+
+

{formatNumber(juniorBalance)}

+

${juniorPrice} each

+
+
+ + {lpBalance > 0 && ( +
+
+ +
+

LP Tokens

+

Liquidity provider rewards

+
+
+
+

{formatNumber(lpBalance)}

+

Pool share

+
+
+ )} +
+
+
+ + {/* Quick Actions */} + + + + + Quick Actions + + + + + + + + + + {/* Protocol Analytics */} +
+
+

+ + Protocol Analytics +

+
+
+
+

Total TVL

+

${formatNumber(protocolTVL, 0)}

+
+
+

Your Share

+

{formatNumber(userSharePercent, 4)}%

+
+
+

Pool Ratio

+

+ {parseFloat(poolReserves.junior) > 0 + ? formatNumber(parseFloat(poolReserves.senior) / parseFloat(poolReserves.junior), 2) + : '1.00' + } +

+
+
+

Emergency

+

+ {vaultInfo.emergencyMode ? 'Active' : 'Inactive'} +

+
+
+ +
+
+
+
+ +
+ + {/* Deposit & Trade Tab */} + + + + + + Smart Deposit Strategies + + + Choose your risk strategy and we'll optimize your token allocation + + + + {/* Strategy Selection */} +
+ setActiveStrategy('safety')} + > + + +

Max Safety

+

All funds → Senior tokens

+ + Priority Claims + +
+
+ + setActiveStrategy('balanced')} + > + + +

Balanced

+

50% Senior / 50% Junior

+ + Moderate Risk + +
+
+ + setActiveStrategy('upside')} + > + + +

Max Upside

+

All funds → Junior tokens

+ + Higher Returns + +
+
+
+ + {/* Deposit Form */} +
+
+ +
+ + +
+
+ +
+ + setAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white" + /> +
+ Available: {formatNumber(selectedAsset === 'aUSDC' ? aUSDCBalance : cUSDTBalance, 2)} + +
+
+
+ + {/* Strategy Preview */} + {amount && parseFloat(amount) > 0 && ( + + + +
+
Strategy Preview:
+
+ {activeStrategy === 'safety' && ( +
Depositing ${amount} will get you ~${amount} in Senior tokens (priority claims)
+ )} + {activeStrategy === 'balanced' && ( +
Depositing ${amount} will get you ~${formatNumber(parseFloat(amount) / 2)} Senior + ~${formatNumber(parseFloat(amount) / 2)} Junior tokens
+ )} + {activeStrategy === 'upside' && ( +
Depositing ${amount} will get you ~${amount} in Junior tokens (higher upside potential)
+ )} +
+
+
+
+ )} + + {/* Execute Button */} + +
+
+
+ + {/* Manage Positions Tab */} + +
+ {/* Rebalance Portfolio */} + + + + + Rebalance Portfolio + + + Adjust your risk exposure by trading between Senior and Junior tokens + + + + {/* Current vs Target Visualization */} +
+
+
+ Current Allocation + {formatNumber(riskProfile.percentage)}% Senior / {formatNumber(100 - riskProfile.percentage)}% Junior +
+ +
+ + {isRebalancePreview && ( +
+
+ Target Allocation + {targetSeniorPercent}% Senior / {100 - targetSeniorPercent}% Junior +
+ +
+ +
+ )} +
+ + {/* Target Allocation Buttons */} +
+ +
+ + + + + +
+
+ Max Risk + Balanced + Max Safety +
+
+ + {/* Trade Preview */} + {isRebalancePreview && rebalancePreview && ( +
+
Rebalance Preview
+
+
+ {rebalancePreview.tokenIn === 'junior' ? ( + + ) : ( + + )} + + Swap {rebalancePreview.amountIn} {rebalancePreview.tokenIn === 'junior' ? 'Junior' : 'Senior'} → {rebalancePreview.tokenOut === 'junior' ? 'Junior' : 'Senior'} + +
+
+ Expected output: {rebalancePreview.amountOut} {rebalancePreview.tokenOut === 'junior' ? 'Junior' : 'Senior'} tokens +
+
+ Price impact: ~{formatNumber((1 - parseFloat(rebalancePreview.amountOut) / (parseFloat(rebalancePreview.amountIn) * (rebalancePreview.tokenIn === 'junior' ? parseFloat(juniorPrice) : 1/parseFloat(juniorPrice)))) * 100, 2)}% +
+
+
+ )} + + {/* Action Buttons */} + {isRebalancePreview && rebalancePreview ? ( +
+ + +
+ ) : ( + + + + Use the buttons above to set your target allocation. Trades will be executed via AMM. + + + )} + + + + {/* Optimal Asset Redemption */} + + + + + Optimal Asset Redemption + + + Choose target asset and amount - system calculates optimal token usage + + + + {/* Asset Selection */} +
+ +
+ + +
+
+ + {/* Amount Input */} + {selectedWithdrawAsset && ( +
+ + setWithdrawAssetAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +
+ Max withdrawable: ${formatNumber(totalPortfolioValue)} +
+
+ )} + + {/* Automatic Token Allocation Display */} + {selectedWithdrawAsset && withdrawAssetAmount && parseFloat(withdrawAssetAmount) > 0 && ( + + + +
+
Optimal Token Allocation:
+
+
Senior Tokens: {calculatedTokenAmounts.senior}
+
Junior Tokens: {calculatedTokenAmounts.junior}
+
+ {effectivePhase === 0 + ? 'Deposit phase: Using equal amounts of senior and junior tokens' + : effectivePhase === 2 + ? 'Claims phase: Using senior tokens only' + : 'Using max junior tokens first, then senior tokens'} +
+
+
+
+
+ )} + + + + + + + Current phase: {Phase[vaultInfo.currentPhase] || 'Loading...'}. Phase affects withdrawal rules. + + +
+
+
+ + + {/* Advanced Tab */} + +
+ {/* Add Liquidity */} + + + + + Add Liquidity + + + Provide liquidity to earn trading fees. Choose optimal or manual mode. + + + + {/* Mode Selection */} +
+ +
+ + +
+
+ + {liquidityMode === 'optimal' ? ( +
+ {/* Available Tokens Display */} +
+
+
+

Available tokens:

+

+ {formatNumber(seniorBalance, 4)} SENIOR + {formatNumber(juniorBalance, 4)} JUNIOR +

+

+ Will add optimal amounts to match pool ratio +

+
+
+
+ + {/* Quick Actions */} +
+ + + {(liquiditySeniorAmount || liquidityJuniorAmount) && ( + + )} +
+ + {/* Show calculated amounts */} + {(liquiditySeniorAmount || liquidityJuniorAmount) && ( + + + +
+
Ready to add:
+
+ {liquiditySeniorAmount} SENIOR + {liquidityJuniorAmount} JUNIOR +
+
+ These amounts match the current pool ratio for optimal liquidity provision +
+
+
+
+ )} +
+ ) : ( +
+ {/* Manual Input */} +
+
+ + setLiquiditySeniorAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +

+ Balance: {formatNumber(seniorBalance)} +

+
+ +
+ + setLiquidityJuniorAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +

+ Balance: {formatNumber(juniorBalance)} +

+
+
+ + {liquiditySeniorAmount && liquidityJuniorAmount && ( + + + + You'll receive LP tokens proportional to your share of the pool + + + )} + + +
+ )} +
+
+ + {/* Remove Liquidity */} + + + + + Remove Liquidity + + + Remove liquidity from the SENIOR/JUNIOR pool + + + +
+

Current LP Position

+

{formatNumber(lpBalance)} LP

+

Pool share tokens

+
+ +
+ + setRemoveLiquidityAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +

+ LP Balance: {formatNumber(lpBalance)} +

+
+ + {removeLiquidityAmount && parseFloat(removeLiquidityAmount) > 0 && ( + + + + You'll receive proportional amounts of SENIOR and JUNIOR tokens + + + )} + + +
+
+ + {/* Emergency Withdrawal */} + {vaultInfo.emergencyMode && ( + + + Emergency Withdrawal + + Emergency mode is active. Senior token holders can withdraw with preferred asset. + + + +
+
+ + setEmergencyAmount(e.target.value)} + disabled={!isConnected} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" + /> +
+
+ +
+ + +
+
+
+ +
+
+ )} + +
+
+ + + {/* Market Overview - Always Visible at Bottom */} + + +
+ + + Market Overview + tics +
+
+ +
+
+

Senior Price

+

${seniorPrice}

+
+ + Stable +
+
+
+

Junior Price

+

${juniorPrice}

+
+ + Volatile +
+
+
+

Pool Liquidity

+

+ ${formatNumber((parseFloat(poolReserves.senior) + parseFloat(poolReserves.junior)), 0)} +

+
+ + Deep +
+
+
+

Protocol TVL

+

${formatNumber(protocolTVL, 0)}

+
+ + Growing +
+
+
+
+
+
+
+ ); +}; + +export default React.memo(UnifiedDashboard); diff --git a/frontend/src/pages/UnifiedDashboard.tsx b/frontend/src/pages/UnifiedDashboard.tsx index 411302d..505ff24 100644 --- a/frontend/src/pages/UnifiedDashboard.tsx +++ b/frontend/src/pages/UnifiedDashboard.tsx @@ -1,42 +1,33 @@ import React, { useEffect, useState } from 'react'; import { useWeb3 } from '@/context/PrivyWeb3Context'; import Navbar from '@/components/Navbar'; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; -import { Input } from '@/components/ui/input'; -import { Label } from '@/components/ui/label'; -import { Alert, AlertDescription } from '@/components/ui/alert'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Badge } from '@/components/ui/badge'; -import { Progress } from '@/components/ui/progress'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Shield, TrendingUp, - ArrowUpRight, - ArrowDownRight, DollarSign, - Zap, - Activity, Clock, - AlertCircle, - Info, RefreshCw, - Droplets, - BarChart3, - Target, - Users, - ExternalLink, - Plus, - Minus, - Settings, } from 'lucide-react'; -import { Phase, ContractName, getContractAddress } from '@/config/contracts'; -import { ethers } from 'ethers'; +import { Phase } from '@/config/contracts'; + +// Import custom hooks +import { usePricing } from '@/hooks/usePricing'; +import { usePortfolioCalculations } from '@/hooks/usePortfolioCalculations'; + +// Import dashboard components +import PortfolioOverview from '@/components/dashboard/PortfolioOverview'; +import DepositStrategies from '@/components/dashboard/DepositStrategies'; +import PositionManagement from '@/components/dashboard/PositionManagement'; +import AdvancedFeatures from '@/components/dashboard/AdvancedFeatures'; +import MarketOverview from '@/components/dashboard/MarketOverview'; const UnifiedDashboard = () => { const { isConnected, - balances, vaultInfo, depositAsset, withdraw, @@ -48,300 +39,76 @@ const UnifiedDashboard = () => { addLiquidity, removeLiquidity, refreshData, - getPairReserves, getTokenBalance, - currentChain, } = useWeb3(); + // Custom hooks for pricing and calculations + const { seniorPrice, juniorPrice, poolReserves } = usePricing(); + const { + formatNumber, + seniorBalance, + juniorBalance, + aUSDCBalance, + cUSDTBalance, + lpBalance, + totalPortfolioValue, + protocolTVL, + userSharePercent, + riskProfile, + } = usePortfolioCalculations(seniorPrice, juniorPrice); + // State Management - const [activeStrategy, setActiveStrategy] = useState<'safety' | 'upside' | 'balanced'>('balanced'); - const [amount, setAmount] = useState(''); - const [selectedAsset, setSelectedAsset] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); - const [isExecuting, setIsExecuting] = useState(false); - const [seniorPrice, setSeniorPrice] = useState('1.00'); - const [juniorPrice, setJuniorPrice] = useState('1.00'); - const [poolReserves, setPoolReserves] = useState({ senior: '0', junior: '0' }); const [activeTab, setActiveTab] = useState('overview'); - const [targetSeniorPercent, setTargetSeniorPercent] = useState(50); - const [isRebalancePreview, setIsRebalancePreview] = useState(false); - const [rebalancePreview, setRebalancePreview] = useState<{ - amountIn: string; - amountOut: string; - tokenIn: 'senior' | 'junior'; - tokenOut: 'senior' | 'junior'; - } | null>(null); - - // Withdrawal state - const [selectedWithdrawAsset, setSelectedWithdrawAsset] = useState<'aUSDC' | 'cUSDT' | null>(null); - const [withdrawAssetAmount, setWithdrawAssetAmount] = useState(''); - const [calculatedTokenAmounts, setCalculatedTokenAmounts] = useState({ senior: '0', junior: '0' }); - const [effectivePhase, setEffectivePhase] = useState(Phase.DEPOSIT); - - // Emergency withdrawal state - const [emergencyAmount, setEmergencyAmount] = useState(''); - const [preferredAsset, setPreferredAsset] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); - - // Liquidity management state - const [liquiditySeniorAmount, setLiquiditySeniorAmount] = useState(''); - const [liquidityJuniorAmount, setLiquidityJuniorAmount] = useState(''); - const [removeLiquidityAmount, setRemoveLiquidityAmount] = useState(''); - const [liquidityMode, setLiquidityMode] = useState<'manual' | 'optimal'>('optimal'); - - // Format utilities - const formatTokenAmount = (amount: bigint) => ethers.formatEther(amount); - const formatNumber = (num: number, decimals = 2) => num.toFixed(decimals); - - // Calculated values - const seniorBalance = Number(formatTokenAmount(balances.seniorTokens)); - const juniorBalance = Number(formatTokenAmount(balances.juniorTokens)); - const aUSDCBalance = Number(formatTokenAmount(balances.aUSDC)); - const cUSDTBalance = Number(formatTokenAmount(balances.cUSDT)); - const lpBalance = Number(formatTokenAmount(balances.lpTokens)); - - const totalPortfolioValue = - (seniorBalance * parseFloat(seniorPrice)) + - (juniorBalance * parseFloat(juniorPrice)); - - const protocolTVL = (Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18; - const userSharePercent = vaultInfo.totalTokensIssued > 0n - ? ((seniorBalance + juniorBalance) / (Number(vaultInfo.totalTokensIssued) / 1e18) * 100) - : 0; - - // Risk Assessment - const getRiskProfile = () => { - const totalTokens = seniorBalance + juniorBalance; - if (totalTokens === 0) return { level: 'None', color: 'slate', percentage: 0 }; - - const seniorRatio = seniorBalance / totalTokens; - if (seniorRatio >= 0.8) return { level: 'Conservative', color: 'blue', percentage: seniorRatio * 100 }; - if (seniorRatio >= 0.6) return { level: 'Moderate', color: 'purple', percentage: seniorRatio * 100 }; - if (seniorRatio >= 0.4) return { level: 'Balanced', color: 'green', percentage: seniorRatio * 100 }; - if (seniorRatio >= 0.2) return { level: 'Growth', color: 'yellow', percentage: seniorRatio * 100 }; - return { level: 'Aggressive', color: 'red', percentage: seniorRatio * 100 }; - }; - - const riskProfile = getRiskProfile(); - - // Initialize target percent to current allocation - useEffect(() => { - setTargetSeniorPercent(Math.round(riskProfile.percentage)); - }, [riskProfile.percentage]); - - // Calculate optimal token amounts when user selects asset and amount - useEffect(() => { - const calculateOptimalTokens = () => { - if (!selectedWithdrawAsset || !withdrawAssetAmount || parseFloat(withdrawAssetAmount) <= 0) { - setCalculatedTokenAmounts({ senior: '0', junior: '0' }); - return; - } - - const targetAmount = parseFloat(withdrawAssetAmount); - const seniorBalanceNum = seniorBalance; - const juniorBalanceNum = juniorBalance; - - let seniorToUse = 0; - let juniorToUse = 0; - - // Handle case where phase is not loaded yet - default to DEPOSIT phase logic - // Convert bigint to number for comparison - const currentPhase = vaultInfo.currentPhase !== undefined ? Number(vaultInfo.currentPhase) : 0; // 0 = DEPOSIT - setEffectivePhase(currentPhase); - - if (currentPhase === 0) { // DEPOSIT phase - // Deposit phase: equal amounts required - const requiredPerToken = targetAmount / 2; // Each token contributes half - const maxPossible = Math.min(seniorBalanceNum, juniorBalanceNum); - const actualPerToken = Math.min(requiredPerToken, maxPossible); - seniorToUse = actualPerToken; - juniorToUse = actualPerToken; - } else if (currentPhase === 2) { // CLAIMS phase - // Claims phase: senior tokens only - seniorToUse = Math.min(targetAmount, seniorBalanceNum); - juniorToUse = 0; - } else { - // Other phases: prefer junior tokens first - if (juniorBalanceNum >= targetAmount) { - juniorToUse = targetAmount; - seniorToUse = 0; - } else { - juniorToUse = juniorBalanceNum; - seniorToUse = Math.min(targetAmount - juniorBalanceNum, seniorBalanceNum); - } - } - - setCalculatedTokenAmounts({ - senior: seniorToUse.toFixed(6), - junior: juniorToUse.toFixed(6), - }); - }; - - calculateOptimalTokens(); - }, [selectedWithdrawAsset, withdrawAssetAmount, seniorBalance, juniorBalance, vaultInfo.currentPhase]); - - // Calculate rebalance preview with actual AMM pricing - const calculateRebalancePreview = async (targetPercent: number) => { - if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut) return; - - const currentSeniorPercent = riskProfile.percentage; - const percentDiff = targetPercent - currentSeniorPercent; + const [isExecuting, setIsExecuting] = useState(false); - if (Math.abs(percentDiff) < 1) { - setRebalancePreview(null); - return; - } + // Strategy execution + const executeStrategy = async (strategy: 'safety' | 'upside' | 'balanced', amount: string, asset: 'aUSDC' | 'cUSDT') => { + if (!amount || parseFloat(amount) <= 0) return; + setIsExecuting(true); try { - let amountIn: string; - let path: string[]; - let tokenIn: 'senior' | 'junior'; - let tokenOut: 'senior' | 'junior'; - - if (targetPercent === 100) { - // Swap ALL Junior tokens to Senior - amountIn = juniorBalance.toFixed(18); - path = [juniorTokenAddress, seniorTokenAddress]; - tokenIn = 'junior'; - tokenOut = 'senior'; - } else if (targetPercent === 0) { - // Swap ALL Senior tokens to Junior - amountIn = seniorBalance.toFixed(18); - path = [seniorTokenAddress, juniorTokenAddress]; - tokenIn = 'senior'; - tokenOut = 'junior'; - } else if (percentDiff > 0) { - // Need more Senior tokens - calculate Junior to swap based on target percentage - const totalTokens = seniorBalance + juniorBalance; - const targetSeniorAmount = (totalTokens * targetPercent) / 100; - const seniorNeeded = targetSeniorAmount - seniorBalance; - const juniorToSwap = Math.min(seniorNeeded / parseFloat(juniorPrice), juniorBalance); - - amountIn = juniorToSwap.toFixed(18); - path = [juniorTokenAddress, seniorTokenAddress]; - tokenIn = 'junior'; - tokenOut = 'senior'; - } else { - // Need more Junior tokens - calculate Senior to swap based on target percentage - const totalTokens = seniorBalance + juniorBalance; - const targetJuniorAmount = (totalTokens * (100 - targetPercent)) / 100; - const juniorNeeded = targetJuniorAmount - juniorBalance; - const seniorToSwap = Math.min(juniorNeeded * parseFloat(juniorPrice), seniorBalance); + // First deposit to get tokens + await depositAsset(asset, amount); - amountIn = seniorToSwap.toFixed(18); - path = [seniorTokenAddress, juniorTokenAddress]; - tokenIn = 'senior'; - tokenOut = 'junior'; + if (strategy === 'safety') { + // Convert all junior to senior + const freshJuniorBalance = await getTokenBalance(juniorTokenAddress!); + if (Number(freshJuniorBalance) > 0) { + const path = [juniorTokenAddress!, seniorTokenAddress!]; + const balanceString = formatNumber(Number(freshJuniorBalance) / 1e18, 18); + const estimate = await getAmountsOut(balanceString, path); + const minOutput = (parseFloat(estimate) * 0.95).toFixed(18); + await swapExactTokensForTokens(balanceString, minOutput, path); + } + } else if (strategy === 'upside') { + // Convert all senior to junior + const freshSeniorBalance = await getTokenBalance(seniorTokenAddress!); + if (Number(freshSeniorBalance) > 0) { + const path = [seniorTokenAddress!, juniorTokenAddress!]; + const balanceString = formatNumber(Number(freshSeniorBalance) / 1e18, 18); + const estimate = await getAmountsOut(balanceString, path); + const minOutput = (parseFloat(estimate) * 0.95).toFixed(18); + await swapExactTokensForTokens(balanceString, minOutput, path); + } } + // For balanced, keep 50/50 split from deposit - if (parseFloat(amountIn) > 0) { - const amountOut = await getAmountsOut(amountIn, path); - setRebalancePreview({ - amountIn: parseFloat(amountIn).toFixed(4), - amountOut: parseFloat(amountOut).toFixed(4), - tokenIn, - tokenOut - }); - } + await refreshData(); } catch (error) { - console.error('Error calculating rebalance preview:', error); - setRebalancePreview(null); + console.error('Strategy execution failed:', error); + } finally { + setIsExecuting(false); } }; - // Fetch prices and reserves with enhanced change detection - useEffect(() => { - const fetchTokenPrices = async () => { - if (!seniorTokenAddress || !juniorTokenAddress || !getAmountsOut || !currentChain) return; - - try { - // Get pool reserves to calculate proper AMM pricing - const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); - const reserves = await getPairReserves(pairAddress); - const seniorReserve = parseFloat(ethers.formatEther(reserves.reserve0)); - const juniorReserve = parseFloat(ethers.formatEther(reserves.reserve1)); - - // Calculate prices directly from Uniswap AMM reserves - // In a Uniswap pair, price = other_reserve / this_reserve - const seniorPriceInJunior = juniorReserve / seniorReserve; - const juniorPriceInSenior = seniorReserve / juniorReserve; - - // For USD pricing, we need to establish a base. - // Let's use getAmountsOut to get actual market prices - try { - // Get price of 1 SENIOR in terms of JUNIOR - const seniorToJuniorPath = [seniorTokenAddress, juniorTokenAddress]; - const seniorPrice1Unit = await getAmountsOut('1', seniorToJuniorPath); - - // Get price of 1 JUNIOR in terms of SENIOR - const juniorToSeniorPath = [juniorTokenAddress, seniorTokenAddress]; - const juniorPrice1Unit = await getAmountsOut('1', juniorToSeniorPath); - - setSeniorPrice(parseFloat(seniorPrice1Unit).toFixed(2)); - setJuniorPrice(parseFloat(juniorPrice1Unit).toFixed(2)); - } catch (error) { - console.error('Error getting AMM prices:', error); - // Fallback to reserve-based calculation - setSeniorPrice(seniorPriceInJunior.toFixed(2)); - setJuniorPrice(juniorPriceInSenior.toFixed(2)); - } - } catch (error) { - console.error('Error fetching token prices:', error); - // Keep default prices on error (equal weighting) - setSeniorPrice('1.00'); - setJuniorPrice('1.00'); - } - }; - - const fetchPoolReserves = async () => { - if (!getPairReserves || !currentChain) return; - - try { - const pairAddress = getContractAddress(currentChain, ContractName.SENIOR_JUNIOR_PAIR); - const reserves = await getPairReserves(pairAddress); - - // Format reserves from wei to ether - const seniorReserve = ethers.formatEther(reserves.reserve0); - const juniorReserve = ethers.formatEther(reserves.reserve1); - - // Only update if values have changed significantly (avoid micro-updates) - const currentSenior = parseFloat(poolReserves.senior); - const currentJunior = parseFloat(poolReserves.junior); - const newSenior = parseFloat(seniorReserve); - const newJunior = parseFloat(juniorReserve); - - if (Math.abs(currentSenior - newSenior) > 0.01 || Math.abs(currentJunior - newJunior) > 0.01) { - setPoolReserves({ - senior: seniorReserve, - junior: juniorReserve, - }); - } - } catch (error) { - console.error('Error fetching pool reserves:', error); - // Only reset if we don't have valid data - if (poolReserves.senior === '0' && poolReserves.junior === '0') { - setPoolReserves({ senior: '0', junior: '0' }); - } - } - }; - - fetchTokenPrices(); - fetchPoolReserves(); - const interval = setInterval(() => { - fetchTokenPrices(); - fetchPoolReserves(); - }, 30000); // Update every 30 seconds to reduce twitching - - return () => clearInterval(interval); - }, [seniorTokenAddress, juniorTokenAddress, getAmountsOut, getPairReserves, currentChain]); - - // Execute rebalancing - const executeRebalance = async () => { + // Rebalancing handler + const handleRebalance = async (targetPercent: number) => { if (!seniorTokenAddress || !juniorTokenAddress || !swapExactTokensForTokens || !getAmountsOut) return; const currentSeniorPercent = riskProfile.percentage; - const targetPercent = targetSeniorPercent; const percentDiff = targetPercent - currentSeniorPercent; - if (Math.abs(percentDiff) < 1) return; // No significant change + if (Math.abs(percentDiff) < 1) return; setIsExecuting(true); try { @@ -349,42 +116,34 @@ const UnifiedDashboard = () => { let path: string[]; if (targetPercent === 100) { - // Swap ALL Junior tokens to Senior amountIn = juniorBalance.toFixed(18); path = [juniorTokenAddress, seniorTokenAddress]; } else if (targetPercent === 0) { - // Swap ALL Senior tokens to Junior amountIn = seniorBalance.toFixed(18); path = [seniorTokenAddress, juniorTokenAddress]; } else if (percentDiff > 0) { - // Need more Senior tokens - calculate Junior to swap based on target percentage const totalTokens = seniorBalance + juniorBalance; const targetSeniorAmount = (totalTokens * targetPercent) / 100; const seniorNeeded = targetSeniorAmount - seniorBalance; const juniorToSwap = Math.min(seniorNeeded / parseFloat(juniorPrice), juniorBalance); - amountIn = juniorToSwap.toFixed(18); path = [juniorTokenAddress, seniorTokenAddress]; } else { - // Need more Junior tokens - calculate Senior to swap based on target percentage const totalTokens = seniorBalance + juniorBalance; const targetJuniorAmount = (totalTokens * (100 - targetPercent)) / 100; const juniorNeeded = targetJuniorAmount - juniorBalance; const seniorToSwap = Math.min(juniorNeeded * parseFloat(juniorPrice), seniorBalance); - amountIn = seniorToSwap.toFixed(18); path = [seniorTokenAddress, juniorTokenAddress]; } if (parseFloat(amountIn) > 0) { const amountsOut = await getAmountsOut(amountIn, path); - const minAmountOut = (parseFloat(amountsOut) * 0.95).toFixed(18); // 5% slippage + const minAmountOut = (parseFloat(amountsOut) * 0.95).toFixed(18); await swapExactTokensForTokens(amountIn, minAmountOut, path); } await refreshData(); - setIsRebalancePreview(false); - setTargetSeniorPercent(Math.round(riskProfile.percentage)); } catch (error) { console.error('Rebalancing failed:', error); } finally { @@ -392,19 +151,15 @@ const UnifiedDashboard = () => { } }; - // Optimal withdrawal handler - const handleOptimalWithdraw = async () => { - if (!selectedWithdrawAsset || !withdrawAssetAmount || parseFloat(withdrawAssetAmount) <= 0) return; - - const { senior, junior } = calculatedTokenAmounts; - if (parseFloat(senior) <= 0 && parseFloat(junior) <= 0) return; + // Withdrawal handler + const handleWithdraw = async (asset: 'aUSDC' | 'cUSDT', amount: string) => { + if (!amount || parseFloat(amount) <= 0) return; setIsExecuting(true); try { - await withdraw(senior, junior); - setSelectedWithdrawAsset(null); - setWithdrawAssetAmount(''); - setCalculatedTokenAmounts({ senior: '0', junior: '0' }); + // Simplified withdrawal logic - could be enhanced with optimal token calculation + const halfAmount = (parseFloat(amount) / 2).toFixed(6); + await withdraw(halfAmount, halfAmount); await refreshData(); } catch (error) { console.error('Withdrawal failed:', error); @@ -413,31 +168,12 @@ const UnifiedDashboard = () => { } }; - // Emergency withdrawal handler - const handleEmergencyWithdraw = async () => { - if (!emergencyAmount || parseFloat(emergencyAmount) <= 0) return; + // Liquidity handlers + const handleAddLiquidity = async (seniorAmount: string, juniorAmount: string) => { + if (!seniorTokenAddress || !juniorTokenAddress) return; setIsExecuting(true); try { - await emergencyWithdraw(emergencyAmount, preferredAsset); - setEmergencyAmount(''); - await refreshData(); - } catch (error) { - console.error('Emergency withdrawal failed:', error); - } finally { - setIsExecuting(false); - } - }; - - // Liquidity management handlers - const handleAddLiquidity = async () => { - if (!liquiditySeniorAmount || !liquidityJuniorAmount || !seniorTokenAddress || !juniorTokenAddress) return; - if (parseFloat(liquiditySeniorAmount) <= 0 || parseFloat(liquidityJuniorAmount) <= 0) return; - - setIsExecuting(true); - try { - await addLiquidity(liquiditySeniorAmount, liquidityJuniorAmount, seniorTokenAddress, juniorTokenAddress); - setLiquiditySeniorAmount(''); - setLiquidityJuniorAmount(''); + await addLiquidity(seniorAmount, juniorAmount, seniorTokenAddress, juniorTokenAddress); await refreshData(); } catch (error) { console.error('Add liquidity failed:', error); @@ -446,47 +182,11 @@ const UnifiedDashboard = () => { } }; - const handleOptimalLiquidity = () => { - const seniorBalanceNum = seniorBalance; - const juniorBalanceNum = juniorBalance; - const poolSenior = parseFloat(poolReserves.senior); - const poolJunior = parseFloat(poolReserves.junior); - - if (poolSenior > 0 && poolJunior > 0) { - // Calculate optimal amounts based on pool ratio - const poolRatio = poolSenior / poolJunior; - const userRatio = seniorBalanceNum / juniorBalanceNum; - - let optimalSenior: number, optimalJunior: number; - - if (userRatio > poolRatio) { - // User has more senior relative to pool ratio - optimalJunior = juniorBalanceNum; - optimalSenior = Math.min(optimalJunior * poolRatio, seniorBalanceNum); - } else { - // User has more junior relative to pool ratio - optimalSenior = seniorBalanceNum; - optimalJunior = Math.min(optimalSenior / poolRatio, juniorBalanceNum); - } - - setLiquiditySeniorAmount(optimalSenior.toFixed(6)); - setLiquidityJuniorAmount(optimalJunior.toFixed(6)); - } else { - // If no pool reserves, use equal amounts - const maxAmount = Math.min(seniorBalanceNum, juniorBalanceNum); - setLiquiditySeniorAmount(maxAmount.toFixed(6)); - setLiquidityJuniorAmount(maxAmount.toFixed(6)); - } - }; - - const handleRemoveLiquidity = async () => { - if (!removeLiquidityAmount || !seniorTokenAddress || !juniorTokenAddress) return; - if (parseFloat(removeLiquidityAmount) <= 0) return; - + const handleRemoveLiquidity = async (amount: string) => { + if (!seniorTokenAddress || !juniorTokenAddress) return; setIsExecuting(true); try { - await removeLiquidity(removeLiquidityAmount, seniorTokenAddress, juniorTokenAddress); - setRemoveLiquidityAmount(''); + await removeLiquidity(amount, seniorTokenAddress, juniorTokenAddress); await refreshData(); } catch (error) { console.error('Remove liquidity failed:', error); @@ -495,42 +195,13 @@ const UnifiedDashboard = () => { } }; - // Strategy execution - const executeStrategy = async (strategy: 'safety' | 'upside' | 'balanced') => { - if (!amount || parseFloat(amount) <= 0) return; - + const handleEmergencyWithdraw = async (amount: string, asset: 'aUSDC' | 'cUSDT') => { setIsExecuting(true); try { - // First deposit to get tokens - await depositAsset(selectedAsset, amount); - - if (strategy === 'safety') { - // Convert all junior to senior - const freshJuniorBalance = await getTokenBalance(juniorTokenAddress!); - if (Number(freshJuniorBalance) > 0) { - const path = [juniorTokenAddress!, seniorTokenAddress!]; - const balanceString = ethers.formatEther(freshJuniorBalance); - const estimate = await getAmountsOut(balanceString, path); - const minOutput = (parseFloat(estimate) * 0.95).toFixed(18); - await swapExactTokensForTokens(balanceString, minOutput, path); - } - } else if (strategy === 'upside') { - // Convert all senior to junior - const freshSeniorBalance = await getTokenBalance(seniorTokenAddress!); - if (Number(freshSeniorBalance) > 0) { - const path = [seniorTokenAddress!, juniorTokenAddress!]; - const balanceString = ethers.formatEther(freshSeniorBalance); - const estimate = await getAmountsOut(balanceString, path); - const minOutput = (parseFloat(estimate) * 0.95).toFixed(18); - await swapExactTokensForTokens(balanceString, minOutput, path); - } - } - // For balanced, keep 50/50 split from deposit - - setAmount(''); + await emergencyWithdraw(amount, asset); await refreshData(); } catch (error) { - console.error('Strategy execution failed:', error); + console.error('Emergency withdrawal failed:', error); } finally { setIsExecuting(false); } @@ -585,8 +256,7 @@ const UnifiedDashboard = () => {
@@ -657,7 +327,6 @@ const UnifiedDashboard = () => {
- {/* Main Content Tabs */} @@ -669,984 +338,74 @@ const UnifiedDashboard = () => { {/* Overview Tab */} -
- {/* Portfolio Breakdown */} - - - - - Portfolio Breakdown - - - - {/* Risk Profile Visualization */} -
-
- Risk Distribution - - {formatNumber(riskProfile.percentage)}% Senior - -
- -
- Conservative - Aggressive -
-
- - {/* Token Holdings */} -
-
-
- -
-

Senior Tokens

-

Priority claims • Lower risk

-
-
-
-

{formatNumber(seniorBalance)}

-

${seniorPrice} each

-
-
- -
-
- -
-

Junior Tokens

-

Higher upside • Higher risk

-
-
-
-

{formatNumber(juniorBalance)}

-

${juniorPrice} each

-
-
- - {lpBalance > 0 && ( -
-
- -
-

LP Tokens

-

Liquidity provider rewards

-
-
-
-

{formatNumber(lpBalance)}

-

Pool share

-
-
- )} -
-
-
- - {/* Quick Actions */} - - - - - Quick Actions - - - - - - - - - - {/* Protocol Analytics */} -
-
-

- - Protocol Analytics -

-
-
-
-

Total TVL

-

${formatNumber(protocolTVL, 0)}

-
-
-

Your Share

-

{formatNumber(userSharePercent, 4)}%

-
-
-

Pool Ratio

-

- {parseFloat(poolReserves.junior) > 0 - ? formatNumber(parseFloat(poolReserves.senior) / parseFloat(poolReserves.junior), 2) - : '1.00' - } -

-
-
-

Emergency

-

- {vaultInfo.emergencyMode ? 'Active' : 'Inactive'} -

-
-
- -
-
-
-
- +
{/* Deposit & Trade Tab */} - - - - - Smart Deposit Strategies - - - Choose your risk strategy and we'll optimize your token allocation - - - - {/* Strategy Selection */} -
- setActiveStrategy('safety')} - > - - -

Max Safety

-

All funds → Senior tokens

- - Priority Claims - -
-
- - setActiveStrategy('balanced')} - > - - -

Balanced

-

50% Senior / 50% Junior

- - Moderate Risk - -
-
- - setActiveStrategy('upside')} - > - - -

Max Upside

-

All funds → Junior tokens

- - Higher Returns - -
-
-
- - {/* Deposit Form */} -
-
- -
- - -
-
- -
- - setAmount(e.target.value)} - className="bg-slate-700/50 border-slate-600 text-white" - /> -
- Available: {formatNumber(selectedAsset === 'aUSDC' ? aUSDCBalance : cUSDTBalance, 2)} - -
-
-
- - {/* Strategy Preview */} - {amount && parseFloat(amount) > 0 && ( - - - -
-
Strategy Preview:
-
- {activeStrategy === 'safety' && ( -
Depositing ${amount} will get you ~${amount} in Senior tokens (priority claims)
- )} - {activeStrategy === 'balanced' && ( -
Depositing ${amount} will get you ~${formatNumber(parseFloat(amount) / 2)} Senior + ~${formatNumber(parseFloat(amount) / 2)} Junior tokens
- )} - {activeStrategy === 'upside' && ( -
Depositing ${amount} will get you ~${amount} in Junior tokens (higher upside potential)
- )} -
-
-
-
- )} - - {/* Execute Button */} - -
-
+
{/* Manage Positions Tab */} -
- {/* Rebalance Portfolio */} - - - - - Rebalance Portfolio - - - Adjust your risk exposure by trading between Senior and Junior tokens - - - - {/* Current vs Target Visualization */} -
-
-
- Current Allocation - {formatNumber(riskProfile.percentage)}% Senior / {formatNumber(100 - riskProfile.percentage)}% Junior -
- -
- - {isRebalancePreview && ( -
-
- Target Allocation - {targetSeniorPercent}% Senior / {100 - targetSeniorPercent}% Junior -
- -
- -
- )} -
- - {/* Target Allocation Buttons */} -
- -
- - - - - -
-
- Max Risk - Balanced - Max Safety -
-
- - {/* Trade Preview */} - {isRebalancePreview && rebalancePreview && ( -
-
Rebalance Preview
-
-
- {rebalancePreview.tokenIn === 'junior' ? ( - - ) : ( - - )} - - Swap {rebalancePreview.amountIn} {rebalancePreview.tokenIn === 'junior' ? 'Junior' : 'Senior'} → {rebalancePreview.tokenOut === 'junior' ? 'Junior' : 'Senior'} - -
-
- Expected output: {rebalancePreview.amountOut} {rebalancePreview.tokenOut === 'junior' ? 'Junior' : 'Senior'} tokens -
-
- Price impact: ~{formatNumber((1 - parseFloat(rebalancePreview.amountOut) / (parseFloat(rebalancePreview.amountIn) * (rebalancePreview.tokenIn === 'junior' ? parseFloat(juniorPrice) : 1/parseFloat(juniorPrice)))) * 100, 2)}% -
-
-
- )} - - {/* Action Buttons */} - {isRebalancePreview && rebalancePreview ? ( -
- - -
- ) : ( - - - - Use the buttons above to set your target allocation. Trades will be executed via AMM. - - - )} - - - - {/* Optimal Asset Redemption */} - - - - - Optimal Asset Redemption - - - Choose target asset and amount - system calculates optimal token usage - - - - {/* Asset Selection */} -
- -
- - -
-
- - {/* Amount Input */} - {selectedWithdrawAsset && ( -
- - setWithdrawAssetAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -
- Max withdrawable: ${formatNumber(totalPortfolioValue)} -
-
- )} - - {/* Automatic Token Allocation Display */} - {selectedWithdrawAsset && withdrawAssetAmount && parseFloat(withdrawAssetAmount) > 0 && ( - - - -
-
Optimal Token Allocation:
-
-
Senior Tokens: {calculatedTokenAmounts.senior}
-
Junior Tokens: {calculatedTokenAmounts.junior}
-
- {effectivePhase === 0 - ? 'Deposit phase: Using equal amounts of senior and junior tokens' - : effectivePhase === 2 - ? 'Claims phase: Using senior tokens only' - : 'Using max junior tokens first, then senior tokens'} -
-
-
-
-
- )} - - - - - - - Current phase: {Phase[vaultInfo.currentPhase] || 'Loading...'}. Phase affects withdrawal rules. - - -
-
-
+ {/* Advanced Tab */} -
- {/* Add Liquidity */} - - - - - Add Liquidity - - - Provide liquidity to earn trading fees. Choose optimal or manual mode. - - - - {/* Mode Selection */} -
- -
- - -
-
- - {liquidityMode === 'optimal' ? ( -
- {/* Available Tokens Display */} -
-
-
-

Available tokens:

-

- {formatNumber(seniorBalance, 4)} SENIOR + {formatNumber(juniorBalance, 4)} JUNIOR -

-

- Will add optimal amounts to match pool ratio -

-
-
-
- - {/* Quick Actions */} -
- - - {(liquiditySeniorAmount || liquidityJuniorAmount) && ( - - )} -
- - {/* Show calculated amounts */} - {(liquiditySeniorAmount || liquidityJuniorAmount) && ( - - - -
-
Ready to add:
-
- {liquiditySeniorAmount} SENIOR + {liquidityJuniorAmount} JUNIOR -
-
- These amounts match the current pool ratio for optimal liquidity provision -
-
-
-
- )} -
- ) : ( -
- {/* Manual Input */} -
-
- - setLiquiditySeniorAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -

- Balance: {formatNumber(seniorBalance)} -

-
- -
- - setLiquidityJuniorAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -

- Balance: {formatNumber(juniorBalance)} -

-
-
- - {liquiditySeniorAmount && liquidityJuniorAmount && ( - - - - You'll receive LP tokens proportional to your share of the pool - - - )} - - -
- )} -
-
- - {/* Remove Liquidity */} - - - - - Remove Liquidity - - - Remove liquidity from the SENIOR/JUNIOR pool - - - -
-

Current LP Position

-

{formatNumber(lpBalance)} LP

-

Pool share tokens

-
- -
- - setRemoveLiquidityAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -

- LP Balance: {formatNumber(lpBalance)} -

-
- - {removeLiquidityAmount && parseFloat(removeLiquidityAmount) > 0 && ( - - - - You'll receive proportional amounts of SENIOR and JUNIOR tokens - - - )} - - -
-
- - {/* Emergency Withdrawal */} - {vaultInfo.emergencyMode && ( - - - Emergency Withdrawal - - Emergency mode is active. Senior token holders can withdraw with preferred asset. - - - -
-
- - setEmergencyAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -
-
- -
- - -
-
-
- -
-
- )} - -
+
{/* Market Overview - Always Visible at Bottom */} - - -
- - - Market Overview - tics -
-
- -
-
-

Senior Price

-

${seniorPrice}

-
- - Stable -
-
-
-

Junior Price

-

${juniorPrice}

-
- - Volatile -
-
-
-

Pool Liquidity

-

- ${formatNumber((parseFloat(poolReserves.senior) + parseFloat(poolReserves.junior)), 0)} -

-
- - Deep -
-
-
-

Protocol TVL

-

${formatNumber(protocolTVL, 0)}

-
- - Growing -
-
-
-
-
+
+ +
); }; -export default React.memo(UnifiedDashboard); +export default React.memo(UnifiedDashboard); \ No newline at end of file From bcaa695a47dd0f0b6dd41af4114a0b86eeb79d75 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 18:37:31 +0100 Subject: [PATCH 21/50] update widget page header --- frontend/src/pages/WidgetDemo.tsx | 54 +++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/WidgetDemo.tsx b/frontend/src/pages/WidgetDemo.tsx index ef151ae..dbf6655 100644 --- a/frontend/src/pages/WidgetDemo.tsx +++ b/frontend/src/pages/WidgetDemo.tsx @@ -3,8 +3,11 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/com import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Separator } from '@/components/ui/separator'; -import Navbar from '@/components/Navbar'; import PredictionMarketWidget from '@/components/PredictionMarketWidget'; +import Logo from '@/assets/images/CoverMax.svg'; +import { Link } from 'react-router-dom'; +import { useWeb3 } from '@/context/PrivyWeb3Context'; +import NetworkSelector from '@/components/NetworkSelector'; import { Code, Zap, TrendingUp, Users, DollarSign, Target } from 'lucide-react'; interface ProtocolDemo { @@ -29,6 +32,12 @@ const demoProtocols: ProtocolDemo[] = [ const WidgetDemo: React.FC = () => { const [selectedProtocol, setSelectedProtocol] = useState(demoProtocols[0]); const [showCode, setShowCode] = useState(false); + const { isConnected, address, connectWallet, disconnectWallet } = useWeb3(); + + // Format address for display + const formatAddress = (addr: string) => { + return `${addr.slice(0, 6)}...${addr.slice(-4)}`; + }; const codeExample = `import PredictionMarketWidget from '@/components/PredictionMarketWidget'; @@ -50,7 +59,47 @@ const WidgetDemo: React.FC = () => {
- + {/* Isolated Header - With Clickable Logo */} +
+
+ {/* Clickable Logo and Title */} +
+ + CoverMax Logo + CoverMax + + Widget Demo +
+ + {/* Wallet Connection */} +
+ + {!isConnected ? ( + + ) : ( + + )} +
+
+
{/* Header */} @@ -233,3 +282,4 @@ const WidgetDemo: React.FC = () => { }; export default WidgetDemo; + From 620bf52a27896b83b5e94bf56924eb3363b2823e Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 18:38:29 +0100 Subject: [PATCH 22/50] fix refresh page button --- frontend/src/pages/UnifiedDashboard.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/UnifiedDashboard.tsx b/frontend/src/pages/UnifiedDashboard.tsx index 505ff24..607bf96 100644 --- a/frontend/src/pages/UnifiedDashboard.tsx +++ b/frontend/src/pages/UnifiedDashboard.tsx @@ -254,7 +254,12 @@ const UnifiedDashboard = () => { > {riskProfile.level} Risk Profile - From 3c35d7aef7d2a7e088a593d320da19ca245d3c60 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 21:15:10 +0100 Subject: [PATCH 23/50] clean up components and unified dashboard renaming --- frontend/src/App.tsx | 7 +- frontend/src/components/ActionCard.tsx | 3 +- frontend/src/components/Navbar.tsx | 4 +- frontend/src/components/StatCard.tsx | 3 +- .../dashboard/PortfolioOverview.tsx | 6 +- frontend/src/hooks/use-toast.ts | 2 +- .../{UnifiedDashboard.tsx => Dashboard.tsx} | 4 +- frontend/src/pages/Index.tsx | 8 +- frontend/src/pages/UnifiedDashboard.old.tsx | 1652 ----------------- 9 files changed, 19 insertions(+), 1670 deletions(-) rename frontend/src/pages/{UnifiedDashboard.tsx => Dashboard.tsx} (99%) delete mode 100644 frontend/src/pages/UnifiedDashboard.old.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 41b547d..a21aa4e 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -7,7 +7,7 @@ import React from "react"; // Import pages directly import Index from "./pages/Index"; -import UnifiedDashboard from "./pages/UnifiedDashboard"; +import Dashboard from "./pages/Dashboard"; import Insurance from "./pages/Insurance"; import Admin from "./pages/Admin"; import WidgetDemo from "./pages/WidgetDemo"; @@ -29,10 +29,9 @@ const App: React.FC = () => { } /> - } /> - } /> + } /> } /> - } /> + } /> } /> } /> } /> diff --git a/frontend/src/components/ActionCard.tsx b/frontend/src/components/ActionCard.tsx index 5c2cf58..7354ab7 100644 --- a/frontend/src/components/ActionCard.tsx +++ b/frontend/src/components/ActionCard.tsx @@ -1,4 +1,3 @@ - import React, { useState } from 'react'; import { Card, CardContent, CardFooter } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; @@ -144,4 +143,4 @@ const ActionCard: React.FC = ({ ); }; -export default ActionCard; +export default ActionCard; \ No newline at end of file diff --git a/frontend/src/components/Navbar.tsx b/frontend/src/components/Navbar.tsx index 2a8ce7c..cfe8e98 100644 --- a/frontend/src/components/Navbar.tsx +++ b/frontend/src/components/Navbar.tsx @@ -33,9 +33,9 @@ const Navbar: React.FC = () => { -
-
-
- - {/* Key Metrics Row */} -
- - -
-
-

Portfolio Value

-

${formatNumber(totalPortfolioValue)}

-
- -
-
- {formatNumber(userSharePercent, 4)}% of protocol -
-
-
- - - -
-
-

Senior Tokens

-

{formatNumber(seniorBalance)}

-
- -
-
- ${formatNumber(seniorBalance * parseFloat(seniorPrice))} value -
-
-
- - - -
-
-

Junior Tokens

-

{formatNumber(juniorBalance)}

-
- -
-
- ${formatNumber(juniorBalance * parseFloat(juniorPrice))} value -
-
-
- - - -
-
-

Protocol Phase

-

- {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} -

-
- -
-
- TVL: ${formatNumber(protocolTVL, 0)} -
-
-
-
- - - {/* Main Content Tabs */} - - - Overview - Deposit & Trade - Manage Positions - Advanced - - - {/* Overview Tab */} - -
- {/* Portfolio Breakdown */} - - - - - Portfolio Breakdown - - - - {/* Risk Profile Visualization */} -
-
- Risk Distribution - - {formatNumber(riskProfile.percentage)}% Senior - -
- -
- Conservative - Aggressive -
-
- - {/* Token Holdings */} -
-
-
- -
-

Senior Tokens

-

Priority claims • Lower risk

-
-
-
-

{formatNumber(seniorBalance)}

-

${seniorPrice} each

-
-
- -
-
- -
-

Junior Tokens

-

Higher upside • Higher risk

-
-
-
-

{formatNumber(juniorBalance)}

-

${juniorPrice} each

-
-
- - {lpBalance > 0 && ( -
-
- -
-

LP Tokens

-

Liquidity provider rewards

-
-
-
-

{formatNumber(lpBalance)}

-

Pool share

-
-
- )} -
-
-
- - {/* Quick Actions */} - - - - - Quick Actions - - - - - - - - - - {/* Protocol Analytics */} -
-
-

- - Protocol Analytics -

-
-
-
-

Total TVL

-

${formatNumber(protocolTVL, 0)}

-
-
-

Your Share

-

{formatNumber(userSharePercent, 4)}%

-
-
-

Pool Ratio

-

- {parseFloat(poolReserves.junior) > 0 - ? formatNumber(parseFloat(poolReserves.senior) / parseFloat(poolReserves.junior), 2) - : '1.00' - } -

-
-
-

Emergency

-

- {vaultInfo.emergencyMode ? 'Active' : 'Inactive'} -

-
-
- -
-
-
-
- -
- - {/* Deposit & Trade Tab */} - - - - - - Smart Deposit Strategies - - - Choose your risk strategy and we'll optimize your token allocation - - - - {/* Strategy Selection */} -
- setActiveStrategy('safety')} - > - - -

Max Safety

-

All funds → Senior tokens

- - Priority Claims - -
-
- - setActiveStrategy('balanced')} - > - - -

Balanced

-

50% Senior / 50% Junior

- - Moderate Risk - -
-
- - setActiveStrategy('upside')} - > - - -

Max Upside

-

All funds → Junior tokens

- - Higher Returns - -
-
-
- - {/* Deposit Form */} -
-
- -
- - -
-
- -
- - setAmount(e.target.value)} - className="bg-slate-700/50 border-slate-600 text-white" - /> -
- Available: {formatNumber(selectedAsset === 'aUSDC' ? aUSDCBalance : cUSDTBalance, 2)} - -
-
-
- - {/* Strategy Preview */} - {amount && parseFloat(amount) > 0 && ( - - - -
-
Strategy Preview:
-
- {activeStrategy === 'safety' && ( -
Depositing ${amount} will get you ~${amount} in Senior tokens (priority claims)
- )} - {activeStrategy === 'balanced' && ( -
Depositing ${amount} will get you ~${formatNumber(parseFloat(amount) / 2)} Senior + ~${formatNumber(parseFloat(amount) / 2)} Junior tokens
- )} - {activeStrategy === 'upside' && ( -
Depositing ${amount} will get you ~${amount} in Junior tokens (higher upside potential)
- )} -
-
-
-
- )} - - {/* Execute Button */} - -
-
-
- - {/* Manage Positions Tab */} - -
- {/* Rebalance Portfolio */} - - - - - Rebalance Portfolio - - - Adjust your risk exposure by trading between Senior and Junior tokens - - - - {/* Current vs Target Visualization */} -
-
-
- Current Allocation - {formatNumber(riskProfile.percentage)}% Senior / {formatNumber(100 - riskProfile.percentage)}% Junior -
- -
- - {isRebalancePreview && ( -
-
- Target Allocation - {targetSeniorPercent}% Senior / {100 - targetSeniorPercent}% Junior -
- -
- -
- )} -
- - {/* Target Allocation Buttons */} -
- -
- - - - - -
-
- Max Risk - Balanced - Max Safety -
-
- - {/* Trade Preview */} - {isRebalancePreview && rebalancePreview && ( -
-
Rebalance Preview
-
-
- {rebalancePreview.tokenIn === 'junior' ? ( - - ) : ( - - )} - - Swap {rebalancePreview.amountIn} {rebalancePreview.tokenIn === 'junior' ? 'Junior' : 'Senior'} → {rebalancePreview.tokenOut === 'junior' ? 'Junior' : 'Senior'} - -
-
- Expected output: {rebalancePreview.amountOut} {rebalancePreview.tokenOut === 'junior' ? 'Junior' : 'Senior'} tokens -
-
- Price impact: ~{formatNumber((1 - parseFloat(rebalancePreview.amountOut) / (parseFloat(rebalancePreview.amountIn) * (rebalancePreview.tokenIn === 'junior' ? parseFloat(juniorPrice) : 1/parseFloat(juniorPrice)))) * 100, 2)}% -
-
-
- )} - - {/* Action Buttons */} - {isRebalancePreview && rebalancePreview ? ( -
- - -
- ) : ( - - - - Use the buttons above to set your target allocation. Trades will be executed via AMM. - - - )} - - - - {/* Optimal Asset Redemption */} - - - - - Optimal Asset Redemption - - - Choose target asset and amount - system calculates optimal token usage - - - - {/* Asset Selection */} -
- -
- - -
-
- - {/* Amount Input */} - {selectedWithdrawAsset && ( -
- - setWithdrawAssetAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -
- Max withdrawable: ${formatNumber(totalPortfolioValue)} -
-
- )} - - {/* Automatic Token Allocation Display */} - {selectedWithdrawAsset && withdrawAssetAmount && parseFloat(withdrawAssetAmount) > 0 && ( - - - -
-
Optimal Token Allocation:
-
-
Senior Tokens: {calculatedTokenAmounts.senior}
-
Junior Tokens: {calculatedTokenAmounts.junior}
-
- {effectivePhase === 0 - ? 'Deposit phase: Using equal amounts of senior and junior tokens' - : effectivePhase === 2 - ? 'Claims phase: Using senior tokens only' - : 'Using max junior tokens first, then senior tokens'} -
-
-
-
-
- )} - - - - - - - Current phase: {Phase[vaultInfo.currentPhase] || 'Loading...'}. Phase affects withdrawal rules. - - -
-
-
- - - {/* Advanced Tab */} - -
- {/* Add Liquidity */} - - - - - Add Liquidity - - - Provide liquidity to earn trading fees. Choose optimal or manual mode. - - - - {/* Mode Selection */} -
- -
- - -
-
- - {liquidityMode === 'optimal' ? ( -
- {/* Available Tokens Display */} -
-
-
-

Available tokens:

-

- {formatNumber(seniorBalance, 4)} SENIOR + {formatNumber(juniorBalance, 4)} JUNIOR -

-

- Will add optimal amounts to match pool ratio -

-
-
-
- - {/* Quick Actions */} -
- - - {(liquiditySeniorAmount || liquidityJuniorAmount) && ( - - )} -
- - {/* Show calculated amounts */} - {(liquiditySeniorAmount || liquidityJuniorAmount) && ( - - - -
-
Ready to add:
-
- {liquiditySeniorAmount} SENIOR + {liquidityJuniorAmount} JUNIOR -
-
- These amounts match the current pool ratio for optimal liquidity provision -
-
-
-
- )} -
- ) : ( -
- {/* Manual Input */} -
-
- - setLiquiditySeniorAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -

- Balance: {formatNumber(seniorBalance)} -

-
- -
- - setLiquidityJuniorAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -

- Balance: {formatNumber(juniorBalance)} -

-
-
- - {liquiditySeniorAmount && liquidityJuniorAmount && ( - - - - You'll receive LP tokens proportional to your share of the pool - - - )} - - -
- )} -
-
- - {/* Remove Liquidity */} - - - - - Remove Liquidity - - - Remove liquidity from the SENIOR/JUNIOR pool - - - -
-

Current LP Position

-

{formatNumber(lpBalance)} LP

-

Pool share tokens

-
- -
- - setRemoveLiquidityAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -

- LP Balance: {formatNumber(lpBalance)} -

-
- - {removeLiquidityAmount && parseFloat(removeLiquidityAmount) > 0 && ( - - - - You'll receive proportional amounts of SENIOR and JUNIOR tokens - - - )} - - -
-
- - {/* Emergency Withdrawal */} - {vaultInfo.emergencyMode && ( - - - Emergency Withdrawal - - Emergency mode is active. Senior token holders can withdraw with preferred asset. - - - -
-
- - setEmergencyAmount(e.target.value)} - disabled={!isConnected} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> -
-
- -
- - -
-
-
- -
-
- )} - -
-
- - - {/* Market Overview - Always Visible at Bottom */} - - -
- - - Market Overview - tics -
-
- -
-
-

Senior Price

-

${seniorPrice}

-
- - Stable -
-
-
-

Junior Price

-

${juniorPrice}

-
- - Volatile -
-
-
-

Pool Liquidity

-

- ${formatNumber((parseFloat(poolReserves.senior) + parseFloat(poolReserves.junior)), 0)} -

-
- - Deep -
-
-
-

Protocol TVL

-

${formatNumber(protocolTVL, 0)}

-
- - Growing -
-
-
-
-
-
-
- ); -}; - -export default React.memo(UnifiedDashboard); From 059b5d9737d5cc2e4f12bc5581ceb53831143ff9 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 21:44:26 +0100 Subject: [PATCH 24/50] clean up unused components and use statcards where appropriate --- frontend/src/components/ActionCard.tsx | 146 -------- frontend/src/components/PhaseDisplay.tsx | 142 -------- frontend/src/components/Trade.tsx | 337 ------------------ .../components/dashboard/AdvancedFeatures.tsx | 4 +- .../dashboard/PositionManagement.tsx | 6 +- frontend/src/pages/Dashboard.tsx | 91 ++--- 6 files changed, 36 insertions(+), 690 deletions(-) delete mode 100644 frontend/src/components/ActionCard.tsx delete mode 100644 frontend/src/components/PhaseDisplay.tsx delete mode 100644 frontend/src/components/Trade.tsx diff --git a/frontend/src/components/ActionCard.tsx b/frontend/src/components/ActionCard.tsx deleted file mode 100644 index 7354ab7..0000000 --- a/frontend/src/components/ActionCard.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import React, { useState } from 'react'; -import { Card, CardContent, CardFooter } from '@/components/ui/card'; -import { Button } from '@/components/ui/button'; -import { Input } from '@/components/ui/input'; -import { Slider } from '@/components/ui/slider'; - -interface ActionCardProps { - title: string; - description: string; - buttonText: string; - isWithdraw?: boolean; - isPercentage?: boolean; - maxValue: number; - onAction: ((amount: number) => void) | (() => void); - disabled?: boolean; -} - -const ActionCard: React.FC = ({ - title, - description, - buttonText, - isWithdraw = false, - isPercentage = false, - maxValue, - onAction, - disabled = false, -}) => { - const [amount, setAmount] = useState(0); - const [percentage, setPercentage] = useState(0); - - const handleSliderChange = (value: number[]) => { - const newValue = value[0]; - setPercentage(newValue); - - if (isPercentage) { - setAmount(newValue); - } else { - setAmount((maxValue * newValue) / 100); - } - }; - - const handleInputChange = (e: React.ChangeEvent) => { - const value = parseFloat(e.target.value) || 0; - - if (isPercentage) { - setAmount(Math.min(value, 100)); - setPercentage(Math.min(value, 100)); - } else { - setAmount(Math.min(value, maxValue)); - setPercentage((value / maxValue) * 100); - } - }; - - const handleMax = () => { - setAmount(isPercentage ? 100 : maxValue); - setPercentage(100); - }; - - const handleHalf = () => { - setAmount(isPercentage ? 50 : maxValue / 2); - setPercentage(50); - }; - - const handleAction = () => { - // Try to call as a function with amount parameter first - try { - (onAction as (amount: number) => void)(amount); - } catch { - // If that fails, try calling as a function with no parameters - (onAction as () => void)(); - } - setAmount(0); - setPercentage(0); - }; - - return ( - - -
- - - {isPercentage ? '%' : '$'} - -
- -
-
- 0% - 50% - 100% -
- -
- -
- - -
-
- - - -
- ); -}; - -export default ActionCard; \ No newline at end of file diff --git a/frontend/src/components/PhaseDisplay.tsx b/frontend/src/components/PhaseDisplay.tsx deleted file mode 100644 index acdf99a..0000000 --- a/frontend/src/components/PhaseDisplay.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { useWeb3 } from '@/context/PrivyWeb3Context'; -import { PHASE_NAMES, Phase } from '@/config/contracts'; -import { Card } from '@/components/ui/card'; -import { Progress } from '@/components/ui/progress'; -import { Badge } from '@/components/ui/badge'; -import { AlertCircle, Clock, Shield, FileText } from 'lucide-react'; - -const PhaseDisplay: React.FC = () => { - const { vaultInfo } = useWeb3(); - const [timeRemaining, setTimeRemaining] = useState(''); - const [progress, setProgress] = useState(0); - - useEffect(() => { - const updateTimer = () => { - const remaining = Number(vaultInfo.timeRemaining); - if (remaining <= 0) { - setTimeRemaining('Phase ending...'); - setProgress(100); - return; - } - - const days = Math.floor(remaining / 86400); - const hours = Math.floor((remaining % 86400) / 3600); - const minutes = Math.floor((remaining % 3600) / 60); - const seconds = remaining % 60; - - let timeStr = ''; - if (days > 0) timeStr += `${days}d `; - if (hours > 0) timeStr += `${hours}h `; - if (minutes > 0) timeStr += `${minutes}m `; - timeStr += `${seconds}s`; - - setTimeRemaining(timeStr); - - // Calculate progress based on phase duration - const phaseDurations: { [key: number]: number } = { - [Phase.ACTIVE]: 5 * 24 * 60 * 60, - [Phase.CLAIMS]: 1 * 24 * 60 * 60, - [Phase.FINAL_CLAIMS]: 1 * 24 * 60 * 60, - }; - - const duration = phaseDurations[vaultInfo.currentPhase] || 1; - const elapsed = duration - remaining; - setProgress((elapsed / duration) * 100); - }; - - updateTimer(); - const interval = setInterval(updateTimer, 1000); - return () => clearInterval(interval); - }, [vaultInfo.timeRemaining, vaultInfo.currentPhase]); - - const getPhaseIcon = () => { - switch (vaultInfo.currentPhase) { - case Phase.ACTIVE: - return ; - case Phase.CLAIMS: - case Phase.FINAL_CLAIMS: - return ; - default: - return ; - } - }; - - const getPhaseColor = () => { - switch (vaultInfo.currentPhase) { - case Phase.ACTIVE: - return 'bg-blue-500'; - case Phase.CLAIMS: - return 'bg-orange-500'; - case Phase.FINAL_CLAIMS: - return 'bg-red-500'; - default: - return 'bg-gray-500'; - } - }; - - const getPhaseDescription = () => { - switch (vaultInfo.currentPhase) { - case Phase.ACTIVE: - return 'Deposits and withdrawals allowed. Coverage is active. Equal senior/junior amounts required for withdrawals'; - case Phase.CLAIMS: - return 'Any combination of senior and junior tokens can be withdrawn. Emergency mode restricts to senior only'; - case Phase.FINAL_CLAIMS: - return 'All token holders can withdraw remaining funds with any token combination'; - default: - return ''; - } - }; - - return ( - -
-
-
-
- {getPhaseIcon()} -
-
-

- {PHASE_NAMES[vaultInfo.currentPhase as Phase]} -

-

Current Protocol Phase

-
-
- {vaultInfo.emergencyMode && ( - - Emergency Mode Active - - )} -
- -
-
- Time Remaining - {timeRemaining} -
- -
- -

{getPhaseDescription()}

- -
-
-

Vault TVL

-

- ${((Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18).toFixed(2)} -

-
-
-

Total Tokens Issued

-

- {(Number(vaultInfo.totalTokensIssued) / 1e18).toFixed(2)} -

-
-
-
-
- ); -}; - -export default PhaseDisplay; \ No newline at end of file diff --git a/frontend/src/components/Trade.tsx b/frontend/src/components/Trade.tsx deleted file mode 100644 index 444b556..0000000 --- a/frontend/src/components/Trade.tsx +++ /dev/null @@ -1,337 +0,0 @@ -import React, { useState, useCallback, useEffect } from 'react'; -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; -import { Button } from '@/components/ui/button'; -import { Input } from '@/components/ui/input'; -import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; -import { Label } from '@/components/ui/label'; -import { useWeb3 } from '@/context/PrivyWeb3Context'; -import { Shield, TrendingUp, Scale, Zap } from 'lucide-react'; - -type TradeIntent = 'safety' | 'upside' | 'equalize'; - -const QuickTrade: React.FC = () => { - const { - isConnected, - balances, - seniorTokenAddress, - juniorTokenAddress, - swapExactTokensForTokens, - getAmountsOut, - withdraw, - } = useWeb3(); - - const [intent, setIntent] = useState('safety'); - const [amount, setAmount] = useState(''); - const [isExecuting, setIsExecuting] = useState(false); - const [estimatedOutput, setEstimatedOutput] = useState('0'); - - // Calculate current token values - const seniorValue = Number(balances.seniorTokens) / 1e18; - const juniorValue = Number(balances.juniorTokens) / 1e18; - const aUSDCValue = Number(balances.aUSDC) / 1e18; - const cUSDTValue = Number(balances.cUSDT) / 1e18; - const totalAssets = aUSDCValue + cUSDTValue; - - const handleEqualizeRisk = async () => { - try { - // Calculate the difference to equalize - const totalValue = seniorValue + juniorValue; // Using token amounts instead of USD values for simplicity - const targetAmount = totalValue / 2; - - // Determine which token to swap and how much - if (seniorValue > targetAmount) { - // Need to swap some SENIOR to JUNIOR - const swapAmount = (seniorValue - targetAmount).toString(); - - if (seniorTokenAddress && juniorTokenAddress) { - const path = [seniorTokenAddress, juniorTokenAddress]; - const estimate = await getAmountsOut(swapAmount, path); - const minOutput = (parseFloat(estimate) * 0.95).toString(); // 5% slippage - - await swapExactTokensForTokens(swapAmount, minOutput, path); - } - } else if (juniorValue > targetAmount) { - // Need to swap some JUNIOR to SENIOR - const swapAmount = (juniorValue - targetAmount).toString(); - - if (seniorTokenAddress && juniorTokenAddress) { - const path = [juniorTokenAddress, seniorTokenAddress]; - const estimate = await getAmountsOut(swapAmount, path); - const minOutput = (parseFloat(estimate) * 0.95).toString(); // 5% slippage - - await swapExactTokensForTokens(swapAmount, minOutput, path); - } - } - } catch (error) { - console.error('Equalize risk failed:', error); - throw error; - } - }; - - // Update estimated output when amount or intent changes - useEffect(() => { - const updateEstimate = async () => { - if (!amount || parseFloat(amount) <= 0) { - setEstimatedOutput('0'); - return; - } - - try { - if (intent === 'safety') { - // Get estimate for swapping juniorTokens to seniorTokens - const path = [juniorTokenAddress!, seniorTokenAddress!]; - const estimate = await getAmountsOut(amount, path); - setEstimatedOutput(estimate); - } else if (intent === 'upside') { - // Get estimate for swapping seniorTokens to juniorTokens - const path = [seniorTokenAddress!, juniorTokenAddress!]; - const estimate = await getAmountsOut(amount, path); - setEstimatedOutput(estimate); - } - } catch (error) { - console.error('Error getting estimate:', error); - setEstimatedOutput('0'); - } - }; - - if (intent !== 'equalize' && amount && parseFloat(amount) > 0) { - updateEstimate(); - // Update estimate every 3 seconds for real-time pricing - const interval = setInterval(updateEstimate, 3000); - return () => clearInterval(interval); - } - }, [amount, intent, seniorTokenAddress, juniorTokenAddress, getAmountsOut]); - - const getIntentDetails = () => { - switch (intent) { - case 'safety': - return { - title: 'Get More Safety', - description: 'Swap for more SENIOR tokens', - icon: , - color: 'bg-blue-600', - action: `You'll get ~${parseFloat(estimatedOutput).toFixed(4)} SENIOR tokens` - }; - case 'upside': - return { - title: 'Increase Upside', - description: 'Swap for more JUNIOR tokens', - icon: , - color: 'bg-amber-600', - action: `You'll get ~${parseFloat(estimatedOutput).toFixed(4)} JUNIOR tokens` - }; - case 'equalize': - return { - title: 'Equalize Risk', - description: 'Balance your SENIOR and JUNIOR tokens', - icon: , - color: 'bg-purple-600', - action: 'This will balance your portfolio to equal amounts of SENIOR and JUNIOR tokens' - }; - } - }; - - const handleExecuteTrade = useCallback(async () => { - if (intent !== 'equalize' && (!amount || parseFloat(amount) <= 0)) { - alert('Please enter a valid amount'); - return; - } - - setIsExecuting(true); - - try { - const amountValue = parseFloat(amount); - const minOutput = (parseFloat(estimatedOutput) * 0.95).toString(); // 5% slippage tolerance - - switch (intent) { - case 'safety': - if (amountValue > juniorValue) { - alert('Insufficient JUNIOR tokens'); - return; - } - // Swap JUNIOR to SENIOR - await swapExactTokensForTokens( - amount, - minOutput, - [juniorTokenAddress!, seniorTokenAddress!], - ); - break; - - case 'upside': - if (amountValue > seniorValue) { - alert('Insufficient SENIOR tokens'); - return; - } - // Swap SENIOR to JUNIOR - await swapExactTokensForTokens( - amount, - minOutput, - [seniorTokenAddress!, juniorTokenAddress!], - ); - break; - - case 'equalize': - // Call the equalize function - no amount needed as it auto-calculates - await handleEqualizeRisk(); - break; - } - - setAmount(''); - } catch (error) { - console.error('Trade execution failed:', error); - alert('Trade failed. Please try again.'); - } finally { - setIsExecuting(false); - } - }, [intent, amount, estimatedOutput, totalAssets, seniorValue, juniorValue, seniorTokenAddress, juniorTokenAddress, swapExactTokensForTokens, withdraw]); - - const details = getIntentDetails(); - - if (!isConnected) { - return ( - - - - - Trade - - - -

- Connect your wallet to start trading risk tokens -

-
-
- ); - } - - return ( - - - - - Rebalance Your Risk - -

- Tell us what you want to do -

-
- - {/* Intent Selection */} -
- - setIntent(value as TradeIntent)}> -
- - - - - -
-
-
- - {/* Amount Input */} -
- - setAmount(e.target.value)} - disabled={intent === 'equalize'} - className="bg-slate-700/50 border-slate-600 text-white text-lg py-6" - /> -

- {intent === 'safety' - ? `Available: ${juniorValue.toFixed(4)} JUNIOR tokens` - : intent === 'upside' - ? `Available: ${seniorValue.toFixed(4)} SENIOR tokens` - : `Current: ${seniorValue.toFixed(4)} SENIOR, ${juniorValue.toFixed(4)} JUNIOR` - } -

-
- - {/* Trade Preview */} - {((amount && parseFloat(amount) > 0) || intent === 'equalize') && ( -
-

Trade Preview

-

- {details.action} -

-
- )} - - {/* Execute Button */} - -
-
- ); -}; - -export default React.memo(QuickTrade); \ No newline at end of file diff --git a/frontend/src/components/dashboard/AdvancedFeatures.tsx b/frontend/src/components/dashboard/AdvancedFeatures.tsx index 9039c28..82bef54 100644 --- a/frontend/src/components/dashboard/AdvancedFeatures.tsx +++ b/frontend/src/components/dashboard/AdvancedFeatures.tsx @@ -18,7 +18,7 @@ interface AdvancedFeaturesProps { lpBalance: number; formatNumber: (num: number, decimals?: number) => string; isExecuting: boolean; - vaultInfo: any; + vaultInfo: { emergencyMode: boolean }; onAddLiquidity: (seniorAmount: string, juniorAmount: string) => void; onRemoveLiquidity: (amount: string) => void; onEmergencyWithdraw: (amount: string, asset: 'aUSDC' | 'cUSDT') => void; @@ -163,7 +163,7 @@ const AdvancedFeatures: React.FC = ({ Remove Liquidity - Remove liquidity from the SENIOR/JUNIOR pool + Remove your LP tokens from the SENIOR/JUNIOR pool to get back your underlying tokens. You'll receive proportional amounts of both SENIOR and JUNIOR tokens. diff --git a/frontend/src/components/dashboard/PositionManagement.tsx b/frontend/src/components/dashboard/PositionManagement.tsx index 84c2bfe..465c419 100644 --- a/frontend/src/components/dashboard/PositionManagement.tsx +++ b/frontend/src/components/dashboard/PositionManagement.tsx @@ -164,15 +164,15 @@ const PositionManagement: React.FC = ({ - {/* Optimal Asset Redemption */} + {/* Withdraw */} - Optimal Asset Redemption + Withdraw - Choose target asset and amount - system calculates optimal token usage + Choose target asset and amount to withdraw from your position diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx index 017dee6..969f135 100644 --- a/frontend/src/pages/Dashboard.tsx +++ b/frontend/src/pages/Dashboard.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useState } from 'react'; import { useWeb3 } from '@/context/PrivyWeb3Context'; import Navbar from '@/components/Navbar'; import { Card, CardContent } from '@/components/ui/card'; @@ -13,6 +13,7 @@ import { RefreshCw, } from 'lucide-react'; import { Phase } from '@/config/contracts'; +import StatCard from '@/components/StatCard'; // Import custom hooks import { usePricing } from '@/hooks/usePricing'; @@ -152,7 +153,7 @@ const Dashboard = () => { }; // Withdrawal handler - const handleWithdraw = async (asset: 'aUSDC' | 'cUSDT', amount: string) => { + const handleWithdraw = async (amount: string) => { if (!amount || parseFloat(amount) <= 0) return; setIsExecuting(true); @@ -269,67 +270,37 @@ const Dashboard = () => { {/* Key Metrics Row */}
- - -
-
-

Portfolio Value

-

${formatNumber(totalPortfolioValue)}

-
- -
-
- {formatNumber(userSharePercent, 4)}% of protocol -
-
-
+ } + className="text-white" + /> - - -
-
-

Senior Tokens

-

{formatNumber(seniorBalance)}

-
- -
-
- ${formatNumber(seniorBalance * parseFloat(seniorPrice))} value -
-
-
+ } + className="text-blue-400" + /> - - -
-
-

Junior Tokens

-

{formatNumber(juniorBalance)}

-
- -
-
- ${formatNumber(juniorBalance * parseFloat(juniorPrice))} value -
-
-
+ } + className="text-amber-400" + /> - - -
-
-

Protocol Phase

-

- {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} -

-
- -
-
- TVL: ${formatNumber(protocolTVL, 0)} -
-
-
+ } + className="text-white" + />
{/* Main Content Tabs */} From bc316fcbe6ef3baa3eabe43c9764fadfec794bea Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 21:52:22 +0100 Subject: [PATCH 25/50] changing the language of add/remove liquidity to becoming stake/unstake risk tokens --- .../components/dashboard/AdvancedFeatures.tsx | 38 +++++++++---------- .../dashboard/PositionManagement.tsx | 6 ++- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/frontend/src/components/dashboard/AdvancedFeatures.tsx b/frontend/src/components/dashboard/AdvancedFeatures.tsx index 82bef54..52a9c3f 100644 --- a/frontend/src/components/dashboard/AdvancedFeatures.tsx +++ b/frontend/src/components/dashboard/AdvancedFeatures.tsx @@ -69,15 +69,15 @@ const AdvancedFeatures: React.FC = ({ return (
- {/* Add Liquidity */} + {/* Stake Tokens */} - - Add Liquidity + + Stake Risk Tokens - Provide liquidity to earn trading fees + Stake your SENIOR and JUNIOR tokens to earn higher rewards from trading fees @@ -93,7 +93,7 @@ const AdvancedFeatures: React.FC = ({ disabled={seniorBalance <= 0 && juniorBalance <= 0} className="w-full bg-blue-600/20 border border-blue-500 text-blue-300 hover:bg-blue-600/30" > - Preview Optimal Amounts + Preview Optimal Staking Amounts
@@ -130,7 +130,7 @@ const AdvancedFeatures: React.FC = ({ - You'll receive LP tokens proportional to your share of the pool + You'll receive staking rewards proportional to your share of the pool )} @@ -143,38 +143,38 @@ const AdvancedFeatures: React.FC = ({ {isExecuting ? (
- Adding... + Staking...
) : ( <> - Add Liquidity + Stake Tokens )} - {/* Remove Liquidity */} + {/* Unstake Tokens */} - Remove Liquidity + Unstake Risk Tokens - Remove your LP tokens from the SENIOR/JUNIOR pool to get back your underlying tokens. You'll receive proportional amounts of both SENIOR and JUNIOR tokens. + Unstake your tokens from the reward pool to get back your underlying tokens. You'll receive proportional amounts of both SENIOR and JUNIOR tokens.
-

Current LP Position

-

{formatNumber(lpBalance)} LP

-

Pool share tokens

+

Current Staked Position

+

{formatNumber(lpBalance)} Staked

+

Earning rewards

- + = ({ className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" />

- LP Balance: {formatNumber(lpBalance)} + Staked Balance: {formatNumber(lpBalance)}

@@ -191,7 +191,7 @@ const AdvancedFeatures: React.FC = ({ - You'll receive proportional amounts of SENIOR and JUNIOR tokens + You'll receive proportional amounts of SENIOR and JUNIOR tokens plus any earned rewards )} @@ -204,10 +204,10 @@ const AdvancedFeatures: React.FC = ({ {isExecuting ? (
- Removing... + Unstaking...
) : ( - 'Remove Liquidity' + 'Unstake Tokens' )}
diff --git a/frontend/src/components/dashboard/PositionManagement.tsx b/frontend/src/components/dashboard/PositionManagement.tsx index 465c419..5bd983c 100644 --- a/frontend/src/components/dashboard/PositionManagement.tsx +++ b/frontend/src/components/dashboard/PositionManagement.tsx @@ -5,6 +5,7 @@ import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { Progress } from '@/components/ui/progress'; +import { Phase } from '@/config/contracts'; import { Activity, Minus, @@ -247,7 +248,10 @@ const PositionManagement: React.FC = ({ - Current phase: {vaultInfo.currentPhase !== undefined ? `Phase ${vaultInfo.currentPhase}` : 'Loading...'}. Phase affects withdrawal rules. + {vaultInfo.currentPhase === 0 && 'Withdrawals require equal amounts of SENIOR and JUNIOR tokens.'} + {vaultInfo.currentPhase === 1 && 'Any combination of SENIOR and JUNIOR tokens can be withdrawn.'} + {vaultInfo.currentPhase === 2 && 'All token holders can withdraw remaining funds with any token combination.'} + {vaultInfo.currentPhase === undefined && 'Loading withdrawal rules...'} From 6cbf9b5eb05122c52cbaafbe9e86744e97476aa2 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Tue, 5 Aug 2025 22:16:45 +0100 Subject: [PATCH 26/50] update context of add/remove liquidity to stake/unstake risk tokens --- frontend/src/components/QuickTrade.tsx | 8 +-- .../components/dashboard/AdvancedFeatures.tsx | 65 +++++++++---------- .../dashboard/PortfolioOverview.tsx | 4 +- frontend/src/context/PrivyWeb3Context.tsx | 51 ++++++++------- frontend/src/pages/Dashboard.tsx | 22 +++---- 5 files changed, 75 insertions(+), 75 deletions(-) diff --git a/frontend/src/components/QuickTrade.tsx b/frontend/src/components/QuickTrade.tsx index 2920542..41b44c3 100644 --- a/frontend/src/components/QuickTrade.tsx +++ b/frontend/src/components/QuickTrade.tsx @@ -10,7 +10,7 @@ import { Phase, ContractName, getContractAddress, SupportedChainId } from '@/con import SmartLiquiditySuggestion from './SmartLiquiditySuggestion'; import { ethers } from 'ethers'; -type TradeIntent = 'safety' | 'upside' | 'equalize' | 'fullCoverage' | 'fullRisk' | 'balanced' | 'maxSafety' | 'maxUpside' | 'addLiquidity'; +type TradeIntent = 'safety' | 'upside' | 'equalize' | 'fullCoverage' | 'fullRisk' | 'balanced' | 'maxSafety' | 'maxUpside' | 'stakeRiskTokens'; const QuickTrade: React.FC = () => { const { @@ -22,7 +22,7 @@ const QuickTrade: React.FC = () => { swapExactTokensForTokens, getAmountsOut, depositAsset, - addLiquidity, + stakeRiskTokens, refreshData, getPairReserves, getTokenBalance, @@ -197,7 +197,7 @@ const QuickTrade: React.FC = () => { console.log(`Adding liquidity: ${seniorAmountString} SENIOR + ${juniorAmountString} JUNIOR`); console.log(`Pool ratio: ${poolRatio.toFixed(6)} (${juniorReserve}/${seniorReserve})`); - await addLiquidity(seniorAmountString, juniorAmountString, seniorTokenAddress!, juniorTokenAddress!); + await stakeRiskTokens(seniorAmountString, juniorAmountString, seniorTokenAddress!, juniorTokenAddress!); setShowLiquiditySuggestion(false); } else { alert('Insufficient tokens to add meaningful liquidity while maintaining pool ratio.'); @@ -206,7 +206,7 @@ const QuickTrade: React.FC = () => { alert('Cannot determine pool ratio. Pool may be empty.'); } } catch (error) { - console.error('Add liquidity failed:', error); + console.error('Stake risk tokens failed:', error); alert('Adding liquidity failed. Please try again.'); } finally { setIsExecuting(false); diff --git a/frontend/src/components/dashboard/AdvancedFeatures.tsx b/frontend/src/components/dashboard/AdvancedFeatures.tsx index 52a9c3f..6be648e 100644 --- a/frontend/src/components/dashboard/AdvancedFeatures.tsx +++ b/frontend/src/components/dashboard/AdvancedFeatures.tsx @@ -5,7 +5,6 @@ import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { - Droplets, Minus, RefreshCw, Info, @@ -19,8 +18,8 @@ interface AdvancedFeaturesProps { formatNumber: (num: number, decimals?: number) => string; isExecuting: boolean; vaultInfo: { emergencyMode: boolean }; - onAddLiquidity: (seniorAmount: string, juniorAmount: string) => void; - onRemoveLiquidity: (amount: string) => void; + onStakeRiskTokens: (seniorAmount: string, juniorAmount: string) => void; + onUnstakeRiskTokens: (amount: string) => void; onEmergencyWithdraw: (amount: string, asset: 'aUSDC' | 'cUSDT') => void; } @@ -31,27 +30,27 @@ const AdvancedFeatures: React.FC = ({ formatNumber, isExecuting, vaultInfo, - onAddLiquidity, - onRemoveLiquidity, + onStakeRiskTokens, + onUnstakeRiskTokens, onEmergencyWithdraw, }) => { - const [liquiditySeniorAmount, setLiquiditySeniorAmount] = useState(''); - const [liquidityJuniorAmount, setLiquidityJuniorAmount] = useState(''); - const [removeLiquidityAmount, setRemoveLiquidityAmount] = useState(''); + const [stakingSeniorAmount, setStakingSeniorAmount] = useState(''); + const [stakingJuniorAmount, setStakingJuniorAmount] = useState(''); + const [unstakeAmount, setUnstakeAmount] = useState(''); const [emergencyAmount, setEmergencyAmount] = useState(''); const [preferredAsset, setPreferredAsset] = useState<'aUSDC' | 'cUSDT'>('aUSDC'); - const handleAddLiquidity = () => { - if (!liquiditySeniorAmount || !liquidityJuniorAmount) return; - onAddLiquidity(liquiditySeniorAmount, liquidityJuniorAmount); - setLiquiditySeniorAmount(''); - setLiquidityJuniorAmount(''); + const handleStakeRiskTokens = () => { + if (!stakingSeniorAmount || !stakingJuniorAmount) return; + onStakeRiskTokens(stakingSeniorAmount, stakingJuniorAmount); + setStakingSeniorAmount(''); + setStakingJuniorAmount(''); }; - const handleRemoveLiquidity = () => { - if (!removeLiquidityAmount) return; - onRemoveLiquidity(removeLiquidityAmount); - setRemoveLiquidityAmount(''); + const handleUnstakeRiskTokens = () => { + if (!unstakeAmount) return; + onUnstakeRiskTokens(unstakeAmount); + setUnstakeAmount(''); }; const handleEmergencyWithdraw = () => { @@ -60,11 +59,11 @@ const AdvancedFeatures: React.FC = ({ setEmergencyAmount(''); }; - const handleOptimalLiquidity = () => { + const handleOptimalStaking = () => { // Use equal amounts for simplicity - could be enhanced with pool ratio logic const maxAmount = Math.min(seniorBalance, juniorBalance); - setLiquiditySeniorAmount(maxAmount.toFixed(6)); - setLiquidityJuniorAmount(maxAmount.toFixed(6)); + setStakingSeniorAmount(maxAmount.toFixed(6)); + setStakingJuniorAmount(maxAmount.toFixed(6)); }; return ( @@ -89,7 +88,7 @@ const AdvancedFeatures: React.FC = ({
- {liquiditySeniorAmount && liquidityJuniorAmount && ( + {stakingSeniorAmount && stakingJuniorAmount && ( @@ -136,8 +135,8 @@ const AdvancedFeatures: React.FC = ({ )}
- {removeLiquidityAmount && parseFloat(removeLiquidityAmount) > 0 && ( + {unstakeAmount && parseFloat(unstakeAmount) > 0 && ( @@ -197,8 +196,8 @@ const AdvancedFeatures: React.FC = ({ )}
@@ -208,4 +202,4 @@ const DepositStrategies: React.FC = ({ ); }; -export default DepositStrategies; \ No newline at end of file +export default DepositStrategies; diff --git a/frontend/src/components/dashboard/PortfolioOverview.tsx b/frontend/src/components/dashboard/PortfolioOverview.tsx index 339c7f7..913ba52 100644 --- a/frontend/src/components/dashboard/PortfolioOverview.tsx +++ b/frontend/src/components/dashboard/PortfolioOverview.tsx @@ -108,21 +108,19 @@ const PortfolioOverview: React.FC = ({
- {lpBalance > 0 && ( -
-
- -
-

Staked Tokens

-

Risk token staking rewards

-
-
-
-

{formatNumber(lpBalance)}

-

Pool share

+
+
+ +
+

Staked Tokens

+

Risk token staking rewards

- )} +
+

{formatNumber(lpBalance)}

+

Pool share

+
+
diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx index eb05cf2..efb4348 100644 --- a/frontend/src/pages/Dashboard.tsx +++ b/frontend/src/pages/Dashboard.tsx @@ -309,7 +309,7 @@ const Dashboard = () => { Overview Deposit & Trade Manage Positions - Advanced + Staking {/* Overview Tab */} From 58d915fe33eef648e6f13777d9ad79bbc47907a6 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Wed, 6 Aug 2025 16:20:25 +0100 Subject: [PATCH 28/50] load data faster and remove unused imports --- .../dashboard/PortfolioOverview.tsx | 2 - frontend/src/context/PrivyWeb3Context.tsx | 119 ++++++++++-------- 2 files changed, 64 insertions(+), 57 deletions(-) diff --git a/frontend/src/components/dashboard/PortfolioOverview.tsx b/frontend/src/components/dashboard/PortfolioOverview.tsx index 913ba52..b523cfb 100644 --- a/frontend/src/components/dashboard/PortfolioOverview.tsx +++ b/frontend/src/components/dashboard/PortfolioOverview.tsx @@ -6,12 +6,10 @@ import { Shield, TrendingUp, Zap, - Activity, Settings, Droplets, Plus, BarChart3, - ExternalLink, } from 'lucide-react'; interface VaultInfo { diff --git a/frontend/src/context/PrivyWeb3Context.tsx b/frontend/src/context/PrivyWeb3Context.tsx index ba01f55..c20b5e4 100644 --- a/frontend/src/context/PrivyWeb3Context.tsx +++ b/frontend/src/context/PrivyWeb3Context.tsx @@ -1,4 +1,4 @@ -import React, { createContext, useContext, useState, useCallback, useEffect, ReactNode } from 'react'; +import React, { createContext, useContext, useState, useCallback, useEffect, useRef, ReactNode } from 'react'; import { PrivyProvider, usePrivy, useWallets } from '@privy-io/react-auth'; import { ethers, BrowserProvider, Contract, Signer } from 'ethers'; import { toast } from '@/components/ui/sonner'; @@ -206,6 +206,10 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { const [seniorTokenAddress, setSeniorTokenAddress] = useState(null); const [juniorTokenAddress, setJuniorTokenAddress] = useState(null); + + // Add ref to track last refresh time for debouncing + const lastRefreshTime = useRef(0); + const isRefreshing = useRef(false); // Initial state values for cleanup const initialBalances: TokenBalances = { @@ -432,10 +436,27 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { return; } + // Debounce rapid refresh calls (minimum 500ms between refreshes) + const now = Date.now(); + if (now - lastRefreshTime.current < 500) { + console.log('⏱️ Skipping refresh - too soon since last refresh'); + return; + } + + // Prevent concurrent refreshes + if (isRefreshing.current) { + console.log('⏸️ Skipping refresh - already refreshing'); + return; + } + + isRefreshing.current = true; + lastRefreshTime.current = now; + // Check if network is consistent before proceeding const networkChainId = await provider.getNetwork().then(n => Number(n.chainId)).catch(() => null); if (networkChainId && networkChainId !== currentChain) { console.log(`⚠️ Network mismatch detected: provider=${networkChainId}, context=${currentChain}. Skipping refresh.`); + isRefreshing.current = false; return; } @@ -451,25 +472,48 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { console.log(`📄 Using vault contract at: ${vaultAddress}`); const vaultContract = new Contract(vaultAddress, RISK_VAULT_ABI, provider); - // Get vault info with detailed logging - console.log('📊 Fetching vault contract data...'); - let userTokenBalances: any; + // Get all contract addresses upfront for parallel fetching + const aUSDCAddress = getCurrentChainAddress(ContractName.MOCK_AUSDC); + const cUSDTAddress = getCurrentChainAddress(ContractName.MOCK_CUSDT); + const pairAddress = getCurrentChainAddress(ContractName.SENIOR_JUNIOR_PAIR); + + if (!aUSDCAddress || !cUSDTAddress || !pairAddress) { + console.warn('Some token contracts not available on current chain'); + return; + } + + // Create all contract instances + const aUSDCContract = new Contract(aUSDCAddress, ERC20_ABI, provider); + const cUSDTContract = new Contract(cUSDTAddress, ERC20_ABI, provider); + const pairContract = new Contract(pairAddress, ERC20_ABI, provider); + + console.log('📊 Fetching all data in parallel...'); + try { + // Fetch ALL data in a single parallel call for maximum speed const [ protocolStatus, phaseInfo, vaultBalances, userTokenBalancesResult, + aUSDCBalance, + cUSDTBalance, + lpBalance, ] = await Promise.all([ + // Vault contract calls vaultContract.getProtocolStatus(), vaultContract.getPhaseInfo(), vaultContract.getVaultBalances(), vaultContract.getUserTokenBalances(address), + // Token balance calls + aUSDCContract.balanceOf(address), + cUSDTContract.balanceOf(address), + pairContract.balanceOf(address), ]); - userTokenBalances = userTokenBalancesResult; - console.log('✅ Vault contract data fetched successfully'); + console.log('✅ All data fetched successfully in parallel'); + // Update vault info setVaultInfo({ aUSDCBalance: vaultBalances.aUSDCVaultBalance, cUSDTBalance: vaultBalances.cUSDTVaultBalance, @@ -480,73 +524,36 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { cycleStartTime: phaseInfo.cycleStart, timeRemaining: phaseInfo.timeRemaining, }); - } catch (vaultError) { - if (vaultError.code === 'NETWORK_ERROR') { - console.log('🔄 Network change detected in vault calls, skipping...'); - return; - } - if (vaultError.code === 'CALL_EXCEPTION' && currentChain === 296) { - console.log('⚠️ Hedera RPC issue detected in vault calls, skipping...'); - return; - } - console.error('❌ Vault contract calls failed:', vaultError); - throw vaultError; - } - - // Get user token balances - const aUSDCAddress = getCurrentChainAddress(ContractName.MOCK_AUSDC); - const cUSDTAddress = getCurrentChainAddress(ContractName.MOCK_CUSDT); - const pairAddress = getCurrentChainAddress(ContractName.SENIOR_JUNIOR_PAIR); - - if (!aUSDCAddress || !cUSDTAddress || !pairAddress) { - console.warn('Some token contracts not available on current chain'); - return; - } - - console.log(`💰 Fetching token balances...`); - console.log(` aUSDC: ${aUSDCAddress}`); - console.log(` cUSDT: ${cUSDTAddress}`); - console.log(` Pair: ${pairAddress}`); - - const aUSDCContract = new Contract(aUSDCAddress, ERC20_ABI, provider); - const cUSDTContract = new Contract(cUSDTAddress, ERC20_ABI, provider); - const pairContract = new Contract(pairAddress, ERC20_ABI, provider); - - try { - const [aUSDCBalance, cUSDTBalance, lpBalance] = await Promise.all([ - aUSDCContract.balanceOf(address), - cUSDTContract.balanceOf(address), - pairContract.balanceOf(address), - ]); - - console.log('✅ Token balances fetched successfully'); + // Update balances setBalances({ - seniorTokens: userTokenBalances.seniorBalance, - juniorTokens: userTokenBalances.juniorBalance, + seniorTokens: userTokenBalancesResult.seniorBalance, + juniorTokens: userTokenBalancesResult.juniorBalance, aUSDC: aUSDCBalance, cUSDT: cUSDTBalance, lpTokens: lpBalance, }); - } catch (tokenError) { - if (tokenError.code === 'NETWORK_ERROR') { - console.log('🔄 Network change detected in token calls, skipping...'); + } catch (error) { + if (error.code === 'NETWORK_ERROR') { + console.log('🔄 Network change detected, skipping...'); return; } - if (tokenError.code === 'CALL_EXCEPTION' && currentChain === 296) { - console.log('⚠️ Hedera RPC issue detected in token calls, skipping...'); + if (error.code === 'CALL_EXCEPTION' && currentChain === 296) { + console.log('⚠️ Hedera RPC issue detected, skipping...'); return; } - console.error('❌ Token balance calls failed:', tokenError); - throw tokenError; + console.error('❌ Data fetch failed:', error); + throw error; } } catch (error) { if (error.code === 'NETWORK_ERROR') { console.log('🔄 Network change detected in main refresh, skipping...'); + isRefreshing.current = false; return; } if (error.code === 'CALL_EXCEPTION' && currentChain === 296) { console.log('⚠️ Hedera RPC rate limiting detected, skipping refresh...'); + isRefreshing.current = false; return; } console.error('💥 Error refreshing data on chain', currentChain, ':', error); @@ -556,6 +563,8 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { reason: error.reason }); toast.error(`Failed to refresh data on ${getChainConfig(currentChain)?.chainName || 'unknown network'}`); + } finally { + isRefreshing.current = false; } }, [provider, signer, address, currentChain, getCurrentChainAddress]); From 6f73f89cb95e08c3e1a6a1b9b8c1f3bef1e8df51 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Wed, 6 Aug 2025 16:23:43 +0100 Subject: [PATCH 29/50] data loads much faster now --- frontend/src/context/PrivyWeb3Context.tsx | 69 +++++++++++++++++++++-- 1 file changed, 65 insertions(+), 4 deletions(-) diff --git a/frontend/src/context/PrivyWeb3Context.tsx b/frontend/src/context/PrivyWeb3Context.tsx index c20b5e4..7491359 100644 --- a/frontend/src/context/PrivyWeb3Context.tsx +++ b/frontend/src/context/PrivyWeb3Context.tsx @@ -369,16 +369,77 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { const vaultContract = new Contract(vaultAddress, RISK_VAULT_ABI, provider); - // Get token addresses - const [seniorAddr, juniorAddr] = await Promise.all([ + // Get all contract addresses upfront + const aUSDCAddress = getContractAddress(chainId, ContractName.MOCK_AUSDC); + const cUSDTAddress = getContractAddress(chainId, ContractName.MOCK_CUSDT); + const pairAddress = getContractAddress(chainId, ContractName.SENIOR_JUNIOR_PAIR); + + if (!aUSDCAddress || !cUSDTAddress || !pairAddress) { + console.warn('Some token contracts not available on current chain'); + return; + } + + // Create all contract instances + const aUSDCContract = new Contract(aUSDCAddress, ERC20_ABI, provider); + const cUSDTContract = new Contract(cUSDTAddress, ERC20_ABI, provider); + const pairContract = new Contract(pairAddress, ERC20_ABI, provider); + + const userAddress = await signer.getAddress(); + + console.log('🚀 Loading all contract data in parallel...'); + + // Fetch EVERYTHING in one massive parallel call for maximum speed on initial load + const [ + seniorAddr, + juniorAddr, + protocolStatus, + phaseInfo, + vaultBalances, + userTokenBalancesResult, + aUSDCBalance, + cUSDTBalance, + lpBalance, + ] = await Promise.all([ + // Token addresses vaultContract.seniorToken(), vaultContract.juniorToken(), + // Vault contract calls + vaultContract.getProtocolStatus(), + vaultContract.getPhaseInfo(), + vaultContract.getVaultBalances(), + vaultContract.getUserTokenBalances(userAddress), + // Token balance calls + aUSDCContract.balanceOf(userAddress), + cUSDTContract.balanceOf(userAddress), + pairContract.balanceOf(userAddress), ]); + + console.log('✅ All initial data loaded successfully'); + + // Set token addresses setSeniorTokenAddress(seniorAddr); setJuniorTokenAddress(juniorAddr); - // Load balances and vault info - await refreshData(); + // Update vault info + setVaultInfo({ + aUSDCBalance: vaultBalances.aUSDCVaultBalance, + cUSDTBalance: vaultBalances.cUSDTVaultBalance, + totalTokensIssued: protocolStatus.totalTokens, + emergencyMode: protocolStatus.emergency, + currentPhase: protocolStatus.phase, + phaseStartTime: phaseInfo.phaseStart, + cycleStartTime: phaseInfo.cycleStart, + timeRemaining: phaseInfo.timeRemaining, + }); + + // Update balances + setBalances({ + seniorTokens: userTokenBalancesResult.seniorBalance, + juniorTokens: userTokenBalancesResult.juniorBalance, + aUSDC: aUSDCBalance, + cUSDT: cUSDTBalance, + lpTokens: lpBalance, + }); } catch (error) { console.error('Error loading contract data:', error); toast.error('Failed to load contract data for this network'); From 47e51fddb041bc2fb78639ed509f1dec7f8056cf Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Wed, 6 Aug 2025 16:26:45 +0100 Subject: [PATCH 30/50] code clean up after fixing data loading problem --- frontend/src/context/PrivyWeb3Context.tsx | 172 ++++++++-------------- 1 file changed, 58 insertions(+), 114 deletions(-) diff --git a/frontend/src/context/PrivyWeb3Context.tsx b/frontend/src/context/PrivyWeb3Context.tsx index 7491359..b88e90e 100644 --- a/frontend/src/context/PrivyWeb3Context.tsx +++ b/frontend/src/context/PrivyWeb3Context.tsx @@ -358,7 +358,7 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { setupNetworkListener(); }, [ready, authenticated, wallets, logout]); - // Load contract data + // Load contract data (initial load with token addresses) const loadContractData = async (provider: BrowserProvider, signer: Signer, chainId: SupportedChainId) => { try { const vaultAddress = getContractAddress(chainId, ContractName.RISK_VAULT); @@ -369,29 +369,53 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { const vaultContract = new Contract(vaultAddress, RISK_VAULT_ABI, provider); - // Get all contract addresses upfront - const aUSDCAddress = getContractAddress(chainId, ContractName.MOCK_AUSDC); - const cUSDTAddress = getContractAddress(chainId, ContractName.MOCK_CUSDT); - const pairAddress = getContractAddress(chainId, ContractName.SENIOR_JUNIOR_PAIR); - - if (!aUSDCAddress || !cUSDTAddress || !pairAddress) { - console.warn('Some token contracts not available on current chain'); - return; - } - - // Create all contract instances - const aUSDCContract = new Contract(aUSDCAddress, ERC20_ABI, provider); - const cUSDTContract = new Contract(cUSDTAddress, ERC20_ABI, provider); - const pairContract = new Contract(pairAddress, ERC20_ABI, provider); - - const userAddress = await signer.getAddress(); + // Get token addresses first (needed for subsequent operations) + console.log('📝 Fetching token addresses...'); + const [seniorAddr, juniorAddr] = await Promise.all([ + vaultContract.seniorToken(), + vaultContract.juniorToken(), + ]); - console.log('🚀 Loading all contract data in parallel...'); + // Set token addresses for use in other functions + setSeniorTokenAddress(seniorAddr); + setJuniorTokenAddress(juniorAddr); - // Fetch EVERYTHING in one massive parallel call for maximum speed on initial load + // Now fetch all the data using the common refresh logic + await refreshDataInternal(provider, signer, await signer.getAddress(), chainId); + } catch (error) { + console.error('Error loading contract data:', error); + toast.error('Failed to load contract data for this network'); + } + }; + + // Internal refresh function that can be called by both loadContractData and refreshData + const refreshDataInternal = async ( + provider: BrowserProvider, + signer: Signer, + userAddress: string, + chainId: SupportedChainId + ) => { + const vaultAddress = getContractAddress(chainId, ContractName.RISK_VAULT); + const aUSDCAddress = getContractAddress(chainId, ContractName.MOCK_AUSDC); + const cUSDTAddress = getContractAddress(chainId, ContractName.MOCK_CUSDT); + const pairAddress = getContractAddress(chainId, ContractName.SENIOR_JUNIOR_PAIR); + + if (!vaultAddress || !aUSDCAddress || !cUSDTAddress || !pairAddress) { + console.warn('Some contracts not available on current chain'); + return; + } + + // Create all contract instances + const vaultContract = new Contract(vaultAddress, RISK_VAULT_ABI, provider); + const aUSDCContract = new Contract(aUSDCAddress, ERC20_ABI, provider); + const cUSDTContract = new Contract(cUSDTAddress, ERC20_ABI, provider); + const pairContract = new Contract(pairAddress, ERC20_ABI, provider); + + console.log('📊 Fetching all data in parallel...'); + + try { + // Fetch ALL data in a single parallel call for maximum speed const [ - seniorAddr, - juniorAddr, protocolStatus, phaseInfo, vaultBalances, @@ -400,9 +424,6 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { cUSDTBalance, lpBalance, ] = await Promise.all([ - // Token addresses - vaultContract.seniorToken(), - vaultContract.juniorToken(), // Vault contract calls vaultContract.getProtocolStatus(), vaultContract.getPhaseInfo(), @@ -414,11 +435,7 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { pairContract.balanceOf(userAddress), ]); - console.log('✅ All initial data loaded successfully'); - - // Set token addresses - setSeniorTokenAddress(seniorAddr); - setJuniorTokenAddress(juniorAddr); + console.log('✅ All data fetched successfully in parallel'); // Update vault info setVaultInfo({ @@ -441,8 +458,16 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { lpTokens: lpBalance, }); } catch (error) { - console.error('Error loading contract data:', error); - toast.error('Failed to load contract data for this network'); + if (error.code === 'NETWORK_ERROR') { + console.log('🔄 Network change detected, skipping...'); + return; + } + if (error.code === 'CALL_EXCEPTION' && chainId === 296) { + console.log('⚠️ Hedera RPC issue detected, skipping...'); + return; + } + console.error('❌ Data fetch failed:', error); + throw error; } }; @@ -524,88 +549,7 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { console.log(`🔄 Refreshing data for chain ${currentChain} (${getChainConfig(currentChain)?.chainName})`); try { - const vaultAddress = getCurrentChainAddress(ContractName.RISK_VAULT); - if (!vaultAddress) { - console.warn('Risk vault not available on current chain'); - return; - } - - console.log(`📄 Using vault contract at: ${vaultAddress}`); - const vaultContract = new Contract(vaultAddress, RISK_VAULT_ABI, provider); - - // Get all contract addresses upfront for parallel fetching - const aUSDCAddress = getCurrentChainAddress(ContractName.MOCK_AUSDC); - const cUSDTAddress = getCurrentChainAddress(ContractName.MOCK_CUSDT); - const pairAddress = getCurrentChainAddress(ContractName.SENIOR_JUNIOR_PAIR); - - if (!aUSDCAddress || !cUSDTAddress || !pairAddress) { - console.warn('Some token contracts not available on current chain'); - return; - } - - // Create all contract instances - const aUSDCContract = new Contract(aUSDCAddress, ERC20_ABI, provider); - const cUSDTContract = new Contract(cUSDTAddress, ERC20_ABI, provider); - const pairContract = new Contract(pairAddress, ERC20_ABI, provider); - - console.log('📊 Fetching all data in parallel...'); - - try { - // Fetch ALL data in a single parallel call for maximum speed - const [ - protocolStatus, - phaseInfo, - vaultBalances, - userTokenBalancesResult, - aUSDCBalance, - cUSDTBalance, - lpBalance, - ] = await Promise.all([ - // Vault contract calls - vaultContract.getProtocolStatus(), - vaultContract.getPhaseInfo(), - vaultContract.getVaultBalances(), - vaultContract.getUserTokenBalances(address), - // Token balance calls - aUSDCContract.balanceOf(address), - cUSDTContract.balanceOf(address), - pairContract.balanceOf(address), - ]); - - console.log('✅ All data fetched successfully in parallel'); - - // Update vault info - setVaultInfo({ - aUSDCBalance: vaultBalances.aUSDCVaultBalance, - cUSDTBalance: vaultBalances.cUSDTVaultBalance, - totalTokensIssued: protocolStatus.totalTokens, - emergencyMode: protocolStatus.emergency, - currentPhase: protocolStatus.phase, - phaseStartTime: phaseInfo.phaseStart, - cycleStartTime: phaseInfo.cycleStart, - timeRemaining: phaseInfo.timeRemaining, - }); - - // Update balances - setBalances({ - seniorTokens: userTokenBalancesResult.seniorBalance, - juniorTokens: userTokenBalancesResult.juniorBalance, - aUSDC: aUSDCBalance, - cUSDT: cUSDTBalance, - lpTokens: lpBalance, - }); - } catch (error) { - if (error.code === 'NETWORK_ERROR') { - console.log('🔄 Network change detected, skipping...'); - return; - } - if (error.code === 'CALL_EXCEPTION' && currentChain === 296) { - console.log('⚠️ Hedera RPC issue detected, skipping...'); - return; - } - console.error('❌ Data fetch failed:', error); - throw error; - } + await refreshDataInternal(provider, signer, address, currentChain); } catch (error) { if (error.code === 'NETWORK_ERROR') { console.log('🔄 Network change detected in main refresh, skipping...'); @@ -627,7 +571,7 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { } finally { isRefreshing.current = false; } - }, [provider, signer, address, currentChain, getCurrentChainAddress]); + }, [provider, signer, address, currentChain]); // Approve token spending const approveToken = async (tokenAddress: string, amount: string) => { From 2eeb4e0244c078052e67a6cd983ecf5e3e5cc155 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Wed, 6 Aug 2025 16:38:03 +0100 Subject: [PATCH 31/50] update the page refresh code to keep it simpler --- frontend/src/context/PrivyWeb3Context.tsx | 193 ++++++++++------------ 1 file changed, 88 insertions(+), 105 deletions(-) diff --git a/frontend/src/context/PrivyWeb3Context.tsx b/frontend/src/context/PrivyWeb3Context.tsx index b88e90e..eb8c704 100644 --- a/frontend/src/context/PrivyWeb3Context.tsx +++ b/frontend/src/context/PrivyWeb3Context.tsx @@ -358,86 +358,59 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { setupNetworkListener(); }, [ready, authenticated, wallets, logout]); - // Load contract data (initial load with token addresses) + // Load contract data for initial connection const loadContractData = async (provider: BrowserProvider, signer: Signer, chainId: SupportedChainId) => { try { + const userAddress = await signer.getAddress(); + + // Get all contract addresses const vaultAddress = getContractAddress(chainId, ContractName.RISK_VAULT); - if (!vaultAddress) { - console.warn('Risk vault not deployed on this chain'); + const aUSDCAddress = getContractAddress(chainId, ContractName.MOCK_AUSDC); + const cUSDTAddress = getContractAddress(chainId, ContractName.MOCK_CUSDT); + const pairAddress = getContractAddress(chainId, ContractName.SENIOR_JUNIOR_PAIR); + + if (!vaultAddress || !aUSDCAddress || !cUSDTAddress || !pairAddress) { + console.warn('Some contracts not available on current chain'); return; } - - const vaultContract = new Contract(vaultAddress, RISK_VAULT_ABI, provider); - // Get token addresses first (needed for subsequent operations) - console.log('📝 Fetching token addresses...'); - const [seniorAddr, juniorAddr] = await Promise.all([ - vaultContract.seniorToken(), - vaultContract.juniorToken(), - ]); + // Create contract instances + const vaultContract = new Contract(vaultAddress, RISK_VAULT_ABI, provider); + const aUSDCContract = new Contract(aUSDCAddress, ERC20_ABI, provider); + const cUSDTContract = new Contract(cUSDTAddress, ERC20_ABI, provider); + const pairContract = new Contract(pairAddress, ERC20_ABI, provider); - // Set token addresses for use in other functions - setSeniorTokenAddress(seniorAddr); - setJuniorTokenAddress(juniorAddr); + console.log('🚀 Loading initial data...'); - // Now fetch all the data using the common refresh logic - await refreshDataInternal(provider, signer, await signer.getAddress(), chainId); - } catch (error) { - console.error('Error loading contract data:', error); - toast.error('Failed to load contract data for this network'); - } - }; - - // Internal refresh function that can be called by both loadContractData and refreshData - const refreshDataInternal = async ( - provider: BrowserProvider, - signer: Signer, - userAddress: string, - chainId: SupportedChainId - ) => { - const vaultAddress = getContractAddress(chainId, ContractName.RISK_VAULT); - const aUSDCAddress = getContractAddress(chainId, ContractName.MOCK_AUSDC); - const cUSDTAddress = getContractAddress(chainId, ContractName.MOCK_CUSDT); - const pairAddress = getContractAddress(chainId, ContractName.SENIOR_JUNIOR_PAIR); - - if (!vaultAddress || !aUSDCAddress || !cUSDTAddress || !pairAddress) { - console.warn('Some contracts not available on current chain'); - return; - } - - // Create all contract instances - const vaultContract = new Contract(vaultAddress, RISK_VAULT_ABI, provider); - const aUSDCContract = new Contract(aUSDCAddress, ERC20_ABI, provider); - const cUSDTContract = new Contract(cUSDTAddress, ERC20_ABI, provider); - const pairContract = new Contract(pairAddress, ERC20_ABI, provider); - - console.log('📊 Fetching all data in parallel...'); - - try { - // Fetch ALL data in a single parallel call for maximum speed + // Fetch everything in parallel - simple and fast const [ + seniorAddr, + juniorAddr, protocolStatus, phaseInfo, vaultBalances, - userTokenBalancesResult, + userTokenBalances, aUSDCBalance, cUSDTBalance, lpBalance, ] = await Promise.all([ - // Vault contract calls + vaultContract.seniorToken(), + vaultContract.juniorToken(), vaultContract.getProtocolStatus(), vaultContract.getPhaseInfo(), vaultContract.getVaultBalances(), vaultContract.getUserTokenBalances(userAddress), - // Token balance calls aUSDCContract.balanceOf(userAddress), cUSDTContract.balanceOf(userAddress), pairContract.balanceOf(userAddress), ]); - console.log('✅ All data fetched successfully in parallel'); + console.log('✅ Initial data loaded'); + + // Set all state at once + setSeniorTokenAddress(seniorAddr); + setJuniorTokenAddress(juniorAddr); - // Update vault info setVaultInfo({ aUSDCBalance: vaultBalances.aUSDCVaultBalance, cUSDTBalance: vaultBalances.cUSDTVaultBalance, @@ -449,25 +422,16 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { timeRemaining: phaseInfo.timeRemaining, }); - // Update balances setBalances({ - seniorTokens: userTokenBalancesResult.seniorBalance, - juniorTokens: userTokenBalancesResult.juniorBalance, + seniorTokens: userTokenBalances.seniorBalance, + juniorTokens: userTokenBalances.juniorBalance, aUSDC: aUSDCBalance, cUSDT: cUSDTBalance, lpTokens: lpBalance, }); } catch (error) { - if (error.code === 'NETWORK_ERROR') { - console.log('🔄 Network change detected, skipping...'); - return; - } - if (error.code === 'CALL_EXCEPTION' && chainId === 296) { - console.log('⚠️ Hedera RPC issue detected, skipping...'); - return; - } - console.error('❌ Data fetch failed:', error); - throw error; + console.error('Error loading contract data:', error); + toast.error('Failed to load contract data for this network'); } }; @@ -515,63 +479,82 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { } }; - // Refresh all data + // Refresh data (simpler version) const refreshData = useCallback(async () => { if (!provider || !signer || !address || !currentChain) { - console.log('⏭️ Skipping refresh - missing provider, signer, address, or currentChain'); return; } - // Debounce rapid refresh calls (minimum 500ms between refreshes) + // Simple debouncing const now = Date.now(); - if (now - lastRefreshTime.current < 500) { - console.log('⏱️ Skipping refresh - too soon since last refresh'); - return; - } - - // Prevent concurrent refreshes - if (isRefreshing.current) { - console.log('⏸️ Skipping refresh - already refreshing'); + if (now - lastRefreshTime.current < 500 || isRefreshing.current) { return; } isRefreshing.current = true; lastRefreshTime.current = now; - // Check if network is consistent before proceeding - const networkChainId = await provider.getNetwork().then(n => Number(n.chainId)).catch(() => null); - if (networkChainId && networkChainId !== currentChain) { - console.log(`⚠️ Network mismatch detected: provider=${networkChainId}, context=${currentChain}. Skipping refresh.`); - isRefreshing.current = false; - return; - } - - console.log(`🔄 Refreshing data for chain ${currentChain} (${getChainConfig(currentChain)?.chainName})`); - try { - await refreshDataInternal(provider, signer, address, currentChain); - } catch (error) { - if (error.code === 'NETWORK_ERROR') { - console.log('🔄 Network change detected in main refresh, skipping...'); - isRefreshing.current = false; - return; - } - if (error.code === 'CALL_EXCEPTION' && currentChain === 296) { - console.log('⚠️ Hedera RPC rate limiting detected, skipping refresh...'); - isRefreshing.current = false; + // Get contract addresses + const vaultAddress = getCurrentChainAddress(ContractName.RISK_VAULT); + const aUSDCAddress = getCurrentChainAddress(ContractName.MOCK_AUSDC); + const cUSDTAddress = getCurrentChainAddress(ContractName.MOCK_CUSDT); + const pairAddress = getCurrentChainAddress(ContractName.SENIOR_JUNIOR_PAIR); + + if (!vaultAddress || !aUSDCAddress || !cUSDTAddress || !pairAddress) { return; } - console.error('💥 Error refreshing data on chain', currentChain, ':', error); - console.error('Error details:', { - message: error.message, - code: error.code, - reason: error.reason + + // Create contract instances + const vaultContract = new Contract(vaultAddress, RISK_VAULT_ABI, provider); + const aUSDCContract = new Contract(aUSDCAddress, ERC20_ABI, provider); + const cUSDTContract = new Contract(cUSDTAddress, ERC20_ABI, provider); + const pairContract = new Contract(pairAddress, ERC20_ABI, provider); + + // Fetch all data in parallel (token addresses already loaded, so skip them) + const [ + protocolStatus, + phaseInfo, + vaultBalances, + userTokenBalances, + aUSDCBalance, + cUSDTBalance, + lpBalance, + ] = await Promise.all([ + vaultContract.getProtocolStatus(), + vaultContract.getPhaseInfo(), + vaultContract.getVaultBalances(), + vaultContract.getUserTokenBalances(address), + aUSDCContract.balanceOf(address), + cUSDTContract.balanceOf(address), + pairContract.balanceOf(address), + ]); + + // Update state + setVaultInfo({ + aUSDCBalance: vaultBalances.aUSDCVaultBalance, + cUSDTBalance: vaultBalances.cUSDTVaultBalance, + totalTokensIssued: protocolStatus.totalTokens, + emergencyMode: protocolStatus.emergency, + currentPhase: protocolStatus.phase, + phaseStartTime: phaseInfo.phaseStart, + cycleStartTime: phaseInfo.cycleStart, + timeRemaining: phaseInfo.timeRemaining, + }); + + setBalances({ + seniorTokens: userTokenBalances.seniorBalance, + juniorTokens: userTokenBalances.juniorBalance, + aUSDC: aUSDCBalance, + cUSDT: cUSDTBalance, + lpTokens: lpBalance, }); - toast.error(`Failed to refresh data on ${getChainConfig(currentChain)?.chainName || 'unknown network'}`); + } catch (error) { + console.error('Error refreshing data:', error); } finally { isRefreshing.current = false; } - }, [provider, signer, address, currentChain]); + }, [provider, signer, address, currentChain, getCurrentChainAddress]); // Approve token spending const approveToken = async (tokenAddress: string, amount: string) => { From 5a9e34820fce7c8d24e8a42a5bc5b7cf6af2002d Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Wed, 6 Aug 2025 16:38:17 +0100 Subject: [PATCH 32/50] update the input fields to have the max button --- .../components/dashboard/AdvancedFeatures.tsx | 108 ++++++++++++------ .../dashboard/DepositStrategies.tsx | 25 ++-- .../dashboard/PositionManagement.tsx | 35 ++++-- 3 files changed, 117 insertions(+), 51 deletions(-) diff --git a/frontend/src/components/dashboard/AdvancedFeatures.tsx b/frontend/src/components/dashboard/AdvancedFeatures.tsx index 6be648e..fabeb56 100644 --- a/frontend/src/components/dashboard/AdvancedFeatures.tsx +++ b/frontend/src/components/dashboard/AdvancedFeatures.tsx @@ -98,27 +98,49 @@ const AdvancedFeatures: React.FC = ({
- setStakingSeniorAmount(e.target.value)} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> +
+ setStakingSeniorAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400 pr-16 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" + /> + +

Balance: {formatNumber(seniorBalance)}

- +
- setStakingJuniorAmount(e.target.value)} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> +
+ setStakingJuniorAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400 pr-16 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" + /> + +

Balance: {formatNumber(juniorBalance)}

@@ -174,13 +196,24 @@ const AdvancedFeatures: React.FC = ({
- setUnstakeAmount(e.target.value)} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> +
+ setUnstakeAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400 pr-16 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" + /> + +

Staked Balance: {formatNumber(lpBalance)}

@@ -225,14 +258,25 @@ const AdvancedFeatures: React.FC = ({
- setEmergencyAmount(e.target.value)} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> +
+ setEmergencyAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400 pr-16 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" + /> + +
@@ -266,7 +310,7 @@ const AdvancedFeatures: React.FC = ({
- +
Available: {formatNumber(selectedAsset === 'aUSDC' ? aUSDCBalance : cUSDTBalance, 2)}
diff --git a/frontend/src/components/dashboard/PositionManagement.tsx b/frontend/src/components/dashboard/PositionManagement.tsx index 5bd983c..0c340a5 100644 --- a/frontend/src/components/dashboard/PositionManagement.tsx +++ b/frontend/src/components/dashboard/PositionManagement.tsx @@ -109,8 +109,8 @@ const PositionManagement: React.FC = ({ variant={targetSeniorPercent === percent ? "default" : "outline"} size="sm" className={`${ - targetSeniorPercent === percent - ? "bg-blue-600 text-white" + targetSeniorPercent === percent + ? "bg-blue-600 text-white" : "border-slate-600 bg-slate-800/50 text-slate-300 hover:text-white hover:bg-slate-700" } text-xs sm:text-sm min-h-[2.5rem]`} onClick={() => handleRebalancePreview(percent)} @@ -216,21 +216,32 @@ const PositionManagement: React.FC = ({ - setWithdrawAssetAmount(e.target.value)} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400" - /> +
+ setWithdrawAssetAmount(e.target.value)} + className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400 pr-16 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" + /> + +
Max withdrawable: ${formatNumber(totalPortfolioValue)}
)} -
+ + {/* AI Analysis Button or Results */} + {!showAIAnalysis ? ( + + ) : aiAnalysis && ( +
+
+
+ + + AI Recommends: {aiAnalysis.recommendation === 'hack' ? 'HACK' : 'SAFE'} + +
+
+ Confidence: + {aiAnalysis.confidence}% +
+
+ + {/* Expected Value */} +
+
+ Expected Value: + 0 ? 'text-green-400' : 'text-red-400' + }`}> + {aiAnalysis.expectedValue > 0 ? '+' : ''}{(aiAnalysis.expectedValue * 100).toFixed(1)}% + +
+
+ + {/* Key Reasoning Points */} +
+ {aiAnalysis.reasoning.slice(0, 2).map((reason, index) => ( +
+ + {reason} +
+ ))} +
+ + +
+ )} {/* Asset Selection */}
@@ -403,9 +641,14 @@ const PredictionMarketWidget: React.FC = ({ {/* YES - Gets Hacked (Safety Strategy) */}
From faedc16c24b2ed750238868d86373c88e26cd8fd Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Thu, 7 Aug 2025 18:28:39 +0100 Subject: [PATCH 34/50] add wallet info stuff --- frontend/.env.example | 8 + .../src/components/PredictionMarketWidget.tsx | 190 ++++++++++++++++-- 2 files changed, 182 insertions(+), 16 deletions(-) diff --git a/frontend/.env.example b/frontend/.env.example index a896642..d826224 100644 --- a/frontend/.env.example +++ b/frontend/.env.example @@ -1,4 +1,12 @@ # AI Configuration # Get your free Groq API key from https://console.groq.com/keys VITE_GROQ_API_KEY=your_groq_api_key_here + +# Hedera Configuration (Optional - for advanced features) +# Get testnet credentials from https://portal.hedera.com/ +VITE_HEDERA_OPERATOR_ID=0.0.xxxxx +VITE_HEDERA_OPERATOR_KEY=your_private_key_here + +# Existing Configuration VITE_PRIVY_APP_ID=your_privy_app_id +VITE_INFURA_API_KEY=your_infura_api_key diff --git a/frontend/src/components/PredictionMarketWidget.tsx b/frontend/src/components/PredictionMarketWidget.tsx index e8abe05..7efa8f6 100644 --- a/frontend/src/components/PredictionMarketWidget.tsx +++ b/frontend/src/components/PredictionMarketWidget.tsx @@ -6,6 +6,7 @@ import { Label } from '@/components/ui/label'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { ChatGroq } from '@langchain/groq'; import { HumanMessage, SystemMessage } from '@langchain/core/messages'; +import { Client, AccountBalanceQuery, AccountId } from '@hashgraph/sdk'; import { Shield, TrendingUp, @@ -18,7 +19,9 @@ import { Sparkles, Loader2, ChevronRight, - AlertTriangle + AlertTriangle, + Wallet, + Eye } from 'lucide-react'; import { useWeb3 } from '@/context/PrivyWeb3Context'; import { Phase, ContractName, getContractAddress } from '@/config/contracts'; @@ -82,6 +85,14 @@ const PredictionMarketWidget: React.FC = ({ expectedValue: number; riskLevel: 'low' | 'medium' | 'high'; } | null>(null); + + // Wallet holdings state + const [walletAnalysis, setWalletAnalysis] = useState<{ + totalValue: number; + riskExposure: string; + recommendation: string; + } | null>(null); + const [showWalletInfo, setShowWalletInfo] = useState(false); // Fetch token prices and pool reserves from Uniswap pair useEffect(() => { @@ -244,14 +255,24 @@ Respond in JSON format with these exact fields: "expectedValue": number (positive means profitable) }`); + // Include wallet context if available + const seniorBalance = Number(balances.seniorTokens) / 1e18; + const juniorBalance = Number(balances.juniorTokens) / 1e18; + const hasPosition = seniorBalance > 0 || juniorBalance > 0; + const userPrompt = new HumanMessage(`Analyze this betting opportunity: Protocol: ${protocolName} HACK bet odds: ${currentOdds.hack.toFixed(3)}x SAFE bet odds: ${currentOdds.safe.toFixed(3)}x Market implied hack probability: ${hackProbability.toFixed(1)}% Market implied safe probability: ${safeProbability.toFixed(1)}% +${hasPosition ? ` +Current Position: +- Senior tokens: ${seniorBalance.toFixed(2)} (${seniorBalance > juniorBalance ? 'overweight' : 'underweight'}) +- Junior tokens: ${juniorBalance.toFixed(2)} (${juniorBalance > seniorBalance ? 'overweight' : 'underweight'}) +` : 'No current position'} -Calculate expected value for each bet and recommend the best option.`); +Calculate expected value for each bet and recommend the best option${hasPosition ? ' considering the existing position' : ''}.`); const response = await model.invoke([systemPrompt, userPrompt]); @@ -284,6 +305,75 @@ Calculate expected value for each bet and recommend the best option.`); } }; + // Analyze user's wallet holdings with AI + const analyzeWalletHoldings = async () => { + try { + // Calculate current position values + const seniorTokenValue = Number(balances.seniorTokens) / 1e18 * parseFloat(seniorPrice); + const juniorTokenValue = Number(balances.juniorTokens) / 1e18 * parseFloat(juniorPrice); + const totalPositionValue = seniorTokenValue + juniorTokenValue; + + // Calculate available liquidity + const aUSDCBalance = Number(balances.aUSDC) / 1e18; + const cUSDTBalance = Number(balances.cUSDT) / 1e18; + const totalLiquidity = aUSDCBalance + cUSDTBalance; + + // Determine risk exposure + let riskExposure = 'Balanced'; + let recommendation = ''; + + if (seniorTokenValue > juniorTokenValue * 2) { + riskExposure = 'Conservative (Heavy Senior)'; + recommendation = 'Consider adding junior tokens for higher yield potential'; + } else if (juniorTokenValue > seniorTokenValue * 2) { + riskExposure = 'Aggressive (Heavy Junior)'; + recommendation = 'Consider adding senior tokens for downside protection'; + } else if (totalPositionValue < 10) { + riskExposure = 'No significant position'; + recommendation = 'Start with a small bet to test the market'; + } + + // AI-enhanced analysis if available + const model = initializeAI(); + if (model && totalPositionValue > 0) { + try { + const prompt = new HumanMessage(`Analyze this DeFi position: +- Senior tokens: ${(Number(balances.seniorTokens) / 1e18).toFixed(2)} ($${seniorTokenValue.toFixed(2)}) +- Junior tokens: ${(Number(balances.juniorTokens) / 1e18).toFixed(2)} ($${juniorTokenValue.toFixed(2)}) +- Available liquidity: $${totalLiquidity.toFixed(2)} +- Protocol: ${protocolName} + +Provide a brief risk assessment and recommendation in 1-2 sentences.`); + + const response = await model.invoke([prompt]); + const aiRecommendation = response.content.toString(); + + if (aiRecommendation) { + recommendation = aiRecommendation; + } + } catch (error) { + console.error('AI wallet analysis failed:', error); + } + } + + setWalletAnalysis({ + totalValue: totalPositionValue + totalLiquidity, + riskExposure, + recommendation + }); + + return { + totalValue: totalPositionValue + totalLiquidity, + riskExposure, + recommendation + }; + + } catch (error) { + console.error('Wallet analysis failed:', error); + return null; + } + }; + // Generate mathematical analysis as fallback const generateMathAnalysis = () => { const seniorPriceNum = parseFloat(seniorPrice); @@ -809,22 +899,90 @@ Calculate expected value for each bet and recommend the best option.`); )} - {/* Your Positions */} - {(Number(balances.seniorTokens) > 0 || Number(balances.juniorTokens) > 0) && ( -
-
Your Positions:
-
-
- Senior Tokens (Safe): - {formatTokenAmount(balances.seniorTokens)} -
-
- Junior Tokens (Risk): - {formatTokenAmount(balances.juniorTokens)} -
+ {/* Wallet Analysis Section */} +
+
+
+ + Your Portfolio
+
- )} + + {/* Basic Position Info */} +
+
+ Senior Tokens: + + {formatTokenAmount(balances.seniorTokens)} + {Number(balances.seniorTokens) > 0 && ( + + (${(Number(balances.seniorTokens) / 1e18 * parseFloat(seniorPrice)).toFixed(2)}) + + )} + +
+
+ Junior Tokens: + + {formatTokenAmount(balances.juniorTokens)} + {Number(balances.juniorTokens) > 0 && ( + + (${(Number(balances.juniorTokens) / 1e18 * parseFloat(juniorPrice)).toFixed(2)}) + + )} + +
+
+ Available {assetType}: + {formatTokenAmount(balances[assetType])} +
+
+ + {/* AI Wallet Analysis */} + {showWalletInfo && walletAnalysis && ( +
+
+
+ Total Portfolio Value: + ${walletAnalysis.totalValue.toFixed(2)} +
+
+ Risk Profile: + + {walletAnalysis.riskExposure} + +
+
+ + {walletAnalysis.recommendation && ( +
+
+ +

{walletAnalysis.recommendation}

+
+
+ )} +
+ )} +
{/* Stats Footer */}
From e1dc439bab81e17b240a5e7dcf2c1783a72935d9 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Thu, 7 Aug 2025 20:46:32 +0100 Subject: [PATCH 35/50] portfolio + covermax protocl aware ai to help betting decisions --- .../src/components/PredictionMarketWidget.tsx | 388 ++++++++++++------ 1 file changed, 254 insertions(+), 134 deletions(-) diff --git a/frontend/src/components/PredictionMarketWidget.tsx b/frontend/src/components/PredictionMarketWidget.tsx index 7efa8f6..09781e9 100644 --- a/frontend/src/components/PredictionMarketWidget.tsx +++ b/frontend/src/components/PredictionMarketWidget.tsx @@ -74,7 +74,7 @@ const PredictionMarketWidget: React.FC = ({ const [seniorPrice, setSeniorPrice] = useState('1.00'); const [juniorPrice, setJuniorPrice] = useState('1.00'); const lastOddsUpdate = useRef({ hack: 0, safe: 0, senior: '', junior: '' }); - + // AI Analysis states const [showAIAnalysis, setShowAIAnalysis] = useState(false); const [isAnalyzing, setIsAnalyzing] = useState(false); @@ -85,14 +85,13 @@ const PredictionMarketWidget: React.FC = ({ expectedValue: number; riskLevel: 'low' | 'medium' | 'high'; } | null>(null); - - // Wallet holdings state + + // Wallet holdings state (simplified - used internally during AI analysis) const [walletAnalysis, setWalletAnalysis] = useState<{ totalValue: number; riskExposure: string; recommendation: string; } | null>(null); - const [showWalletInfo, setShowWalletInfo] = useState(false); // Fetch token prices and pool reserves from Uniswap pair useEffect(() => { @@ -167,7 +166,7 @@ const PredictionMarketWidget: React.FC = ({ safe: safeOdds // Allow odds below 1.0 (losing bets) }; setCurrentOdds(newOdds); - + // Notify parent component - only if values actually changed if (onOddsUpdate && ( lastOddsUpdate.current.hack !== hackOdds || @@ -185,7 +184,7 @@ const PredictionMarketWidget: React.FC = ({ safe: 1.25 }; setCurrentOdds(defaultOdds); - + // Only call if values changed if (onOddsUpdate && ( lastOddsUpdate.current.hack !== defaultOdds.hack || @@ -202,14 +201,14 @@ const PredictionMarketWidget: React.FC = ({ const handleBetSelection = (bet: 'hack' | 'safe') => { setSelectedBet(bet); }; - + // Apply AI recommendation if provided useEffect(() => { if (aiRecommendation) { setSelectedBet(aiRecommendation.betType); } }, [aiRecommendation]); - + // Initialize Groq AI model const initializeAI = () => { const groqApiKey = import.meta.env.VITE_GROQ_API_KEY || ''; @@ -217,7 +216,7 @@ const PredictionMarketWidget: React.FC = ({ console.warn('GROQ API key not found. Add VITE_GROQ_API_KEY to your .env file'); return null; } - + return new ChatGroq({ apiKey: groqApiKey, model: 'llama-3.3-70b-versatile', @@ -225,11 +224,11 @@ const PredictionMarketWidget: React.FC = ({ maxTokens: 1000 }); }; - - // Analyze betting opportunity with AI + + // Analyze betting opportunity with AI (enhanced with wallet context) const analyzeWithAI = async () => { setIsAnalyzing(true); - + try { const model = initializeAI(); if (!model) { @@ -239,43 +238,91 @@ const PredictionMarketWidget: React.FC = ({ setShowAIAnalysis(true); return; } - + + // Get comprehensive wallet analysis first + const walletAnalysisResult = await analyzeWalletHoldings(); + // Calculate market implied probabilities const totalValue = parseFloat(seniorPrice) + parseFloat(juniorPrice); const hackProbability = (parseFloat(seniorPrice) / totalValue) * 100; const safeProbability = (parseFloat(juniorPrice) / totalValue) * 100; - - const systemPrompt = new SystemMessage(`You are an expert DeFi risk analyst. Analyze protocol security risks and provide betting recommendations. + + const systemPrompt = new SystemMessage(`You are an expert DeFi risk analyst specializing in CoverMax prediction markets. + +CRITICAL UNDERSTANDING OF COVERMAX MECHANICS: +- SENIOR TOKENS = Already protected/insured positions (safe from hacks) +- JUNIOR TOKENS = Higher yield but at-risk positions (lose value if hack occurs) + +BETTING LOGIC: +- HACK bet = Buying more senior tokens = Seeking more protection +- SAFE bet = Buying more junior tokens = Acting as underwriter for yield + +STRATEGIC RECOMMENDATIONS: +- Users with MANY senior tokens are already well-protected → Consider SAFE bets to earn underwriting yield +- Users with MANY junior tokens are already at-risk → Consider HACK bets for protection/rebalancing +- Conservative portfolios (stablecoins) → HACK bets for protection +- Risk-taking portfolios (meme coins) → SAFE bets to act as underwriters and earn yield +- Consider position concentration - don't over-concentrate in one token type + Respond in JSON format with these exact fields: { "recommendation": "hack" or "safe", "confidence": number between 0-100, - "reasoning": [array of 3-4 key reasons], + "reasoning": [array of 3-4 key reasons including wallet context], "riskLevel": "low", "medium", or "high", "expectedValue": number (positive means profitable) }`); - // Include wallet context if available + // Include comprehensive analysis const seniorBalance = Number(balances.seniorTokens) / 1e18; const juniorBalance = Number(balances.juniorTokens) / 1e18; const hasPosition = seniorBalance > 0 || juniorBalance > 0; - - const userPrompt = new HumanMessage(`Analyze this betting opportunity: -Protocol: ${protocolName} -HACK bet odds: ${currentOdds.hack.toFixed(3)}x -SAFE bet odds: ${currentOdds.safe.toFixed(3)}x -Market implied hack probability: ${hackProbability.toFixed(1)}% -Market implied safe probability: ${safeProbability.toFixed(1)}% -${hasPosition ? ` -Current Position: -- Senior tokens: ${seniorBalance.toFixed(2)} (${seniorBalance > juniorBalance ? 'overweight' : 'underweight'}) -- Junior tokens: ${juniorBalance.toFixed(2)} (${juniorBalance > seniorBalance ? 'overweight' : 'underweight'}) -` : 'No current position'} -Calculate expected value for each bet and recommend the best option${hasPosition ? ' considering the existing position' : ''}.`); + const userPrompt = new HumanMessage(`Analyze this betting opportunity with full wallet context: + +MARKET DATA: +- Protocol: ${protocolName} +- HACK bet odds: ${currentOdds.hack.toFixed(3)}x (${hackProbability.toFixed(1)}% implied probability) +- SAFE bet odds: ${currentOdds.safe.toFixed(3)}x (${safeProbability.toFixed(1)}% implied probability) + +CURRENT COVERMAX POSITION: +${hasPosition ? ` +- Senior tokens: ${seniorBalance.toFixed(2)} (${seniorBalance > juniorBalance ? 'OVERWEIGHT - Already well-protected' : 'underweight'}) +- Junior tokens: ${juniorBalance.toFixed(2)} (${juniorBalance > seniorBalance ? 'OVERWEIGHT - High risk/yield position' : 'underweight'}) + +POSITION IMPLICATIONS: +- If overweight senior tokens → User already has protection → Consider SAFE bets for yield diversification +- If overweight junior tokens → User has high risk exposure → Consider HACK bets for protection/rebalancing +- Balanced position → Follow general risk profile recommendations +` : '- No current position in this protocol - Fresh start for optimal positioning'} + +USER RISK PROFILE: +${walletAnalysisResult ? ` +- Risk Level: ${walletAnalysisResult.riskProfile.level} (Score: ${walletAnalysisResult.riskProfile.score}/100) +- Portfolio Analysis: ${walletAnalysisResult.riskProfile.analysis} +- Meme Coin Allocation: ${walletAnalysisResult.riskProfile.memeAllocation}% +- Primary Holdings: ${walletAnalysisResult.riskProfile.primaryHoldings} +- DeFi Exposure: ${walletAnalysisResult.riskProfile.defiExposure} +` : 'Risk profile not available'} + +STRATEGIC CONSIDERATIONS: +1. POSITION BALANCING: + - Heavy senior token holders → Already protected → SAFE bets for yield diversification + - Heavy junior token holders → High risk exposure → HACK bets for protection + +2. RISK PROFILE ALIGNMENT: + - High-risk users (meme coin holders) → SAFE bets to act as underwriters and earn yield + - Conservative users (stablecoin heavy) → HACK bets for portfolio protection + +3. AVOID OVER-CONCENTRATION: + - Don't recommend more senior tokens if already overweight in senior + - Don't recommend more junior tokens if already overweight in junior + - Balance protection vs yield generation + +Recommend the optimal bet considering: expected value, risk profile, AND existing position balance.`); const response = await model.invoke([systemPrompt, userPrompt]); - + // Parse AI response try { const content = response.content.toString(); @@ -284,7 +331,7 @@ Calculate expected value for each bet and recommend the best option${hasPosition const parsed = JSON.parse(jsonMatch[0]); setAiAnalysis(parsed); setShowAIAnalysis(true); - + // Auto-select the recommended bet setSelectedBet(parsed.recommendation); } @@ -294,7 +341,7 @@ Calculate expected value for each bet and recommend the best option${hasPosition setAiAnalysis(fallbackAnalysis); setShowAIAnalysis(true); } - + } catch (error) { console.error('AI analysis failed:', error); const fallbackAnalysis = generateMathAnalysis(); @@ -304,76 +351,172 @@ Calculate expected value for each bet and recommend the best option${hasPosition setIsAnalyzing(false); } }; - - // Analyze user's wallet holdings with AI + + // Analyze user's wallet holdings with comprehensive risk profiling const analyzeWalletHoldings = async () => { try { + // Get comprehensive wallet data (in production, this would query multiple chains) + const walletData = await getComprehensiveWalletData(); + // Calculate current position values const seniorTokenValue = Number(balances.seniorTokens) / 1e18 * parseFloat(seniorPrice); const juniorTokenValue = Number(balances.juniorTokens) / 1e18 * parseFloat(juniorPrice); const totalPositionValue = seniorTokenValue + juniorTokenValue; - + // Calculate available liquidity const aUSDCBalance = Number(balances.aUSDC) / 1e18; const cUSDTBalance = Number(balances.cUSDT) / 1e18; const totalLiquidity = aUSDCBalance + cUSDTBalance; - - // Determine risk exposure - let riskExposure = 'Balanced'; - let recommendation = ''; - - if (seniorTokenValue > juniorTokenValue * 2) { - riskExposure = 'Conservative (Heavy Senior)'; - recommendation = 'Consider adding junior tokens for higher yield potential'; - } else if (juniorTokenValue > seniorTokenValue * 2) { - riskExposure = 'Aggressive (Heavy Junior)'; - recommendation = 'Consider adding senior tokens for downside protection'; - } else if (totalPositionValue < 10) { - riskExposure = 'No significant position'; - recommendation = 'Start with a small bet to test the market'; - } - - // AI-enhanced analysis if available + + // Determine risk profile from wallet composition + const riskProfile = assessRiskProfile(walletData); + + // AI-enhanced analysis with full wallet context const model = initializeAI(); - if (model && totalPositionValue > 0) { + if (model) { try { - const prompt = new HumanMessage(`Analyze this DeFi position: + const prompt = new HumanMessage(`Analyze this wallet for betting recommendations: + +CURRENT POSITION: - Senior tokens: ${(Number(balances.seniorTokens) / 1e18).toFixed(2)} ($${seniorTokenValue.toFixed(2)}) - Junior tokens: ${(Number(balances.juniorTokens) / 1e18).toFixed(2)} ($${juniorTokenValue.toFixed(2)}) - Available liquidity: $${totalLiquidity.toFixed(2)} + +WALLET RISK PROFILE: +${riskProfile.analysis} + +PORTFOLIO CHARACTERISTICS: +- Risk Level: ${riskProfile.level} (${riskProfile.score}/100) +- Primary Holdings: ${riskProfile.primaryHoldings} +- DeFi Exposure: ${riskProfile.defiExposure} +- Meme Coin Allocation: ${riskProfile.memeAllocation}% + +BETTING CONTEXT: - Protocol: ${protocolName} +- Current HACK odds: ${currentOdds.hack.toFixed(2)}x +- Current SAFE odds: ${currentOdds.safe.toFixed(2)}x + +Based on this risk profile, should this user: +1. Bet HACK (seek protection) - suitable for conservative users +2. Bet SAFE (act as underwriter) - suitable for risk-takers who want yield +3. Stay neutral - if position is already optimal + +Provide specific reasoning based on their wallet composition and risk tolerance.`); -Provide a brief risk assessment and recommendation in 1-2 sentences.`); - const response = await model.invoke([prompt]); const aiRecommendation = response.content.toString(); - - if (aiRecommendation) { - recommendation = aiRecommendation; - } + + setWalletAnalysis({ + totalValue: totalPositionValue + totalLiquidity + walletData.totalPortfolioValue, + riskExposure: riskProfile.level, + recommendation: aiRecommendation + }); + + return { + totalValue: totalPositionValue + totalLiquidity + walletData.totalPortfolioValue, + riskExposure: riskProfile.level, + recommendation: aiRecommendation, + riskProfile + }; + } catch (error) { console.error('AI wallet analysis failed:', error); } } - + + // Fallback analysis without AI + const basicRiskAssessment = getBasicRiskAssessment(riskProfile); setWalletAnalysis({ totalValue: totalPositionValue + totalLiquidity, - riskExposure, - recommendation + riskExposure: riskProfile.level, + recommendation: basicRiskAssessment }); - + return { totalValue: totalPositionValue + totalLiquidity, - riskExposure, - recommendation + riskExposure: riskProfile.level, + recommendation: basicRiskAssessment, + riskProfile }; - + } catch (error) { console.error('Wallet analysis failed:', error); return null; } }; - + + // Get comprehensive wallet data (mock implementation - in production, query multiple chains) + const getComprehensiveWalletData = async () => { + // Mock wallet analysis - in production, this would use APIs like Moralis, Alchemy, etc. + const mockWalletData = { + totalPortfolioValue: 12000, + assets: [ + { type: 'stablecoin', value: 3000, percentage: 25 }, + { type: 'bluechip', value: 6000, percentage: 50 }, // ETH, BTC + { type: 'defi', value: 2000, percentage: 16.7 }, // UNI, AAVE, etc. + { type: 'meme', value: 1000, percentage: 8.3 }, // DOGE, SHIB, PEPE + ], + defiProtocols: ['Aave', 'Uniswap', 'Compound'], + nftCount: 5, + transactionHistory: 150, + avgTransactionSize: 500 + }; + + return mockWalletData; + }; + + // Assess risk profile from wallet composition + const assessRiskProfile = (walletData: any) => { + const memeAllocation = walletData.assets.find((a: any) => a.type === 'meme')?.percentage || 0; + const stableCoinAllocation = walletData.assets.find((a: any) => a.type === 'stablecoin')?.percentage || 0; + const defiAllocation = walletData.assets.find((a: any) => a.type === 'defi')?.percentage || 0; + + let riskScore = 0; + let level = 'Conservative'; + let analysis = ''; + + // Calculate risk score (0-100) + riskScore += memeAllocation * 2; // Meme coins = high risk + riskScore += defiAllocation * 1.5; // DeFi = medium-high risk + riskScore += Math.max(0, 50 - stableCoinAllocation); // Low stables = higher risk + riskScore += (walletData.avgTransactionSize > 1000) ? 20 : 0; // Large txns = risk taker + riskScore += (walletData.nftCount > 10) ? 15 : 0; // Many NFTs = speculative + + // Determine risk level + if (riskScore >= 70) { + level = 'High Risk / Degen'; + analysis = `Portfolio shows degen trader behavior with ${memeAllocation}% in meme coins. This user seeks high returns and likely comfortable with risk.`; + } else if (riskScore >= 40) { + level = 'Moderate Risk'; + analysis = `Balanced portfolio with some speculative positions. Shows calculated risk-taking behavior.`; + } else { + level = 'Conservative'; + analysis = `Conservative portfolio heavily weighted towards stablecoins (${stableCoinAllocation}%) and blue chips.`; + } + + return { + score: Math.min(riskScore, 100), + level, + analysis, + memeAllocation, + primaryHoldings: walletData.assets.reduce((max: any, asset: any) => + asset.percentage > max.percentage ? asset : max + ).type, + defiExposure: `${defiAllocation}% (${walletData.defiProtocols.length} protocols)`, + }; + }; + + // Basic risk assessment without AI + const getBasicRiskAssessment = (riskProfile: any) => { + if (riskProfile.level === 'High Risk / Degen') { + return `High-risk profile detected. Consider SAFE bets to act as underwriter and earn yield from protocol fees. Your risk tolerance suggests you'd prefer earning returns rather than seeking protection.`; + } else if (riskProfile.level === 'Conservative') { + return `Conservative profile detected. Consider HACK bets for portfolio protection. Your stable portfolio suggests you value downside protection over speculative gains.`; + } else { + return `Moderate risk profile. Consider alternating between HACK and SAFE bets based on current market conditions and odds.`; + } + }; + // Generate mathematical analysis as fallback const generateMathAnalysis = () => { const seniorPriceNum = parseFloat(seniorPrice); @@ -381,13 +524,13 @@ Provide a brief risk assessment and recommendation in 1-2 sentences.`); const totalValue = seniorPriceNum + juniorPriceNum; const hackProb = (seniorPriceNum / totalValue); const safeProb = (juniorPriceNum / totalValue); - + const hackEV = hackProb * currentOdds.hack - 1; const safeEV = safeProb * currentOdds.safe - 1; - + const recommendation = hackEV > safeEV ? 'hack' : 'safe'; const confidence = Math.min(95, Math.abs(hackEV - safeEV) * 100 + 50); - + return { recommendation: recommendation as 'hack' | 'safe', confidence: Math.round(confidence), @@ -628,7 +771,7 @@ Provide a brief risk assessment and recommendation in 1-2 sentences.`); Real betting with risk tokens • Earn up to {currentOdds.safe.toFixed(2)}x returns

- + {/* AI Analysis Button or Results */} {!showAIAnalysis ? ( ) : aiAnalysis && (
@@ -667,7 +810,7 @@ Provide a brief risk assessment and recommendation in 1-2 sentences.`); {aiAnalysis.confidence}%
- + {/* Expected Value */}
@@ -679,17 +822,37 @@ Provide a brief risk assessment and recommendation in 1-2 sentences.`);
- + {/* Key Reasoning Points */}
- {aiAnalysis.reasoning.slice(0, 2).map((reason, index) => ( + {aiAnalysis.reasoning.slice(0, 3).map((reason, index) => (
{reason}
))}
- + + {/* Portfolio Context Badge */} + {walletAnalysis && ( +
+
+ + Portfolio Context +
+
+ Risk Profile: {walletAnalysis.riskExposure} +
+
+ Total Portfolio: ${walletAnalysis.totalValue.toFixed(0)} +
+
+ )} + +
+ + Your Portfolio
- + {/* Basic Position Info */}
Senior Tokens: - {formatTokenAmount(balances.seniorTokens)} + {formatTokenAmount(balances.seniorTokens)} {Number(balances.seniorTokens) > 0 && ( (${(Number(balances.seniorTokens) / 1e18 * parseFloat(seniorPrice)).toFixed(2)}) @@ -951,37 +1098,10 @@ Provide a brief risk assessment and recommendation in 1-2 sentences.`); {formatTokenAmount(balances[assetType])}
- - {/* AI Wallet Analysis */} - {showWalletInfo && walletAnalysis && ( -
-
-
- Total Portfolio Value: - ${walletAnalysis.totalValue.toFixed(2)} -
-
- Risk Profile: - - {walletAnalysis.riskExposure} - -
-
- - {walletAnalysis.recommendation && ( -
-
- -

{walletAnalysis.recommendation}

-
-
- )} -
- )} + +
+ AI analyzes your wallet + market conditions for optimal bets +
{/* Stats Footer */} From 21b1ca86729e9da4d4cdcb423efe030ffe84154b Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Thu, 7 Aug 2025 20:48:36 +0100 Subject: [PATCH 36/50] simplified page --- frontend/src/pages/WidgetDemo.tsx | 201 +++++++++--------------------- 1 file changed, 57 insertions(+), 144 deletions(-) diff --git a/frontend/src/pages/WidgetDemo.tsx b/frontend/src/pages/WidgetDemo.tsx index 7e64b5e..fb8bbdc 100644 --- a/frontend/src/pages/WidgetDemo.tsx +++ b/frontend/src/pages/WidgetDemo.tsx @@ -8,7 +8,7 @@ import Logo from '@/assets/images/CoverMax.svg'; import { Link } from 'react-router-dom'; import { useWeb3 } from '@/context/PrivyWeb3Context'; import NetworkSelector from '@/components/NetworkSelector'; -import { Code, Zap, TrendingUp, Users, DollarSign, Target, Brain } from 'lucide-react'; +import { Zap, TrendingUp, DollarSign, Target, Brain } from 'lucide-react'; interface ProtocolDemo { name: string; @@ -30,13 +30,14 @@ const demoProtocols: ProtocolDemo[] = [ ]; const WidgetDemo: React.FC = () => { - const [selectedProtocol, setSelectedProtocol] = useState(demoProtocols[0]); - const [showCode, setShowCode] = useState(false); const [currentOdds, setCurrentOdds] = useState({ hack: 1.02, safe: 1.25 }); const [seniorPrice, setSeniorPrice] = useState('1.00'); const [juniorPrice, setJuniorPrice] = useState('1.00'); const [aiRecommendation, setAiRecommendation] = useState<{ betType: 'hack' | 'safe'; confidence: number } | null>(null); const { isConnected, address, connectWallet, disconnectWallet } = useWeb3(); + + // Use Aave as the default protocol + const selectedProtocol = demoProtocols[0]; // Format address for display const formatAddress = (addr: string) => { @@ -50,17 +51,6 @@ const WidgetDemo: React.FC = () => { setJuniorPrice(junior); }, []); - const codeExample = `import PredictionMarketWidget from '@/components/PredictionMarketWidget'; - -// Embed in your protocol page -`; - return (
{/* Animated background elements */} @@ -116,143 +106,66 @@ const WidgetDemo: React.FC = () => { {/* Header */}

- CoverMax Prediction Market Widget + AI-Powered DeFi Betting

-

- A standalone component that turns protocol security into a profitable prediction game. - No insurance jargon, just pure speculation on DeFi protocol outcomes. +

+ Bet on protocol outcomes with AI-driven recommendations based on your portfolio and market analysis.

- {/* Live Demo */} -
- {/* Widget Demo */} -
-

- - Live Demo Widget -

- -
- - {/* Protocol Selector */} -
-

Choose Protocol to Demo

-
- {demoProtocols.map((protocol) => ( - - ))} -
- - - - - - AI-Powered Analysis - - - -
- -
-

Smart Recommendations

-

AI analyzes real-time market data to suggest optimal bets

-
-
-
- -
-

Expected Value Calculations

-

Shows mathematical edge for each betting opportunity

-
-
-
- -
-

Integrated Experience

-

One-click AI analysis built right into the widget

-
-
-
-
-
+ {/* Main Widget Demo */} +
+
- {/* Implementation Code */} - - - - - Easy Integration - - - Copy and paste this component anywhere. Perfect for embedding on Aave, Compound, or any DeFi protocol page. - - - -
- React Component - -
- - {showCode && ( -
-
-                  {codeExample}
-                
-
- )} + {/* Key Features */} +
+ + + + + AI Analysis + + + +

AI analyzes your wallet composition and market conditions to recommend optimal betting strategies.

+
+
+ + + + + + Smart Positioning + + + +

Recommendations consider your existing positions to avoid over-concentration and optimize returns.

+
+
+ + + + + + Expected Value + + + +

Real-time calculations show mathematical edge and profit potential for each betting opportunity.

+
+
+
-
-
-
Single Component
-
No dependencies
-
-
-
Customizable
-
Odds, logos, timeframes
-
-
-
Mobile Ready
-
Responsive design
-
-
-
-
{/* Business Value */}
From 773a81c30cdd28e6a6e05e29d1dcbd0d46199095 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Thu, 7 Aug 2025 21:05:21 +0100 Subject: [PATCH 37/50] simplified widget page --- .../src/components/PredictionMarketWidget.tsx | 25 ++++---- frontend/src/pages/WidgetDemo.tsx | 61 ++++++------------- 2 files changed, 32 insertions(+), 54 deletions(-) diff --git a/frontend/src/components/PredictionMarketWidget.tsx b/frontend/src/components/PredictionMarketWidget.tsx index 09781e9..2bdb1cc 100644 --- a/frontend/src/components/PredictionMarketWidget.tsx +++ b/frontend/src/components/PredictionMarketWidget.tsx @@ -752,15 +752,18 @@ Provide specific reasoning based on their wallet composition and risk tolerance. - {/* Deposit Phase Check */} - {Number(vaultInfo.currentPhase) !== Phase.DEPOSIT && ( - - - - Betting is only allowed during the Deposit phase. Current phase: {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} - - - )} + {/* Protocol Status */} +
+
+
+ + Protocol Active - Live Betting Available + + + Phase: {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'} + +
+
{/* Question */}
@@ -895,7 +898,6 @@ Provide specific reasoning based on their wallet composition and risk tolerance.
); From dac7685f7130c1707da898f850b6c34a9ed0dbf2 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Thu, 7 Aug 2025 22:04:09 +0100 Subject: [PATCH 38/50] fix precedence bug in risk vault! --- contracts/RiskVault.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/RiskVault.sol b/contracts/RiskVault.sol index f39ff17..b3a0e12 100644 --- a/contracts/RiskVault.sol +++ b/contracts/RiskVault.sol @@ -310,7 +310,7 @@ contract RiskVault is Ownable, ReentrancyGuard { nonReentrant { if (depositAmount <= MIN_DEPOSIT_AMOUNT) revert InsufficientDepositAmount(); - if (depositAmount & 1 != 0) revert UnevenDepositAmount(); // Must be even for equal token split + if ((depositAmount & 1) != 0) revert UnevenDepositAmount(); // Must be even for equal token split if (!_isAssetSupported(asset)) revert UnsupportedAsset(); // Transfer asset from depositor From 9f5f380a0ea0226ee5548f359c5ad7bc8f19c83f Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Fri, 8 Aug 2025 10:26:39 +0100 Subject: [PATCH 39/50] go back to simple evm tooling for holdings --- frontend/package-lock.json | 23375 ++++++---------- frontend/package.json | 2 - .../src/components/PredictionMarketWidget.tsx | 1 - 3 files changed, 9318 insertions(+), 14060 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9d31d6b..8eb4f40 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,7 +8,6 @@ "name": "vite_react_shadcn_ts", "version": "0.0.0", "dependencies": { - "@hashgraph/sdk": "^2.70.0", "@langchain/core": "^0.3.67", "@langchain/groq": "^0.2.3", "@langchain/openai": "^0.6.4", @@ -48,7 +47,6 @@ "dotenv": "^17.2.1", "embla-carousel-react": "^8.3.0", "ethers": "^6.15.0", - "hedera-agent-kit": "^3.0.7", "input-otp": "^1.2.4", "langchain": "^0.3.30", "lucide-react": "^0.462.0", @@ -91,76 +89,6 @@ "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", "license": "MIT" }, - "node_modules/@ai-sdk/provider": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz", - "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", - "license": "Apache-2.0", - "dependencies": { - "json-schema": "^0.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ai-sdk/provider-utils": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz", - "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "1.1.3", - "nanoid": "^3.3.8", - "secure-json-parse": "^2.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "zod": "^3.23.8" - } - }, - "node_modules/@ai-sdk/react": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-1.2.12.tgz", - "integrity": "sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider-utils": "2.2.8", - "@ai-sdk/ui-utils": "1.2.11", - "swr": "^2.2.5", - "throttleit": "2.1.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "zod": "^3.23.8" - }, - "peerDependenciesMeta": { - "zod": { - "optional": true - } - } - }, - "node_modules/@ai-sdk/ui-utils": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-1.2.11.tgz", - "integrity": "sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "1.1.3", - "@ai-sdk/provider-utils": "2.2.8", - "zod-to-json-schema": "^3.24.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "zod": "^3.23.8" - } - }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -173,646 +101,485 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { + "node_modules/@babel/helper-string-parser": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", - "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/core": { + "node_modules/@babel/parser": { "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", - "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" + "@babel/types": "^7.28.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "peer": true, "bin": { - "semver": "bin/semver.js" + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "node_modules/@babel/runtime": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.9.tgz", + "integrity": "sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg==", "license": "MIT", - "peer": true, "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "license": "ISC", - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } + "node_modules/@cfworker/json-schema": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@cfworker/json-schema/-/json-schema-4.1.1.tgz", + "integrity": "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==", + "license": "MIT" }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/@coinbase/wallet-sdk": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-4.0.3.tgz", + "integrity": "sha512-y/OGEjlvosikjfB+wk+4CVb9OxD1ob9cidEBLI5h8Hxaf/Qoob2XoVT1uvhtAzBx34KpGYSd+alKvh/GCRre4Q==", + "license": "Apache-2.0", + "dependencies": { + "buffer": "^6.0.3", + "clsx": "^1.2.1", + "eventemitter3": "^5.0.1", + "keccak": "^3.0.3", + "preact": "^10.16.0", + "sha.js": "^2.4.11" } }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "node_modules/@coinbase/wallet-sdk/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", "license": "MIT", - "peer": true, "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "node_modules/@coinbase/wallet-sdk/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", "license": "MIT", - "peer": true, "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" + "@emotion/memoize": "^0.8.1" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "license": "MIT" + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=12" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "peer": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "peer": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helpers": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.2.tgz", - "integrity": "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.9.tgz", - "integrity": "sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse--for-generate-function-map": { - "name": "@babel/traverse", - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", - "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@cfworker/json-schema": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@cfworker/json-schema/-/json-schema-4.1.1.tgz", - "integrity": "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==", - "license": "MIT" - }, - "node_modules/@coinbase/wallet-sdk": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-4.0.3.tgz", - "integrity": "sha512-y/OGEjlvosikjfB+wk+4CVb9OxD1ob9cidEBLI5h8Hxaf/Qoob2XoVT1uvhtAzBx34KpGYSd+alKvh/GCRre4Q==", - "license": "Apache-2.0", - "dependencies": { - "buffer": "^6.0.3", - "clsx": "^1.2.1", - "eventemitter3": "^5.0.1", - "keccak": "^3.0.3", - "preact": "^10.16.0", - "sha.js": "^2.4.11" - } - }, - "node_modules/@coinbase/wallet-sdk/node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@coinbase/wallet-sdk/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", - "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", - "license": "MIT", - "dependencies": { - "@emotion/memoize": "^0.8.1" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", - "license": "MIT" - }, - "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", - "license": "MIT" - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "aix" + "netbsd" ], "engines": { "node": ">=12" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", "cpu": [ - "arm" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "android" + "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/android-arm64": { + "node_modules/@esbuild/openbsd-x64": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "android" + "openbsd" ], "engines": { "node": ">=12" } }, - "node_modules/@esbuild/android-x64": { + "node_modules/@esbuild/sunos-x64": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -820,16 +587,16 @@ "license": "MIT", "optional": true, "os": [ - "android" + "sunos" ], "engines": { "node": ">=12" } }, - "node_modules/@esbuild/darwin-arm64": { + "node_modules/@esbuild/win32-arm64": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -837,534 +604,228 @@ "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { + "node_modules/@esbuild/win32-ia32": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ - "x64" + "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=12" } }, - "node_modules/@esbuild/freebsd-arm64": { + "node_modules/@esbuild/win32-x64": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "freebsd" + "win32" ], "engines": { "node": ">=12" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], + "node_modules/@eslint/core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", + "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], + "node_modules/@eslint/js": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", + "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/plugin-kit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "levn": "^0.4.1" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@ethereumjs/common": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", + "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "crc-32": "^1.2.0" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp" + }, "engines": { - "node": ">=12" + "node": ">=14" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "node_modules/@ethereumjs/tx": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", + "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" + }, "engines": { - "node": ">=18" + "node": ">=14" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", - "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", - "dev": true, - "dependencies": { - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@ethereumjs/common": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", - "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", - "license": "MIT", - "dependencies": { - "@ethereumjs/util": "^8.1.0", - "crc-32": "^1.2.0" - } - }, - "node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@ethereumjs/tx": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", - "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "ethereum-cryptography": "^2.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@ethereumjs/util": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", - "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" - }, - "engines": { - "node": ">=14" + "node": ">=14" } }, "node_modules/@ethersproject/abi": { @@ -2148,1992 +1609,1811 @@ "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", "license": "MIT" }, - "node_modules/@grpc/grpc-js": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz", - "integrity": "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==", - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" - }, - "engines": { - "node": ">=12.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", - "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", - "license": "Apache-2.0", + "node_modules/@headlessui/react": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.4.tgz", + "integrity": "sha512-lz+OGcAH1dK93rgSMzXmm1qKOJkBUqZf1L4M8TWLNplftQD3IkoEDdUFNfAn4ylsN6WOTVtWaLmvmaHOUk1dTA==", + "license": "MIT", "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + "@floating-ui/react": "^0.26.16", + "@react-aria/focus": "^3.20.2", + "@react-aria/interactions": "^3.25.0", + "@tanstack/react-virtual": "^3.13.9", + "use-sync-external-store": "^1.5.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, - "node_modules/@grpc/proto-loader/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@heroicons/react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", + "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", "license": "MIT", + "peerDependencies": { + "react": ">= 16 || ^19.0.0-rc" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", + "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=18.18.0" } }, - "node_modules/@grpc/proto-loader/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", + "node_modules/@humanfs/node": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", + "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "@humanfs/core": "^0.19.0", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=12" + "node": ">=18.18.0" } }, - "node_modules/@grpc/proto-loader/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/@grpc/proto-loader/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@grpc/proto-loader/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", "dependencies": { - "ansi-regex": "^5.0.1" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@grpc/proto-loader/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@grpc/proto-loader/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/@grpc/proto-loader/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", + "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@grpc/proto-loader/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "engines": { - "node": ">=12" + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@hashgraph/cryptography": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@hashgraph/cryptography/-/cryptography-1.9.0.tgz", - "integrity": "sha512-0UItolO1W/f8YIsGBrIxvjY+cSdvs4sEdzXOL49ThYEfPskJUprG3vhMhosRFoA4d0hxdJ7/glB7f7He8RW9xg==", - "license": "Apache-2.0", + "node_modules/@langchain/core": { + "version": "0.3.67", + "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.67.tgz", + "integrity": "sha512-ATmkAj8V+FaHM2UYX+O9tdaKJr4eu8FSVPF6F6aaD+0Gq980Eza1qp15kV3jCpG+f5mGwkFToQixkT+SSmZJDg==", + "license": "MIT", "dependencies": { - "@noble/curves": "^1.8.1", - "asn1js": "^3.0.6", - "bignumber.js": "^9.1.1", - "bn.js": "^5.2.1", - "buffer": "^6.0.3", - "crypto-js": "^4.2.0", - "forge-light": "1.1.4", - "js-base64": "^3.7.7", - "react-native-get-random-values": "^1.11.0", - "spark-md5": "^3.0.2", - "tweetnacl": "^1.0.3", - "utf8": "^3.0.0" + "@cfworker/json-schema": "^4.0.2", + "ansi-styles": "^5.0.0", + "camelcase": "6", + "decamelize": "1.2.0", + "js-tiktoken": "^1.0.12", + "langsmith": "^0.3.46", + "mustache": "^4.2.0", + "p-queue": "^6.6.2", + "p-retry": "4", + "uuid": "^10.0.0", + "zod": "^3.25.32", + "zod-to-json-schema": "^3.22.3" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependenciesMeta": { - "expo-crypto": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@hashgraph/cryptography/node_modules/@noble/curves": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.6.tgz", - "integrity": "sha512-GIKz/j99FRthB8icyJQA51E8Uk5hXmdyThjgQXRKiv9h0zeRlzSCLIzFw6K1LotZ3XuB7yzlf76qk7uBmTdFqA==", + "node_modules/@langchain/core/node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "license": "MIT" + }, + "node_modules/@langchain/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "license": "MIT", - "dependencies": { - "@noble/hashes": "1.8.0" - }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">=10" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@hashgraph/cryptography/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "node_modules/@langchain/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "license": "MIT", "engines": { - "node": "^14.21.3 || >=16" + "node": ">=10" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@hashgraph/cryptography/node_modules/@react-native/virtualized-lists": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.80.2.tgz", - "integrity": "sha512-kXsIV2eB73QClbbH/z/lRhZkyj3Dke4tarM5w2yXSNwJthMPMfj4KqLZ6Lnf0nmPPjz7qo/voKtlrGqlM822Rg==", + "node_modules/@langchain/core/node_modules/langsmith": { + "version": "0.3.53", + "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.53.tgz", + "integrity": "sha512-cnEcJEiYjbcFQy7vTCQb7sR4w70UtBCu9loCOON+yYcK6T1lVmx27lQ4AF2KY7xzKY+FhbxWms5PV3SocizzaQ==", "license": "MIT", - "peer": true, "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" + "@types/uuid": "^10.0.0", + "chalk": "^4.1.2", + "console-table-printer": "^2.12.1", + "p-queue": "^6.6.2", + "p-retry": "4", + "semver": "^7.6.3", + "uuid": "^10.0.0" }, "peerDependencies": { - "@types/react": "^19.0.0", - "react": "*", - "react-native": "*" + "@opentelemetry/api": "*", + "@opentelemetry/exporter-trace-otlp-proto": "*", + "@opentelemetry/sdk-trace-base": "*", + "openai": "*" }, "peerDependenciesMeta": { - "@types/react": { + "@opentelemetry/api": { + "optional": true + }, + "@opentelemetry/exporter-trace-otlp-proto": { + "optional": true + }, + "@opentelemetry/sdk-trace-base": { + "optional": true + }, + "openai": { "optional": true } } }, - "node_modules/@hashgraph/cryptography/node_modules/@types/react": { - "version": "19.1.9", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.9.tgz", - "integrity": "sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@hashgraph/cryptography/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@langchain/core/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@hashgraph/cryptography/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "peer": true, + "node_modules/@langchain/groq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@langchain/groq/-/groq-0.2.3.tgz", + "integrity": "sha512-r+yjysG36a0IZxTlCMr655Feumfb4IrOyA0jLLq4l7gEhVyMpYXMwyE6evseyU2LRP+7qOPbGRVpGqAIK0MsUA==", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "groq-sdk": "^0.19.0", + "zod": "^3.22.4" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@hashgraph/cryptography/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "license": "MIT", - "peer": true, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@langchain/core": ">=0.3.58 <0.4.0" } }, - "node_modules/@hashgraph/cryptography/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/@langchain/openai": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.6.4.tgz", + "integrity": "sha512-0B8AdImAjIgvGKnNN8URGVB4JUg61Of9EW+scZTS0OJOKjhdybe6ars/OwXkY9pacU3lMxIIKEMm9Op9DMaXiw==", "license": "MIT", - "peer": true - }, - "node_modules/@hashgraph/cryptography/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "peer": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "js-tiktoken": "^1.0.12", + "openai": "^5.3.0", + "zod": "^3.25.32" }, "engines": { - "node": "*" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@langchain/core": ">=0.3.58 <0.4.0" } }, - "node_modules/@hashgraph/cryptography/node_modules/react": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", - "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" + "node_modules/@langchain/openai/node_modules/openai": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-5.12.0.tgz", + "integrity": "sha512-vUdt02xiWgOHiYUmW0Hj1Qu9OKAiVQu5Bd547ktVCiMKC1BkB5L3ImeEnCyq3WpRKR6ZTaPgekzqdozwdPs7Lg==", + "license": "Apache-2.0", + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } } }, - "node_modules/@hashgraph/cryptography/node_modules/react-native": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.80.2.tgz", - "integrity": "sha512-6ySV4qTJo/To3lgpG/9Mcg/ZtvExqOVZuT7JVGcO5rS2Bjvl/yUAkQF0hTnbRb2Ch6T5MlKghrM4OeHX+KA9Pg==", + "node_modules/@langchain/openai/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", + "optional": true, "peer": true, - "dependencies": { - "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.80.2", - "@react-native/codegen": "0.80.2", - "@react-native/community-cli-plugin": "0.80.2", - "@react-native/gradle-plugin": "0.80.2", - "@react-native/js-polyfills": "0.80.2", - "@react-native/normalize-colors": "0.80.2", - "@react-native/virtualized-lists": "0.80.2", - "abort-controller": "^3.0.0", - "anser": "^1.4.9", - "ansi-regex": "^5.0.0", - "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.28.1", - "base64-js": "^1.5.1", - "chalk": "^4.0.0", - "commander": "^12.0.0", - "flow-enums-runtime": "^0.0.6", - "glob": "^7.1.1", - "invariant": "^2.2.4", - "jest-environment-node": "^29.7.0", - "memoize-one": "^5.0.0", - "metro-runtime": "^0.82.2", - "metro-source-map": "^0.82.2", - "nullthrows": "^1.1.1", - "pretty-format": "^29.7.0", - "promise": "^8.3.0", - "react-devtools-core": "^6.1.1", - "react-refresh": "^0.14.0", - "regenerator-runtime": "^0.13.2", - "scheduler": "0.26.0", - "semver": "^7.1.3", - "stacktrace-parser": "^0.1.10", - "whatwg-fetch": "^3.0.0", - "ws": "^6.2.3", - "yargs": "^17.6.2" - }, - "bin": { - "react-native": "cli.js" - }, "engines": { - "node": ">=18" + "node": ">=10.0.0" }, "peerDependencies": { - "@types/react": "^19.1.0", - "react": "^19.1.0" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "@types/react": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/@hashgraph/cryptography/node_modules/react-native-get-random-values": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/react-native-get-random-values/-/react-native-get-random-values-1.11.0.tgz", - "integrity": "sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ==", + "node_modules/@langchain/textsplitters": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@langchain/textsplitters/-/textsplitters-0.1.0.tgz", + "integrity": "sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==", "license": "MIT", "dependencies": { - "fast-base64-decode": "^1.0.0" + "js-tiktoken": "^1.0.12" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "react-native": ">=0.56" + "@langchain/core": ">=0.2.21 <0.4.0" } }, - "node_modules/@hashgraph/cryptography/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "license": "MIT", - "peer": true - }, - "node_modules/@hashgraph/cryptography/node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT", - "peer": true + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", + "license": "BSD-3-Clause" }, - "node_modules/@hashgraph/cryptography/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "peer": true, + "node_modules/@lit/reactive-element": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.0.tgz", + "integrity": "sha512-L2qyoZSQClcBmq0qajBVbhYEcG6iK0XfLn66ifLe/RfC0/ihpc+pl0Wdn8bJ8o+hj38cG0fGXRgSS20MuXn7qA==", + "license": "BSD-3-Clause", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "@lit-labs/ssr-dom-shim": "^1.2.0" } }, - "node_modules/@hashgraph/cryptography/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/@marsidev/react-turnstile": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@marsidev/react-turnstile/-/react-turnstile-0.4.1.tgz", + "integrity": "sha512-uZusUW9mPr0csWpls8bApe5iuRK0YK7H1PCKqfM4djW3OA9GB9rU68irjk7xRO8qlHyj0aDTeVu9tTLPExBO4Q==", "license": "MIT", - "peer": true, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@metamask/abi-utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-1.2.0.tgz", + "integrity": "sha512-Hf7fnBDM9ptCPDtq/wQffWbw859CdVGMwlpWUEsTH6gLXhXONGrRXHA2piyYPRuia8YYTdJvRC/zSK1/nyLvYg==", + "license": "(Apache-2.0 AND MIT)", "dependencies": { - "ansi-regex": "^5.0.1" + "@metamask/utils": "^3.4.1", + "superstruct": "^1.0.3" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@hashgraph/cryptography/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "peer": true, + "node_modules/@metamask/abi-utils/node_modules/@metamask/utils": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-3.6.0.tgz", + "integrity": "sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==", + "license": "ISC", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "semver": "^7.3.8", + "superstruct": "^1.0.3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@hashgraph/cryptography/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "license": "MIT", + "node_modules/@metamask/eth-json-rpc-provider": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.1.tgz", + "integrity": "sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==", "peer": true, "dependencies": { - "async-limiter": "~1.0.0" + "@metamask/json-rpc-engine": "^7.0.0", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@hashgraph/cryptography/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/@metamask/eth-sig-util": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-6.0.2.tgz", + "integrity": "sha512-D6IIefM2vS+4GUGGtezdBbkwUYQC4bCosYx/JteUuF0zfe6lyxR4cruA8+2QHoUg7F7edNH1xymYpqYq1BeOkw==", "license": "ISC", - "peer": true, + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "@metamask/abi-utils": "^1.2.0", + "@metamask/utils": "^5.0.2", + "ethereum-cryptography": "^2.1.2", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/@hashgraph/cryptography/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", + "node_modules/@metamask/json-rpc-engine": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", + "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", + "license": "ISC", "peer": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" }, "engines": { - "node": ">=12" + "node": ">=16.0.0" } }, - "node_modules/@hashgraph/cryptography/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "node_modules/@metamask/json-rpc-engine/node_modules/@metamask/utils": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==", "license": "ISC", "peer": true, + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.0.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, "engines": { - "node": ">=12" + "node": ">=16.0.0" } }, - "node_modules/@hashgraph/proto": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/@hashgraph/proto/-/proto-2.20.0.tgz", - "integrity": "sha512-XGIHRE9jr4wnnmCG8JeUD/nyeCiiYoUt35oRJz0QdCUwJYtbEsR6tPQxO90PxJJVDI5smT1c5i0f9wRRtFDhIA==", - "license": "Apache-2.0", + "node_modules/@metamask/rpc-errors": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.4.0.tgz", + "integrity": "sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==", + "license": "MIT", + "peer": true, "dependencies": { - "long": "^5.2.3", - "protobufjs": "7.2.5" + "@metamask/utils": "^9.0.0", + "fast-safe-stringify": "^2.0.6" }, "engines": { - "node": ">=10.0.0" + "node": ">=16.0.0" } }, - "node_modules/@hashgraph/sdk": { - "version": "2.70.0", - "resolved": "https://registry.npmjs.org/@hashgraph/sdk/-/sdk-2.70.0.tgz", - "integrity": "sha512-naml5lWgewD3Dh8z0K7NRuKpbOpDaxpxwcLjtB9RFVmATMDU3IShSzxy24k5tUgY/0ZE7XXfCKgIpdT7TxGKqQ==", - "license": "Apache-2.0", - "dependencies": { - "@ethersproject/abi": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/rlp": "^5.8.0", - "@grpc/grpc-js": "^1.12.6", - "@hashgraph/cryptography": "1.9.0", - "@hashgraph/proto": "2.20.0", - "bignumber.js": "^9.1.1", - "bn.js": "^5.1.1", - "crypto-js": "^4.2.0", - "js-base64": "^3.7.4", - "long": "^5.3.1", - "pino": "^9.6.0", - "pino-pretty": "^13.0.0", - "protobufjs": "7.2.5", - "rfc4648": "^1.5.3", - "utf8": "^3.0.0" - }, - "engines": { - "node": ">=18.0.0" + "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", + "peer": true, + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" }, - "peerDependencies": { - "bn.js": "^5.2.1" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hashgraph/sdk/node_modules/on-exit-leak-free": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", - "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "node_modules/@metamask/safe-event-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz", + "integrity": "sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==", + "license": "ISC", + "peer": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/superstruct": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.2.1.tgz", + "integrity": "sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==", "license": "MIT", + "peer": true, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-5.0.2.tgz", + "integrity": "sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.1.2", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "semver": "^7.3.8", + "superstruct": "^1.0.3" + }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@hashgraph/sdk/node_modules/pino": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.8.0.tgz", - "integrity": "sha512-L5+rV1wL7vGAcxXP7sPpN5lrJ07Piruka6ArXr7EWBXxdVWjJshGVX8suFsiusJVcGKDGUFfbgbnKdg+VAC+0g==", + "node_modules/@motionone/animation": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", + "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", "license": "MIT", "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^2.0.0", - "pino-std-serializers": "^7.0.0", - "process-warning": "^5.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^4.0.1", - "thread-stream": "^3.0.0" - }, - "bin": { - "pino": "bin.js" + "@motionone/easing": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" } }, - "node_modules/@hashgraph/sdk/node_modules/pino-abstract-transport": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", - "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "node_modules/@motionone/dom": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.18.0.tgz", + "integrity": "sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==", "license": "MIT", "dependencies": { - "split2": "^4.0.0" + "@motionone/animation": "^10.18.0", + "@motionone/generators": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" } }, - "node_modules/@hashgraph/sdk/node_modules/pino-pretty": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.1.tgz", - "integrity": "sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==", + "node_modules/@motionone/easing": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", + "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", "license": "MIT", "dependencies": { - "colorette": "^2.0.7", - "dateformat": "^4.6.3", - "fast-copy": "^3.0.2", - "fast-safe-stringify": "^2.1.1", - "help-me": "^5.0.0", - "joycon": "^3.1.1", - "minimist": "^1.2.6", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^2.0.0", - "pump": "^3.0.0", - "secure-json-parse": "^4.0.0", - "sonic-boom": "^4.0.1", - "strip-json-comments": "^5.0.2" - }, - "bin": { - "pino-pretty": "bin.js" + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" } }, - "node_modules/@hashgraph/sdk/node_modules/pino-std-serializers": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", - "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", - "license": "MIT" + "node_modules/@motionone/generators": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", + "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", + "license": "MIT", + "dependencies": { + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } }, - "node_modules/@hashgraph/sdk/node_modules/process-warning": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", - "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/@motionone/svelte": { + "version": "10.16.4", + "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.4.tgz", + "integrity": "sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==", + "license": "MIT", + "dependencies": { + "@motionone/dom": "^10.16.4", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/types": { + "version": "10.17.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", + "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", "license": "MIT" }, - "node_modules/@hashgraph/sdk/node_modules/real-require": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "node_modules/@motionone/utils": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", + "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", "license": "MIT", - "engines": { - "node": ">= 12.13.0" + "dependencies": { + "@motionone/types": "^10.17.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" } }, - "node_modules/@hashgraph/sdk/node_modules/secure-json-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz", - "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/@hashgraph/sdk/node_modules/sonic-boom": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", - "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "node_modules/@motionone/vue": { + "version": "10.16.4", + "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.4.tgz", + "integrity": "sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==", + "deprecated": "Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion", "license": "MIT", "dependencies": { - "atomic-sleep": "^1.0.0" + "@motionone/dom": "^10.16.4", + "tslib": "^2.3.1" } }, - "node_modules/@hashgraph/sdk/node_modules/strip-json-comments": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.2.tgz", - "integrity": "sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g==", + "node_modules/@msgpack/msgpack": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-3.1.2.tgz", + "integrity": "sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==", + "license": "ISC", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", "license": "MIT", "engines": { - "node": ">=14.16" + "node": "^14.21.3 || >=16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@hashgraph/sdk/node_modules/thread-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", - "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "license": "MIT", "dependencies": { - "real-require": "^0.2.0" + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@headlessui/react": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.4.tgz", - "integrity": "sha512-lz+OGcAH1dK93rgSMzXmm1qKOJkBUqZf1L4M8TWLNplftQD3IkoEDdUFNfAn4ylsN6WOTVtWaLmvmaHOUk1dTA==", + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "license": "MIT", - "dependencies": { - "@floating-ui/react": "^0.26.16", - "@react-aria/focus": "^3.20.2", - "@react-aria/interactions": "^3.25.0", - "@tanstack/react-virtual": "^3.13.9", - "use-sync-external-store": "^1.5.0" - }, "engines": { - "node": ">=10" + "node": ">= 16" }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "react-dom": "^18 || ^19 || ^19.0.0-rc" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@heroicons/react": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", - "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "license": "MIT", - "peerDependencies": { - "react": ">= 16 || ^19.0.0-rc" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", - "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", - "dev": true, - "license": "Apache-2.0", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": ">=18.18.0" + "node": ">= 8" } }, - "node_modules/@humanfs/node": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", - "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.0", - "@humanwhocodes/retry": "^0.3.0" - }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { - "node": ">=18.18.0" + "node": ">= 8" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/ttlcache": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", - "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", - "license": "ISC", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "license": "ISC", - "peer": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "license": "MIT", - "peer": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node": ">= 8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "optional": true, "peer": true, - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "license": "MIT", - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, + "optional": true, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "peer": true, + "node_modules/@privy-io/api-base": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@privy-io/api-base/-/api-base-1.5.2.tgz", + "integrity": "sha512-0eJBoQNmCSsWSWhzEVSU8WqPm7bgeN6VaAmqeXvjk8Ni0jM8nyTYjmRAqiCSs3mRzsnlQVchkGR6lsMTHkHKbw==", "dependencies": { - "p-limit": "^2.2.0" + "zod": "^3.24.3" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" + "node": ">=18.0.0", + "npm": ">=8.0.0" } }, - "node_modules/@jest/create-cache-key-function": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", - "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", - "license": "MIT", - "peer": true, + "node_modules/@privy-io/js-sdk-core": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@privy-io/js-sdk-core/-/js-sdk-core-0.37.1.tgz", + "integrity": "sha512-txYMs4CuSDG5NLP0vFGuHYeCOrt7Evu/DS7OC7e+DJ3bdav6BlKARhx7W87YLjsNx+OWURLG9C1JeX/xeXxzSg==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "^29.6.3" + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/providers": "^5.7.2", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/units": "^5.7.0", + "@privy-io/api-base": "^1.4.1", + "@privy-io/public-api": "2.15.10", + "eventemitter3": "^5.0.1", + "fetch-retry": "^5.0.6", + "jose": "^4.15.5", + "js-cookie": "^3.0.5", + "libphonenumber-js": "^1.10.44", + "set-cookie-parser": "^2.6.0", + "uuid": ">=8 <10" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" + "peerDependencies": { + "permissionless": "^0.2.10", + "viem": "^2.21.36" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependenciesMeta": { + "permissionless": { + "optional": true + }, + "viem": { + "optional": true + } } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/@privy-io/js-sdk-core/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "license": "MIT", - "peer": true, + "node_modules/@privy-io/public-api": { + "version": "2.15.10", + "resolved": "https://registry.npmjs.org/@privy-io/public-api/-/public-api-2.15.10.tgz", + "integrity": "sha512-MqD/XmHshFRBzchV6t23/mDla2tDAzANs7nlOidpkTyW4vpnIzUfJAVrEAijM6PpQfDiRY4PA0ul8eRiFXw69A==", + "license": "Apache-2.0", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@privy-io/api-base": "1.4.1", + "bs58": "^5.0.0", + "ethers": "^5.7.2", + "libphonenumber-js": "^1.10.31", + "zod": "^3.22.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "license": "MIT", - "peer": true, + "node_modules/@privy-io/public-api/node_modules/@privy-io/api-base": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@privy-io/api-base/-/api-base-1.4.1.tgz", + "integrity": "sha512-q98uQGVBIY5SBHjJWL/udpbxM9ISpZl8Lwwjd0p0XHSMJMOgEhS4GLjcO7l3clfNrqL0fAuinQaa+seCaYOzng==", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "zod": "^3.21.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@privy-io/public-api/node_modules/base-x": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.1.tgz", + "integrity": "sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==", + "license": "MIT" + }, + "node_modules/@privy-io/public-api/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", "license": "MIT", - "peer": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "base-x": "^4.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", - "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "node_modules/@privy-io/public-api/node_modules/ethers": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", + "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", - "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", - "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "@ethersproject/abi": "5.8.0", + "@ethersproject/abstract-provider": "5.8.0", + "@ethersproject/abstract-signer": "5.8.0", + "@ethersproject/address": "5.8.0", + "@ethersproject/base64": "5.8.0", + "@ethersproject/basex": "5.8.0", + "@ethersproject/bignumber": "5.8.0", + "@ethersproject/bytes": "5.8.0", + "@ethersproject/constants": "5.8.0", + "@ethersproject/contracts": "5.8.0", + "@ethersproject/hash": "5.8.0", + "@ethersproject/hdnode": "5.8.0", + "@ethersproject/json-wallets": "5.8.0", + "@ethersproject/keccak256": "5.8.0", + "@ethersproject/logger": "5.8.0", + "@ethersproject/networks": "5.8.0", + "@ethersproject/pbkdf2": "5.8.0", + "@ethersproject/properties": "5.8.0", + "@ethersproject/providers": "5.8.0", + "@ethersproject/random": "5.8.0", + "@ethersproject/rlp": "5.8.0", + "@ethersproject/sha2": "5.8.0", + "@ethersproject/signing-key": "5.8.0", + "@ethersproject/solidity": "5.8.0", + "@ethersproject/strings": "5.8.0", + "@ethersproject/transactions": "5.8.0", + "@ethersproject/units": "5.8.0", + "@ethersproject/wallet": "5.8.0", + "@ethersproject/web": "5.8.0", + "@ethersproject/wordlists": "5.8.0" } }, - "node_modules/@langchain/core": { - "version": "0.3.67", - "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.67.tgz", - "integrity": "sha512-ATmkAj8V+FaHM2UYX+O9tdaKJr4eu8FSVPF6F6aaD+0Gq980Eza1qp15kV3jCpG+f5mGwkFToQixkT+SSmZJDg==", - "license": "MIT", + "node_modules/@privy-io/react-auth": { + "version": "1.99.1", + "resolved": "https://registry.npmjs.org/@privy-io/react-auth/-/react-auth-1.99.1.tgz", + "integrity": "sha512-t95cOpYIfMlfFvBCu8e8HjxPEG8g5B5nYISRa88sxOEbxCYXPpaRkN8VcNB00mJ/SWhyZi+DgNSe/OCUzJ1lsA==", + "license": "Apache-2.0", "dependencies": { - "@cfworker/json-schema": "^4.0.2", - "ansi-styles": "^5.0.0", - "camelcase": "6", - "decamelize": "1.2.0", - "js-tiktoken": "^1.0.12", - "langsmith": "^0.3.46", - "mustache": "^4.2.0", - "p-queue": "^6.6.2", - "p-retry": "4", - "uuid": "^10.0.0", - "zod": "^3.25.32", - "zod-to-json-schema": "^3.22.3" + "@coinbase/wallet-sdk": "4.0.3", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/providers": "^5.7.1", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/units": "^5.7.0", + "@floating-ui/react": "^0.26.22", + "@headlessui/react": "^2.2.0", + "@heroicons/react": "^2.1.1", + "@marsidev/react-turnstile": "^0.4.1", + "@metamask/eth-sig-util": "^6.0.0", + "@privy-io/js-sdk-core": "0.37.1", + "@simplewebauthn/browser": "^9.0.1", + "@solana/wallet-adapter-base": "^0.9.23", + "@solana/wallet-standard-wallet-adapter-base": "^1.1.2", + "@solana/wallet-standard-wallet-adapter-react": "^1.1.2", + "@wallet-standard/app": "^1.0.1", + "@walletconnect/ethereum-provider": "^2.15.1", + "@walletconnect/modal": "^2.6.2", + "base64-js": "^1.5.1", + "dotenv": "^16.0.3", + "encoding": "^0.1.13", + "eventemitter3": "^5.0.1", + "fast-password-entropy": "^1.1.1", + "jose": "^4.15.5", + "js-cookie": "^3.0.5", + "lokijs": "^1.5.12", + "md5": "^2.3.0", + "mipd": "^0.0.7", + "ofetch": "^1.3.4", + "pino-pretty": "^10.0.0", + "qrcode": "^1.5.1", + "react-device-detect": "^2.2.2", + "secure-password-utilities": "^0.2.1", + "styled-components": "^6.1.13", + "stylis": "^4.3.4", + "tinycolor2": "^1.6.0", + "uuid": ">=8 <10", + "viem": "^2.21.9", + "web3-core": "^1.8.0", + "web3-core-helpers": "^1.8.0", + "zustand": "^5.0.0" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@abstract-foundation/agw-client": "^0.1.0", + "@solana/web3.js": "^1.95.8", + "permissionless": "^0.2.10", + "react": "^18 || ^19", + "react-dom": "^18 || ^19" + }, + "peerDependenciesMeta": { + "@abstract-foundation/agw-client": { + "optional": true + }, + "@solana/web3.js": { + "optional": true + }, + "permissionless": { + "optional": true + } } }, - "node_modules/@langchain/core/node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "license": "MIT" - }, - "node_modules/@langchain/core/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", + "node_modules/@privy-io/react-auth/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://dotenvx.com" } }, - "node_modules/@langchain/core/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@privy-io/react-auth/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/@privy-io/wagmi-connector": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@privy-io/wagmi-connector/-/wagmi-connector-0.1.13.tgz", + "integrity": "sha512-dbel4pYvbJM+28m12DE7LvEKzJ8ni/rDkuHpF3RGwkph+HsgDNDxJy4OTgUjaKi6yJsjZ5nvhsZdNNVXbVFKkg==", + "license": "Apache-2.0", + "peerDependencies": { + "@privy-io/react-auth": "^1.33.0", + "react": "^18", + "react-dom": "^18", + "viem": ">=0.3.35", + "wagmi": ">=1.4.12 <2" } }, - "node_modules/@langchain/core/node_modules/langsmith": { - "version": "0.3.53", - "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.53.tgz", - "integrity": "sha512-cnEcJEiYjbcFQy7vTCQb7sR4w70UtBCu9loCOON+yYcK6T1lVmx27lQ4AF2KY7xzKY+FhbxWms5PV3SocizzaQ==", + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.1.tgz", + "integrity": "sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==", "license": "MIT", "dependencies": { - "@types/uuid": "^10.0.0", - "chalk": "^4.1.2", - "console-table-printer": "^2.12.1", - "p-queue": "^6.6.2", - "p-retry": "4", - "semver": "^7.6.3", - "uuid": "^10.0.0" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collapsible": "1.1.1", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { - "@opentelemetry/api": "*", - "@opentelemetry/exporter-trace-otlp-proto": "*", - "@opentelemetry/sdk-trace-base": "*", - "openai": "*" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "@opentelemetry/api": { + "@types/react": { "optional": true }, - "@opentelemetry/exporter-trace-otlp-proto": { + "@types/react-dom": { "optional": true - }, - "@opentelemetry/sdk-trace-base": { + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.2.tgz", + "integrity": "sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dialog": "1.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { "optional": true }, - "openai": { + "@types/react-dom": { "optional": true } } }, - "node_modules/@langchain/core/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@langchain/groq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@langchain/groq/-/groq-0.2.3.tgz", - "integrity": "sha512-r+yjysG36a0IZxTlCMr655Feumfb4IrOyA0jLLq4l7gEhVyMpYXMwyE6evseyU2LRP+7qOPbGRVpGqAIK0MsUA==", + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.0.tgz", + "integrity": "sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==", "license": "MIT", "dependencies": { - "groq-sdk": "^0.19.0", - "zod": "^3.22.4" - }, - "engines": { - "node": ">=18" + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@langchain/openai": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.6.4.tgz", - "integrity": "sha512-0B8AdImAjIgvGKnNN8URGVB4JUg61Of9EW+scZTS0OJOKjhdybe6ars/OwXkY9pacU3lMxIIKEMm9Op9DMaXiw==", + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", + "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", "license": "MIT", "dependencies": { - "js-tiktoken": "^1.0.12", - "openai": "^5.3.0", - "zod": "^3.25.32" - }, - "engines": { - "node": ">=18" + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@langchain/openai/node_modules/openai": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-5.12.0.tgz", - "integrity": "sha512-vUdt02xiWgOHiYUmW0Hj1Qu9OKAiVQu5Bd547ktVCiMKC1BkB5L3ImeEnCyq3WpRKR6ZTaPgekzqdozwdPs7Lg==", - "license": "Apache-2.0", - "bin": { - "openai": "bin/cli" + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz", + "integrity": "sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { - "ws": "^8.18.0", - "zod": "^3.23.8" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "ws": { + "@types/react": { "optional": true }, - "zod": { + "@types/react-dom": { "optional": true } } }, - "node_modules/@langchain/openai/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.1.tgz", + "integrity": "sha512-1///SnrfQHJEofLokyczERxQbWfCGQlQ2XsCZMucVs6it+lq9iw4vXy+uDn1edlb58cOZOWSldnfPAYcT4O/Yg==", "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "bufferutil": { + "@types/react": { "optional": true }, - "utf-8-validate": { + "@types/react-dom": { "optional": true } } }, - "node_modules/@langchain/textsplitters": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@langchain/textsplitters/-/textsplitters-0.1.0.tgz", - "integrity": "sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==", + "node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", "license": "MIT", "dependencies": { - "js-tiktoken": "^1.0.12" - }, - "engines": { - "node": ">=18" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" }, "peerDependencies": { - "@langchain/core": ">=0.2.21 <0.4.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", - "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@lit/reactive-element": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.0.tgz", - "integrity": "sha512-L2qyoZSQClcBmq0qajBVbhYEcG6iK0XfLn66ifLe/RfC0/ihpc+pl0Wdn8bJ8o+hj38cG0fGXRgSS20MuXn7qA==", - "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.2.0" + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@marsidev/react-turnstile": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@marsidev/react-turnstile/-/react-turnstile-0.4.1.tgz", - "integrity": "sha512-uZusUW9mPr0csWpls8bApe5iuRK0YK7H1PCKqfM4djW3OA9GB9rU68irjk7xRO8qlHyj0aDTeVu9tTLPExBO4Q==", + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", "license": "MIT", "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@metamask/abi-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-1.2.0.tgz", - "integrity": "sha512-Hf7fnBDM9ptCPDtq/wQffWbw859CdVGMwlpWUEsTH6gLXhXONGrRXHA2piyYPRuia8YYTdJvRC/zSK1/nyLvYg==", - "license": "(Apache-2.0 AND MIT)", - "dependencies": { - "@metamask/utils": "^3.4.1", - "superstruct": "^1.0.3" + "node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">=14.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@metamask/abi-utils/node_modules/@metamask/utils": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-3.6.0.tgz", - "integrity": "sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==", - "license": "ISC", + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.2.tgz", + "integrity": "sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==", + "license": "MIT", "dependencies": { - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "semver": "^7.3.8", - "superstruct": "^1.0.3" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@metamask/eth-json-rpc-provider": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.1.tgz", - "integrity": "sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==", - "peer": true, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", + "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", + "license": "MIT", "dependencies": { - "@metamask/json-rpc-engine": "^7.0.0", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^5.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@metamask/eth-sig-util": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-6.0.2.tgz", - "integrity": "sha512-D6IIefM2vS+4GUGGtezdBbkwUYQC4bCosYx/JteUuF0zfe6lyxR4cruA8+2QHoUg7F7edNH1xymYpqYq1BeOkw==", - "license": "ISC", - "dependencies": { - "@ethereumjs/util": "^8.1.0", - "@metamask/abi-utils": "^1.2.0", - "@metamask/utils": "^5.0.2", - "ethereum-cryptography": "^2.1.2", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">=14.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@metamask/json-rpc-engine": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", - "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", - "license": "ISC", - "peer": true, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", + "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "license": "MIT", "dependencies": { - "@metamask/rpc-errors": "^6.2.1", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" }, - "engines": { - "node": ">=16.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@metamask/json-rpc-engine/node_modules/@metamask/utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.5.0.tgz", - "integrity": "sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==", - "license": "ISC", - "peer": true, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", + "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", + "license": "MIT", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.0.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, - "engines": { - "node": ">=16.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@metamask/rpc-errors": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.4.0.tgz", - "integrity": "sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==", + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", "license": "MIT", - "peer": true, - "dependencies": { - "@metamask/utils": "^9.0.0", - "fast-safe-stringify": "^2.0.6" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">=16.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", - "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", - "license": "ISC", - "peer": true, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "license": "MIT", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.1.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" }, - "engines": { - "node": ">=16.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@metamask/safe-event-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz", - "integrity": "sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==", - "license": "ISC", - "peer": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@metamask/superstruct": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.2.1.tgz", - "integrity": "sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==", + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.2.tgz", + "integrity": "sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==", "license": "MIT", - "peer": true, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@metamask/utils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-5.0.2.tgz", - "integrity": "sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==", - "license": "ISC", "dependencies": { - "@ethereumjs/tx": "^4.1.2", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "semver": "^7.3.8", - "superstruct": "^1.0.3" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.1.tgz", - "integrity": "sha512-CPle1OQehbWqd25La9Ack5B07StKIxh4+Bf19qnpZKJC1oI22Y0czZHbifjw1UoczIfKBwBDAp/dFxvHG13B5A==", - "license": "MIT", - "dependencies": { - "ajv": "^6.12.6", - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.5", - "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", - "express": "^5.0.1", - "express-rate-limit": "^7.5.0", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.24.1" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@motionone/animation": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", - "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", - "license": "MIT", - "dependencies": { - "@motionone/easing": "^10.18.0", - "@motionone/types": "^10.17.1", - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@motionone/dom": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.18.0.tgz", - "integrity": "sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==", + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", "license": "MIT", "dependencies": { - "@motionone/animation": "^10.18.0", - "@motionone/generators": "^10.18.0", - "@motionone/types": "^10.17.1", - "@motionone/utils": "^10.18.0", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@motionone/easing": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", - "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", + "node_modules/@radix-ui/react-label": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", + "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", "license": "MIT", "dependencies": { - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@motionone/generators": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", - "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", + "node_modules/@radix-ui/react-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", + "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", "license": "MIT", "dependencies": { - "@motionone/types": "^10.17.1", - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@motionone/svelte": { - "version": "10.16.4", - "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.4.tgz", - "integrity": "sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==", + "node_modules/@radix-ui/react-menubar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.2.tgz", + "integrity": "sha512-cKmj5Gte7LVyuz+8gXinxZAZECQU+N7aq5pw7kUPpx3xjnDXDbsdzHtCCD2W72bwzy74AvrqdYnKYS42ueskUQ==", "license": "MIT", "dependencies": { - "@motionone/dom": "^10.16.4", - "tslib": "^2.3.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@motionone/types": { - "version": "10.17.1", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", - "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", - "license": "MIT" - }, - "node_modules/@motionone/utils": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", - "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.1.tgz", + "integrity": "sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==", "license": "MIT", "dependencies": { - "@motionone/types": "^10.17.1", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@motionone/vue": { - "version": "10.16.4", - "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.4.tgz", - "integrity": "sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==", - "deprecated": "Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion", + "node_modules/@radix-ui/react-popover": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.2.tgz", + "integrity": "sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==", "license": "MIT", "dependencies": { - "@motionone/dom": "^10.16.4", - "tslib": "^2.3.1" - } - }, - "node_modules/@msgpack/msgpack": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-3.1.2.tgz", - "integrity": "sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==", - "license": "ISC", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@noble/ciphers": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", - "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@noble/curves": { + "node_modules/@radix-ui/react-popper": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.3.2" + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", "license": "MIT", - "engines": { - "node": ">= 16" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@radix-ui/react-portal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", + "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@radix-ui/react-presence": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@privy-io/api-base": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@privy-io/api-base/-/api-base-1.5.2.tgz", - "integrity": "sha512-0eJBoQNmCSsWSWhzEVSU8WqPm7bgeN6VaAmqeXvjk8Ni0jM8nyTYjmRAqiCSs3mRzsnlQVchkGR6lsMTHkHKbw==", "dependencies": { - "zod": "^3.24.3" + "@radix-ui/react-slot": "1.1.0" }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@privy-io/js-sdk-core": { - "version": "0.37.1", - "resolved": "https://registry.npmjs.org/@privy-io/js-sdk-core/-/js-sdk-core-0.37.1.tgz", - "integrity": "sha512-txYMs4CuSDG5NLP0vFGuHYeCOrt7Evu/DS7OC7e+DJ3bdav6BlKARhx7W87YLjsNx+OWURLG9C1JeX/xeXxzSg==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-progress": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.0.tgz", + "integrity": "sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==", + "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/units": "^5.7.0", - "@privy-io/api-base": "^1.4.1", - "@privy-io/public-api": "2.15.10", - "eventemitter3": "^5.0.1", - "fetch-retry": "^5.0.6", - "jose": "^4.15.5", - "js-cookie": "^3.0.5", - "libphonenumber-js": "^1.10.44", - "set-cookie-parser": "^2.6.0", - "uuid": ">=8 <10" + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { - "permissionless": "^0.2.10", - "viem": "^2.21.36" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "permissionless": { + "@types/react": { "optional": true }, - "viem": { + "@types/react-dom": { "optional": true } } }, - "node_modules/@privy-io/js-sdk-core/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/@privy-io/public-api": { - "version": "2.15.10", - "resolved": "https://registry.npmjs.org/@privy-io/public-api/-/public-api-2.15.10.tgz", - "integrity": "sha512-MqD/XmHshFRBzchV6t23/mDla2tDAzANs7nlOidpkTyW4vpnIzUfJAVrEAijM6PpQfDiRY4PA0ul8eRiFXw69A==", - "license": "Apache-2.0", - "dependencies": { - "@privy-io/api-base": "1.4.1", - "bs58": "^5.0.0", - "ethers": "^5.7.2", - "libphonenumber-js": "^1.10.31", - "zod": "^3.22.4" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - } - }, - "node_modules/@privy-io/public-api/node_modules/@privy-io/api-base": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@privy-io/api-base/-/api-base-1.4.1.tgz", - "integrity": "sha512-q98uQGVBIY5SBHjJWL/udpbxM9ISpZl8Lwwjd0p0XHSMJMOgEhS4GLjcO7l3clfNrqL0fAuinQaa+seCaYOzng==", - "dependencies": { - "zod": "^3.21.4" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - } - }, - "node_modules/@privy-io/public-api/node_modules/base-x": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.1.tgz", - "integrity": "sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==", - "license": "MIT" - }, - "node_modules/@privy-io/public-api/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "license": "MIT", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/@privy-io/public-api/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" - } - }, - "node_modules/@privy-io/react-auth": { - "version": "1.99.1", - "resolved": "https://registry.npmjs.org/@privy-io/react-auth/-/react-auth-1.99.1.tgz", - "integrity": "sha512-t95cOpYIfMlfFvBCu8e8HjxPEG8g5B5nYISRa88sxOEbxCYXPpaRkN8VcNB00mJ/SWhyZi+DgNSe/OCUzJ1lsA==", - "license": "Apache-2.0", - "dependencies": { - "@coinbase/wallet-sdk": "4.0.3", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/contracts": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/providers": "^5.7.1", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/units": "^5.7.0", - "@floating-ui/react": "^0.26.22", - "@headlessui/react": "^2.2.0", - "@heroicons/react": "^2.1.1", - "@marsidev/react-turnstile": "^0.4.1", - "@metamask/eth-sig-util": "^6.0.0", - "@privy-io/js-sdk-core": "0.37.1", - "@simplewebauthn/browser": "^9.0.1", - "@solana/wallet-adapter-base": "^0.9.23", - "@solana/wallet-standard-wallet-adapter-base": "^1.1.2", - "@solana/wallet-standard-wallet-adapter-react": "^1.1.2", - "@wallet-standard/app": "^1.0.1", - "@walletconnect/ethereum-provider": "^2.15.1", - "@walletconnect/modal": "^2.6.2", - "base64-js": "^1.5.1", - "dotenv": "^16.0.3", - "encoding": "^0.1.13", - "eventemitter3": "^5.0.1", - "fast-password-entropy": "^1.1.1", - "jose": "^4.15.5", - "js-cookie": "^3.0.5", - "lokijs": "^1.5.12", - "md5": "^2.3.0", - "mipd": "^0.0.7", - "ofetch": "^1.3.4", - "pino-pretty": "^10.0.0", - "qrcode": "^1.5.1", - "react-device-detect": "^2.2.2", - "secure-password-utilities": "^0.2.1", - "styled-components": "^6.1.13", - "stylis": "^4.3.4", - "tinycolor2": "^1.6.0", - "uuid": ">=8 <10", - "viem": "^2.21.9", - "web3-core": "^1.8.0", - "web3-core-helpers": "^1.8.0", - "zustand": "^5.0.0" - }, "peerDependencies": { - "@abstract-foundation/agw-client": "^0.1.0", - "@solana/web3.js": "^1.95.8", - "permissionless": "^0.2.10", - "react": "^18 || ^19", - "react-dom": "^18 || ^19" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "@abstract-foundation/agw-client": { - "optional": true - }, - "@solana/web3.js": { - "optional": true - }, - "permissionless": { + "@types/react": { "optional": true } } }, - "node_modules/@privy-io/react-auth/node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/@privy-io/react-auth/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/@privy-io/wagmi-connector": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@privy-io/wagmi-connector/-/wagmi-connector-0.1.13.tgz", - "integrity": "sha512-dbel4pYvbJM+28m12DE7LvEKzJ8ni/rDkuHpF3RGwkph+HsgDNDxJy4OTgUjaKi6yJsjZ5nvhsZdNNVXbVFKkg==", - "license": "Apache-2.0", - "peerDependencies": { - "@privy-io/react-auth": "^1.33.0", - "react": "^18", - "react-dom": "^18", - "viem": ">=0.3.35", - "wagmi": ">=1.4.12 <2" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause" - }, - "node_modules/@radix-ui/number": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", - "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", - "license": "MIT" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", - "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-accordion": { + "node_modules/@radix-ui/react-radio-group": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.1.tgz", - "integrity": "sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.2.1.tgz", + "integrity": "sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collapsible": "1.1.1", - "@radix-ui/react-collection": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4150,41 +3430,21 @@ } } }, - "node_modules/@radix-ui/react-alert-dialog": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.2.tgz", - "integrity": "sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==", + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dialog": "1.1.2", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", - "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4201,36 +3461,33 @@ } } }, - "node_modules/@radix-ui/react-aspect-ratio": { + "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.0.tgz", - "integrity": "sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.0" - }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/react-avatar": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", - "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz", + "integrity": "sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==", "license": "MIT", "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" @@ -4250,20 +3507,33 @@ } } }, - "node_modules/@radix-ui/react-checkbox": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz", - "integrity": "sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==", + "node_modules/@radix-ui/react-select": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", + "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", "license": "MIT", "dependencies": { + "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" + "@radix-ui/react-visually-hidden": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" }, "peerDependencies": { "@types/react": "*", @@ -4280,20 +3550,13 @@ } } }, - "node_modules/@radix-ui/react-collapsible": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.1.tgz", - "integrity": "sha512-1///SnrfQHJEofLokyczERxQbWfCGQlQ2XsCZMucVs6it+lq9iw4vXy+uDn1edlb58cOZOWSldnfPAYcT4O/Yg==", + "node_modules/@radix-ui/react-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.0.tgz", + "integrity": "sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { "@types/react": "*", @@ -4310,16 +3573,23 @@ } } }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", - "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "node_modules/@radix-ui/react-slider": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.2.1.tgz", + "integrity": "sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==", "license": "MIT", "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0" + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4336,26 +3606,14 @@ } } }, - "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "node_modules/@radix-ui/react-slot": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", - "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", - "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -4366,32 +3624,48 @@ } } }, - "node_modules/@radix-ui/react-context": { + "node_modules/@radix-ui/react-switch": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", - "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.1.tgz", + "integrity": "sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==", "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true + }, + "@types/react-dom": { + "optional": true } } }, - "node_modules/@radix-ui/react-context-menu": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.2.tgz", - "integrity": "sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==", + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", + "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-roving-focus": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { @@ -4409,26 +3683,24 @@ } } }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", - "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", + "node_modules/@radix-ui/react-toast": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.2.tgz", + "integrity": "sha512-Z6pqSzmAP/bFJoqMAston4eSNa+ud44NSZTiZUmUen+IOZ5nBY8kzuU5WDBVyFXPtcW6yUalOHsxM/BP6Sv8ww==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", "@radix-ui/react-portal": "1.1.2", "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4445,32 +3717,15 @@ } } }, - "node_modules/@radix-ui/react-direction": { + "node_modules/@radix-ui/react-toggle": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", - "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", - "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.0.tgz", + "integrity": "sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.0" + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4487,18 +3742,18 @@ } } }, - "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", - "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.0.tgz", + "integrity": "sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-toggle": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { @@ -4516,10 +3771,10 @@ } } }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", - "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -4531,46 +3786,23 @@ } } }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", - "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", - "license": "MIT", + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.4.tgz", + "integrity": "sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-hover-card": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.2.tgz", - "integrity": "sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", + "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.0", "@radix-ui/react-portal": "1.1.2", "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4587,14 +3819,11 @@ } } }, - "node_modules/@radix-ui/react-id": { + "node_modules/@radix-ui/react-use-callback-ref": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" - }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -4605,211 +3834,98 @@ } } }, - "node_modules/@radix-ui/react-label": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", - "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-menu": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", - "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/react-menubar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.2.tgz", - "integrity": "sha512-cKmj5Gte7LVyuz+8gXinxZAZECQU+N7aq5pw7kUPpx3xjnDXDbsdzHtCCD2W72bwzy74AvrqdYnKYS42ueskUQ==", + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.2", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/react-navigation-menu": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.1.tgz", - "integrity": "sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==", + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0" - }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/react-popover": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.2.tgz", - "integrity": "sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==", + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" - }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/react-popper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", - "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", "license": "MIT", "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-rect": "1.1.0", - "@radix-ui/react-use-size": "1.1.0", "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { + "node_modules/@radix-ui/react-use-size": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -4820,14 +3936,13 @@ } } }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", - "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { "@types/react": "*", @@ -4844,1205 +3959,1169 @@ } } }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", - "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", - "license": "MIT", + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@react-aria/focus": { + "version": "3.20.5", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.5.tgz", + "integrity": "sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@react-aria/interactions": "^3.25.3", + "@react-aria/utils": "^3.29.1", + "@react-types/shared": "^3.30.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", - "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", - "license": "MIT", + "node_modules/@react-aria/interactions": { + "version": "3.25.3", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.3.tgz", + "integrity": "sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/react-slot": "1.1.0" + "@react-aria/ssr": "^3.9.9", + "@react-aria/utils": "^3.29.1", + "@react-stately/flags": "^3.1.2", + "@react-types/shared": "^3.30.0", + "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, - "node_modules/@radix-ui/react-progress": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.0.tgz", - "integrity": "sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==", - "license": "MIT", + "node_modules/@react-aria/ssr": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.9.tgz", + "integrity": "sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0" + "@swc/helpers": "^0.5.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">= 12" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "license": "MIT", "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, - "node_modules/@radix-ui/react-radio-group": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.2.1.tgz", - "integrity": "sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==", - "license": "MIT", + "node_modules/@react-aria/utils": { + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.1.tgz", + "integrity": "sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" + "@react-aria/ssr": "^3.9.9", + "@react-stately/flags": "^3.1.2", + "@react-stately/utils": "^3.10.7", + "@react-types/shared": "^3.30.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", - "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", - "license": "MIT", + "node_modules/@react-stately/flags": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz", + "integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.7.tgz", + "integrity": "sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, - "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "license": "MIT", + "node_modules/@react-types/shared": { + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.30.0.tgz", + "integrity": "sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==", + "license": "Apache-2.0", "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, - "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz", - "integrity": "sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==", + "node_modules/@remix-run/router": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", + "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@reown/appkit": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.7.8.tgz", + "integrity": "sha512-51kTleozhA618T1UvMghkhKfaPcc9JlKwLJ5uV+riHyvSoWPKPRIa5A6M1Wano5puNyW0s3fwywhyqTHSilkaA==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "@reown/appkit-common": "1.7.8", + "@reown/appkit-controllers": "1.7.8", + "@reown/appkit-pay": "1.7.8", + "@reown/appkit-polyfills": "1.7.8", + "@reown/appkit-scaffold-ui": "1.7.8", + "@reown/appkit-ui": "1.7.8", + "@reown/appkit-utils": "1.7.8", + "@reown/appkit-wallet": "1.7.8", + "@walletconnect/types": "2.21.0", + "@walletconnect/universal-provider": "2.21.0", + "bs58": "6.0.0", + "valtio": "1.13.2", + "viem": ">=2.29.0" } }, - "node_modules/@radix-ui/react-select": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", - "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", - "license": "MIT", + "node_modules/@reown/appkit-common": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.7.8.tgz", + "integrity": "sha512-ridIhc/x6JOp7KbDdwGKY4zwf8/iK8EYBl+HtWrruutSLwZyVi5P8WaZa+8iajL6LcDcDF7LoyLwMTym7SRuwQ==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "big.js": "6.2.2", + "dayjs": "1.11.13", + "viem": ">=2.29.0" } }, - "node_modules/@radix-ui/react-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.0.tgz", - "integrity": "sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA==", - "license": "MIT", + "node_modules/@reown/appkit-controllers": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.7.8.tgz", + "integrity": "sha512-IdXlJlivrlj6m63VsGLsjtPHHsTWvKGVzWIP1fXZHVqmK+rZCBDjCi9j267Rb9/nYRGHWBtlFQhO8dK35WfeDA==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "@reown/appkit-common": "1.7.8", + "@reown/appkit-wallet": "1.7.8", + "@walletconnect/universal-provider": "2.21.0", + "valtio": "1.13.2", + "viem": ">=2.29.0" } }, - "node_modules/@radix-ui/react-slider": { + "node_modules/@reown/appkit-controllers/node_modules/@noble/ciphers": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.2.1.tgz", - "integrity": "sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.1.tgz", + "integrity": "sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==", "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": "^14.21.3 || >=16" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@radix-ui/react-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", - "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "node_modules/@reown/appkit-controllers/node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0" + "@noble/hashes": "1.7.1" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": "^14.21.3 || >=16" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@radix-ui/react-switch": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.1.tgz", - "integrity": "sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==", + "node_modules/@reown/appkit-controllers/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" + "engines": { + "node": "^14.21.3 || >=16" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit-controllers/node_modules/@scure/bip32": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", - "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", + "node_modules/@reown/appkit-controllers/node_modules/@scure/bip39": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/core": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.0.tgz", + "integrity": "sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "1.0.16", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.0", + "@walletconnect/utils": "2.21.0", + "@walletconnect/window-getters": "1.0.1", + "es-toolkit": "1.33.0", + "events": "3.3.0", + "uint8arrays": "3.1.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=18" } }, - "node_modules/@radix-ui/react-toast": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.2.tgz", - "integrity": "sha512-Z6pqSzmAP/bFJoqMAston4eSNa+ud44NSZTiZUmUen+IOZ5nBY8kzuU5WDBVyFXPtcW6yUalOHsxM/BP6Sv8ww==", + "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0" + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@react-native-async-storage/async-storage": "1.x" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "@react-native-async-storage/async-storage": { "optional": true } } }, - "node_modules/@radix-ui/react-toggle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.0.tgz", - "integrity": "sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==", - "license": "MIT", + "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/sign-client": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.0.tgz", + "integrity": "sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "@walletconnect/core": "2.21.0", + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "2.1.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.0", + "@walletconnect/utils": "2.21.0", + "events": "3.3.0" } }, - "node_modules/@radix-ui/react-toggle-group": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.0.tgz", - "integrity": "sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==", - "license": "MIT", + "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/types": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.0.tgz", + "integrity": "sha512-ll+9upzqt95ZBWcfkOszXZkfnpbJJ2CmxMfGgE5GmhdxxxCcO5bGhXkI+x8OpiS555RJ/v/sXJYMSOLkmu4fFw==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-toggle": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "events": "3.3.0" } }, - "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/universal-provider": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.0.tgz", + "integrity": "sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/jsonrpc-http-connection": "1.0.8", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/sign-client": "2.21.0", + "@walletconnect/types": "2.21.0", + "@walletconnect/utils": "2.21.0", + "es-toolkit": "1.33.0", + "events": "3.3.0" + } + }, + "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/utils": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.0.tgz", + "integrity": "sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==", + "license": "Apache-2.0", + "dependencies": { + "@noble/ciphers": "1.2.1", + "@noble/curves": "1.8.1", + "@noble/hashes": "1.7.1", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.0", + "@walletconnect/window-getters": "1.0.1", + "@walletconnect/window-metadata": "1.0.1", + "bs58": "6.0.0", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "3.1.0", + "viem": "2.23.2" + } + }, + "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/utils/node_modules/viem": { + "version": "2.23.2", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.2.tgz", + "integrity": "sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], "license": "MIT", + "dependencies": { + "@noble/curves": "1.8.1", + "@noble/hashes": "1.7.1", + "@scure/bip32": "1.6.2", + "@scure/bip39": "1.5.4", + "abitype": "1.0.8", + "isows": "1.0.6", + "ox": "0.6.7", + "ws": "8.18.0" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "typescript": ">=5.0.4" }, "peerDependenciesMeta": { - "@types/react": { + "typescript": { "optional": true } } }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.4.tgz", - "integrity": "sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==", + "node_modules/@reown/appkit-controllers/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0" + "readdirp": "^4.0.1" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">= 14.16.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "node_modules/@reown/appkit-controllers/node_modules/es-toolkit": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.33.0.tgz", + "integrity": "sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg==", "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/@reown/appkit-controllers/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/@reown/appkit-controllers/node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" } }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "node_modules/@reown/appkit-controllers/node_modules/ox": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", + "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], "license": "MIT", "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" + "@adraffy/ens-normalize": "^1.10.1", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@scure/bip32": "^1.5.0", + "@scure/bip39": "^1.4.0", + "abitype": "^1.0.6", + "eventemitter3": "5.0.1" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "typescript": ">=5.4.0" }, "peerDependenciesMeta": { - "@types/react": { + "typescript": { "optional": true } } }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "node_modules/@reown/appkit-controllers/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", - "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">= 14.18.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", - "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "node_modules/@reown/appkit-controllers/node_modules/uint8arrays": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", + "integrity": "sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==", "license": "MIT", "dependencies": { - "@radix-ui/rect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "multiformats": "^9.4.2" } }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", - "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "node_modules/@reown/appkit-controllers/node_modules/unstorage": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", + "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", "license": "MIT", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.2", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" }, "peerDependenciesMeta": { - "@types/react": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { "optional": true } } }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", - "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "node_modules/@reown/appkit-controllers/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "engines": { + "node": ">=10.0.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "@types/react": { + "bufferutil": { "optional": true }, - "@types/react-dom": { + "utf-8-validate": { "optional": true } } }, - "node_modules/@radix-ui/rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", - "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", - "license": "MIT" - }, - "node_modules/@react-aria/focus": { - "version": "3.20.5", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.5.tgz", - "integrity": "sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==", + "node_modules/@reown/appkit-pay": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.7.8.tgz", + "integrity": "sha512-OSGQ+QJkXx0FEEjlpQqIhT8zGJKOoHzVnyy/0QFrl3WrQTjCzg0L6+i91Ad5Iy1zb6V5JjqtfIFpRVRWN4M3pw==", "license": "Apache-2.0", "dependencies": { - "@react-aria/interactions": "^3.25.3", - "@react-aria/utils": "^3.29.1", - "@react-types/shared": "^3.30.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "@reown/appkit-common": "1.7.8", + "@reown/appkit-controllers": "1.7.8", + "@reown/appkit-ui": "1.7.8", + "@reown/appkit-utils": "1.7.8", + "lit": "3.3.0", + "valtio": "1.13.2" } }, - "node_modules/@react-aria/interactions": { - "version": "3.25.3", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.3.tgz", - "integrity": "sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==", + "node_modules/@reown/appkit-polyfills": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.8.tgz", + "integrity": "sha512-W/kq786dcHHAuJ3IV2prRLEgD/2iOey4ueMHf1sIFjhhCGMynMkhsOhQMUH0tzodPqUgAC494z4bpIDYjwWXaA==", "license": "Apache-2.0", "dependencies": { - "@react-aria/ssr": "^3.9.9", - "@react-aria/utils": "^3.29.1", - "@react-stately/flags": "^3.1.2", - "@react-types/shared": "^3.30.0", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "buffer": "6.0.3" } }, - "node_modules/@react-aria/ssr": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.9.tgz", - "integrity": "sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==", + "node_modules/@reown/appkit-scaffold-ui": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.7.8.tgz", + "integrity": "sha512-RCeHhAwOrIgcvHwYlNWMcIDibdI91waaoEYBGw71inE0kDB8uZbE7tE6DAXJmDkvl0qPh+DqlC4QbJLF1FVYdQ==", "license": "Apache-2.0", "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "@reown/appkit-common": "1.7.8", + "@reown/appkit-controllers": "1.7.8", + "@reown/appkit-ui": "1.7.8", + "@reown/appkit-utils": "1.7.8", + "@reown/appkit-wallet": "1.7.8", + "lit": "3.3.0" } }, - "node_modules/@react-aria/utils": { - "version": "3.29.1", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.1.tgz", - "integrity": "sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==", + "node_modules/@reown/appkit-ui": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.8.tgz", + "integrity": "sha512-1hjCKjf6FLMFzrulhl0Y9Vb9Fu4royE+SXCPSWh4VhZhWqlzUFc7kutnZKx8XZFVQH4pbBvY62SpRC93gqoHow==", "license": "Apache-2.0", "dependencies": { - "@react-aria/ssr": "^3.9.9", - "@react-stately/flags": "^3.1.2", - "@react-stately/utils": "^3.10.7", - "@react-types/shared": "^3.30.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "@reown/appkit-common": "1.7.8", + "@reown/appkit-controllers": "1.7.8", + "@reown/appkit-wallet": "1.7.8", + "lit": "3.3.0", + "qrcode": "1.5.3" } }, - "node_modules/@react-native/assets-registry": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.80.2.tgz", - "integrity": "sha512-+sI2zIM22amhkZqW+RpD3qDoopeRiezrTtZMP+Y3HI+6/2JbEq7DdyV/2YS1lrSSdyy3STW2V37Lt4dKqP0lEQ==", + "node_modules/@reown/appkit-ui/node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", "license": "MIT", - "peer": true, + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, "engines": { - "node": ">=18" + "node": ">=10.13.0" } }, - "node_modules/@react-native/codegen": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.80.2.tgz", - "integrity": "sha512-eYad9ex9/RS6oFbbpu6LxsczktbhfJbJlTvtRlcWLJjJbFTeNr5Q7CgBT2/m5VtpxnJ/0YdmZ9vdazsJ2yp9kw==", - "license": "MIT", - "peer": true, + "node_modules/@reown/appkit-utils": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.8.tgz", + "integrity": "sha512-8X7UvmE8GiaoitCwNoB86pttHgQtzy4ryHZM9kQpvjQ0ULpiER44t1qpVLXNM4X35O0v18W0Dk60DnYRMH2WRw==", + "license": "Apache-2.0", "dependencies": { - "glob": "^7.1.1", - "hermes-parser": "0.28.1", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">=18" + "@reown/appkit-common": "1.7.8", + "@reown/appkit-controllers": "1.7.8", + "@reown/appkit-polyfills": "1.7.8", + "@reown/appkit-wallet": "1.7.8", + "@walletconnect/logger": "2.1.2", + "@walletconnect/universal-provider": "2.21.0", + "valtio": "1.13.2", + "viem": ">=2.29.0" }, "peerDependencies": { - "@babel/core": "*" + "valtio": "1.13.2" } }, - "node_modules/@react-native/codegen/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@reown/appkit-utils/node_modules/@noble/ciphers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.1.tgz", + "integrity": "sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==", "license": "MIT", - "peer": true, "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native/codegen/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "node": "^14.21.3 || >=16" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@react-native/codegen/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/@reown/appkit-utils/node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", "license": "MIT", - "peer": true - }, - "node_modules/@react-native/codegen/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "peer": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@noble/hashes": "1.7.1" }, "engines": { - "node": "*" + "node": "^14.21.3 || >=16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@react-native/codegen/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@reown/appkit-utils/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "license": "MIT", - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@react-native/codegen/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/@reown/appkit-utils/node_modules/@scure/bip32": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", "license": "MIT", - "peer": true, "dependencies": { - "ansi-regex": "^5.0.1" + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@react-native/codegen/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/@reown/appkit-utils/node_modules/@scure/bip39": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", "license": "MIT", - "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@react-native/codegen/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "peer": true, - "engines": { - "node": ">=10" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@react-native/codegen/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", - "peer": true, + "node_modules/@reown/appkit-utils/node_modules/@walletconnect/core": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.0.tgz", + "integrity": "sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw==", + "license": "Apache-2.0", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "1.0.16", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.0", + "@walletconnect/utils": "2.21.0", + "@walletconnect/window-getters": "1.0.1", + "es-toolkit": "1.33.0", + "events": "3.3.0", + "uint8arrays": "3.1.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@react-native/codegen/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "peer": true, - "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@react-native/community-cli-plugin": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.80.2.tgz", - "integrity": "sha512-UBjsE+lv1YtThs56mgFaUdWv0jNE1oO58Lkbf3dn47F0e7YiTubIcvP6AnlaMhZF2Pmt9ky8J1jTpgItO9tGeg==", + "node_modules/@reown/appkit-utils/node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", "license": "MIT", - "peer": true, "dependencies": { - "@react-native/dev-middleware": "0.80.2", - "chalk": "^4.0.0", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "metro": "^0.82.2", - "metro-config": "^0.82.2", - "metro-core": "^0.82.2", - "semver": "^7.1.3" - }, - "engines": { - "node": ">=18" + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" }, "peerDependencies": { - "@react-native-community/cli": "*" + "@react-native-async-storage/async-storage": "1.x" }, "peerDependenciesMeta": { - "@react-native-community/cli": { + "@react-native-async-storage/async-storage": { "optional": true } } }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.80.2.tgz", - "integrity": "sha512-n3D88bqNk0bY+YjNxbM6giqva06xj+rgEfu91Pg+nJ0szSL2eLl7ULERJqI3hxFt0XGuTpTOxZgw/Po5maXa4g==", - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/dev-middleware": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.80.2.tgz", - "integrity": "sha512-8OeBEZNiApdbZaqTrrzeyFwXn/JwgJox7jdtjVAH56DggTVJXdbnyUjQ4ts6XAacEQgpFOAskoO730eyafOkAA==", - "license": "MIT", - "peer": true, + "node_modules/@reown/appkit-utils/node_modules/@walletconnect/sign-client": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.0.tgz", + "integrity": "sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==", + "license": "Apache-2.0", "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.80.2", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^6.2.3" - }, - "engines": { - "node": ">=18" + "@walletconnect/core": "2.21.0", + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "2.1.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.0", + "@walletconnect/utils": "2.21.0", + "events": "3.3.0" } }, - "node_modules/@react-native/dev-middleware/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" + "node_modules/@reown/appkit-utils/node_modules/@walletconnect/types": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.0.tgz", + "integrity": "sha512-ll+9upzqt95ZBWcfkOszXZkfnpbJJ2CmxMfGgE5GmhdxxxCcO5bGhXkI+x8OpiS555RJ/v/sXJYMSOLkmu4fFw==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "events": "3.3.0" } }, - "node_modules/@react-native/dev-middleware/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", - "peer": true, + "node_modules/@reown/appkit-utils/node_modules/@walletconnect/universal-provider": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.0.tgz", + "integrity": "sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==", + "license": "Apache-2.0", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" + "@walletconnect/events": "1.0.1", + "@walletconnect/jsonrpc-http-connection": "1.0.8", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/sign-client": "2.21.0", + "@walletconnect/types": "2.21.0", + "@walletconnect/utils": "2.21.0", + "es-toolkit": "1.33.0", + "events": "3.3.0" } }, - "node_modules/@react-native/dev-middleware/node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "peer": true, + "node_modules/@reown/appkit-utils/node_modules/@walletconnect/utils": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.0.tgz", + "integrity": "sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==", + "license": "Apache-2.0", "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT", - "peer": true - }, - "node_modules/@react-native/dev-middleware/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.8" + "@noble/ciphers": "1.2.1", + "@noble/curves": "1.8.1", + "@noble/hashes": "1.7.1", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.0", + "@walletconnect/window-getters": "1.0.1", + "@walletconnect/window-metadata": "1.0.1", + "bs58": "6.0.0", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "3.1.0", + "viem": "2.23.2" } }, - "node_modules/@react-native/dev-middleware/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "node_modules/@reown/appkit-utils/node_modules/@walletconnect/utils/node_modules/viem": { + "version": "2.23.2", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.2.tgz", + "integrity": "sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], "license": "MIT", - "peer": true, "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "@noble/curves": "1.8.1", + "@noble/hashes": "1.7.1", + "@scure/bip32": "1.6.2", + "@scure/bip39": "1.5.4", + "abitype": "1.0.8", + "isows": "1.0.6", + "ox": "0.6.7", + "ws": "8.18.0" }, - "engines": { - "node": ">= 0.8.0" + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@react-native/dev-middleware/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/@reown/appkit-utils/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", - "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, "engines": { - "node": ">= 0.8" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "node_modules/@reown/appkit-utils/node_modules/es-toolkit": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.33.0.tgz", + "integrity": "sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg==", "license": "MIT", - "peer": true, - "dependencies": { - "async-limiter": "~1.0.0" - } + "workspaces": [ + "docs", + "benchmarks" + ] }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.80.2.tgz", - "integrity": "sha512-C5/FYbIfCXPFjF/hIcWFKC9rEadDDhPMbxE7tarGR9tmYKyb9o7fYvfNe8fFgbCRKelMHP0ShATz3T73pHHDfA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - } + "node_modules/@reown/appkit-utils/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" }, - "node_modules/@react-native/js-polyfills": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.80.2.tgz", - "integrity": "sha512-f63M3paxHK92p6L9o+AY7hV/YojCZAhb+fdDpSfOtDtCngWbBhd6foJrO6IybzDFERxlwErupUg3pqr5w3KJWw==", + "node_modules/@reown/appkit-utils/node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" + "peerDependencies": { + "ws": "*" } }, - "node_modules/@react-native/normalize-colors": { - "version": "0.80.2", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.80.2.tgz", - "integrity": "sha512-08Ax7554Z31NXi5SQ6h1GsiSrlZEOYHQNSC7u+x91Tdiq87IXldW8Ib1N3ThXoDcD8bjr+I+MdlabEJw36/fFg==", + "node_modules/@reown/appkit-utils/node_modules/ox": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", + "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], "license": "MIT", - "peer": true - }, - "node_modules/@react-stately/flags": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz", - "integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - } - }, - "node_modules/@react-stately/utils": { - "version": "3.10.7", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.7.tgz", - "integrity": "sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==", - "license": "Apache-2.0", "dependencies": { - "@swc/helpers": "^0.5.0" + "@adraffy/ens-normalize": "^1.10.1", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@scure/bip32": "^1.5.0", + "@scure/bip39": "^1.4.0", + "abitype": "^1.0.6", + "eventemitter3": "5.0.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-types/shared": { - "version": "3.30.0", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.30.0.tgz", - "integrity": "sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==", - "license": "Apache-2.0", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@remix-run/router": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", - "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@reown/appkit": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.7.8.tgz", - "integrity": "sha512-51kTleozhA618T1UvMghkhKfaPcc9JlKwLJ5uV+riHyvSoWPKPRIa5A6M1Wano5puNyW0s3fwywhyqTHSilkaA==", - "license": "Apache-2.0", - "dependencies": { - "@reown/appkit-common": "1.7.8", - "@reown/appkit-controllers": "1.7.8", - "@reown/appkit-pay": "1.7.8", - "@reown/appkit-polyfills": "1.7.8", - "@reown/appkit-scaffold-ui": "1.7.8", - "@reown/appkit-ui": "1.7.8", - "@reown/appkit-utils": "1.7.8", - "@reown/appkit-wallet": "1.7.8", - "@walletconnect/types": "2.21.0", - "@walletconnect/universal-provider": "2.21.0", - "bs58": "6.0.0", - "valtio": "1.13.2", - "viem": ">=2.29.0" - } - }, - "node_modules/@reown/appkit-common": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.7.8.tgz", - "integrity": "sha512-ridIhc/x6JOp7KbDdwGKY4zwf8/iK8EYBl+HtWrruutSLwZyVi5P8WaZa+8iajL6LcDcDF7LoyLwMTym7SRuwQ==", - "license": "Apache-2.0", - "dependencies": { - "big.js": "6.2.2", - "dayjs": "1.11.13", - "viem": ">=2.29.0" - } - }, - "node_modules/@reown/appkit-controllers": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.7.8.tgz", - "integrity": "sha512-IdXlJlivrlj6m63VsGLsjtPHHsTWvKGVzWIP1fXZHVqmK+rZCBDjCi9j267Rb9/nYRGHWBtlFQhO8dK35WfeDA==", - "license": "Apache-2.0", - "dependencies": { - "@reown/appkit-common": "1.7.8", - "@reown/appkit-wallet": "1.7.8", - "@walletconnect/universal-provider": "2.21.0", - "valtio": "1.13.2", - "viem": ">=2.29.0" + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@reown/appkit-controllers/node_modules/@noble/ciphers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.1.tgz", - "integrity": "sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==", + "node_modules/@reown/appkit-utils/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", "engines": { - "node": "^14.21.3 || >=16" + "node": ">= 14.18.0" }, "funding": { + "type": "individual", "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-controllers/node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "node_modules/@reown/appkit-utils/node_modules/uint8arrays": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", + "integrity": "sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.7.1" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "multiformats": "^9.4.2" } }, - "node_modules/@reown/appkit-controllers/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@reown/appkit-utils/node_modules/unstorage": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", + "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.2", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-utils/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-wallet": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.7.8.tgz", + "integrity": "sha512-kspz32EwHIOT/eg/ZQbFPxgXq0B/olDOj3YMu7gvLEFz4xyOFd/wgzxxAXkp5LbG4Cp++s/elh79rVNmVFdB9A==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.8", + "@reown/appkit-polyfills": "1.7.8", + "@walletconnect/logger": "2.1.2", + "zod": "3.22.4" + } + }, + "node_modules/@reown/appkit-wallet/node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@reown/appkit/node_modules/@noble/ciphers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.1.tgz", + "integrity": "sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-controllers/node_modules/@scure/bip32": { + "node_modules/@reown/appkit/node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit/node_modules/@scure/bip32": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", @@ -6056,7 +5135,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-controllers/node_modules/@scure/bip39": { + "node_modules/@reown/appkit/node_modules/@scure/bip39": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", @@ -6069,7 +5148,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/core": { + "node_modules/@reown/appkit/node_modules/@walletconnect/core": { "version": "2.21.0", "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.0.tgz", "integrity": "sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw==", @@ -6097,7 +5176,7 @@ "node": ">=18" } }, - "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/keyvaluestorage": { + "node_modules/@reown/appkit/node_modules/@walletconnect/keyvaluestorage": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", @@ -6116,7 +5195,7 @@ } } }, - "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/sign-client": { + "node_modules/@reown/appkit/node_modules/@walletconnect/sign-client": { "version": "2.21.0", "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.0.tgz", "integrity": "sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==", @@ -6133,7 +5212,7 @@ "events": "3.3.0" } }, - "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/types": { + "node_modules/@reown/appkit/node_modules/@walletconnect/types": { "version": "2.21.0", "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.0.tgz", "integrity": "sha512-ll+9upzqt95ZBWcfkOszXZkfnpbJJ2CmxMfGgE5GmhdxxxCcO5bGhXkI+x8OpiS555RJ/v/sXJYMSOLkmu4fFw==", @@ -6147,7 +5226,7 @@ "events": "3.3.0" } }, - "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/universal-provider": { + "node_modules/@reown/appkit/node_modules/@walletconnect/universal-provider": { "version": "2.21.0", "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.0.tgz", "integrity": "sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==", @@ -6167,7 +5246,7 @@ "events": "3.3.0" } }, - "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/utils": { + "node_modules/@reown/appkit/node_modules/@walletconnect/utils": { "version": "2.21.0", "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.0.tgz", "integrity": "sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==", @@ -6192,7 +5271,7 @@ "viem": "2.23.2" } }, - "node_modules/@reown/appkit-controllers/node_modules/@walletconnect/utils/node_modules/viem": { + "node_modules/@reown/appkit/node_modules/@walletconnect/utils/node_modules/viem": { "version": "2.23.2", "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.2.tgz", "integrity": "sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA==", @@ -6222,7 +5301,7 @@ } } }, - "node_modules/@reown/appkit-controllers/node_modules/chokidar": { + "node_modules/@reown/appkit/node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", @@ -6237,7 +5316,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-controllers/node_modules/es-toolkit": { + "node_modules/@reown/appkit/node_modules/es-toolkit": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.33.0.tgz", "integrity": "sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg==", @@ -6247,13 +5326,13 @@ "benchmarks" ] }, - "node_modules/@reown/appkit-controllers/node_modules/eventemitter3": { + "node_modules/@reown/appkit/node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, - "node_modules/@reown/appkit-controllers/node_modules/isows": { + "node_modules/@reown/appkit/node_modules/isows": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", @@ -6268,7 +5347,7 @@ "ws": "*" } }, - "node_modules/@reown/appkit-controllers/node_modules/ox": { + "node_modules/@reown/appkit/node_modules/ox": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", @@ -6297,7 +5376,7 @@ } } }, - "node_modules/@reown/appkit-controllers/node_modules/readdirp": { + "node_modules/@reown/appkit/node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", @@ -6310,7 +5389,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-controllers/node_modules/uint8arrays": { + "node_modules/@reown/appkit/node_modules/uint8arrays": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", "integrity": "sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==", @@ -6319,7 +5398,7 @@ "multiformats": "^9.4.2" } }, - "node_modules/@reown/appkit-controllers/node_modules/unstorage": { + "node_modules/@reown/appkit/node_modules/unstorage": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", @@ -6411,7 +5490,7 @@ } } }, - "node_modules/@reown/appkit-controllers/node_modules/ws": { + "node_modules/@reown/appkit/node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", @@ -6432,3438 +5511,393 @@ } } }, - "node_modules/@reown/appkit-pay": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.7.8.tgz", - "integrity": "sha512-OSGQ+QJkXx0FEEjlpQqIhT8zGJKOoHzVnyy/0QFrl3WrQTjCzg0L6+i91Ad5Iy1zb6V5JjqtfIFpRVRWN4M3pw==", - "license": "Apache-2.0", - "dependencies": { - "@reown/appkit-common": "1.7.8", - "@reown/appkit-controllers": "1.7.8", - "@reown/appkit-ui": "1.7.8", - "@reown/appkit-utils": "1.7.8", - "lit": "3.3.0", - "valtio": "1.13.2" - } + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@reown/appkit-polyfills": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.8.tgz", - "integrity": "sha512-W/kq786dcHHAuJ3IV2prRLEgD/2iOey4ueMHf1sIFjhhCGMynMkhsOhQMUH0tzodPqUgAC494z4bpIDYjwWXaA==", - "license": "Apache-2.0", - "dependencies": { - "buffer": "6.0.3" - } + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@reown/appkit-scaffold-ui": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.7.8.tgz", - "integrity": "sha512-RCeHhAwOrIgcvHwYlNWMcIDibdI91waaoEYBGw71inE0kDB8uZbE7tE6DAXJmDkvl0qPh+DqlC4QbJLF1FVYdQ==", - "license": "Apache-2.0", - "dependencies": { - "@reown/appkit-common": "1.7.8", - "@reown/appkit-controllers": "1.7.8", - "@reown/appkit-ui": "1.7.8", - "@reown/appkit-utils": "1.7.8", - "@reown/appkit-wallet": "1.7.8", - "lit": "3.3.0" - } - }, - "node_modules/@reown/appkit-ui": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.8.tgz", - "integrity": "sha512-1hjCKjf6FLMFzrulhl0Y9Vb9Fu4royE+SXCPSWh4VhZhWqlzUFc7kutnZKx8XZFVQH4pbBvY62SpRC93gqoHow==", - "license": "Apache-2.0", - "dependencies": { - "@reown/appkit-common": "1.7.8", - "@reown/appkit-controllers": "1.7.8", - "@reown/appkit-wallet": "1.7.8", - "lit": "3.3.0", - "qrcode": "1.5.3" - } - }, - "node_modules/@reown/appkit-ui/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@reown/appkit-utils": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.8.tgz", - "integrity": "sha512-8X7UvmE8GiaoitCwNoB86pttHgQtzy4ryHZM9kQpvjQ0ULpiER44t1qpVLXNM4X35O0v18W0Dk60DnYRMH2WRw==", - "license": "Apache-2.0", - "dependencies": { - "@reown/appkit-common": "1.7.8", - "@reown/appkit-controllers": "1.7.8", - "@reown/appkit-polyfills": "1.7.8", - "@reown/appkit-wallet": "1.7.8", - "@walletconnect/logger": "2.1.2", - "@walletconnect/universal-provider": "2.21.0", - "valtio": "1.13.2", - "viem": ">=2.29.0" - }, - "peerDependencies": { - "valtio": "1.13.2" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@reown/appkit-utils/node_modules/@noble/ciphers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.1.tgz", - "integrity": "sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@reown/appkit-utils/node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.1" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@reown/appkit-utils/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@reown/appkit-utils/node_modules/@scure/bip32": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", - "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@noble/curves": "~1.8.1", - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@reown/appkit-utils/node_modules/@scure/bip39": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", - "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@reown/appkit-utils/node_modules/@walletconnect/core": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.0.tgz", - "integrity": "sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/jsonrpc-ws-connection": "1.0.16", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.0", - "@walletconnect/utils": "2.21.0", - "@walletconnect/window-getters": "1.0.1", - "es-toolkit": "1.33.0", - "events": "3.3.0", - "uint8arrays": "3.1.0" - }, - "engines": { - "node": ">=18" - } + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@reown/appkit-utils/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "cpu": [ + "riscv64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@reown/appkit-utils/node_modules/@walletconnect/sign-client": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.0.tgz", - "integrity": "sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/core": "2.21.0", - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/logger": "2.1.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.0", - "@walletconnect/utils": "2.21.0", - "events": "3.3.0" - } - }, - "node_modules/@reown/appkit-utils/node_modules/@walletconnect/types": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.0.tgz", - "integrity": "sha512-ll+9upzqt95ZBWcfkOszXZkfnpbJJ2CmxMfGgE5GmhdxxxCcO5bGhXkI+x8OpiS555RJ/v/sXJYMSOLkmu4fFw==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "events": "3.3.0" - } - }, - "node_modules/@reown/appkit-utils/node_modules/@walletconnect/universal-provider": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.0.tgz", - "integrity": "sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/jsonrpc-http-connection": "1.0.8", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "@walletconnect/sign-client": "2.21.0", - "@walletconnect/types": "2.21.0", - "@walletconnect/utils": "2.21.0", - "es-toolkit": "1.33.0", - "events": "3.3.0" - } - }, - "node_modules/@reown/appkit-utils/node_modules/@walletconnect/utils": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.0.tgz", - "integrity": "sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==", - "license": "Apache-2.0", - "dependencies": { - "@noble/ciphers": "1.2.1", - "@noble/curves": "1.8.1", - "@noble/hashes": "1.7.1", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.0", - "@walletconnect/window-getters": "1.0.1", - "@walletconnect/window-metadata": "1.0.1", - "bs58": "6.0.0", - "detect-browser": "5.3.0", - "query-string": "7.1.3", - "uint8arrays": "3.1.0", - "viem": "2.23.2" - } - }, - "node_modules/@reown/appkit-utils/node_modules/@walletconnect/utils/node_modules/viem": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.2.tgz", - "integrity": "sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "cpu": [ + "s390x" ], + "dev": true, "license": "MIT", - "dependencies": { - "@noble/curves": "1.8.1", - "@noble/hashes": "1.7.1", - "@scure/bip32": "1.6.2", - "@scure/bip39": "1.5.4", - "abitype": "1.0.8", - "isows": "1.0.6", - "ox": "0.6.7", - "ws": "8.18.0" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-utils/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit-utils/node_modules/es-toolkit": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.33.0.tgz", - "integrity": "sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg==", - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks" + "optional": true, + "os": [ + "linux" ] }, - "node_modules/@reown/appkit-utils/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/@reown/appkit-utils/node_modules/isows": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", - "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "cpu": [ + "x64" ], + "dev": true, "license": "MIT", - "peerDependencies": { - "ws": "*" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@reown/appkit-utils/node_modules/ox": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", - "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "cpu": [ + "x64" ], + "dev": true, "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", - "eventemitter3": "5.0.1" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-utils/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit-utils/node_modules/uint8arrays": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", - "integrity": "sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@reown/appkit-utils/node_modules/unstorage": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", - "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", - "license": "MIT", - "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^4.0.3", - "destr": "^2.0.5", - "h3": "^1.15.2", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", - "ofetch": "^1.4.1", - "ufo": "^1.6.1" - }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3 || ^7.0.0", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" - }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-utils/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-wallet": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.7.8.tgz", - "integrity": "sha512-kspz32EwHIOT/eg/ZQbFPxgXq0B/olDOj3YMu7gvLEFz4xyOFd/wgzxxAXkp5LbG4Cp++s/elh79rVNmVFdB9A==", - "license": "Apache-2.0", - "dependencies": { - "@reown/appkit-common": "1.7.8", - "@reown/appkit-polyfills": "1.7.8", - "@walletconnect/logger": "2.1.2", - "zod": "3.22.4" - } - }, - "node_modules/@reown/appkit-wallet/node_modules/zod": { - "version": "3.22.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", - "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/@reown/appkit/node_modules/@noble/ciphers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.1.tgz", - "integrity": "sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit/node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.1" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit/node_modules/@scure/bip32": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", - "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.8.1", - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit/node_modules/@scure/bip39": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", - "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit/node_modules/@walletconnect/core": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.0.tgz", - "integrity": "sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/jsonrpc-ws-connection": "1.0.16", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.0", - "@walletconnect/utils": "2.21.0", - "@walletconnect/window-getters": "1.0.1", - "es-toolkit": "1.33.0", - "events": "3.3.0", - "uint8arrays": "3.1.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@reown/appkit/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", - "license": "MIT", - "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } - }, - "node_modules/@reown/appkit/node_modules/@walletconnect/sign-client": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.0.tgz", - "integrity": "sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/core": "2.21.0", - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/logger": "2.1.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.0", - "@walletconnect/utils": "2.21.0", - "events": "3.3.0" - } - }, - "node_modules/@reown/appkit/node_modules/@walletconnect/types": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.0.tgz", - "integrity": "sha512-ll+9upzqt95ZBWcfkOszXZkfnpbJJ2CmxMfGgE5GmhdxxxCcO5bGhXkI+x8OpiS555RJ/v/sXJYMSOLkmu4fFw==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "events": "3.3.0" - } - }, - "node_modules/@reown/appkit/node_modules/@walletconnect/universal-provider": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.0.tgz", - "integrity": "sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/jsonrpc-http-connection": "1.0.8", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "@walletconnect/sign-client": "2.21.0", - "@walletconnect/types": "2.21.0", - "@walletconnect/utils": "2.21.0", - "es-toolkit": "1.33.0", - "events": "3.3.0" - } - }, - "node_modules/@reown/appkit/node_modules/@walletconnect/utils": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.0.tgz", - "integrity": "sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==", - "license": "Apache-2.0", - "dependencies": { - "@noble/ciphers": "1.2.1", - "@noble/curves": "1.8.1", - "@noble/hashes": "1.7.1", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.0", - "@walletconnect/window-getters": "1.0.1", - "@walletconnect/window-metadata": "1.0.1", - "bs58": "6.0.0", - "detect-browser": "5.3.0", - "query-string": "7.1.3", - "uint8arrays": "3.1.0", - "viem": "2.23.2" - } - }, - "node_modules/@reown/appkit/node_modules/@walletconnect/utils/node_modules/viem": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.2.tgz", - "integrity": "sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "dependencies": { - "@noble/curves": "1.8.1", - "@noble/hashes": "1.7.1", - "@scure/bip32": "1.6.2", - "@scure/bip39": "1.5.4", - "abitype": "1.0.8", - "isows": "1.0.6", - "ox": "0.6.7", - "ws": "8.18.0" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@reown/appkit/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit/node_modules/es-toolkit": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.33.0.tgz", - "integrity": "sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg==", - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks" - ] - }, - "node_modules/@reown/appkit/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/@reown/appkit/node_modules/isows": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", - "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/@reown/appkit/node_modules/ox": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", - "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", - "eventemitter3": "5.0.1" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@reown/appkit/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit/node_modules/uint8arrays": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", - "integrity": "sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/@reown/appkit/node_modules/unstorage": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", - "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", - "license": "MIT", - "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^4.0.3", - "destr": "^2.0.5", - "h3": "^1.15.2", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", - "ofetch": "^1.4.1", - "ufo": "^1.6.1" - }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3 || ^7.0.0", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" - }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } - } - }, - "node_modules/@reown/appkit/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", - "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", - "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", - "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", - "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", - "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", - "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", - "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", - "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", - "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", - "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", - "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", - "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", - "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", - "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", - "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", - "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@safe-global/safe-apps-provider": { - "version": "0.18.6", - "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.6.tgz", - "integrity": "sha512-4LhMmjPWlIO8TTDC2AwLk44XKXaK6hfBTWyljDm0HQ6TWlOEijVWNrt2s3OCVMSxlXAcEzYfqyu1daHZooTC2Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@safe-global/safe-apps-sdk": "^9.1.0", - "events": "^3.3.0" - } - }, - "node_modules/@safe-global/safe-apps-provider/node_modules/@safe-global/safe-apps-sdk": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-9.1.0.tgz", - "integrity": "sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@safe-global/safe-gateway-typescript-sdk": "^3.5.3", - "viem": "^2.1.1" - } - }, - "node_modules/@safe-global/safe-apps-sdk": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-8.1.0.tgz", - "integrity": "sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==", - "license": "MIT", - "peer": true, - "dependencies": { - "@safe-global/safe-gateway-typescript-sdk": "^3.5.3", - "viem": "^1.0.0" - } - }, - "node_modules/@safe-global/safe-apps-sdk/node_modules/@adraffy/ens-normalize": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", - "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", - "license": "MIT", - "peer": true - }, - "node_modules/@safe-global/safe-apps-sdk/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "license": "MIT", - "peer": true, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@safe-global/safe-apps-sdk/node_modules/@scure/bip32": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", - "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/curves": "~1.2.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@safe-global/safe-apps-sdk/node_modules/@scure/bip39": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", - "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@safe-global/safe-apps-sdk/node_modules/abitype": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", - "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peer": true, - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.19.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/@safe-global/safe-apps-sdk/node_modules/isows": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", - "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peer": true, - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/@safe-global/safe-apps-sdk/node_modules/viem": { - "version": "1.21.4", - "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", - "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@adraffy/ens-normalize": "1.10.0", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@scure/bip32": "1.3.2", - "@scure/bip39": "1.2.1", - "abitype": "0.9.8", - "isows": "1.0.3", - "ws": "8.13.0" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@safe-global/safe-apps-sdk/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@safe-global/safe-gateway-typescript-sdk": { - "version": "3.23.1", - "resolved": "https://registry.npmjs.org/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.23.1.tgz", - "integrity": "sha512-6ORQfwtEJYpalCeVO21L4XXGSdbEMfyp2hEv6cP82afKXSwvse6d3sdelgaPWUxHIsFRkWvHDdzh8IyyKHZKxw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", - "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.4.0", - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", - "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@simplewebauthn/browser": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-9.0.1.tgz", - "integrity": "sha512-wD2WpbkaEP4170s13/HUxPcAV5y4ZXaKo1TfNklS5zDefPinIgXOpgz1kpEvobAsaLPa2KeH7AKKX/od1mrBJw==", - "license": "MIT", - "dependencies": { - "@simplewebauthn/types": "^9.0.1" - } - }, - "node_modules/@simplewebauthn/types": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-9.0.1.tgz", - "integrity": "sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==", - "license": "MIT" - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "license": "MIT", - "peer": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@solana/buffer-layout": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", - "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", - "license": "MIT", - "peer": true, - "dependencies": { - "buffer": "~6.0.3" - }, - "engines": { - "node": ">=5.10" - } - }, - "node_modules/@solana/codecs-core": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.3.0.tgz", - "integrity": "sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@solana/errors": "2.3.0" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": ">=5.3.3" - } - }, - "node_modules/@solana/codecs-numbers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz", - "integrity": "sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@solana/codecs-core": "2.3.0", - "@solana/errors": "2.3.0" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": ">=5.3.3" - } - }, - "node_modules/@solana/errors": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.3.0.tgz", - "integrity": "sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "chalk": "^5.4.1", - "commander": "^14.0.0" - }, - "bin": { - "errors": "bin/cli.mjs" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": ">=5.3.3" - } - }, - "node_modules/@solana/errors/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@solana/errors/node_modules/commander": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", - "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=20" - } - }, - "node_modules/@solana/wallet-adapter-base": { - "version": "0.9.27", - "resolved": "https://registry.npmjs.org/@solana/wallet-adapter-base/-/wallet-adapter-base-0.9.27.tgz", - "integrity": "sha512-kXjeNfNFVs/NE9GPmysBRKQ/nf+foSaq3kfVSeMcO/iVgigyRmB551OjU3WyAolLG/1jeEfKLqF9fKwMCRkUqg==", - "license": "Apache-2.0", - "dependencies": { - "@solana/wallet-standard-features": "^1.3.0", - "@wallet-standard/base": "^1.1.0", - "@wallet-standard/features": "^1.1.0", - "eventemitter3": "^5.0.1" - }, - "engines": { - "node": ">=20" - }, - "peerDependencies": { - "@solana/web3.js": "^1.98.0" - } - }, - "node_modules/@solana/wallet-adapter-base/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/@solana/wallet-standard-chains": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@solana/wallet-standard-chains/-/wallet-standard-chains-1.1.1.tgz", - "integrity": "sha512-Us3TgL4eMVoVWhuC4UrePlYnpWN+lwteCBlhZDUhFZBJ5UMGh94mYPXno3Ho7+iHPYRtuCi/ePvPcYBqCGuBOw==", - "license": "Apache-2.0", - "dependencies": { - "@wallet-standard/base": "^1.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@solana/wallet-standard-features": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@solana/wallet-standard-features/-/wallet-standard-features-1.3.0.tgz", - "integrity": "sha512-ZhpZtD+4VArf6RPitsVExvgkF+nGghd1rzPjd97GmBximpnt1rsUxMOEyoIEuH3XBxPyNB6Us7ha7RHWQR+abg==", - "license": "Apache-2.0", - "dependencies": { - "@wallet-standard/base": "^1.1.0", - "@wallet-standard/features": "^1.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@solana/wallet-standard-util": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@solana/wallet-standard-util/-/wallet-standard-util-1.1.2.tgz", - "integrity": "sha512-rUXFNP4OY81Ddq7qOjQV4Kmkozx4wjYAxljvyrqPx8Ycz0FYChG/hQVWqvgpK3sPsEaO/7ABG1NOACsyAKWNOA==", - "license": "Apache-2.0", - "dependencies": { - "@noble/curves": "^1.8.0", - "@solana/wallet-standard-chains": "^1.1.1", - "@solana/wallet-standard-features": "^1.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@solana/wallet-standard-util/node_modules/@noble/curves": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", - "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@solana/wallet-standard-util/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@solana/wallet-standard-wallet-adapter-base": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@solana/wallet-standard-wallet-adapter-base/-/wallet-standard-wallet-adapter-base-1.1.4.tgz", - "integrity": "sha512-Q2Rie9YaidyFA4UxcUIxUsvynW+/gE2noj/Wmk+IOwDwlVrJUAXCvFaCNsPDSyKoiYEKxkSnlG13OA1v08G4iw==", - "license": "Apache-2.0", - "dependencies": { - "@solana/wallet-adapter-base": "^0.9.23", - "@solana/wallet-standard-chains": "^1.1.1", - "@solana/wallet-standard-features": "^1.3.0", - "@solana/wallet-standard-util": "^1.1.2", - "@wallet-standard/app": "^1.1.0", - "@wallet-standard/base": "^1.1.0", - "@wallet-standard/features": "^1.1.0", - "@wallet-standard/wallet": "^1.1.0" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.98.0", - "bs58": "^6.0.0" - } - }, - "node_modules/@solana/wallet-standard-wallet-adapter-react": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@solana/wallet-standard-wallet-adapter-react/-/wallet-standard-wallet-adapter-react-1.1.4.tgz", - "integrity": "sha512-xa4KVmPgB7bTiWo4U7lg0N6dVUtt2I2WhEnKlIv0jdihNvtyhOjCKMjucWet6KAVhir6I/mSWrJk1U9SvVvhCg==", - "license": "Apache-2.0", - "dependencies": { - "@solana/wallet-standard-wallet-adapter-base": "^1.1.4", - "@wallet-standard/app": "^1.1.0", - "@wallet-standard/base": "^1.1.0" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/wallet-adapter-base": "*", - "react": "*" - } - }, - "node_modules/@solana/web3.js": { - "version": "1.98.2", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.2.tgz", - "integrity": "sha512-BqVwEG+TaG2yCkBMbD3C4hdpustR4FpuUFRPUmqRZYYlPI9Hg4XMWxHWOWRzHE9Lkc9NDjzXFX7lDXSgzC7R1A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.25.0", - "@noble/curves": "^1.4.2", - "@noble/hashes": "^1.4.0", - "@solana/buffer-layout": "^4.0.1", - "@solana/codecs-numbers": "^2.1.0", - "agentkeepalive": "^4.5.0", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "bs58": "^4.0.1", - "buffer": "6.0.3", - "fast-stable-stringify": "^1.0.0", - "jayson": "^4.1.1", - "node-fetch": "^2.7.0", - "rpc-websockets": "^9.0.2", - "superstruct": "^2.0.2" - } - }, - "node_modules/@solana/web3.js/node_modules/@noble/curves": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.4.tgz", - "integrity": "sha512-2bKONnuM53lINoDrSmK8qP8W271ms7pygDhZt4SiLOoLwBtoHqeCFi6RG42V8zd3mLHuJFhU/Bmaqo4nX0/kBw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@solana/web3.js/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "peer": true, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@solana/web3.js/node_modules/base-x": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", - "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@solana/web3.js/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "peer": true, - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@solana/web3.js/node_modules/superstruct": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", - "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@stablelib/aead": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz", - "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==", - "license": "MIT", - "peer": true - }, - "node_modules/@stablelib/binary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", - "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/int": "^1.0.1" - } - }, - "node_modules/@stablelib/bytes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", - "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==", - "license": "MIT", - "peer": true - }, - "node_modules/@stablelib/chacha": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz", - "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/chacha20poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz", - "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/aead": "^1.0.1", - "@stablelib/binary": "^1.0.1", - "@stablelib/chacha": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/poly1305": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", - "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==", - "license": "MIT", - "peer": true - }, - "node_modules/@stablelib/hash": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", - "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==", - "license": "MIT", - "peer": true - }, - "node_modules/@stablelib/hkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz", - "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/hash": "^1.0.1", - "@stablelib/hmac": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/hmac": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz", - "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/int": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", - "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==", - "license": "MIT", - "peer": true - }, - "node_modules/@stablelib/keyagreement": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", - "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/bytes": "^1.0.1" - } - }, - "node_modules/@stablelib/poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", - "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/random": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", - "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/sha256": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz", - "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/wipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", - "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==", - "license": "MIT", - "peer": true - }, - "node_modules/@stablelib/x25519": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", - "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@stablelib/keyagreement": "^1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@swc/core": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.39.tgz", - "integrity": "sha512-jns6VFeOT49uoTKLWIEfiQqJAlyqldNAt80kAr8f7a5YjX0zgnG3RBiLMpksx4Ka4SlK4O6TJ/lumIM3Trp82g==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.13" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.39", - "@swc/core-darwin-x64": "1.7.39", - "@swc/core-linux-arm-gnueabihf": "1.7.39", - "@swc/core-linux-arm64-gnu": "1.7.39", - "@swc/core-linux-arm64-musl": "1.7.39", - "@swc/core-linux-x64-gnu": "1.7.39", - "@swc/core-linux-x64-musl": "1.7.39", - "@swc/core-win32-arm64-msvc": "1.7.39", - "@swc/core-win32-ia32-msvc": "1.7.39", - "@swc/core-win32-x64-msvc": "1.7.39" - }, - "peerDependencies": { - "@swc/helpers": "*" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.39.tgz", - "integrity": "sha512-o2nbEL6scMBMCTvY9OnbyVXtepLuNbdblV9oNJEFia5v5eGj9WMrnRQiylH3Wp/G2NYkW7V1/ZVW+kfvIeYe9A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.39.tgz", - "integrity": "sha512-qMlv3XPgtPi/Fe11VhiPDHSLiYYk2dFYl747oGsHZPq+6tIdDQjIhijXPcsUHIXYDyG7lNpODPL8cP/X1sc9MA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.39.tgz", - "integrity": "sha512-NP+JIkBs1ZKnpa3Lk2W1kBJMwHfNOxCUJXuTa2ckjFsuZ8OUu2gwdeLFkTHbR43dxGwH5UzSmuGocXeMowra/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.39.tgz", - "integrity": "sha512-cPc+/HehyHyHcvAsk3ML/9wYcpWVIWax3YBaA+ScecJpSE04l/oBHPfdqKUPslqZ+Gcw0OWnIBGJT/fBZW2ayw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.39.tgz", - "integrity": "sha512-8RxgBC6ubFem66bk9XJ0vclu3exJ6eD7x7CwDhp5AD/tulZslTYXM7oNPjEtje3xxabXuj/bEUMNvHZhQRFdqA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.39.tgz", - "integrity": "sha512-3gtCPEJuXLQEolo9xsXtuPDocmXQx12vewEyFFSMSjOfakuPOBmOQMa0sVL8Wwius8C1eZVeD1fgk0omMqeC+Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.39.tgz", - "integrity": "sha512-mg39pW5x/eqqpZDdtjZJxrUvQNSvJF4O8wCl37fbuFUqOtXs4TxsjZ0aolt876HXxxhsQl7rS+N4KioEMSgTZw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.39.tgz", - "integrity": "sha512-NZwuS0mNJowH3e9bMttr7B1fB8bW5svW/yyySigv9qmV5VcQRNz1kMlCvrCLYRsa93JnARuiaBI6FazSeG8mpA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.39.tgz", - "integrity": "sha512-qFmvv5UExbJPXhhvCVDBnjK5Duqxr048dlVB6ZCgGzbRxuarOlawCzzLK4N172230pzlAWGLgn9CWl3+N6zfHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.39.tgz", - "integrity": "sha512-o+5IMqgOtj9+BEOp16atTfBgCogVak9svhBpwsbcJQp67bQbxGYhAPPDW/hZ2rpSSF7UdzbY9wudoX9G4trcuQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@swc/helpers": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@swc/types": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.13.tgz", - "integrity": "sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, - "node_modules/@tailwindcss/typography": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.15.tgz", - "integrity": "sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==", - "dev": true, - "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "postcss-selector-parser": "6.0.10" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20" - } - }, - "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@tanstack/query-core": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.40.0.tgz", - "integrity": "sha512-7MJTtZkCSuehMC7IxMOCGsLvHS3jHx4WjveSrGsG1Nc1UQLjaFwwkpLA2LmPfvOAxnH4mszMOBFD6LlZE+aB+Q==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/query-persist-client-core": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-4.40.0.tgz", - "integrity": "sha512-eJqC60UG/xEJisCJh1ss2PeynO/xi4EX+K8inKi0vmAePdb1bFDfVpfPnbqVLFUroGirQmf7UcJqtsx432SEgw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@tanstack/query-core": "4.40.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/query-sync-storage-persister": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-4.40.0.tgz", - "integrity": "sha512-NvUOwce/xq9wI3AsMNNlsLkm5oFZmxKFmyEF3gzB4g2yDkVBXmNk+Uk/uQjGjYb31JT1o5voQHH1UFU7vY4iUA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@tanstack/query-persist-client-core": "4.40.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/react-virtual": { - "version": "3.13.12", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.12.tgz", - "integrity": "sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==", - "license": "MIT", - "dependencies": { - "@tanstack/virtual-core": "3.13.12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/@tanstack/virtual-core": { - "version": "3.13.12", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.12.tgz", - "integrity": "sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", - "license": "MIT" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "license": "MIT" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "license": "MIT" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "license": "MIT", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", - "license": "MIT", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-shape": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", - "license": "MIT", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", - "license": "MIT" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT" - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/diff-match-patch": { - "version": "1.0.36", - "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", - "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==", - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/history": { - "version": "4.7.11", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "license": "MIT", - "peer": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.7.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.9.tgz", - "integrity": "sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/node-fetch": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", - "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.4" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.3.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.21.tgz", - "integrity": "sha512-gXLBtmlcRJeT09/sI4PxVwyrku6SaNUj/6cMubjE6T6XdY1fDmBL7r0nX0jbSZPU/Xr0KuwLLZh6aOYY5d91Xw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-router": { - "version": "5.1.20", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", - "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*" - } - }, - "node_modules/@types/react-router-dom": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", - "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "@types/react-router": "*" - } - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "license": "MIT", - "peer": true - }, - "node_modules/@types/stylis": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", - "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==", - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT" - }, - "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "license": "MIT", - "peer": true - }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "license": "MIT", - "peer": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz", - "integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/type-utils": "8.11.0", - "@typescript-eslint/utils": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz", - "integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/typescript-estree": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz", - "integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz", - "integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.11.0", - "@typescript-eslint/utils": "8.11.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz", - "integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz", - "integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz", - "integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/typescript-estree": "8.11.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz", - "integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.11.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@vitejs/plugin-react-swc": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", - "integrity": "sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@swc/core": "^1.7.26" - }, - "peerDependencies": { - "vite": "^4 || ^5" - } - }, - "node_modules/@wagmi/connectors": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/@wagmi/connectors/-/connectors-3.1.11.tgz", - "integrity": "sha512-wzxp9f9PtSUFjDUP/QDjc1t7HON4D8wrVKsw35ejdO8hToDpx1gU9lwH/47Zo/1zExGezQc392sjoHSszYd7OA==", - "funding": [ - { - "type": "gitcoin", - "url": "https://wagmi.sh/gitcoin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@coinbase/wallet-sdk": "^3.6.6", - "@safe-global/safe-apps-provider": "^0.18.1", - "@safe-global/safe-apps-sdk": "^8.1.0", - "@walletconnect/ethereum-provider": "2.11.0", - "@walletconnect/legacy-provider": "^2.0.0", - "@walletconnect/modal": "2.6.2", - "@walletconnect/utils": "2.11.0", - "abitype": "0.8.7", - "eventemitter3": "^4.0.7" - }, - "peerDependencies": { - "typescript": ">=5.0.4", - "viem": ">=0.3.35" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@wagmi/connectors/node_modules/@coinbase/wallet-sdk": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-3.9.3.tgz", - "integrity": "sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "bn.js": "^5.2.1", - "buffer": "^6.0.3", - "clsx": "^1.2.1", - "eth-block-tracker": "^7.1.0", - "eth-json-rpc-filters": "^6.0.0", - "eventemitter3": "^5.0.1", - "keccak": "^3.0.3", - "preact": "^10.16.0", - "sha.js": "^2.4.11" - } - }, - "node_modules/@wagmi/connectors/node_modules/@coinbase/wallet-sdk/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT", - "peer": true - }, - "node_modules/@wagmi/connectors/node_modules/@lit/reactive-element": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", - "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/core": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.11.0.tgz", - "integrity": "sha512-2Tjp5BCevI7dbmqo/OrCjX4tqgMqwJNQLlQAlphqPfvwlF9+tIu6pGcVbSN3U9zyXzWIZCeleqEaWUeSeET4Ew==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@walletconnect/heartbeat": "1.2.1", - "@walletconnect/jsonrpc-provider": "1.0.13", - "@walletconnect/jsonrpc-types": "1.0.3", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/jsonrpc-ws-connection": "1.0.14", - "@walletconnect/keyvaluestorage": "^1.1.1", - "@walletconnect/logger": "^2.0.1", - "@walletconnect/relay-api": "^1.0.9", - "@walletconnect/relay-auth": "^1.0.4", - "@walletconnect/safe-json": "^1.0.2", - "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.11.0", - "@walletconnect/utils": "2.11.0", - "events": "^3.3.0", - "isomorphic-unfetch": "3.1.0", - "lodash.isequal": "4.5.0", - "uint8arrays": "^3.1.0" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/ethereum-provider": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.11.0.tgz", - "integrity": "sha512-YrTeHVjuSuhlUw7SQ6xBJXDuJ6iAC+RwINm9nVhoKYJSHAy3EVSJZOofMKrnecL0iRMtD29nj57mxAInIBRuZA==", - "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@walletconnect/jsonrpc-http-connection": "^1.0.7", - "@walletconnect/jsonrpc-provider": "^1.0.13", - "@walletconnect/jsonrpc-types": "^1.0.3", - "@walletconnect/jsonrpc-utils": "^1.0.8", - "@walletconnect/modal": "^2.6.2", - "@walletconnect/sign-client": "2.11.0", - "@walletconnect/types": "2.11.0", - "@walletconnect/universal-provider": "2.11.0", - "@walletconnect/utils": "2.11.0", - "events": "^3.3.0" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/heartbeat": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz", - "integrity": "sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@walletconnect/events": "^1.0.1", - "@walletconnect/time": "^1.0.2", - "tslib": "1.14.1" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/jsonrpc-provider": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz", - "integrity": "sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@walletconnect/jsonrpc-utils": "^1.0.8", - "@walletconnect/safe-json": "^1.0.2", - "tslib": "1.14.1" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/jsonrpc-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz", - "integrity": "sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==", - "license": "MIT", - "peer": true, - "dependencies": { - "keyvaluestorage-interface": "^1.0.0", - "tslib": "1.14.1" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/jsonrpc-ws-connection": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz", - "integrity": "sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@walletconnect/jsonrpc-utils": "^1.0.6", - "@walletconnect/safe-json": "^1.0.2", - "events": "^3.3.0", - "ws": "^7.5.1" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/modal": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.6.2.tgz", - "integrity": "sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==", - "deprecated": "Please follow the migration guide on https://docs.reown.com/appkit/upgrade/wcm", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@walletconnect/modal-core": "2.6.2", - "@walletconnect/modal-ui": "2.6.2" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/modal-core": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@walletconnect/modal-core/-/modal-core-2.6.2.tgz", - "integrity": "sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "valtio": "1.11.2" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/modal-ui": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz", - "integrity": "sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@walletconnect/modal-core": "2.6.2", - "lit": "2.8.0", - "motion": "10.16.2", - "qrcode": "1.5.3" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/sign-client": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.11.0.tgz", - "integrity": "sha512-H2ukscibBS+6WrzQWh+WyVBqO5z4F5et12JcwobdwgHnJSlqIoZxqnUYYWNCI5rUR5UKsKWaUyto4AE9N5dw4Q==", - "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@walletconnect/core": "2.11.0", - "@walletconnect/events": "^1.0.1", - "@walletconnect/heartbeat": "1.2.1", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/logger": "^2.0.1", - "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.11.0", - "@walletconnect/utils": "2.11.0", - "events": "^3.3.0" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/types": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.11.0.tgz", - "integrity": "sha512-AB5b1lrEbCGHxqS2vqfCkIoODieH+ZAUp9rA1O2ftrhnqDJiJK983Df87JhYhECsQUBHHfALphA8ydER0q+9sw==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@walletconnect/events": "^1.0.1", - "@walletconnect/heartbeat": "1.2.1", - "@walletconnect/jsonrpc-types": "1.0.3", - "@walletconnect/keyvaluestorage": "^1.1.1", - "@walletconnect/logger": "^2.0.1", - "events": "^3.3.0" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/universal-provider": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.11.0.tgz", - "integrity": "sha512-zgJv8jDvIMP4Qse/D9oIRXGdfoNqonsrjPZanQ/CHNe7oXGOBiQND2IIeX+tS0H7uNA0TPvctljCLiIN9nw4eA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@walletconnect/jsonrpc-http-connection": "^1.0.7", - "@walletconnect/jsonrpc-provider": "1.0.13", - "@walletconnect/jsonrpc-types": "^1.0.2", - "@walletconnect/jsonrpc-utils": "^1.0.7", - "@walletconnect/logger": "^2.0.1", - "@walletconnect/sign-client": "2.11.0", - "@walletconnect/types": "2.11.0", - "@walletconnect/utils": "2.11.0", - "events": "^3.3.0" - } - }, - "node_modules/@wagmi/connectors/node_modules/@walletconnect/utils": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.11.0.tgz", - "integrity": "sha512-hxkHPlTlDQILHfIKXlmzgNJau/YcSBC3XHUSuZuKZbNEw3duFT6h6pm3HT/1+j1a22IG05WDsNBuTCRkwss+BQ==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@stablelib/chacha20poly1305": "1.0.1", - "@stablelib/hkdf": "1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/sha256": "1.0.1", - "@stablelib/x25519": "^1.0.3", - "@walletconnect/relay-api": "^1.0.9", - "@walletconnect/safe-json": "^1.0.2", - "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.11.0", - "@walletconnect/window-getters": "^1.0.1", - "@walletconnect/window-metadata": "^1.0.1", - "detect-browser": "5.3.0", - "query-string": "7.1.3", - "uint8arrays": "^3.1.0" - } - }, - "node_modules/@wagmi/connectors/node_modules/abitype": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.8.7.tgz", - "integrity": "sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.19.1" - }, - "peerDependenciesMeta": { - "zod": { - "optional": true - } - } + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@wagmi/connectors/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@wagmi/connectors/node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@wagmi/connectors/node_modules/lit": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", - "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", - "license": "BSD-3-Clause", + "node_modules/@safe-global/safe-apps-provider": { + "version": "0.18.6", + "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.6.tgz", + "integrity": "sha512-4LhMmjPWlIO8TTDC2AwLk44XKXaK6hfBTWyljDm0HQ6TWlOEijVWNrt2s3OCVMSxlXAcEzYfqyu1daHZooTC2Q==", + "license": "MIT", "peer": true, "dependencies": { - "@lit/reactive-element": "^1.6.0", - "lit-element": "^3.3.0", - "lit-html": "^2.8.0" + "@safe-global/safe-apps-sdk": "^9.1.0", + "events": "^3.3.0" } }, - "node_modules/@wagmi/connectors/node_modules/lit-element": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", - "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", - "license": "BSD-3-Clause", + "node_modules/@safe-global/safe-apps-provider/node_modules/@safe-global/safe-apps-sdk": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-9.1.0.tgz", + "integrity": "sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==", + "license": "MIT", "peer": true, "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.1.0", - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.8.0" + "@safe-global/safe-gateway-typescript-sdk": "^3.5.3", + "viem": "^2.1.1" } }, - "node_modules/@wagmi/connectors/node_modules/lit-html": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", - "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", - "license": "BSD-3-Clause", + "node_modules/@safe-global/safe-apps-sdk": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-8.1.0.tgz", + "integrity": "sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==", + "license": "MIT", "peer": true, "dependencies": { - "@types/trusted-types": "^2.0.2" + "@safe-global/safe-gateway-typescript-sdk": "^3.5.3", + "viem": "^1.0.0" } }, - "node_modules/@wagmi/connectors/node_modules/proxy-compare": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", - "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==", + "node_modules/@safe-global/safe-apps-sdk/node_modules/@adraffy/ens-normalize": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", "license": "MIT", "peer": true }, - "node_modules/@wagmi/connectors/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "node_modules/@safe-global/safe-apps-sdk/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "license": "MIT", "peer": true, - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@wagmi/connectors/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "node_modules/@safe-global/safe-apps-sdk/node_modules/@scure/bip32": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", "license": "MIT", "peer": true, - "engines": { - "node": ">= 14.18.0" + "dependencies": { + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" }, "funding": { - "type": "individual", "url": "https://paulmillr.com/funding/" } }, - "node_modules/@wagmi/connectors/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD", - "peer": true - }, - "node_modules/@wagmi/connectors/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "node_modules/@safe-global/safe-apps-sdk/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "license": "MIT", "peer": true, "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^4.0.3", - "destr": "^2.0.5", - "h3": "^1.15.3", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", - "ofetch": "^1.4.1", - "ufo": "^1.6.1" + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@safe-global/safe-apps-sdk/node_modules/abitype": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", + "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], + "license": "MIT", + "peer": true, "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3 || ^7.0.0", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" + "typescript": ">=5.0.4", + "zod": "^3 >=3.19.1" }, "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { + "typescript": { "optional": true }, - "uploadthing": { + "zod": { "optional": true } - } - }, - "node_modules/@wagmi/connectors/node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + } + }, + "node_modules/@safe-global/safe-apps-sdk/node_modules/isows": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", + "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], "license": "MIT", "peer": true, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "ws": "*" } }, - "node_modules/@wagmi/connectors/node_modules/valtio": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.11.2.tgz", - "integrity": "sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==", + "node_modules/@safe-global/safe-apps-sdk/node_modules/viem": { + "version": "1.21.4", + "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", + "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], "license": "MIT", "peer": true, "dependencies": { - "proxy-compare": "2.5.1", - "use-sync-external-store": "1.2.0" - }, - "engines": { - "node": ">=12.20.0" + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@scure/bip32": "1.3.2", + "@scure/bip39": "1.2.1", + "abitype": "0.9.8", + "isows": "1.0.3", + "ws": "8.13.0" }, "peerDependencies": { - "@types/react": ">=16.8", - "react": ">=16.8" + "typescript": ">=5.0.4" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { + "typescript": { "optional": true } } }, - "node_modules/@wagmi/connectors/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "node_modules/@safe-global/safe-apps-sdk/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "license": "MIT", "peer": true, "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9874,120 +5908,238 @@ } } }, - "node_modules/@wagmi/core": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-1.4.13.tgz", - "integrity": "sha512-ytMCvXbBOgfDu9Qw67279wq/jNEe7EZLjLyekX7ROnvHRADqFr3lwZI6ih41UmtRZAmXAx8Ghyuqy154EjB5mQ==", - "funding": [ - { - "type": "gitcoin", - "url": "https://wagmi.sh/gitcoin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], + "node_modules/@safe-global/safe-gateway-typescript-sdk": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.23.1.tgz", + "integrity": "sha512-6ORQfwtEJYpalCeVO21L4XXGSdbEMfyp2hEv6cP82afKXSwvse6d3sdelgaPWUxHIsFRkWvHDdzh8IyyKHZKxw==", "license": "MIT", "peer": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "license": "MIT", "dependencies": { - "@wagmi/connectors": "3.1.11", - "abitype": "0.8.7", - "eventemitter3": "^4.0.7", - "zustand": "^4.3.1" + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, - "peerDependencies": { - "typescript": ">=5.0.4", - "viem": ">=0.3.35" + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@wagmi/core/node_modules/abitype": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.8.7.tgz", - "integrity": "sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==", + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@simplewebauthn/browser": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-9.0.1.tgz", + "integrity": "sha512-wD2WpbkaEP4170s13/HUxPcAV5y4ZXaKo1TfNklS5zDefPinIgXOpgz1kpEvobAsaLPa2KeH7AKKX/od1mrBJw==", + "license": "MIT", + "dependencies": { + "@simplewebauthn/types": "^9.0.1" + } + }, + "node_modules/@simplewebauthn/types": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-9.0.1.tgz", + "integrity": "sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==", + "license": "MIT" + }, + "node_modules/@solana/buffer-layout": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "license": "MIT", + "peer": true, + "dependencies": { + "buffer": "~6.0.3" + }, + "engines": { + "node": ">=5.10" + } + }, + "node_modules/@solana/codecs-core": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.3.0.tgz", + "integrity": "sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==", "license": "MIT", "peer": true, + "dependencies": { + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.19.1" + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/codecs-numbers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz", + "integrity": "sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/errors": "2.3.0" }, - "peerDependenciesMeta": { - "zod": { - "optional": true - } + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" } }, - "node_modules/@wagmi/core/node_modules/zustand": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", - "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "node_modules/@solana/errors": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.3.0.tgz", + "integrity": "sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==", "license": "MIT", "peer": true, "dependencies": { - "use-sync-external-store": "^1.2.2" + "chalk": "^5.4.1", + "commander": "^14.0.0" + }, + "bin": { + "errors": "bin/cli.mjs" }, "engines": { - "node": ">=12.7.0" + "node": ">=20.18.0" }, "peerDependencies": { - "@types/react": ">=16.8", - "immer": ">=9.0.6", - "react": ">=16.8" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - } + "typescript": ">=5.3.3" } }, - "node_modules/@wallet-standard/app": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wallet-standard/app/-/app-1.1.0.tgz", - "integrity": "sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==", - "license": "Apache-2.0", - "dependencies": { - "@wallet-standard/base": "^1.1.0" - }, + "node_modules/@solana/errors/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "peer": true, "engines": { - "node": ">=16" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@wallet-standard/base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wallet-standard/base/-/base-1.1.0.tgz", - "integrity": "sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==", - "license": "Apache-2.0", + "node_modules/@solana/errors/node_modules/commander": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", + "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", + "license": "MIT", + "peer": true, "engines": { - "node": ">=16" + "node": ">=20" } }, - "node_modules/@wallet-standard/features": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wallet-standard/features/-/features-1.1.0.tgz", - "integrity": "sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==", + "node_modules/@solana/wallet-adapter-base": { + "version": "0.9.27", + "resolved": "https://registry.npmjs.org/@solana/wallet-adapter-base/-/wallet-adapter-base-0.9.27.tgz", + "integrity": "sha512-kXjeNfNFVs/NE9GPmysBRKQ/nf+foSaq3kfVSeMcO/iVgigyRmB551OjU3WyAolLG/1jeEfKLqF9fKwMCRkUqg==", "license": "Apache-2.0", "dependencies": { - "@wallet-standard/base": "^1.1.0" + "@solana/wallet-standard-features": "^1.3.0", + "@wallet-standard/base": "^1.1.0", + "@wallet-standard/features": "^1.1.0", + "eventemitter3": "^5.0.1" }, "engines": { - "node": ">=16" + "node": ">=20" + }, + "peerDependencies": { + "@solana/web3.js": "^1.98.0" } }, - "node_modules/@wallet-standard/wallet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wallet-standard/wallet/-/wallet-1.1.0.tgz", - "integrity": "sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==", + "node_modules/@solana/wallet-adapter-base/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/@solana/wallet-standard-chains": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@solana/wallet-standard-chains/-/wallet-standard-chains-1.1.1.tgz", + "integrity": "sha512-Us3TgL4eMVoVWhuC4UrePlYnpWN+lwteCBlhZDUhFZBJ5UMGh94mYPXno3Ho7+iHPYRtuCi/ePvPcYBqCGuBOw==", "license": "Apache-2.0", "dependencies": { "@wallet-standard/base": "^1.1.0" @@ -9996,194 +6148,134 @@ "node": ">=16" } }, - "node_modules/@walletconnect/core": { - "version": "2.21.4", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.4.tgz", - "integrity": "sha512-XtwPUCj3bCNX/2yjYGlQyvcsn32wkzixCjyWOD4pdKFVk7opZPAdF4xr85rmo6nJ7AiBYxjV1IH0bemTPEdE6Q==", + "node_modules/@solana/wallet-standard-features": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@solana/wallet-standard-features/-/wallet-standard-features-1.3.0.tgz", + "integrity": "sha512-ZhpZtD+4VArf6RPitsVExvgkF+nGghd1rzPjd97GmBximpnt1rsUxMOEyoIEuH3XBxPyNB6Us7ha7RHWQR+abg==", "license": "Apache-2.0", "dependencies": { - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/jsonrpc-ws-connection": "1.0.16", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.4", - "@walletconnect/utils": "2.21.4", - "@walletconnect/window-getters": "1.0.1", - "es-toolkit": "1.39.3", - "events": "3.3.0", - "uint8arrays": "3.1.1" + "@wallet-standard/base": "^1.1.0", + "@wallet-standard/features": "^1.1.0" }, "engines": { - "node": ">=18" + "node": ">=16" } }, - "node_modules/@walletconnect/core/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", - "license": "MIT", + "node_modules/@solana/wallet-standard-util": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@solana/wallet-standard-util/-/wallet-standard-util-1.1.2.tgz", + "integrity": "sha512-rUXFNP4OY81Ddq7qOjQV4Kmkozx4wjYAxljvyrqPx8Ycz0FYChG/hQVWqvgpK3sPsEaO/7ABG1NOACsyAKWNOA==", + "license": "Apache-2.0", "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" + "@noble/curves": "^1.8.0", + "@solana/wallet-standard-chains": "^1.1.1", + "@solana/wallet-standard-features": "^1.3.0" }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } + "engines": { + "node": ">=16" } }, - "node_modules/@walletconnect/core/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/@solana/wallet-standard-util/node_modules/@noble/curves": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", + "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "@noble/hashes": "1.8.0" }, "engines": { - "node": ">= 14.16.0" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@walletconnect/core/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "node_modules/@solana/wallet-standard-util/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", "engines": { - "node": ">= 14.18.0" + "node": "^14.21.3 || >=16" }, "funding": { - "type": "individual", "url": "https://paulmillr.com/funding/" } }, - "node_modules/@walletconnect/core/node_modules/unstorage": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", - "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", - "license": "MIT", + "node_modules/@solana/wallet-standard-wallet-adapter-base": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@solana/wallet-standard-wallet-adapter-base/-/wallet-standard-wallet-adapter-base-1.1.4.tgz", + "integrity": "sha512-Q2Rie9YaidyFA4UxcUIxUsvynW+/gE2noj/Wmk+IOwDwlVrJUAXCvFaCNsPDSyKoiYEKxkSnlG13OA1v08G4iw==", + "license": "Apache-2.0", "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^4.0.3", - "destr": "^2.0.5", - "h3": "^1.15.2", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", - "ofetch": "^1.4.1", - "ufo": "^1.6.1" - }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3 || ^7.0.0", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" - }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } + "@solana/wallet-adapter-base": "^0.9.23", + "@solana/wallet-standard-chains": "^1.1.1", + "@solana/wallet-standard-features": "^1.3.0", + "@solana/wallet-standard-util": "^1.1.2", + "@wallet-standard/app": "^1.1.0", + "@wallet-standard/base": "^1.1.0", + "@wallet-standard/features": "^1.1.0", + "@wallet-standard/wallet": "^1.1.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.98.0", + "bs58": "^6.0.0" } }, - "node_modules/@walletconnect/crypto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@walletconnect/crypto/-/crypto-1.1.0.tgz", - "integrity": "sha512-yZO8BBTQt7BcaemjDgwN56OmSv0OO4QjIpvtfj5OxZfL6IQZQWHOhwC6pJg+BmZPbDlJlWFqFuCZRtiPwRmsoA==", + "node_modules/@solana/wallet-standard-wallet-adapter-react": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@solana/wallet-standard-wallet-adapter-react/-/wallet-standard-wallet-adapter-react-1.1.4.tgz", + "integrity": "sha512-xa4KVmPgB7bTiWo4U7lg0N6dVUtt2I2WhEnKlIv0jdihNvtyhOjCKMjucWet6KAVhir6I/mSWrJk1U9SvVvhCg==", + "license": "Apache-2.0", + "dependencies": { + "@solana/wallet-standard-wallet-adapter-base": "^1.1.4", + "@wallet-standard/app": "^1.1.0", + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/wallet-adapter-base": "*", + "react": "*" + } + }, + "node_modules/@solana/web3.js": { + "version": "1.98.2", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.2.tgz", + "integrity": "sha512-BqVwEG+TaG2yCkBMbD3C4hdpustR4FpuUFRPUmqRZYYlPI9Hg4XMWxHWOWRzHE9Lkc9NDjzXFX7lDXSgzC7R1A==", "license": "MIT", "peer": true, "dependencies": { - "@noble/ciphers": "1.2.0", - "@noble/hashes": "1.7.0", - "@walletconnect/encoding": "^1.0.2", - "@walletconnect/environment": "^1.0.1", - "@walletconnect/randombytes": "^1.0.3", - "tslib": "1.14.1" + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "@solana/codecs-numbers": "^2.1.0", + "agentkeepalive": "^4.5.0", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.1", + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" } }, - "node_modules/@walletconnect/crypto/node_modules/@noble/ciphers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.0.tgz", - "integrity": "sha512-YGdEUzYEd+82jeaVbSKKVp1jFZb8LwaNMIIzHFkihGvYdd/KKAr7KaJHdEdSYGredE3ssSravXIa0Jxg28Sv5w==", + "node_modules/@solana/web3.js/node_modules/@noble/curves": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.4.tgz", + "integrity": "sha512-2bKONnuM53lINoDrSmK8qP8W271ms7pygDhZt4SiLOoLwBtoHqeCFi6RG42V8zd3mLHuJFhU/Bmaqo4nX0/kBw==", "license": "MIT", "peer": true, + "dependencies": { + "@noble/hashes": "1.8.0" + }, "engines": { "node": "^14.21.3 || >=16" }, @@ -10191,10 +6283,10 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@walletconnect/crypto/node_modules/@noble/hashes": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.0.tgz", - "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", + "node_modules/@solana/web3.js/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", "peer": true, "engines": { @@ -10204,1096 +6296,1160 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@walletconnect/crypto/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD", + "node_modules/@solana/web3.js/node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@solana/web3.js/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "peer": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@solana/web3.js/node_modules/superstruct": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@stablelib/aead": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz", + "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==", + "license": "MIT", "peer": true }, - "node_modules/@walletconnect/encoding": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.2.tgz", - "integrity": "sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==", + "node_modules/@stablelib/binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", "license": "MIT", "peer": true, "dependencies": { - "is-typedarray": "1.0.0", - "tslib": "1.14.1", - "typedarray-to-buffer": "3.1.5" + "@stablelib/int": "^1.0.1" } }, - "node_modules/@walletconnect/encoding/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD", + "node_modules/@stablelib/bytes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", + "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==", + "license": "MIT", "peer": true }, - "node_modules/@walletconnect/environment": { + "node_modules/@stablelib/chacha": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz", - "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==", + "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz", + "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==", "license": "MIT", + "peer": true, "dependencies": { - "tslib": "1.14.1" + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" } }, - "node_modules/@walletconnect/environment/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" + "node_modules/@stablelib/chacha20poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz", + "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@stablelib/aead": "^1.0.1", + "@stablelib/binary": "^1.0.1", + "@stablelib/chacha": "^1.0.1", + "@stablelib/constant-time": "^1.0.1", + "@stablelib/poly1305": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } }, - "node_modules/@walletconnect/ethereum-provider": { - "version": "2.21.4", - "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.21.4.tgz", - "integrity": "sha512-PZBJKcoPfaHiGBXlVwXZEHSXuivqzflzHv+3fpXr6MvHYW/uho5ZdgnHw54EE0jJ0j4Z9h+07PnMjiDFuKjKWA==", - "license": "Apache-2.0", + "node_modules/@stablelib/constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", + "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==", + "license": "MIT", + "peer": true + }, + "node_modules/@stablelib/hash": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", + "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==", + "license": "MIT", + "peer": true + }, + "node_modules/@stablelib/hkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz", + "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==", + "license": "MIT", + "peer": true, "dependencies": { - "@reown/appkit": "1.7.8", - "@walletconnect/jsonrpc-http-connection": "1.0.8", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/sign-client": "2.21.4", - "@walletconnect/types": "2.21.4", - "@walletconnect/universal-provider": "2.21.4", - "@walletconnect/utils": "2.21.4", - "events": "3.3.0" + "@stablelib/hash": "^1.0.1", + "@stablelib/hmac": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/hmac": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz", + "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/int": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==", + "license": "MIT", + "peer": true + }, + "node_modules/@stablelib/keyagreement": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", + "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@stablelib/bytes": "^1.0.1" + } + }, + "node_modules/@stablelib/poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", + "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/random": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", + "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" } }, - "node_modules/@walletconnect/ethereum-provider/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", + "node_modules/@stablelib/sha256": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz", + "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==", "license": "MIT", + "peer": true, "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" } }, - "node_modules/@walletconnect/ethereum-provider/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/@stablelib/wipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==", + "license": "MIT", + "peer": true + }, + "node_modules/@stablelib/x25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", + "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", "license": "MIT", + "peer": true, "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "@stablelib/keyagreement": "^1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/wipe": "^1.0.1" } }, - "node_modules/@walletconnect/ethereum-provider/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", + "node_modules/@swc/core": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.39.tgz", + "integrity": "sha512-jns6VFeOT49uoTKLWIEfiQqJAlyqldNAt80kAr8f7a5YjX0zgnG3RBiLMpksx4Ka4SlK4O6TJ/lumIM3Trp82g==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.13" + }, "engines": { - "node": ">= 14.18.0" + "node": ">=10" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@walletconnect/ethereum-provider/node_modules/unstorage": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", - "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", - "license": "MIT", - "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^4.0.3", - "destr": "^2.0.5", - "h3": "^1.15.2", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", - "ofetch": "^1.4.1", - "ufo": "^1.6.1" + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.7.39", + "@swc/core-darwin-x64": "1.7.39", + "@swc/core-linux-arm-gnueabihf": "1.7.39", + "@swc/core-linux-arm64-gnu": "1.7.39", + "@swc/core-linux-arm64-musl": "1.7.39", + "@swc/core-linux-x64-gnu": "1.7.39", + "@swc/core-linux-x64-musl": "1.7.39", + "@swc/core-win32-arm64-msvc": "1.7.39", + "@swc/core-win32-ia32-msvc": "1.7.39", + "@swc/core-win32-x64-msvc": "1.7.39" }, "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3 || ^7.0.0", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" + "@swc/helpers": "*" }, "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { + "@swc/helpers": { "optional": true } } }, - "node_modules/@walletconnect/events": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", - "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==", - "license": "MIT", - "dependencies": { - "keyvaluestorage-interface": "^1.0.0", - "tslib": "1.14.1" + "node_modules/@swc/core-darwin-arm64": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.39.tgz", + "integrity": "sha512-o2nbEL6scMBMCTvY9OnbyVXtepLuNbdblV9oNJEFia5v5eGj9WMrnRQiylH3Wp/G2NYkW7V1/ZVW+kfvIeYe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@walletconnect/events/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" + "node_modules/@swc/core-darwin-x64": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.39.tgz", + "integrity": "sha512-qMlv3XPgtPi/Fe11VhiPDHSLiYYk2dFYl747oGsHZPq+6tIdDQjIhijXPcsUHIXYDyG7lNpODPL8cP/X1sc9MA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } }, - "node_modules/@walletconnect/heartbeat": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz", - "integrity": "sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==", - "license": "MIT", - "dependencies": { - "@walletconnect/events": "^1.0.1", - "@walletconnect/time": "^1.0.2", - "events": "^3.3.0" + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.39.tgz", + "integrity": "sha512-NP+JIkBs1ZKnpa3Lk2W1kBJMwHfNOxCUJXuTa2ckjFsuZ8OUu2gwdeLFkTHbR43dxGwH5UzSmuGocXeMowra/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.39.tgz", + "integrity": "sha512-cPc+/HehyHyHcvAsk3ML/9wYcpWVIWax3YBaA+ScecJpSE04l/oBHPfdqKUPslqZ+Gcw0OWnIBGJT/fBZW2ayw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@walletconnect/jsonrpc-http-connection": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz", - "integrity": "sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==", - "license": "MIT", - "dependencies": { - "@walletconnect/jsonrpc-utils": "^1.0.6", - "@walletconnect/safe-json": "^1.0.1", - "cross-fetch": "^3.1.4", - "events": "^3.3.0" + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.39.tgz", + "integrity": "sha512-8RxgBC6ubFem66bk9XJ0vclu3exJ6eD7x7CwDhp5AD/tulZslTYXM7oNPjEtje3xxabXuj/bEUMNvHZhQRFdqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@walletconnect/jsonrpc-provider": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz", - "integrity": "sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==", - "license": "MIT", - "dependencies": { - "@walletconnect/jsonrpc-utils": "^1.0.8", - "@walletconnect/safe-json": "^1.0.2", - "events": "^3.3.0" + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.39.tgz", + "integrity": "sha512-3gtCPEJuXLQEolo9xsXtuPDocmXQx12vewEyFFSMSjOfakuPOBmOQMa0sVL8Wwius8C1eZVeD1fgk0omMqeC+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@walletconnect/jsonrpc-types": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz", - "integrity": "sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==", - "license": "MIT", - "dependencies": { - "events": "^3.3.0", - "keyvaluestorage-interface": "^1.0.0" + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.39.tgz", + "integrity": "sha512-mg39pW5x/eqqpZDdtjZJxrUvQNSvJF4O8wCl37fbuFUqOtXs4TxsjZ0aolt876HXxxhsQl7rS+N4KioEMSgTZw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@walletconnect/jsonrpc-utils": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz", - "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==", - "license": "MIT", - "dependencies": { - "@walletconnect/environment": "^1.0.1", - "@walletconnect/jsonrpc-types": "^1.0.3", - "tslib": "1.14.1" + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.39.tgz", + "integrity": "sha512-NZwuS0mNJowH3e9bMttr7B1fB8bW5svW/yyySigv9qmV5VcQRNz1kMlCvrCLYRsa93JnARuiaBI6FazSeG8mpA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@walletconnect/jsonrpc-utils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@walletconnect/jsonrpc-ws-connection": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.16.tgz", - "integrity": "sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==", - "license": "MIT", - "dependencies": { - "@walletconnect/jsonrpc-utils": "^1.0.6", - "@walletconnect/safe-json": "^1.0.2", - "events": "^3.3.0", - "ws": "^7.5.1" + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.39.tgz", + "integrity": "sha512-qFmvv5UExbJPXhhvCVDBnjK5Duqxr048dlVB6ZCgGzbRxuarOlawCzzLK4N172230pzlAWGLgn9CWl3+N6zfHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.7.39", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.39.tgz", + "integrity": "sha512-o+5IMqgOtj9+BEOp16atTfBgCogVak9svhBpwsbcJQp67bQbxGYhAPPDW/hZ2rpSSF7UdzbY9wudoX9G4trcuQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">=10" } }, - "node_modules/@walletconnect/legacy-client": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/legacy-client/-/legacy-client-2.0.0.tgz", - "integrity": "sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA==", + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", "license": "Apache-2.0", - "peer": true, "dependencies": { - "@walletconnect/crypto": "^1.0.3", - "@walletconnect/encoding": "^1.0.2", - "@walletconnect/jsonrpc-utils": "^1.0.4", - "@walletconnect/legacy-types": "^2.0.0", - "@walletconnect/legacy-utils": "^2.0.0", - "@walletconnect/safe-json": "^1.0.1", - "@walletconnect/window-getters": "^1.0.1", - "@walletconnect/window-metadata": "^1.0.1", - "detect-browser": "^5.3.0", - "query-string": "^6.13.5" + "tslib": "^2.8.0" } }, - "node_modules/@walletconnect/legacy-client/node_modules/query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", - "license": "MIT", - "peer": true, + "node_modules/@swc/types": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.13.tgz", + "integrity": "sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@swc/counter": "^0.1.3" } }, - "node_modules/@walletconnect/legacy-modal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/legacy-modal/-/legacy-modal-2.0.0.tgz", - "integrity": "sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@tailwindcss/typography": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.15.tgz", + "integrity": "sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==", + "dev": true, "dependencies": { - "@walletconnect/legacy-types": "^2.0.0", - "@walletconnect/legacy-utils": "^2.0.0", - "copy-to-clipboard": "^3.3.3", - "preact": "^10.12.0", - "qrcode": "^1.5.1" + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20" } }, - "node_modules/@walletconnect/legacy-provider": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/legacy-provider/-/legacy-provider-2.0.0.tgz", - "integrity": "sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, "dependencies": { - "@walletconnect/jsonrpc-http-connection": "^1.0.4", - "@walletconnect/jsonrpc-provider": "^1.0.6", - "@walletconnect/legacy-client": "^2.0.0", - "@walletconnect/legacy-modal": "^2.0.0", - "@walletconnect/legacy-types": "^2.0.0", - "@walletconnect/legacy-utils": "^2.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@walletconnect/legacy-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/legacy-types/-/legacy-types-2.0.0.tgz", - "integrity": "sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw==", - "license": "Apache-2.0", + "node_modules/@tanstack/query-core": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.40.0.tgz", + "integrity": "sha512-7MJTtZkCSuehMC7IxMOCGsLvHS3jHx4WjveSrGsG1Nc1UQLjaFwwkpLA2LmPfvOAxnH4mszMOBFD6LlZE+aB+Q==", + "license": "MIT", "peer": true, - "dependencies": { - "@walletconnect/jsonrpc-types": "^1.0.2" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@walletconnect/legacy-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/legacy-utils/-/legacy-utils-2.0.0.tgz", - "integrity": "sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ==", - "license": "Apache-2.0", + "node_modules/@tanstack/query-persist-client-core": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-4.40.0.tgz", + "integrity": "sha512-eJqC60UG/xEJisCJh1ss2PeynO/xi4EX+K8inKi0vmAePdb1bFDfVpfPnbqVLFUroGirQmf7UcJqtsx432SEgw==", + "license": "MIT", "peer": true, "dependencies": { - "@walletconnect/encoding": "^1.0.2", - "@walletconnect/jsonrpc-utils": "^1.0.4", - "@walletconnect/legacy-types": "^2.0.0", - "@walletconnect/safe-json": "^1.0.1", - "@walletconnect/window-getters": "^1.0.1", - "@walletconnect/window-metadata": "^1.0.1", - "detect-browser": "^5.3.0", - "query-string": "^6.13.5" + "@tanstack/query-core": "4.40.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@walletconnect/legacy-utils/node_modules/query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "node_modules/@tanstack/query-sync-storage-persister": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-4.40.0.tgz", + "integrity": "sha512-NvUOwce/xq9wI3AsMNNlsLkm5oFZmxKFmyEF3gzB4g2yDkVBXmNk+Uk/uQjGjYb31JT1o5voQHH1UFU7vY4iUA==", "license": "MIT", "peer": true, "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" + "@tanstack/query-persist-client-core": "4.40.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@walletconnect/logger": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.1.2.tgz", - "integrity": "sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==", + "node_modules/@tanstack/react-virtual": { + "version": "3.13.12", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.12.tgz", + "integrity": "sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==", "license": "MIT", "dependencies": { - "@walletconnect/safe-json": "^1.0.2", - "pino": "7.11.0" + "@tanstack/virtual-core": "3.13.12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/@walletconnect/modal": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.7.0.tgz", - "integrity": "sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw==", - "deprecated": "Please follow the migration guide on https://docs.reown.com/appkit/upgrade/wcm", - "license": "Apache-2.0", + "node_modules/@tanstack/virtual-core": { + "version": "3.13.12", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.12.tgz", + "integrity": "sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@types/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==", + "license": "MIT", "dependencies": { - "@walletconnect/modal-core": "2.7.0", - "@walletconnect/modal-ui": "2.7.0" + "@types/node": "*" } }, - "node_modules/@walletconnect/modal-core": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@walletconnect/modal-core/-/modal-core-2.7.0.tgz", - "integrity": "sha512-oyMIfdlNdpyKF2kTJowTixZSo0PGlCJRdssUN/EZdA6H6v03hZnf09JnwpljZNfir2M65Dvjm/15nGrDQnlxSA==", - "license": "Apache-2.0", + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "peer": true, "dependencies": { - "valtio": "1.11.2" + "@types/node": "*" } }, - "node_modules/@walletconnect/modal-core/node_modules/proxy-compare": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", - "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==", + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", "license": "MIT" }, - "node_modules/@walletconnect/modal-core/node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" }, - "node_modules/@walletconnect/modal-core/node_modules/valtio": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.11.2.tgz", - "integrity": "sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==", + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "license": "MIT", "dependencies": { - "proxy-compare": "2.5.1", - "use-sync-external-store": "1.2.0" - }, - "engines": { - "node": ">=12.20.0" - }, - "peerDependencies": { - "@types/react": ">=16.8", - "react": ">=16.8" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } + "@types/d3-color": "*" } }, - "node_modules/@walletconnect/modal-ui": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.7.0.tgz", - "integrity": "sha512-gERYvU7D7K1ANCN/8vUgsE0d2hnRemfAFZ2novm9aZBg7TEd/4EgB+AqbJ+1dc7GhOL6dazckVq78TgccHb7mQ==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/modal-core": "2.7.0", - "lit": "2.8.0", - "motion": "10.16.2", - "qrcode": "1.5.3" - } + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "license": "MIT" }, - "node_modules/@walletconnect/modal-ui/node_modules/@lit/reactive-element": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", - "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", - "license": "BSD-3-Clause", + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "license": "MIT", "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" + "@types/d3-time": "*" } }, - "node_modules/@walletconnect/modal-ui/node_modules/lit": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", - "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", - "license": "BSD-3-Clause", + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "license": "MIT", "dependencies": { - "@lit/reactive-element": "^1.6.0", - "lit-element": "^3.3.0", - "lit-html": "^2.8.0" + "@types/d3-path": "*" } }, - "node_modules/@walletconnect/modal-ui/node_modules/lit-element": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", - "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", - "license": "BSD-3-Clause", + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.1.0", - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.8.0" + "@types/ms": "*" } }, - "node_modules/@walletconnect/modal-ui/node_modules/lit-html": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", - "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", - "license": "BSD-3-Clause", - "dependencies": { - "@types/trusted-types": "^2.0.2" - } + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" }, - "node_modules/@walletconnect/modal-ui/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "node_modules/@types/node": { + "version": "22.7.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.9.tgz", + "integrity": "sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg==", "license": "MIT", "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" + "undici-types": "~6.19.2" } }, - "node_modules/@walletconnect/randombytes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@walletconnect/randombytes/-/randombytes-1.1.0.tgz", - "integrity": "sha512-X+LO/9ClnXX2Q/1+u83qMnohVaxC4qsXByM/gMSwGMrUObxEiqEWS+b9Upg9oNl6mTr85dTCRF8W17KVcKKXQw==", + "node_modules/@types/node-fetch": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", "license": "MIT", - "peer": true, "dependencies": { - "@noble/hashes": "1.7.0", - "@walletconnect/encoding": "^1.0.2", - "@walletconnect/environment": "^1.0.1", - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/randombytes/node_modules/@noble/hashes": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.0.tgz", - "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", - "license": "MIT", - "peer": true, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "@types/node": "*", + "form-data": "^4.0.4" } }, - "node_modules/@walletconnect/randombytes/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD", - "peer": true + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "devOptional": true, + "license": "MIT" }, - "node_modules/@walletconnect/relay-api": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.11.tgz", - "integrity": "sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==", + "node_modules/@types/react": { + "version": "18.3.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.21.tgz", + "integrity": "sha512-gXLBtmlcRJeT09/sI4PxVwyrku6SaNUj/6cMubjE6T6XdY1fDmBL7r0nX0jbSZPU/Xr0KuwLLZh6aOYY5d91Xw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@walletconnect/jsonrpc-types": "^1.0.2" + "@types/prop-types": "*", + "csstype": "^3.0.2" } }, - "node_modules/@walletconnect/relay-auth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.1.0.tgz", - "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@noble/curves": "1.8.0", - "@noble/hashes": "1.7.0", - "@walletconnect/safe-json": "^1.0.1", - "@walletconnect/time": "^1.0.2", - "uint8arrays": "^3.0.0" + "@types/react": "*" } }, - "node_modules/@walletconnect/relay-auth/node_modules/@noble/curves": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.0.tgz", - "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dev": true, "license": "MIT", "dependencies": { - "@noble/hashes": "1.7.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@walletconnect/relay-auth/node_modules/@noble/hashes": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.0.tgz", - "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "@types/history": "^4.7.11", + "@types/react": "*" } }, - "node_modules/@walletconnect/safe-json": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", - "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "1.14.1" + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" } }, - "node_modules/@walletconnect/safe-json/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" }, - "node_modules/@walletconnect/sign-client": { - "version": "2.21.4", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.4.tgz", - "integrity": "sha512-v1OJ9IQCZAqaDEUYGFnGLe2fSp8DN9cv7j8tUYm5ngiFK7h6LjP4Ew3gGCca4AHWzMFkHuIRNQ+6Ypep1K/B7g==", - "license": "Apache-2.0", - "dependencies": { - "@walletconnect/core": "2.21.4", - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/logger": "2.1.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.4", - "@walletconnect/utils": "2.21.4", - "events": "3.3.0" - } + "node_modules/@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==", + "license": "MIT" }, - "node_modules/@walletconnect/time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", - "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", "license": "MIT", + "peer": true, "dependencies": { - "tslib": "1.14.1" + "@types/node": "*" } }, - "node_modules/@walletconnect/time/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@walletconnect/types": { - "version": "2.21.4", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.4.tgz", - "integrity": "sha512-6O61esDSW8FZNdFezgB4bX2S35HM6tCwBEjGHNB8JeoKCfpXG33hw2raU/SBgBL/jmM57QRW4M1aFH7v1u9z7g==", - "license": "Apache-2.0", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz", + "integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==", + "dev": true, + "license": "MIT", "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "events": "3.3.0" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.11.0", + "@typescript-eslint/type-utils": "8.11.0", + "@typescript-eslint/utils": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@walletconnect/types/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", - "license": "MIT", + "node_modules/@typescript-eslint/parser": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz", + "integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" + "@typescript-eslint/scope-manager": "8.11.0", + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/typescript-estree": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { + "typescript": { "optional": true } } }, - "node_modules/@walletconnect/types/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz", + "integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==", + "dev": true, "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0" }, "engines": { - "node": ">= 14.16.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@walletconnect/types/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz", + "integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==", + "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.11.0", + "@typescript-eslint/utils": "8.11.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, "engines": { - "node": ">= 14.18.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@walletconnect/types/node_modules/unstorage": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", - "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", + "node_modules/@typescript-eslint/types": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz", + "integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==", + "dev": true, "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz", + "integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^4.0.3", - "destr": "^2.0.5", - "h3": "^1.15.2", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", - "ofetch": "^1.4.1", - "ufo": "^1.6.1" + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3 || ^7.0.0", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { + "typescript": { "optional": true } } }, - "node_modules/@walletconnect/universal-provider": { - "version": "2.21.4", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.4.tgz", - "integrity": "sha512-ZSYU5H7Zi/nEy3L21kw5l3ovMagrbXDRKBG8vjPpGQAkflQocRj6d0SesFOCBEdJS16nt+6dKI2f5blpOGzyTQ==", - "license": "Apache-2.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/jsonrpc-http-connection": "1.0.8", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "@walletconnect/sign-client": "2.21.4", - "@walletconnect/types": "2.21.4", - "@walletconnect/utils": "2.21.4", - "es-toolkit": "1.39.3", - "events": "3.3.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz", + "integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==", + "dev": true, "license": "MIT", "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.11.0", + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/typescript-estree": "8.11.0" }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" } }, - "node_modules/@walletconnect/universal-provider/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz", + "integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==", + "dev": true, "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "@typescript-eslint/types": "8.11.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">= 14.16.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@walletconnect/universal-provider/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">= 14.18.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@walletconnect/universal-provider/node_modules/unstorage": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", - "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", + "integrity": "sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==", + "dev": true, "license": "MIT", "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^4.0.3", - "destr": "^2.0.5", - "h3": "^1.15.2", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", - "ofetch": "^1.4.1", - "ufo": "^1.6.1" + "@swc/core": "^1.7.26" }, "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3 || ^7.0.0", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" + "vite": "^4 || ^5" + } + }, + "node_modules/@wagmi/connectors": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@wagmi/connectors/-/connectors-3.1.11.tgz", + "integrity": "sha512-wzxp9f9PtSUFjDUP/QDjc1t7HON4D8wrVKsw35ejdO8hToDpx1gU9lwH/47Zo/1zExGezQc392sjoHSszYd7OA==", + "funding": [ + { + "type": "gitcoin", + "url": "https://wagmi.sh/gitcoin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@coinbase/wallet-sdk": "^3.6.6", + "@safe-global/safe-apps-provider": "^0.18.1", + "@safe-global/safe-apps-sdk": "^8.1.0", + "@walletconnect/ethereum-provider": "2.11.0", + "@walletconnect/legacy-provider": "^2.0.0", + "@walletconnect/modal": "2.6.2", + "@walletconnect/utils": "2.11.0", + "abitype": "0.8.7", + "eventemitter3": "^4.0.7" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "viem": ">=0.3.35" }, "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { + "typescript": { "optional": true } } }, - "node_modules/@walletconnect/utils": { - "version": "2.21.4", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.4.tgz", - "integrity": "sha512-LuSyBXvRLiDqIu4uMFei5eJ/WPhkIkdW58fmDlRnryatIuBPCho3dlrNSbOjVSdsID+OvxjOlpPLi+5h4oTbaA==", + "node_modules/@wagmi/connectors/node_modules/@coinbase/wallet-sdk": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-3.9.3.tgz", + "integrity": "sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==", "license": "Apache-2.0", + "peer": true, "dependencies": { - "@msgpack/msgpack": "3.1.2", - "@noble/ciphers": "1.3.0", - "@noble/curves": "1.9.2", - "@noble/hashes": "1.8.0", - "@scure/base": "1.2.6", + "bn.js": "^5.2.1", + "buffer": "^6.0.3", + "clsx": "^1.2.1", + "eth-block-tracker": "^7.1.0", + "eth-json-rpc-filters": "^6.0.0", + "eventemitter3": "^5.0.1", + "keccak": "^3.0.3", + "preact": "^10.16.0", + "sha.js": "^2.4.11" + } + }, + "node_modules/@wagmi/connectors/node_modules/@coinbase/wallet-sdk/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT", + "peer": true + }, + "node_modules/@wagmi/connectors/node_modules/@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/@wagmi/connectors/node_modules/@walletconnect/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.11.0.tgz", + "integrity": "sha512-2Tjp5BCevI7dbmqo/OrCjX4tqgMqwJNQLlQAlphqPfvwlF9+tIu6pGcVbSN3U9zyXzWIZCeleqEaWUeSeET4Ew==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-provider": "1.0.13", + "@walletconnect/jsonrpc-types": "1.0.3", "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.4", - "@walletconnect/window-getters": "1.0.1", - "@walletconnect/window-metadata": "1.0.1", - "blakejs": "1.2.1", - "bs58": "6.0.0", - "detect-browser": "5.3.0", - "query-string": "7.1.3", - "uint8arrays": "3.1.1", - "viem": "2.31.0" + "@walletconnect/jsonrpc-ws-connection": "1.0.14", + "@walletconnect/keyvaluestorage": "^1.1.1", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/relay-auth": "^1.0.4", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.11.0", + "@walletconnect/utils": "2.11.0", + "events": "^3.3.0", + "isomorphic-unfetch": "3.1.0", + "lodash.isequal": "4.5.0", + "uint8arrays": "^3.1.0" } }, - "node_modules/@walletconnect/utils/node_modules/@noble/curves": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", - "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", + "node_modules/@wagmi/connectors/node_modules/@walletconnect/ethereum-provider": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.11.0.tgz", + "integrity": "sha512-YrTeHVjuSuhlUw7SQ6xBJXDuJ6iAC+RwINm9nVhoKYJSHAy3EVSJZOofMKrnecL0iRMtD29nj57mxAInIBRuZA==", + "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@walletconnect/jsonrpc-http-connection": "^1.0.7", + "@walletconnect/jsonrpc-provider": "^1.0.13", + "@walletconnect/jsonrpc-types": "^1.0.3", + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/modal": "^2.6.2", + "@walletconnect/sign-client": "2.11.0", + "@walletconnect/types": "2.11.0", + "@walletconnect/universal-provider": "2.11.0", + "@walletconnect/utils": "2.11.0", + "events": "^3.3.0" + } + }, + "node_modules/@wagmi/connectors/node_modules/@walletconnect/heartbeat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz", + "integrity": "sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==", "license": "MIT", + "peer": true, "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "@walletconnect/events": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "tslib": "1.14.1" } }, - "node_modules/@walletconnect/utils/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "node_modules/@wagmi/connectors/node_modules/@walletconnect/jsonrpc-provider": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz", + "integrity": "sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==", "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peer": true, + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/safe-json": "^1.0.2", + "tslib": "1.14.1" } }, - "node_modules/@walletconnect/utils/node_modules/@scure/bip32": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", - "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "node_modules/@wagmi/connectors/node_modules/@walletconnect/jsonrpc-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz", + "integrity": "sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==", "license": "MIT", + "peer": true, "dependencies": { - "@noble/curves": "~1.9.0", - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "keyvaluestorage-interface": "^1.0.0", + "tslib": "1.14.1" } }, - "node_modules/@walletconnect/utils/node_modules/@scure/bip39": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", - "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "node_modules/@wagmi/connectors/node_modules/@walletconnect/jsonrpc-ws-connection": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz", + "integrity": "sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==", "license": "MIT", + "peer": true, "dependencies": { - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.2", + "events": "^3.3.0", + "ws": "^7.5.1" } }, - "node_modules/@walletconnect/utils/node_modules/@walletconnect/keyvaluestorage": { + "node_modules/@wagmi/connectors/node_modules/@walletconnect/keyvaluestorage": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", "license": "MIT", + "peer": true, "dependencies": { "@walletconnect/safe-json": "^1.0.1", "idb-keyval": "^6.2.1", @@ -11308,11 +7464,138 @@ } } }, - "node_modules/@walletconnect/utils/node_modules/chokidar": { + "node_modules/@wagmi/connectors/node_modules/@walletconnect/modal": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.6.2.tgz", + "integrity": "sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==", + "deprecated": "Please follow the migration guide on https://docs.reown.com/appkit/upgrade/wcm", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@walletconnect/modal-core": "2.6.2", + "@walletconnect/modal-ui": "2.6.2" + } + }, + "node_modules/@wagmi/connectors/node_modules/@walletconnect/modal-core": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-core/-/modal-core-2.6.2.tgz", + "integrity": "sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "valtio": "1.11.2" + } + }, + "node_modules/@wagmi/connectors/node_modules/@walletconnect/modal-ui": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz", + "integrity": "sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@walletconnect/modal-core": "2.6.2", + "lit": "2.8.0", + "motion": "10.16.2", + "qrcode": "1.5.3" + } + }, + "node_modules/@wagmi/connectors/node_modules/@walletconnect/sign-client": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.11.0.tgz", + "integrity": "sha512-H2ukscibBS+6WrzQWh+WyVBqO5z4F5et12JcwobdwgHnJSlqIoZxqnUYYWNCI5rUR5UKsKWaUyto4AE9N5dw4Q==", + "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@walletconnect/core": "2.11.0", + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.11.0", + "@walletconnect/utils": "2.11.0", + "events": "^3.3.0" + } + }, + "node_modules/@wagmi/connectors/node_modules/@walletconnect/types": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.11.0.tgz", + "integrity": "sha512-AB5b1lrEbCGHxqS2vqfCkIoODieH+ZAUp9rA1O2ftrhnqDJiJK983Df87JhYhECsQUBHHfALphA8ydER0q+9sw==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/keyvaluestorage": "^1.1.1", + "@walletconnect/logger": "^2.0.1", + "events": "^3.3.0" + } + }, + "node_modules/@wagmi/connectors/node_modules/@walletconnect/universal-provider": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.11.0.tgz", + "integrity": "sha512-zgJv8jDvIMP4Qse/D9oIRXGdfoNqonsrjPZanQ/CHNe7oXGOBiQND2IIeX+tS0H7uNA0TPvctljCLiIN9nw4eA==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@walletconnect/jsonrpc-http-connection": "^1.0.7", + "@walletconnect/jsonrpc-provider": "1.0.13", + "@walletconnect/jsonrpc-types": "^1.0.2", + "@walletconnect/jsonrpc-utils": "^1.0.7", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/sign-client": "2.11.0", + "@walletconnect/types": "2.11.0", + "@walletconnect/utils": "2.11.0", + "events": "^3.3.0" + } + }, + "node_modules/@wagmi/connectors/node_modules/@walletconnect/utils": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.11.0.tgz", + "integrity": "sha512-hxkHPlTlDQILHfIKXlmzgNJau/YcSBC3XHUSuZuKZbNEw3duFT6h6pm3HT/1+j1a22IG05WDsNBuTCRkwss+BQ==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@stablelib/chacha20poly1305": "1.0.1", + "@stablelib/hkdf": "1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "1.0.1", + "@stablelib/x25519": "^1.0.3", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.11.0", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "^3.1.0" + } + }, + "node_modules/@wagmi/connectors/node_modules/abitype": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.8.7.tgz", + "integrity": "sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.19.1" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@wagmi/connectors/node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", + "peer": true, "dependencies": { "readdirp": "^4.0.1" }, @@ -11323,47 +7606,82 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@walletconnect/utils/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" + "node_modules/@wagmi/connectors/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } }, - "node_modules/@walletconnect/utils/node_modules/ox": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.7.1.tgz", - "integrity": "sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], + "node_modules/@wagmi/connectors/node_modules/lit": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", + "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/@wagmi/connectors/node_modules/lit-element": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/@wagmi/connectors/node_modules/lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/@wagmi/connectors/node_modules/proxy-compare": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", + "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==", + "license": "MIT", + "peer": true + }, + "node_modules/@wagmi/connectors/node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", "license": "MIT", + "peer": true, "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/ciphers": "^1.3.0", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", - "eventemitter3": "5.0.1" + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" }, - "peerDependencies": { - "typescript": ">=5.4.0" + "bin": { + "qrcode": "bin/qrcode" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@walletconnect/utils/node_modules/readdirp": { + "node_modules/@wagmi/connectors/node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", + "peer": true, "engines": { "node": ">= 14.18.0" }, @@ -11372,16 +7690,24 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@walletconnect/utils/node_modules/unstorage": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", - "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", + "node_modules/@wagmi/connectors/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "peer": true + }, + "node_modules/@wagmi/connectors/node_modules/unstorage": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", + "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", "license": "MIT", + "peer": true, "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.2", + "h3": "^1.15.3", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.6", "ofetch": "^1.4.1", @@ -11396,7 +7722,7 @@ "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6.0.3 || ^7.0.0", "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", @@ -11464,2118 +7790,1988 @@ } } }, - "node_modules/@walletconnect/utils/node_modules/viem": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.31.0.tgz", - "integrity": "sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], + "node_modules/@wagmi/connectors/node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", "license": "MIT", - "dependencies": { - "@noble/curves": "1.9.1", - "@noble/hashes": "1.8.0", - "@scure/bip32": "1.7.0", - "@scure/bip39": "1.6.0", - "abitype": "1.0.8", - "isows": "1.0.7", - "ox": "0.7.1", - "ws": "8.18.2" - }, + "peer": true, "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@walletconnect/utils/node_modules/viem/node_modules/@noble/curves": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", - "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "node_modules/@wagmi/connectors/node_modules/valtio": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.11.2.tgz", + "integrity": "sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==", "license": "MIT", + "peer": true, "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" + "proxy-compare": "2.5.1", + "use-sync-external-store": "1.2.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@walletconnect/utils/node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", - "license": "MIT", "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@walletconnect/window-getters": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", - "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", - "license": "MIT", - "dependencies": { - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/window-getters/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@walletconnect/window-metadata": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", - "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", - "license": "MIT", - "dependencies": { - "@walletconnect/window-getters": "^1.0.1", - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/window-metadata/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/abitype": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", - "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/wevm" + "node": ">=12.20.0" }, "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.22.0" + "@types/react": ">=16.8", + "react": ">=16.8" }, "peerDependenciesMeta": { - "typescript": { + "@types/react": { "optional": true }, - "zod": { + "react": { "optional": true } } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", - "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", - "license": "MIT" - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "license": "MIT" - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "node_modules/@wagmi/connectors/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", "peer": true, "engines": { - "node": ">= 14" - } - }, - "node_modules/agentkeepalive": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", - "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", - "license": "MIT", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/ai": { - "version": "4.3.19", - "resolved": "https://registry.npmjs.org/ai/-/ai-4.3.19.tgz", - "integrity": "sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "1.1.3", - "@ai-sdk/provider-utils": "2.2.8", - "@ai-sdk/react": "1.2.12", - "@ai-sdk/ui-utils": "1.2.11", - "@opentelemetry/api": "1.9.0", - "jsondiffpatch": "0.6.0" - }, - "engines": { - "node": ">=18" + "node": ">=8.3.0" }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "zod": "^3.23.8" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { - "react": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@wagmi/core": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-1.4.13.tgz", + "integrity": "sha512-ytMCvXbBOgfDu9Qw67279wq/jNEe7EZLjLyekX7ROnvHRADqFr3lwZI6ih41UmtRZAmXAx8Ghyuqy154EjB5mQ==", + "funding": [ + { + "type": "gitcoin", + "url": "https://wagmi.sh/gitcoin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], "license": "MIT", + "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@wagmi/connectors": "3.1.11", + "abitype": "0.8.7", + "eventemitter3": "^4.0.7", + "zustand": "^4.3.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "typescript": ">=5.0.4", + "viem": ">=0.3.35" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/anser": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", - "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "license": "MIT", - "peer": true - }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@wagmi/core/node_modules/abitype": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.8.7.tgz", + "integrity": "sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==", "license": "MIT", - "engines": { - "node": ">=12" + "peer": true, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.19.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependenciesMeta": { + "zod": { + "optional": true + } } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@wagmi/core/node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "use-sync-external-store": "^1.2.2" }, "engines": { - "node": ">=8" + "node": ">=12.7.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" }, - "engines": { - "node": ">= 8" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "license": "MIT", + "node_modules/@wallet-standard/app": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wallet-standard/app/-/app-1.1.0.tgz", + "integrity": "sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.0.0" + "@wallet-standard/base": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">=16" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT", - "peer": true - }, - "node_modules/asn1js": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.6.tgz", - "integrity": "sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==", - "license": "BSD-3-Clause", - "dependencies": { - "pvtsutils": "^1.3.6", - "pvutils": "^1.1.3", - "tslib": "^2.8.1" - }, + "node_modules/@wallet-standard/base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wallet-standard/base/-/base-1.1.0.tgz", + "integrity": "sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==", + "license": "Apache-2.0", "engines": { - "node": ">=12.0.0" + "node": ">=16" } }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "license": "MIT", - "peer": true - }, - "node_modules/async-mutex": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", - "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", - "license": "MIT", - "peer": true, + "node_modules/@wallet-standard/features": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wallet-standard/features/-/features-1.1.0.tgz", + "integrity": "sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.0.0" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "license": "MIT", + "@wallet-standard/base": "^1.1.0" + }, "engines": { - "node": ">=8.0.0" + "node": ">=16" } }, - "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", + "node_modules/@wallet-standard/wallet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wallet-standard/wallet/-/wallet-1.1.0.tgz", + "integrity": "sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==", + "license": "Apache-2.0", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "@wallet-standard/base": "^1.1.0" }, "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=16" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", + "node_modules/@walletconnect/core": { + "version": "2.21.4", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.4.tgz", + "integrity": "sha512-XtwPUCj3bCNX/2yjYGlQyvcsn32wkzixCjyWOD4pdKFVk7opZPAdF4xr85rmo6nJ7AiBYxjV1IH0bemTPEdE6Q==", + "license": "Apache-2.0", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "1.0.16", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.4", + "@walletconnect/utils": "2.21.4", + "@walletconnect/window-getters": "1.0.1", + "es-toolkit": "1.39.3", + "events": "3.3.0", + "uint8arrays": "3.1.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "node_modules/@walletconnect/core/node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", "license": "MIT", - "peer": true, "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" }, "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "@react-native-async-storage/async-storage": "1.x" }, - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "node_modules/@walletconnect/core/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", - "peer": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "readdirp": "^4.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.28.1.tgz", - "integrity": "sha512-meT17DOuUElMNsL5LZN56d+KBp22hb0EfxWfuPUeoSi54e40v1W4C2V36P75FpsH9fVEfDKpw5Nnkahc8haSsQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "hermes-parser": "0.28.1" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "node_modules/@walletconnect/core/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", - "peer": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" + "engines": { + "node": ">= 14.18.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "node_modules/@walletconnect/core/node_modules/unstorage": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", + "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", "license": "MIT", - "peer": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.2", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" }, "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base-x": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", - "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "@azure/cosmos": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true } - ], - "license": "MIT" - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "license": "MIT" - }, - "node_modules/big.js": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", - "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bigjs" } }, - "node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "node_modules/@walletconnect/crypto": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@walletconnect/crypto/-/crypto-1.1.0.tgz", + "integrity": "sha512-yZO8BBTQt7BcaemjDgwN56OmSv0OO4QjIpvtfj5OxZfL6IQZQWHOhwC6pJg+BmZPbDlJlWFqFuCZRtiPwRmsoA==", "license": "MIT", - "engines": { - "node": "*" + "peer": true, + "dependencies": { + "@noble/ciphers": "1.2.0", + "@noble/hashes": "1.7.0", + "@walletconnect/encoding": "^1.0.2", + "@walletconnect/environment": "^1.0.1", + "@walletconnect/randombytes": "^1.0.3", + "tslib": "1.14.1" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "node_modules/@walletconnect/crypto/node_modules/@noble/ciphers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.0.tgz", + "integrity": "sha512-YGdEUzYEd+82jeaVbSKKVp1jFZb8LwaNMIIzHFkihGvYdd/KKAr7KaJHdEdSYGredE3ssSravXIa0Jxg28Sv5w==", "license": "MIT", + "peer": true, "engines": { - "node": ">=8" + "node": "^14.21.3 || >=16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", - "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "node_modules/@walletconnect/crypto/node_modules/@noble/hashes": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.0.tgz", + "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/borsh": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", - "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", - "license": "Apache-2.0", "peer": true, - "dependencies": { - "bn.js": "^5.2.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/borsh/node_modules/base-x": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", - "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "node_modules/@walletconnect/crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "peer": true + }, + "node_modules/@walletconnect/encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.2.tgz", + "integrity": "sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==", "license": "MIT", "peer": true, "dependencies": { - "safe-buffer": "^5.0.1" + "is-typedarray": "1.0.0", + "tslib": "1.14.1", + "typedarray-to-buffer": "3.1.5" } }, - "node_modules/borsh/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "node_modules/@walletconnect/encoding/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "peer": true + }, + "node_modules/@walletconnect/environment": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz", + "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==", "license": "MIT", - "peer": true, "dependencies": { - "base-x": "^3.0.2" + "tslib": "1.14.1" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", + "node_modules/@walletconnect/environment/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@walletconnect/ethereum-provider": { + "version": "2.21.4", + "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.21.4.tgz", + "integrity": "sha512-PZBJKcoPfaHiGBXlVwXZEHSXuivqzflzHv+3fpXr6MvHYW/uho5ZdgnHw54EE0jJ0j4Z9h+07PnMjiDFuKjKWA==", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@reown/appkit": "1.7.8", + "@walletconnect/jsonrpc-http-connection": "1.0.8", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/sign-client": "2.21.4", + "@walletconnect/types": "2.21.4", + "@walletconnect/universal-provider": "2.21.4", + "@walletconnect/utils": "2.21.4", + "events": "3.3.0" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/@walletconnect/ethereum-provider/node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@react-native-async-storage/async-storage": "1.x" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "license": "MIT" - }, - "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/@walletconnect/ethereum-provider/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" + "readdirp": "^4.0.1" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/bs58": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", - "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "node_modules/@walletconnect/ethereum-provider/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", - "dependencies": { - "base-x": "^5.0.0" + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "license": "Apache-2.0", - "peer": true, + "node_modules/@walletconnect/ethereum-provider/node_modules/unstorage": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", + "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", + "license": "MIT", "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.2", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "@azure/cosmos": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT", - "peer": true - }, - "node_modules/bufferutil": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", - "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", - "hasInstallScript": true, + "node_modules/@walletconnect/events": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", + "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==", "license": "MIT", "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" + "keyvaluestorage-interface": "^1.0.0", + "tslib": "1.14.1" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/@walletconnect/events/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/@walletconnect/heartbeat": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz", + "integrity": "sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" + "@walletconnect/events": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "events": "^3.3.0" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/@walletconnect/jsonrpc-http-connection": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz", + "integrity": "sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.1", + "cross-fetch": "^3.1.4", + "events": "^3.3.0" } }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "node_modules/@walletconnect/jsonrpc-provider": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz", + "integrity": "sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==", "license": "MIT", - "peer": true, "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/safe-json": "^1.0.2", + "events": "^3.3.0" } }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "node_modules/@walletconnect/jsonrpc-types": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz", + "integrity": "sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==", "license": "MIT", - "peer": true, "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/camelize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", - "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "events": "^3.3.0", + "keyvaluestorage-interface": "^1.0.0" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001727", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", - "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@walletconnect/jsonrpc-utils": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz", + "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@walletconnect/environment": "^1.0.1", + "@walletconnect/jsonrpc-types": "^1.0.3", + "tslib": "1.14.1" } }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } + "node_modules/@walletconnect/jsonrpc-utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/@walletconnect/jsonrpc-ws-connection": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.16.tgz", + "integrity": "sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==", "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.2", + "events": "^3.3.0", + "ws": "^7.5.1" } }, - "node_modules/chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" + "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" }, - "bin": { - "print-chrome-path": "bin/print-chrome-path.js" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, - "engines": { - "node": ">=12.13.0" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/chromium-edge-launcher": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", - "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "node_modules/@walletconnect/legacy-client": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/legacy-client/-/legacy-client-2.0.0.tgz", + "integrity": "sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "@walletconnect/crypto": "^1.0.3", + "@walletconnect/encoding": "^1.0.2", + "@walletconnect/jsonrpc-utils": "^1.0.4", + "@walletconnect/legacy-types": "^2.0.0", + "@walletconnect/legacy-utils": "^2.0.0", + "@walletconnect/safe-json": "^1.0.1", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "^5.3.0", + "query-string": "^6.13.5" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/@walletconnect/legacy-client/node_modules/query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", "license": "MIT", "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", "dependencies": { - "clsx": "^2.1.1" + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "url": "https://polar.sh/cva" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", + "node_modules/@walletconnect/legacy-modal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/legacy-modal/-/legacy-modal-2.0.0.tgz", + "integrity": "sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "@walletconnect/legacy-types": "^2.0.0", + "@walletconnect/legacy-utils": "^2.0.0", + "copy-to-clipboard": "^3.3.3", + "preact": "^10.12.0", + "qrcode": "^1.5.1" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@walletconnect/legacy-provider": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/legacy-provider/-/legacy-provider-2.0.0.tgz", + "integrity": "sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@walletconnect/jsonrpc-http-connection": "^1.0.4", + "@walletconnect/jsonrpc-provider": "^1.0.6", + "@walletconnect/legacy-client": "^2.0.0", + "@walletconnect/legacy-modal": "^2.0.0", + "@walletconnect/legacy-types": "^2.0.0", + "@walletconnect/legacy-utils": "^2.0.0" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", + "node_modules/@walletconnect/legacy-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/legacy-types/-/legacy-types-2.0.0.tgz", + "integrity": "sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "@walletconnect/jsonrpc-types": "^1.0.2" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", + "node_modules/@walletconnect/legacy-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/legacy-utils/-/legacy-utils-2.0.0.tgz", + "integrity": "sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ==", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "@walletconnect/encoding": "^1.0.2", + "@walletconnect/jsonrpc-utils": "^1.0.4", + "@walletconnect/legacy-types": "^2.0.0", + "@walletconnect/safe-json": "^1.0.1", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "^5.3.0", + "query-string": "^6.13.5" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/@walletconnect/legacy-utils/node_modules/query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", "license": "MIT", + "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", "engines": { "node": ">=6" - } - }, - "node_modules/cmdk": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.0.tgz", - "integrity": "sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-dialog": "1.0.5", - "@radix-ui/react-primitive": "1.0.3" }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cmdk/node_modules/@radix-ui/primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", - "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "node_modules/@walletconnect/logger": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.1.2.tgz", + "integrity": "sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "@walletconnect/safe-json": "^1.0.2", + "pino": "7.11.0" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", - "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", - "license": "MIT", + "node_modules/@walletconnect/modal": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.7.0.tgz", + "integrity": "sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw==", + "deprecated": "Please follow the migration guide on https://docs.reown.com/appkit/upgrade/wcm", + "license": "Apache-2.0", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@walletconnect/modal-core": "2.7.0", + "@walletconnect/modal-ui": "2.7.0" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-context": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", - "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", - "license": "MIT", + "node_modules/@walletconnect/modal-core": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-core/-/modal-core-2.7.0.tgz", + "integrity": "sha512-oyMIfdlNdpyKF2kTJowTixZSo0PGlCJRdssUN/EZdA6H6v03hZnf09JnwpljZNfir2M65Dvjm/15nGrDQnlxSA==", + "license": "Apache-2.0", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "valtio": "1.11.2" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-dialog": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", - "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", + "node_modules/@walletconnect/modal-core/node_modules/proxy-compare": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", + "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==", + "license": "MIT" + }, + "node_modules/@walletconnect/modal-core/node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" - }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", - "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "node_modules/@walletconnect/modal-core/node_modules/valtio": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.11.2.tgz", + "integrity": "sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-escape-keydown": "1.0.3" + "proxy-compare": "2.5.1", + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.20.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "@types/react": ">=16.8", + "react": ">=16.8" }, "peerDependenciesMeta": { "@types/react": { "optional": true }, - "@types/react-dom": { + "react": { "optional": true } } }, - "node_modules/cmdk/node_modules/@radix-ui/react-focus-guards": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", - "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "node_modules/@walletconnect/modal-ui": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.7.0.tgz", + "integrity": "sha512-gERYvU7D7K1ANCN/8vUgsE0d2hnRemfAFZ2novm9aZBg7TEd/4EgB+AqbJ+1dc7GhOL6dazckVq78TgccHb7mQ==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/modal-core": "2.7.0", + "lit": "2.8.0", + "motion": "10.16.2", + "qrcode": "1.5.3" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/lit": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", + "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/lit-element": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "bin": { + "qrcode": "bin/qrcode" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=10.13.0" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-focus-scope": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", - "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "node_modules/@walletconnect/randombytes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@walletconnect/randombytes/-/randombytes-1.1.0.tgz", + "integrity": "sha512-X+LO/9ClnXX2Q/1+u83qMnohVaxC4qsXByM/gMSwGMrUObxEiqEWS+b9Upg9oNl6mTr85dTCRF8W17KVcKKXQw==", "license": "MIT", + "peer": true, "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "@noble/hashes": "1.7.0", + "@walletconnect/encoding": "^1.0.2", + "@walletconnect/environment": "^1.0.1", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/randombytes/node_modules/@noble/hashes": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.0.tgz", + "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", - "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "node_modules/@walletconnect/randombytes/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "peer": true + }, + "node_modules/@walletconnect/relay-api": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.11.tgz", + "integrity": "sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@walletconnect/jsonrpc-types": "^1.0.2" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-portal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", - "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "node_modules/@walletconnect/relay-auth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.1.0.tgz", + "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "@noble/curves": "1.8.0", + "@noble/hashes": "1.7.0", + "@walletconnect/safe-json": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "uint8arrays": "^3.0.0" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-presence": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", - "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "node_modules/@walletconnect/relay-auth/node_modules/@noble/curves": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.0.tgz", + "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1" + "@noble/hashes": "1.7.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@walletconnect/relay-auth/node_modules/@noble/hashes": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.0.tgz", + "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-primitive": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", - "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "node_modules/@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "tslib": "1.14.1" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-slot": { + "node_modules/@walletconnect/safe-json/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@walletconnect/sign-client": { + "version": "2.21.4", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.4.tgz", + "integrity": "sha512-v1OJ9IQCZAqaDEUYGFnGLe2fSp8DN9cv7j8tUYm5ngiFK7h6LjP4Ew3gGCca4AHWzMFkHuIRNQ+6Ypep1K/B7g==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/core": "2.21.4", + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "2.1.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.4", + "@walletconnect/utils": "2.21.4", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/time": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", - "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", + "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "tslib": "1.14.1" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", - "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "node_modules/@walletconnect/time/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@walletconnect/types": { + "version": "2.21.4", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.4.tgz", + "integrity": "sha512-6O61esDSW8FZNdFezgB4bX2S35HM6tCwBEjGHNB8JeoKCfpXG33hw2raU/SBgBL/jmM57QRW4M1aFH7v1u9z7g==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/types/node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "@react-native-async-storage/async-storage": "1.x" }, "peerDependenciesMeta": { - "@types/react": { + "@react-native-async-storage/async-storage": { "optional": true } } }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", - "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "node_modules/@walletconnect/types/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" + "readdirp": "^4.0.1" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">= 14.16.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", - "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "node_modules/@walletconnect/types/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">= 14.18.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", - "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "node_modules/@walletconnect/types/node_modules/unstorage": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", + "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.2", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" }, "peerDependenciesMeta": { - "@types/react": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { "optional": true } } }, - "node_modules/cmdk/node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "node_modules/@walletconnect/universal-provider": { + "version": "2.21.4", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.4.tgz", + "integrity": "sha512-ZSYU5H7Zi/nEy3L21kw5l3ovMagrbXDRKBG8vjPpGQAkflQocRj6d0SesFOCBEdJS16nt+6dKI2f5blpOGzyTQ==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/jsonrpc-http-connection": "1.0.8", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/sign-client": "2.21.4", + "@walletconnect/types": "2.21.4", + "@walletconnect/utils": "2.21.4", + "es-toolkit": "1.39.3", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", "license": "MIT", "dependencies": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@react-native-async-storage/async-storage": "1.x" }, "peerDependenciesMeta": { - "@types/react": { + "@react-native-async-storage/async-storage": { "optional": true } } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@walletconnect/universal-provider/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" + "node": ">= 14.16.0" }, - "engines": { - "node": ">= 0.8" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "node_modules/@walletconnect/universal-provider/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "node": ">= 14.18.0" }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.8" + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/connect/node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/@walletconnect/universal-provider/node_modules/unstorage": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", + "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", "license": "MIT", - "peer": true, "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.2", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT", - "peer": true - }, - "node_modules/connect/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "license": "MIT", - "peer": true, - "dependencies": { - "ee-first": "1.1.1" + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/connect/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } } }, - "node_modules/console-table-printer": { - "version": "2.14.6", - "resolved": "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.14.6.tgz", - "integrity": "sha512-MCBl5HNVaFuuHW6FGbL/4fB7N/ormCy+tQ+sxTrF6QtSbSNETvPuOVbkJBhzDgYhvjWGrTma4eYJa37ZuoQsPw==", - "license": "MIT", + "node_modules/@walletconnect/utils": { + "version": "2.21.4", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.4.tgz", + "integrity": "sha512-LuSyBXvRLiDqIu4uMFei5eJ/WPhkIkdW58fmDlRnryatIuBPCho3dlrNSbOjVSdsID+OvxjOlpPLi+5h4oTbaA==", + "license": "Apache-2.0", "dependencies": { - "simple-wcswidth": "^1.0.1" + "@msgpack/msgpack": "3.1.2", + "@noble/ciphers": "1.3.0", + "@noble/curves": "1.9.2", + "@noble/hashes": "1.8.0", + "@scure/base": "1.2.6", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.4", + "@walletconnect/window-getters": "1.0.1", + "@walletconnect/window-metadata": "1.0.1", + "blakejs": "1.2.1", + "bs58": "6.0.0", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "3.1.1", + "viem": "2.31.0" } }, - "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "node_modules/@walletconnect/utils/node_modules/@noble/curves": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", + "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", "license": "MIT", "dependencies": { - "safe-buffer": "5.2.1" + "@noble/hashes": "1.8.0" }, "engines": { - "node": ">= 0.6" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "node_modules/@walletconnect/utils/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT", - "peer": true - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "node_modules/@walletconnect/utils/node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/cookie-es": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", - "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", - "license": "MIT" - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "node_modules/@walletconnect/utils/node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", "license": "MIT", - "engines": { - "node": ">=6.6.0" + "dependencies": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/copy-to-clipboard": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "node_modules/@walletconnect/utils/node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", "license": "MIT", - "peer": true, "dependencies": { - "toggle-selection": "^1.0.6" + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": "1.x" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } } }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/@walletconnect/utils/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "node_modules/@walletconnect/utils/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/@walletconnect/utils/node_modules/ox": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.7.1.tgz", + "integrity": "sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], "license": "MIT", - "peer": true, "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "@adraffy/ens-normalize": "^1.10.1", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@scure/bip32": "^1.5.0", + "@scure/bip39": "^1.4.0", + "abitype": "^1.0.6", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@walletconnect/utils/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@walletconnect/utils/node_modules/unstorage": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", + "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", "license": "MIT", - "peer": true, "dependencies": { - "sprintf-js": "~1.0.2" + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.2", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } } }, - "node_modules/cosmiconfig/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "node_modules/@walletconnect/utils/node_modules/viem": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.31.0.tgz", + "integrity": "sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], "license": "MIT", - "peer": true, "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "@noble/curves": "1.9.1", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.0.8", + "isows": "1.0.7", + "ox": "0.7.1", + "ws": "8.18.2" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/@walletconnect/utils/node_modules/viem/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", - "peer": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@noble/hashes": "1.8.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/cosmiconfig/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "license": "MIT", - "peer": true, "engines": { - "node": ">=4" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" + "node": "^14.21.3 || >=16" }, - "engines": { - "node": ">=0.8" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "node_modules/@walletconnect/utils/node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, "engines": { - "node": ">= 8" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/crossws": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", - "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "node_modules/@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", "license": "MIT", "dependencies": { - "uncrypto": "^0.1.3" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "license": "BSD-3-Clause", - "engines": { - "node": "*" + "tslib": "1.14.1" } }, - "node_modules/crypto-js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", - "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", - "license": "MIT" - }, - "node_modules/css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", - "license": "ISC", - "engines": { - "node": ">=4" - } + "node_modules/@walletconnect/window-getters/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" }, - "node_modules/css-to-react-native": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", - "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "node_modules/@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", "license": "MIT", "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" } }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" + "node_modules/@walletconnect/window-metadata/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" }, - "node_modules/d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" + "node_modules/abitype": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", + "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/wevm" }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "license": "ISC", - "engines": { - "node": ">=12" + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", "dependencies": { - "d3-color": "1 - 3" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", - "engines": { - "node": ">=12" + "node": ">=6.5" } }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } + "node_modules/abortcontroller-polyfill": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", + "license": "MIT" }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", - "dependencies": { - "d3-path": "^3.1.0" + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", "dependencies": { - "d3-array": "2 - 3" + "humanize-ms": "^1.2.1" }, "engines": { - "node": ">=12" + "node": ">= 8.0.0" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "license": "ISC", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-time": "1 - 3" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=12" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "license": "ISC", + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/date-fns": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", - "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "license": "MIT", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, "engines": { - "node": "*" + "node": ">= 8" } }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "license": "MIT" }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "tslib": "^2.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=10" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/async-mutex": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", + "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peer": true, + "dependencies": { + "tslib": "^2.0.0" } }, - "node_modules/decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">=8.0.0" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "possible-typed-array-names": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -13584,1222 +9780,1272 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base-x": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", "license": "MIT" }, - "node_modules/delay": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "node_modules/big.js": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", + "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", "license": "MIT", - "peer": true, "engines": { - "node": ">=10" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/bigjs" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": "*" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT" + }, + "node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" } }, - "node_modules/derive-valtio": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/derive-valtio/-/derive-valtio-0.1.0.tgz", - "integrity": "sha512-OCg2UsLbXK7GmmpzMXhYkdO64vhJ1ROUUGaTFyHjVwEdMEcTTRj7W1TxLbSBxdY8QLBPCcp66MTyaSy0RpO17A==", + "node_modules/borsh/node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", "license": "MIT", - "peerDependencies": { - "valtio": "*" + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" } }, - "node_modules/destr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", - "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", - "license": "MIT" - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/borsh/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "license": "MIT", "peer": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "dependencies": { + "base-x": "^3.0.2" } }, - "node_modules/detect-browser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", - "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==", - "license": "MIT" - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "license": "Apache-2.0" - }, - "node_modules/diff-match-patch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", - "license": "Apache-2.0" - }, - "node_modules/dijkstrajs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", - "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", - "license": "MIT" - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "license": "MIT" - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/dotenv": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz", - "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" }, - "funding": { - "url": "https://dotenvx.com" + "engines": { + "node": ">=8" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">= 0.4" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "license": "MIT", "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" + "base-x": "^5.0.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.45", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.45.tgz", - "integrity": "sha512-vOzZS6uZwhhbkZbcRyiy99Wg+pYFV5hk+5YaECvx0+Z31NR3Tt5zS6dze2OepT6PCTzVzT0dIJItti+uAW5zmw==", - "license": "ISC" - }, - "node_modules/elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "license": "MIT" - }, - "node_modules/embla-carousel": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.3.0.tgz", - "integrity": "sha512-Ve8dhI4w28qBqR8J+aMtv7rLK89r1ZA5HocwFz6uMB/i5EiC7bGI7y+AM80yAVUJw3qqaZYK7clmZMUR8kM3UA==", - "license": "MIT" + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true }, - "node_modules/embla-carousel-react": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.3.0.tgz", - "integrity": "sha512-P1FlinFDcIvggcErRjNuVqnUR8anyo8vLMIH8Rthgofw7Nj8qTguCa2QjFAbzxAUTQTPNNjNL7yt0BGGinVdFw==", + "node_modules/bufferutil": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "hasInstallScript": true, "license": "MIT", "dependencies": { - "embla-carousel": "8.3.0", - "embla-carousel-reactive-utils": "8.3.0" + "node-gyp-build": "^4.3.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.1 || ^18.0.0" + "engines": { + "node": ">=6.14.2" } }, - "node_modules/embla-carousel-reactive-utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.3.0.tgz", - "integrity": "sha512-EYdhhJ302SC4Lmkx8GRsp0sjUhEN4WyFXPOk0kGu9OXZSRMmcBlRgTvHcq8eKJE1bXWBsOi1T83B+BSSVZSmwQ==", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "license": "MIT", - "peerDependencies": { - "embla-carousel": "8.3.0" + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "iconv-lite": "^0.6.2" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", - "dependencies": { - "once": "^1.4.0" + "engines": { + "node": ">=6" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "license": "MIT", - "peer": true, - "dependencies": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">=6" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "license": "MIT", - "peer": true, - "dependencies": { - "stackframe": "^1.3.4" + "engines": { + "node": ">= 6" } }, - "node_modules/es-define-property": { + "node_modules/camelize": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", "license": "MIT", - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/caniuse-lite": { + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "is-glob": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">= 6" } }, - "node_modules/es-toolkit": { - "version": "1.39.3", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.3.tgz", - "integrity": "sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==", - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks" - ] + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "hasInstallScript": true, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "license": "ISC", "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "engines": { + "node": ">=8" } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", - "peer": true, "dependencies": { - "es6-promise": "^4.0.3" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "license": "ISC", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { - "d": "^1.0.2", - "ext": "^1.7.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.12" + "node": ">=8" } }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "node": ">=8" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" + "node_modules/cmdk": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.0.tgz", + "integrity": "sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/cmdk/node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/eslint": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", - "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", - "dev": true, + "node_modules/cmdk/node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.13.0", - "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.5", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.1", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.1.0", - "eslint-visitor-keys": "^4.1.0", - "espree": "^10.2.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "@babel/runtime": "^7.13.10" }, - "bin": { - "eslint": "bin/eslint.js" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", + "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" }, - "funding": { - "url": "https://eslint.org/donate" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" }, "peerDependencies": { - "jiti": "*" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, "peerDependenciesMeta": { - "jiti": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { "optional": true } } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0-rc-fb9a90fa48-20240614", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz", - "integrity": "sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==", - "dev": true, + "node_modules/cmdk/node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz", - "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==", - "dev": true, + "node_modules/cmdk/node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", "license": "MIT", - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", - "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "license": "ISC", + "node_modules/cmdk/node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "license": "MIT", "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" }, - "engines": { - "node": ">=0.10" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/espree": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/cmdk/node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "license": "MIT", "dependencies": { - "acorn": "^8.12.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, - "engines": { - "node": ">=4" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/cmdk/node_modules/@radix-ui/react-presence": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, + "node_modules/cmdk/node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/eth-block-tracker": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-7.1.0.tgz", - "integrity": "sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==", + "node_modules/cmdk/node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", "license": "MIT", - "peer": true, "dependencies": { - "@metamask/eth-json-rpc-provider": "^1.0.0", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^5.0.1", - "json-rpc-random-id": "^1.0.1", - "pify": "^3.0.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/eth-block-tracker/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/cmdk/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eth-json-rpc-filters": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.1.tgz", - "integrity": "sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==", - "license": "ISC", - "peer": true, "dependencies": { - "@metamask/safe-event-emitter": "^3.0.0", - "async-mutex": "^0.2.6", - "eth-query": "^2.1.2", - "json-rpc-engine": "^6.1.0", - "pify": "^5.0.0" + "@babel/runtime": "^7.13.10" }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/eth-json-rpc-filters/node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/eth-query": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", - "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", - "license": "ISC", - "peer": true, + "node_modules/cmdk/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "license": "MIT", "dependencies": { - "json-rpc-random-id": "^1.0.0", - "xtend": "^4.0.1" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/eth-rpc-errors": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", - "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", + "node_modules/cmdk/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", "license": "MIT", - "peer": true, "dependencies": { - "fast-safe-stringify": "^2.0.6" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/ethereum-bloom-filters": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", - "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", + "node_modules/cmdk/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", "license": "MIT", "dependencies": { - "@noble/hashes": "^1.4.0" + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "node_modules/cmdk/node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">=10" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/ethereum-cryptography/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.4.0" + "delayed-stream": "~1.0.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">= 0.8" } }, - "node_modules/ethereum-cryptography/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "license": "MIT", "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">= 6" } }, - "node_modules/ethers": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.15.0.tgz", - "integrity": "sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/console-table-printer": { + "version": "2.14.6", + "resolved": "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.14.6.tgz", + "integrity": "sha512-MCBl5HNVaFuuHW6FGbL/4fB7N/ormCy+tQ+sxTrF6QtSbSNETvPuOVbkJBhzDgYhvjWGrTma4eYJa37ZuoQsPw==", + "license": "MIT", + "dependencies": { + "simple-wcswidth": "^1.0.1" + } + }, + "node_modules/cookie-es": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "license": "MIT" + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", "license": "MIT", + "peer": true, "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" + "toggle-selection": "^1.0.6" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" }, "engines": { - "node": ">=14.0.0" + "node": ">=0.8" } }, - "node_modules/ethers/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "node-fetch": "^2.7.0" } }, - "node_modules/ethers/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "license": "MIT", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">= 8" } }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "license": "MIT" - }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", "license": "MIT", "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, + "uncrypto": "^0.1.3" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "license": "BSD-3-Clause", "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": "*" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", "license": "MIT", "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, "engines": { - "node": ">=0.8.x" + "node": ">=0.12" } }, - "node_modules/eventsource": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", - "license": "MIT", + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { - "eventsource-parser": "^3.0.1" + "internmap": "1 - 2" }, "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, - "node_modules/eventsource-parser": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.3.tgz", - "integrity": "sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==", - "license": "MIT", + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { - "node": ">=20.0.0" + "node": ">=12" } }, - "node_modules/exponential-backoff": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", - "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", - "license": "Apache-2.0", - "peer": true - }, - "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=12" } }, - "node_modules/express-rate-limit": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", - "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", - "license": "MIT", + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/express-rate-limit" - }, - "peerDependencies": { - "express": ">= 4.11" + "node": ">=12" } }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "license": "ISC", "dependencies": { - "type": "^2.7.2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", - "peer": true, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "engines": { - "node": "> 0.1.90" + "node": ">=12" } }, - "node_modules/fast-base64-decode": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", - "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==", - "license": "MIT" - }, - "node_modules/fast-copy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", - "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } }, - "node_modules/fast-equals": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", - "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", - "license": "MIT", + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "license": "MIT", + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "d3-array": "2 - 3" }, "engines": { - "node": ">=8.6.0" + "node": ">=12" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "d3-time": "1 - 3" }, "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-password-entropy": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fast-password-entropy/-/fast-password-entropy-1.1.1.tgz", - "integrity": "sha512-dxm29/BPFrNgyEDygg/lf9c2xQR0vnQhG7+hZjAI39M/3um9fD4xiqG6F0ZjW6bya5m9CI0u6YryHGRtxCGCiw==", - "license": "MIT" - }, - "node_modules/fast-redact": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", - "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", - "license": "MIT", + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "license": "MIT" - }, - "node_modules/fast-stable-stringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", - "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", "license": "MIT", - "peer": true - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "bser": "2.1.1" + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" } }, - "node_modules/fetch-retry": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz", - "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==", + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", "license": "MIT" }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=16.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-up": { + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "node_modules/delay": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, + "peer": true, "engines": { "node": ">=10" }, @@ -14807,2968 +11053,2813 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, "engines": { - "node": ">=16" + "node": ">=0.4.0" } }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true, - "license": "ISC" - }, - "node_modules/flow-enums-runtime": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", - "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "node_modules/derive-valtio": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/derive-valtio/-/derive-valtio-0.1.0.tgz", + "integrity": "sha512-OCg2UsLbXK7GmmpzMXhYkdO64vhJ1ROUUGaTFyHjVwEdMEcTTRj7W1TxLbSBxdY8QLBPCcp66MTyaSy0RpO17A==", "license": "MIT", - "peer": true + "peerDependencies": { + "valtio": "*" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==", + "license": "MIT" + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "license": "MIT" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "license": "MIT", "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, + "node_modules/dotenv": { + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz", + "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==", + "license": "BSD-2-Clause", "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://dotenvx.com" } }, - "node_modules/forge-light": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/forge-light/-/forge-light-1.1.4.tgz", - "integrity": "sha512-Nr0xdu93LJawgBZVU/tC+A+4pbKqigdY5PRBz8CXNm4e5saAZIqU2Qe9+nVFtVO5TWCHSgvI0LaZZuatgE5J1g==", - "license": "(BSD-3-Clause OR GPL-2.0)", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, "engines": { - "node": ">= 6.13.0" + "node": ">= 0.4" } }, - "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" } }, - "node_modules/form-data-encoder": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", - "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "license": "MIT" }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "node_modules/electron-to-chromium": { + "version": "1.5.45", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.45.tgz", + "integrity": "sha512-vOzZS6uZwhhbkZbcRyiy99Wg+pYFV5hk+5YaECvx0+Z31NR3Tt5zS6dze2OepT6PCTzVzT0dIJItti+uAW5zmw==", + "dev": true, + "license": "ISC" }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "license": "MIT", "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/formdata-node": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", - "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", - "license": "MIT", - "dependencies": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.3" - }, - "engines": { - "node": ">= 12.20" - } + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "node_modules/embla-carousel": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.3.0.tgz", + "integrity": "sha512-Ve8dhI4w28qBqR8J+aMtv7rLK89r1ZA5HocwFz6uMB/i5EiC7bGI7y+AM80yAVUJw3qqaZYK7clmZMUR8kM3UA==", + "license": "MIT" }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, + "node_modules/embla-carousel-react": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.3.0.tgz", + "integrity": "sha512-P1FlinFDcIvggcErRjNuVqnUR8anyo8vLMIH8Rthgofw7Nj8qTguCa2QjFAbzxAUTQTPNNjNL7yt0BGGinVdFw==", "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "embla-carousel": "8.3.0", + "embla-carousel-reactive-utils": "8.3.0" }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0" } }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "node_modules/embla-carousel-reactive-utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.3.0.tgz", + "integrity": "sha512-EYdhhJ302SC4Lmkx8GRsp0sjUhEN4WyFXPOk0kGu9OXZSRMmcBlRgTvHcq8eKJE1bXWBsOi1T83B+BSSVZSmwQ==", "license": "MIT", - "engines": { - "node": ">= 0.8" + "peerDependencies": { + "embla-carousel": "8.3.0" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC", - "peer": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", + "license": "MIT" }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" + "dependencies": { + "iconv-lite": "^0.6.2" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "once": "^1.4.0" } }, - "node_modules/get-nonce": { + "node_modules/es-define-property": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", - "peer": true, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "es-errors": "^1.3.0" }, "engines": { "node": ">= 0.4" } }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">= 0.4" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/es-toolkit": { + "version": "1.39.3", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.3.tgz", + "integrity": "sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.3" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=0.10" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "d": "^1.0.2", + "ext": "^1.7.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.12" } }, - "node_modules/globals": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", - "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, + "hasInstallScript": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=18" + "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC", - "peer": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT" - }, - "node_modules/groq-sdk": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/groq-sdk/-/groq-sdk-0.19.0.tgz", - "integrity": "sha512-vdh5h7ORvwvOvutA80dKF81b0gPWHxu6K/GOJBOM0n6p6CSqAVLhFfeS79Ef0j/yCycDR09jqY7jkYz9dLiS6w==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "^18.11.18", - "@types/node-fetch": "^2.6.4", - "abort-controller": "^3.0.0", - "agentkeepalive": "^4.2.1", - "form-data-encoder": "1.7.2", - "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7" - } - }, - "node_modules/groq-sdk/node_modules/@types/node": { - "version": "18.19.121", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.121.tgz", - "integrity": "sha512-bHOrbyztmyYIi4f1R0s17QsPs1uyyYnGcXeZoGEd227oZjry0q6XQBQxd82X1I57zEfwO8h9Xo+Kl5gX1d9MwQ==", "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/groq-sdk/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "license": "MIT" - }, - "node_modules/h3": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.3.tgz", - "integrity": "sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==", + "node_modules/eslint": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", + "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", + "dev": true, "license": "MIT", "dependencies": { - "cookie-es": "^1.2.2", - "crossws": "^0.3.4", - "defu": "^6.1.4", - "destr": "^2.0.5", - "iron-webcrypto": "^1.2.1", - "node-mock-http": "^1.0.0", - "radix3": "^1.1.2", - "ufo": "^1.6.1", - "uncrypto": "^0.1.3" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.7.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.13.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "node_modules/eslint-plugin-react-hooks": { + "version": "5.1.0-rc-fb9a90fa48-20240614", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz", + "integrity": "sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz", + "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==", + "dev": true, "license": "MIT", + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "has-symbols": "^1.0.3" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "node_modules/eslint-visitor-keys": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "license": "ISC", "dependencies": { - "function-bind": "^1.1.2" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10" } }, - "node_modules/hedera-agent-kit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/hedera-agent-kit/-/hedera-agent-kit-3.0.7.tgz", - "integrity": "sha512-MB/moZK64utedaxFtxmQPV4sd40xKV8HdoqC33iYEser5zGvT3ztpYsFRtDov2I5C9jRdo5IXghNDkptQQIxPQ==", - "license": "Apache-2.0", + "node_modules/espree": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@hashgraph/sdk": "^2.68.0", - "@langchain/core": "^0.3.66", - "@modelcontextprotocol/sdk": "^1.16.0", - "ai": "^4.3.19", - "bignumber.js": "^9.3.1", - "long": "^5.3.2", - "zod": "^3.25.76" + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.1.0" }, "engines": { - "node": ">=18" - } - }, - "node_modules/help-me": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", - "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", - "license": "MIT" - }, - "node_modules/hermes-estree": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.28.1.tgz", - "integrity": "sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ==", - "license": "MIT", - "peer": true - }, - "node_modules/hermes-parser": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.28.1.tgz", - "integrity": "sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg==", - "license": "MIT", - "peer": true, - "dependencies": { - "hermes-estree": "0.28.1" - } - }, - "node_modules/hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", - "license": "MIT" - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "estraverse": "^5.1.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node": ">=0.10" } }, - "node_modules/http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", - "license": "ISC" - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "peer": true, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 14" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" + "node": ">=4.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/idb-keyval": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", - "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", - "license": "Apache-2.0" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">= 4" + "node": ">=0.10.0" } }, - "node_modules/image-size": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "node_modules/eth-block-tracker": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-7.1.0.tgz", + "integrity": "sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==", "license": "MIT", "peer": true, "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" + "@metamask/eth-json-rpc-provider": "^1.0.0", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^5.0.1", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0" }, "engines": { - "node": ">=16.x" + "node": ">=14.0.0" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, + "node_modules/eth-block-tracker/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-json-rpc-filters": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.1.tgz", + "integrity": "sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==", + "license": "ISC", + "peer": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@metamask/safe-event-emitter": "^3.0.0", + "async-mutex": "^0.2.6", + "eth-query": "^2.1.2", + "json-rpc-engine": "^6.1.0", + "pify": "^5.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/eth-json-rpc-filters/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "license": "MIT", + "peer": true, "engines": { - "node": ">=0.8.19" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", "license": "ISC", "peer": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/input-otp": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.2.4.tgz", - "integrity": "sha512-md6rhmD+zmMnUh5crQNSQxq3keBRYvE3odbr4Qb9g2NWzQv9azi+t1a3X4TBTbh98fsGHgEEJlzbe1q860uGCA==", + "node_modules/eth-rpc-errors": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", + "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", "license": "MIT", - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" + "peer": true, + "dependencies": { + "fast-safe-stringify": "^2.0.6" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/ethereum-bloom-filters": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", "license": "MIT", "dependencies": { - "loose-envify": "^1.0.0" + "@noble/hashes": "^1.4.0" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", "engines": { - "node": ">= 0.10" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/iron-webcrypto": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", - "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/brc-dd" + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "node_modules/ethereum-cryptography/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "@noble/hashes": "1.4.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "node_modules/ethereum-cryptography/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "license": "MIT", - "peer": true + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/ethers": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.15.0.tgz", + "integrity": "sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/ethers/node_modules/@types/node": { + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "undici-types": "~6.19.2" } }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "node_modules/ethers/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "license": "MIT" }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", "license": "MIT", - "peer": true, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.8.x" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "license": "ISC", "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" + "type": "^2.7.2" } }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "license": "MIT", + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "peer": true, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": "> 0.1.90" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=6.0.0" } }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.6.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { - "which-typed-array": "^1.1.16" + "is-glob": "^4.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 6" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, "license": "MIT" }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-password-entropy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fast-password-entropy/-/fast-password-entropy-1.1.1.tgz", + "integrity": "sha512-dxm29/BPFrNgyEDygg/lf9c2xQR0vnQhG7+hZjAI39M/3um9fD4xiqG6F0ZjW6bya5m9CI0u6YryHGRtxCGCiw==", + "license": "MIT" + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "license": "MIT", - "peer": true, - "dependencies": { - "is-docker": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "license": "MIT" }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "node_modules/fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", "license": "MIT", - "peer": true, + "peer": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" + "reusify": "^1.0.4" } }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "ws": "*" - } + "node_modules/fetch-retry": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz", + "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==", + "license": "MIT" }, - "node_modules/isows": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", - "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "license": "BSD-3-Clause", - "peer": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "license": "BSD-3-Clause", - "peer": true, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=10" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jayson": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.2.0.tgz", - "integrity": "sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg==", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@types/connect": "^3.4.33", - "@types/node": "^12.12.54", - "@types/ws": "^7.4.4", - "commander": "^2.20.3", - "delay": "^5.0.0", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "isomorphic-ws": "^4.0.1", - "json-stringify-safe": "^5.0.1", - "stream-json": "^1.9.1", - "uuid": "^8.3.2", - "ws": "^7.5.10" - }, - "bin": { - "jayson": "bin/jayson.js" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/jayson/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "license": "MIT", - "peer": true - }, - "node_modules/jayson/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT", - "peer": true + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" }, - "node_modules/jayson/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "license": "MIT", - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jayson/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.3.0" + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "engines": { + "node": ">=14" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "license": "MIT", - "peer": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "license": "MIT" + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", - "peer": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", - "peer": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "mime-db": "1.52.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">= 0.6" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", "license": "MIT", - "peer": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 12.20" } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "engines": { + "node": "*" }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", - "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", - "peer": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", - "peer": true, "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "license": "MIT", - "peer": true, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jose": { - "version": "4.15.9", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", - "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "node_modules/globals": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { - "url": "https://github.com/sponsors/panva" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/js-base64": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", - "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==", - "license": "BSD-3-Clause" + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" }, - "node_modules/js-cookie": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", - "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", - "license": "MIT", - "engines": { - "node": ">=14" + "node_modules/groq-sdk": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/groq-sdk/-/groq-sdk-0.19.0.tgz", + "integrity": "sha512-vdh5h7ORvwvOvutA80dKF81b0gPWHxu6K/GOJBOM0n6p6CSqAVLhFfeS79Ef0j/yCycDR09jqY7jkYz9dLiS6w==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" } }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "license": "MIT" - }, - "node_modules/js-tiktoken": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/js-tiktoken/-/js-tiktoken-1.0.20.tgz", - "integrity": "sha512-Xlaqhhs8VfCd6Sh7a1cFkZHQbYTLCwVJJWiHVxBYzLPxW0XsoxBy1hitmjkdIjD3Aon5BXLHFwU5O8WUx6HH+A==", + "node_modules/groq-sdk/node_modules/@types/node": { + "version": "18.19.121", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.121.tgz", + "integrity": "sha512-bHOrbyztmyYIi4f1R0s17QsPs1uyyYnGcXeZoGEd227oZjry0q6XQBQxd82X1I57zEfwO8h9Xo+Kl5gX1d9MwQ==", "license": "MIT", "dependencies": { - "base64-js": "^1.5.1" + "undici-types": "~5.26.4" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/groq-sdk/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/h3": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.3.tgz", + "integrity": "sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==", "license": "MIT", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "cookie-es": "^1.2.2", + "crossws": "^0.3.4", + "defu": "^6.1.4", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.0", + "radix3": "^1.1.2", + "ufo": "^1.6.1", + "uncrypto": "^0.1.3" } }, - "node_modules/jsc-safe-url": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", - "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", - "license": "0BSD", - "peer": true - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { + "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", - "peer": true - }, - "node_modules/json-rpc-engine": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", - "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", - "license": "ISC", - "peer": true, "dependencies": { - "@metamask/safe-event-emitter": "^2.0.0", - "eth-rpc-errors": "^4.0.2" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=10.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/json-rpc-engine/node_modules/@metamask/safe-event-emitter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", - "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==", - "license": "ISC", - "peer": true - }, - "node_modules/json-rpc-random-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", - "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==", - "license": "ISC", - "peer": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "license": "ISC", - "peer": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsondiffpatch": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz", - "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", "dependencies": { - "@types/diff-match-patch": "^1.0.36", - "chalk": "^5.3.0", - "diff-match-patch": "^1.0.5" - }, - "bin": { - "jsondiffpatch": "bin/jsondiffpatch.js" + "has-symbols": "^1.0.3" }, "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/jsondiffpatch/node_modules/chalk": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.5.0.tgz", - "integrity": "sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/keccak": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", - "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", - "hasInstallScript": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.4" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", + "license": "MIT" + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/keyvaluestorage-interface": { + "node_modules/http-https": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", - "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", + "license": "ISC" }, - "node_modules/langchain": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.30.tgz", - "integrity": "sha512-UyVsfwHDpHbrnWrjWuhJHqi8Non+Zcsf2kdpDTqyJF8NXrHBOpjdHT5LvPuW9fnE7miDTWf5mLcrWAGZgcrznQ==", + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "license": "MIT", "dependencies": { - "@langchain/openai": ">=0.1.0 <0.7.0", - "@langchain/textsplitters": ">=0.0.0 <0.2.0", - "js-tiktoken": "^1.0.12", - "js-yaml": "^4.1.0", - "jsonpointer": "^5.0.1", - "langsmith": "^0.3.33", - "openapi-types": "^12.1.3", - "p-retry": "4", - "uuid": "^10.0.0", - "yaml": "^2.2.1", - "zod": "^3.25.32" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/anthropic": "*", - "@langchain/aws": "*", - "@langchain/cerebras": "*", - "@langchain/cohere": "*", - "@langchain/core": ">=0.3.58 <0.4.0", - "@langchain/deepseek": "*", - "@langchain/google-genai": "*", - "@langchain/google-vertexai": "*", - "@langchain/google-vertexai-web": "*", - "@langchain/groq": "*", - "@langchain/mistralai": "*", - "@langchain/ollama": "*", - "@langchain/xai": "*", - "axios": "*", - "cheerio": "*", - "handlebars": "^4.7.8", - "peggy": "^3.0.2", - "typeorm": "*" - }, - "peerDependenciesMeta": { - "@langchain/anthropic": { - "optional": true - }, - "@langchain/aws": { - "optional": true - }, - "@langchain/cerebras": { - "optional": true - }, - "@langchain/cohere": { - "optional": true - }, - "@langchain/deepseek": { - "optional": true - }, - "@langchain/google-genai": { - "optional": true - }, - "@langchain/google-vertexai": { - "optional": true - }, - "@langchain/google-vertexai-web": { - "optional": true - }, - "@langchain/groq": { - "optional": true - }, - "@langchain/mistralai": { - "optional": true - }, - "@langchain/ollama": { - "optional": true - }, - "@langchain/xai": { - "optional": true - }, - "axios": { - "optional": true - }, - "cheerio": { - "optional": true - }, - "handlebars": { - "optional": true - }, - "peggy": { - "optional": true - }, - "typeorm": { - "optional": true - } + "ms": "^2.0.0" } }, - "node_modules/langchain/node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "license": "MIT" - }, - "node_modules/langchain/node_modules/langsmith": { - "version": "0.3.53", - "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.53.tgz", - "integrity": "sha512-cnEcJEiYjbcFQy7vTCQb7sR4w70UtBCu9loCOON+yYcK6T1lVmx27lQ4AF2KY7xzKY+FhbxWms5PV3SocizzaQ==", + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { - "@types/uuid": "^10.0.0", - "chalk": "^4.1.2", - "console-table-printer": "^2.12.1", - "p-queue": "^6.6.2", - "p-retry": "4", - "semver": "^7.6.3", - "uuid": "^10.0.0" - }, - "peerDependencies": { - "@opentelemetry/api": "*", - "@opentelemetry/exporter-trace-otlp-proto": "*", - "@opentelemetry/sdk-trace-base": "*", - "openai": "*" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@opentelemetry/exporter-trace-otlp-proto": { - "optional": true - }, - "@opentelemetry/sdk-trace-base": { - "optional": true - }, - "openai": { - "optional": true - } + "engines": { + "node": ">=0.10.0" } }, - "node_modules/langchain/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "node_modules/idb-keyval": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", + "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", + "license": "Apache-2.0" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "engines": { + "node": ">= 4" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "license": "MIT", - "peer": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.8.19" } }, - "node_modules/libphonenumber-js": { - "version": "1.12.9", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.9.tgz", - "integrity": "sha512-VWwAdNeJgN7jFOD+wN4qx83DTPMVPPAUyx9/TUkBXKLiNkuWWk6anV0439tgdtwaJDrEdqkvdN22iA6J4bUCZg==", - "license": "MIT" + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, - "node_modules/lighthouse-logger": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", - "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "debug": "^2.6.9", - "marky": "^1.2.2" + "node_modules/input-otp": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.2.4.tgz", + "integrity": "sha512-md6rhmD+zmMnUh5crQNSQxq3keBRYvE3odbr4Qb9g2NWzQv9azi+t1a3X4TBTbh98fsGHgEEJlzbe1q860uGCA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" } }, - "node_modules/lighthouse-logger/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "license": "MIT", - "peer": true, "dependencies": { - "ms": "2.0.0" + "loose-envify": "^1.0.0" } }, - "node_modules/lighthouse-logger/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", "license": "MIT", - "peer": true + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/antonk52" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, - "node_modules/lit": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.0.tgz", - "integrity": "sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==", - "license": "BSD-3-Clause", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { - "@lit/reactive-element": "^2.1.0", - "lit-element": "^4.2.0", - "lit-html": "^3.3.0" + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/lit-element": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.0.tgz", - "integrity": "sha512-MGrXJVAI5x+Bfth/pU9Kst1iWID6GHDLEzFEnyULB/sFiRLgkd8NPK/PeeXxktA3T6EIIaq8U3KcbTU5XFcP2Q==", - "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.2.0", - "@lit/reactive-element": "^2.1.0", - "lit-html": "^3.3.0" - } + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "license": "MIT" }, - "node_modules/lit-html": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.0.tgz", - "integrity": "sha512-RHoswrFAxY2d8Cf2mm4OZ1DgzCoBKUKSPvA1fhtSELxUERq2aQQ2h05pO9j81gS1o7RIRJ+CePLogfyahwmynw==", - "license": "BSD-3-Clause", - "dependencies": { - "@types/trusted-types": "^2.0.2" + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "license": "MIT" - }, - "node_modules/lodash.castarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", - "dev": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", - "license": "MIT", - "peer": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", - "peer": true - }, - "node_modules/lokijs": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/lokijs/-/lokijs-1.5.12.tgz", - "integrity": "sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==", - "license": "MIT" - }, - "node_modules/long": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", - "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", - "license": "Apache-2.0" + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">=8" } }, - "node_modules/lovable-tagger": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/lovable-tagger/-/lovable-tagger-1.1.7.tgz", - "integrity": "sha512-b1wwYbuxWGx+DuqviQGQXrgLAraK1RVbqTg6G8LYRID8FJTg4TuAeO0TJ7i6UXOF8gEzbgjhRbGZ+XAkWH2T8A==", - "dev": true, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.8", - "esbuild": "^0.25.0", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.12", - "tailwindcss": "^3.4.17" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, - "peerDependencies": { - "vite": "^5.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "dev": true, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "dependencies": { + "is-extglob": "^2.1.1" + }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": ">=0.12.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { - "node": ">=18" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "which-typed-array": "^1.1.16" + }, "engines": { - "node": ">=18" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" + "peer": true, + "dependencies": { + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "peer": true, + "peerDependencies": { + "ws": "*" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" + "node_modules/isows": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", + "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } ], - "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "peerDependencies": { + "ws": "*" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/jayson": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.2.0.tgz", + "integrity": "sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "peer": true, + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "stream-json": "^1.9.1", + "uuid": "^8.3.2", + "ws": "^7.5.10" + }, + "bin": { + "jayson": "bin/jayson.js" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "dev": true, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "peer": true + }, + "node_modules/jayson/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT", + "peer": true + }, + "node_modules/jayson/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "dev": true, + "node_modules/jayson/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "peer": true, "engines": { - "node": ">=18" + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, + "node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://github.com/sponsors/panva" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "dev": true, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=10" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "dev": true, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=14" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/js-tiktoken": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/js-tiktoken/-/js-tiktoken-1.0.20.tgz", + "integrity": "sha512-Xlaqhhs8VfCd6Sh7a1cFkZHQbYTLCwVJJWiHVxBYzLPxW0XsoxBy1hitmjkdIjD3Aon5BXLHFwU5O8WUx6HH+A==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "base64-js": "^1.5.1" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "license": "MIT" + }, + "node_modules/json-rpc-engine": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", + "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", + "license": "ISC", + "peer": true, + "dependencies": { + "@metamask/safe-event-emitter": "^2.0.0", + "eth-rpc-errors": "^4.0.2" + }, "engines": { - "node": ">=18" + "node": ">=10.0.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], + "node_modules/json-rpc-engine/node_modules/@metamask/safe-event-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", + "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==", + "license": "ISC", + "peer": true + }, + "node_modules/json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==", + "license": "ISC", + "peer": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "node_modules/lovable-tagger/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC", + "peer": true + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "dev": true, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, "engines": { - "node": ">=18" + "node": ">=10.0.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/lovable-tagger/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, + "node_modules/keyvaluestorage-interface": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", + "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==", + "license": "MIT" + }, + "node_modules/langchain": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.30.tgz", + "integrity": "sha512-UyVsfwHDpHbrnWrjWuhJHqi8Non+Zcsf2kdpDTqyJF8NXrHBOpjdHT5LvPuW9fnE7miDTWf5mLcrWAGZgcrznQ==", "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "@langchain/openai": ">=0.1.0 <0.7.0", + "@langchain/textsplitters": ">=0.0.0 <0.2.0", + "js-tiktoken": "^1.0.12", + "js-yaml": "^4.1.0", + "jsonpointer": "^5.0.1", + "langsmith": "^0.3.33", + "openapi-types": "^12.1.3", + "p-retry": "4", + "uuid": "^10.0.0", + "yaml": "^2.2.1", + "zod": "^3.25.32" }, "engines": { "node": ">=18" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "peerDependencies": { + "@langchain/anthropic": "*", + "@langchain/aws": "*", + "@langchain/cerebras": "*", + "@langchain/cohere": "*", + "@langchain/core": ">=0.3.58 <0.4.0", + "@langchain/deepseek": "*", + "@langchain/google-genai": "*", + "@langchain/google-vertexai": "*", + "@langchain/google-vertexai-web": "*", + "@langchain/groq": "*", + "@langchain/mistralai": "*", + "@langchain/ollama": "*", + "@langchain/xai": "*", + "axios": "*", + "cheerio": "*", + "handlebars": "^4.7.8", + "peggy": "^3.0.2", + "typeorm": "*" + }, + "peerDependenciesMeta": { + "@langchain/anthropic": { + "optional": true + }, + "@langchain/aws": { + "optional": true + }, + "@langchain/cerebras": { + "optional": true + }, + "@langchain/cohere": { + "optional": true + }, + "@langchain/deepseek": { + "optional": true + }, + "@langchain/google-genai": { + "optional": true + }, + "@langchain/google-vertexai": { + "optional": true + }, + "@langchain/google-vertexai-web": { + "optional": true + }, + "@langchain/groq": { + "optional": true + }, + "@langchain/mistralai": { + "optional": true + }, + "@langchain/ollama": { + "optional": true + }, + "@langchain/xai": { + "optional": true + }, + "axios": { + "optional": true + }, + "cheerio": { + "optional": true + }, + "handlebars": { + "optional": true + }, + "peggy": { + "optional": true + }, + "typeorm": { + "optional": true + } } }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" + "node_modules/langchain/node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "license": "MIT" }, - "node_modules/lucide-react": { - "version": "0.462.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.462.0.tgz", - "integrity": "sha512-NTL7EbAao9IFtuSivSZgrAh4fZd09Lr+6MTkqIxuHaH2nnYiYIzXPo06cOxHg9wKLdj6LL8TByG4qpePqwgx/g==", + "node_modules/langchain/node_modules/langsmith": { + "version": "0.3.53", + "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.53.tgz", + "integrity": "sha512-cnEcJEiYjbcFQy7vTCQb7sR4w70UtBCu9loCOON+yYcK6T1lVmx27lQ4AF2KY7xzKY+FhbxWms5PV3SocizzaQ==", + "license": "MIT", + "dependencies": { + "@types/uuid": "^10.0.0", + "chalk": "^4.1.2", + "console-table-printer": "^2.12.1", + "p-queue": "^6.6.2", + "p-retry": "4", + "semver": "^7.6.3", + "uuid": "^10.0.0" + }, "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" + "@opentelemetry/api": "*", + "@opentelemetry/exporter-trace-otlp-proto": "*", + "@opentelemetry/sdk-trace-base": "*", + "openai": "*" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@opentelemetry/exporter-trace-otlp-proto": { + "optional": true + }, + "@opentelemetry/sdk-trace-base": { + "optional": true + }, + "openai": { + "optional": true + } } }, - "node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", - "dev": true, + "node_modules/langchain/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "license": "BSD-3-Clause", - "peer": true, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "tmpl": "1.0.5" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/marky": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", - "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", - "license": "Apache-2.0", - "peer": true + "node_modules/libphonenumber-js": { + "version": "1.12.9", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.9.tgz", + "integrity": "sha512-VWwAdNeJgN7jFOD+wN4qx83DTPMVPPAUyx9/TUkBXKLiNkuWWk6anV0439tgdtwaJDrEdqkvdN22iA6J4bUCZg==", + "license": "MIT" }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/lit": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.0.tgz", + "integrity": "sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==", "license": "BSD-3-Clause", "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "@lit/reactive-element": "^2.1.0", + "lit-element": "^4.2.0", + "lit-html": "^3.3.0" } }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node_modules/lit-element": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.0.tgz", + "integrity": "sha512-MGrXJVAI5x+Bfth/pU9Kst1iWID6GHDLEzFEnyULB/sFiRLgkd8NPK/PeeXxktA3T6EIIaq8U3KcbTU5XFcP2Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.1.0", + "lit-html": "^3.3.0" } }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "license": "MIT", - "peer": true + "node_modules/lit-html": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.0.tgz", + "integrity": "sha512-RHoswrFAxY2d8Cf2mm4OZ1DgzCoBKUKSPvA1fhtSELxUERq2aQQ2h05pO9j81gS1o7RIRJ+CePLogfyahwmynw==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", "license": "MIT", "peer": true }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "engines": { - "node": ">= 8" - } + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lokijs": { + "version": "1.5.12", + "resolved": "https://registry.npmjs.org/lokijs/-/lokijs-1.5.12.tgz", + "integrity": "sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==", + "license": "MIT" }, - "node_modules/metro": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.82.5.tgz", - "integrity": "sha512-8oAXxL7do8QckID/WZEKaIFuQJFUTLzfVcC48ghkHhNK2RGuQq8Xvf4AVd+TUA0SZtX0q8TGNXZ/eba1ckeGCg==", + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", - "peer": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "accepts": "^1.3.7", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "error-stack-parser": "^2.0.6", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.29.1", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.82.5", - "metro-cache": "0.82.5", - "metro-cache-key": "0.82.5", - "metro-config": "0.82.5", - "metro-core": "0.82.5", - "metro-file-map": "0.82.5", - "metro-resolver": "0.82.5", - "metro-runtime": "0.82.5", - "metro-source-map": "0.82.5", - "metro-symbolicate": "0.82.5", - "metro-transform-plugins": "0.82.5", - "metro-transform-worker": "0.82.5", - "mime-types": "^2.1.27", - "nullthrows": "^1.1.1", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "throat": "^5.0.0", - "ws": "^7.5.10", - "yargs": "^17.6.2" + "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { - "metro": "src/cli.js" - }, - "engines": { - "node": ">=18.18" + "loose-envify": "cli.js" } }, - "node_modules/metro-babel-transformer": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.82.5.tgz", - "integrity": "sha512-W/scFDnwJXSccJYnOFdGiYr9srhbHPdxX9TvvACOFsIXdLilh3XuxQl/wXW6jEJfgIb0jTvoTlwwrqvuwymr6Q==", + "node_modules/lovable-tagger": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/lovable-tagger/-/lovable-tagger-1.1.7.tgz", + "integrity": "sha512-b1wwYbuxWGx+DuqviQGQXrgLAraK1RVbqTg6G8LYRID8FJTg4TuAeO0TJ7i6UXOF8gEzbgjhRbGZ+XAkWH2T8A==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@babel/core": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.29.1", - "nullthrows": "^1.1.1" + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.8", + "esbuild": "^0.25.0", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12", + "tailwindcss": "^3.4.17" }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT", - "peer": true - }, - "node_modules/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "peer": true, - "dependencies": { - "hermes-estree": "0.29.1" + "peerDependencies": { + "vite": "^5.0.0" } }, - "node_modules/metro-cache": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.82.5.tgz", - "integrity": "sha512-AwHV9607xZpedu1NQcjUkua8v7HfOTKfftl6Vc9OGr/jbpiJX6Gpy8E/V9jo/U9UuVYX2PqSUcVNZmu+LTm71Q==", + "node_modules/lovable-tagger/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "exponential-backoff": "^3.1.1", - "flow-enums-runtime": "^0.0.6", - "https-proxy-agent": "^7.0.5", - "metro-core": "0.82.5" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-cache-key": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.82.5.tgz", - "integrity": "sha512-qpVmPbDJuRLrT4kcGlUouyqLGssJnbTllVtvIgXfR7ZuzMKf0mGS+8WzcqzNK8+kCyakombQWR0uDd8qhWGJcA==", + "node_modules/lovable-tagger/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-config": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.82.5.tgz", - "integrity": "sha512-/r83VqE55l0WsBf8IhNmc/3z71y2zIPe5kRSuqA5tY/SL/ULzlHUJEMd1szztd0G45JozLwjvrhAzhDPJ/Qo/g==", + "node_modules/lovable-tagger/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", - "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.7.0", - "metro": "0.82.5", - "metro-cache": "0.82.5", - "metro-core": "0.82.5", - "metro-runtime": "0.82.5" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-core": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.82.5.tgz", - "integrity": "sha512-OJL18VbSw2RgtBm1f2P3J5kb892LCVJqMvslXxuxjAPex8OH7Eb8RBfgEo7VZSjgb/LOf4jhC4UFk5l5tAOHHA==", + "node_modules/lovable-tagger/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.82.5" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-file-map": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.82.5.tgz", - "integrity": "sha512-vpMDxkGIB+MTN8Af5hvSAanc6zXQipsAUO+XUx3PCQieKUfLwdoa8qaZ1WAQYRpaU+CJ8vhBcxtzzo3d9IsCIQ==", + "node_modules/lovable-tagger/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^4.4.0", - "fb-watchman": "^2.0.0", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-minify-terser": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.82.5.tgz", - "integrity": "sha512-v6Nx7A4We6PqPu/ta1oGTqJ4Usz0P7c+3XNeBxW9kp8zayS3lHUKR0sY0wsCHInxZlNAEICx791x+uXytFUuwg==", + "node_modules/lovable-tagger/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "terser": "^5.15.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-resolver": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.82.5.tgz", - "integrity": "sha512-kFowLnWACt3bEsuVsaRNgwplT8U7kETnaFHaZePlARz4Fg8tZtmRDUmjaD68CGAwc0rwdwNCkWizLYpnyVcs2g==", + "node_modules/lovable-tagger/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-runtime": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.82.5.tgz", - "integrity": "sha512-rQZDoCUf7k4Broyw3Ixxlq5ieIPiR1ULONdpcYpbJQ6yQ5GGEyYjtkztGD+OhHlw81LCR2SUAoPvtTus2WDK5g==", + "node_modules/lovable-tagger/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.25.0", - "flow-enums-runtime": "^0.0.6" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-source-map": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.82.5.tgz", - "integrity": "sha512-wH+awTOQJVkbhn2SKyaw+0cd+RVSCZ3sHVgyqJFQXIee/yLs3dZqKjjeKKhhVeudgjXo7aE/vSu/zVfcQEcUfw==", + "node_modules/lovable-tagger/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/traverse": "^7.25.3", - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-symbolicate": "0.82.5", - "nullthrows": "^1.1.1", - "ob1": "0.82.5", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-symbolicate": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.82.5.tgz", - "integrity": "sha512-1u+07gzrvYDJ/oNXuOG1EXSvXZka/0JSW1q2EYBWerVKMOhvv9JzDGyzmuV7hHbF2Hg3T3S2uiM36sLz1qKsiw==", + "node_modules/lovable-tagger/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-source-map": "0.82.5", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-transform-plugins": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.82.5.tgz", - "integrity": "sha512-57Bqf3rgq9nPqLrT2d9kf/2WVieTFqsQ6qWHpEng5naIUtc/Iiw9+0bfLLWSAw0GH40iJ4yMjFcFJDtNSYynMA==", + "node_modules/lovable-tagger/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "flow-enums-runtime": "^0.0.6", - "nullthrows": "^1.1.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro-transform-worker": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.82.5.tgz", - "integrity": "sha512-mx0grhAX7xe+XUQH6qoHHlWedI8fhSpDGsfga7CpkO9Lk9W+aPitNtJWNGrW8PfjKEWbT9Uz9O50dkI8bJqigw==", + "node_modules/lovable-tagger/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "metro": "0.82.5", - "metro-babel-transformer": "0.82.5", - "metro-cache": "0.82.5", - "metro-cache-key": "0.82.5", - "metro-minify-terser": "0.82.5", - "metro-source-map": "0.82.5", - "metro-transform-plugins": "0.82.5", - "nullthrows": "^1.1.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18" + "node": ">=18" } }, - "node_modules/metro/node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/lovable-tagger/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.6" + "node": ">=18" } }, - "node_modules/metro/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/lovable-tagger/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "peer": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/metro/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "node_modules/lovable-tagger/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, "license": "MIT", - "peer": true - }, - "node_modules/metro/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/metro/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT", - "peer": true - }, - "node_modules/metro/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "node_modules/lovable-tagger/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, "license": "MIT", - "peer": true + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/metro/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "node_modules/lovable-tagger/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "hermes-estree": "0.29.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/metro/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/lovable-tagger/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">= 0.6" + "node": ">=18" } }, - "node_modules/metro/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/lovable-tagger/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">= 0.6" + "node": ">=18" } }, - "node_modules/metro/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/lovable-tagger/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">= 0.6" + "node": ">=18" } }, - "node_modules/metro/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/lovable-tagger/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/metro/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/lovable-tagger/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/metro/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/lovable-tagger/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18" } }, - "node_modules/metro/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "node_modules/lovable-tagger/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.3.0" + "bin": { + "esbuild": "bin/esbuild" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "engines": { + "node": ">=18" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" } }, - "node_modules/metro/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "peer": true, - "engines": { - "node": ">=10" + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/lucide-react": { + "version": "0.462.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.462.0.tgz", + "integrity": "sha512-NTL7EbAao9IFtuSivSZgrAh4fZd09Lr+6MTkqIxuHaH2nnYiYIzXPo06cOxHg9wKLdj6LL8TByG4qpePqwgx/g==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" } }, - "node_modules/metro/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/magic-string": { + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/metro/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "peer": true, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 8" } }, "node_modules/micro-ftch": { @@ -17790,40 +13881,6 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", - "peer": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -17840,6 +13897,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -17886,19 +13944,6 @@ } } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "peer": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/motion": { "version": "10.16.2", "resolved": "https://registry.npmjs.org/motion/-/motion-10.16.2.tgz", @@ -17966,18 +14011,9 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" }, "node_modules/next-themes": { "version": "0.3.0", @@ -18058,13 +14094,6 @@ "node-gyp-build-test": "build-test.js" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "license": "MIT", - "peer": true - }, "node_modules/node-mock-http": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.1.tgz", @@ -18075,6 +14104,7 @@ "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, "license": "MIT" }, "node_modules/normalize-path": { @@ -18096,13 +14126,6 @@ "node": ">=0.10.0" } }, - "node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "license": "MIT", - "peer": true - }, "node_modules/number-to-bn": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", @@ -18123,19 +14146,6 @@ "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "license": "MIT" }, - "node_modules/ob1": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.82.5.tgz", - "integrity": "sha512-QyQQ6e66f+Ut/qUVjEce0E/wux5nAGLXYZDn1jr15JWstHsCH3l6VVrg8NKDptW9NEiBXKOJeGF/ydxeSDF3IQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=18.18" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -18154,18 +14164,6 @@ "node": ">= 6" } }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/oboe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", @@ -18192,18 +14190,6 @@ "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==", "license": "MIT" }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -18213,23 +14199,6 @@ "wrappy": "1" } }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/openapi-types": { "version": "12.1.3", "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", @@ -18460,29 +14429,6 @@ "node": ">=6" } }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "license": "MIT", - "peer": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -18492,16 +14438,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -18533,15 +14469,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -18685,15 +14612,6 @@ "node": ">= 6" } }, - "node_modules/pkce-challenge": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", - "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", - "license": "MIT", - "engines": { - "node": ">=16.20.0" - } - }, "node_modules/pngjs": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", @@ -18885,34 +14803,6 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -18928,16 +14818,6 @@ "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==", "license": "MIT" }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "license": "MIT", - "peer": true, - "dependencies": { - "asap": "~2.0.6" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -18955,43 +14835,6 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, - "node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/proxy-compare": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.6.0.tgz", @@ -19012,29 +14855,12 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/pvtsutils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", - "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.8.1" - } - }, - "node_modules/pvutils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", - "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/qrcode": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", @@ -19052,21 +14878,6 @@ "node": ">=10.13.0" } }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/query-string": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", @@ -19085,16 +14896,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "~2.0.3" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -19136,30 +14937,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -19199,39 +14976,6 @@ "react-dom": ">= 0.14.0" } }, - "node_modules/react-devtools-core": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz", - "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==", - "license": "MIT", - "peer": true, - "dependencies": { - "shell-quote": "^1.6.1", - "ws": "^7" - } - }, - "node_modules/react-devtools-core/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -19251,16 +14995,6 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, - "node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-remove-scroll": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", @@ -19547,51 +15281,6 @@ "node": ">=0.10.0" } }, - "node_modules/rfc4648": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.4.tgz", - "integrity": "sha512-rRg/6Lb+IGfJqO05HZkN50UtY7K/JhxJag1kP23+zyMfrvoB0B7RWv06MbOzoc79RgCdNTiUaNsTT1AJZ7Z+cg==", - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/rollup": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", @@ -19628,22 +15317,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/rpc-websockets": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.1.2.tgz", @@ -19792,68 +15465,21 @@ "license": "BSD-3-Clause" }, "node_modules/secure-password-utilities": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/secure-password-utilities/-/secure-password-utilities-0.2.1.tgz", - "integrity": "sha512-znUg8ae3cpuAaogiFBhP82gD2daVkSz4Qv/L7OWjB7wWvfbCdeqqQuJkm2/IvhKQPOV0T739YPR6rb7vs0uWaw==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/secure-password-utilities/-/secure-password-utilities-0.2.1.tgz", + "integrity": "sha512-znUg8ae3cpuAaogiFBhP82gD2daVkSz4Qv/L7OWjB7wWvfbCdeqqQuJkm2/IvhKQPOV0T739YPR6rb7vs0uWaw==", + "license": "MIT" }, - "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 18" + "node": ">=10" } }, "node_modules/set-blocking": { @@ -19885,12 +15511,6 @@ "node": ">= 0.4" } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, "node_modules/sha.js": { "version": "2.4.12", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", @@ -19938,91 +15558,6 @@ "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -20041,16 +15576,6 @@ "integrity": "sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==", "license": "MIT" }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/sonic-boom": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", @@ -20070,16 +15595,6 @@ "react-dom": "^18.0.0" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -20093,7 +15608,9 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "license": "MIT", + "optional": true, "peer": true, "dependencies": { "buffer-from": "^1.0.0", @@ -20104,18 +15621,14 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", + "optional": true, "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/spark-md5": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", - "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==", - "license": "(WTFPL OR MIT)" - }, "node_modules/split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", @@ -20134,65 +15647,6 @@ "node": ">= 10.x" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "license": "MIT", - "peer": true - }, - "node_modules/stacktrace-parser": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", - "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", - "license": "MIT", - "peer": true, - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/stream-chain": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", @@ -20456,19 +15910,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/swr": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.4.tgz", - "integrity": "sha512-bYd2lrhc+VarcpkgWclcUi92wYCpOgMws9Sd1hG1ntAu0NEy+14CbotuFjshBU2kt9rYj9TSmDcybpxpeTU1fg==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.3", - "use-sync-external-store": "^1.4.0" - }, - "peerDependencies": { - "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", @@ -20535,7 +15976,9 @@ "version": "5.43.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "dev": true, "license": "BSD-2-Clause", + "optional": true, "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -20554,46 +15997,11 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, "license": "MIT", + "optional": true, "peer": true }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "license": "ISC", - "peer": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/text-encoding-utf-8": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", @@ -20637,25 +16045,6 @@ "real-require": "^0.1.0" } }, - "node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "license": "MIT", - "peer": true - }, - "node_modules/throttleit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", - "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", @@ -20668,13 +16057,6 @@ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", "license": "MIT" }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "license": "BSD-3-Clause", - "peer": true - }, "node_modules/to-buffer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", @@ -20708,15 +16090,6 @@ "license": "MIT", "peer": true }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -20779,40 +16152,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", @@ -20933,19 +16272,11 @@ "license": "MIT", "peer": true }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/update-browserslist-db": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, "funding": [ { "type": "opencollective", @@ -20976,6 +16307,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -21071,16 +16403,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -21129,15 +16451,6 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/vaul": { "version": "0.9.9", "resolved": "https://registry.npmjs.org/vaul/-/vaul-0.9.9.tgz", @@ -21338,13 +16651,6 @@ } } }, - "node_modules/vlq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", - "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "license": "MIT", - "peer": true - }, "node_modules/wagmi": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/wagmi/-/wagmi-1.4.13.tgz", @@ -21441,16 +16747,6 @@ } } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, "node_modules/web-streams-polyfill": { "version": "4.0.0-beta.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", @@ -21693,13 +16989,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT", - "peer": true - }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -21856,27 +17145,6 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "license": "ISC", - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC", - "peer": true - }, "node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", @@ -21924,13 +17192,6 @@ "node": ">=0.10.32" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "license": "ISC", - "peer": true - }, "node_modules/yaml": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index b31e9b1..e6c9c40 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,7 +11,6 @@ "preview": "vite preview" }, "dependencies": { - "@hashgraph/sdk": "^2.70.0", "@langchain/core": "^0.3.67", "@langchain/groq": "^0.2.3", "@langchain/openai": "^0.6.4", @@ -51,7 +50,6 @@ "dotenv": "^17.2.1", "embla-carousel-react": "^8.3.0", "ethers": "^6.15.0", - "hedera-agent-kit": "^3.0.7", "input-otp": "^1.2.4", "langchain": "^0.3.30", "lucide-react": "^0.462.0", diff --git a/frontend/src/components/PredictionMarketWidget.tsx b/frontend/src/components/PredictionMarketWidget.tsx index 2bdb1cc..f6ee5e5 100644 --- a/frontend/src/components/PredictionMarketWidget.tsx +++ b/frontend/src/components/PredictionMarketWidget.tsx @@ -6,7 +6,6 @@ import { Label } from '@/components/ui/label'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { ChatGroq } from '@langchain/groq'; import { HumanMessage, SystemMessage } from '@langchain/core/messages'; -import { Client, AccountBalanceQuery, AccountId } from '@hashgraph/sdk'; import { Shield, TrendingUp, From f2e93163d9fb31f4bff9a454da928ac07ff46888 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Fri, 8 Aug 2025 10:48:49 +0100 Subject: [PATCH 40/50] redeploy contracts --- frontend/src/config/contracts.ts | 18 +++++++++--------- frontend/src/pages/Index.tsx | 2 +- .../chain-296/deployed_addresses.json | 18 +++++++++--------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/frontend/src/config/contracts.ts b/frontend/src/config/contracts.ts index 13bbcb3..1efe77e 100644 --- a/frontend/src/config/contracts.ts +++ b/frontend/src/config/contracts.ts @@ -26,15 +26,15 @@ export enum ContractName { // Multi-chain contract addresses export const MULTI_CHAIN_ADDRESSES: Record>> = { [SupportedChainId.HEDERA_TESTNET]: { - [ContractName.MOCK_AUSDC]: "0x2Ec140Ba967BD9d2B5C0C138F22E20A530beFaF4", - [ContractName.MOCK_CUSDT]: "0xbc20b977781705589EC578aC7d5680Af821D4c1c", - [ContractName.UNISWAP_V2_FACTORY]: "0x0310c9Cf82c2b0a426F2a5e09d1d670B31442a63", - [ContractName.WETH]: "0x86840528937f5f1578601d3d31Bc7cFF6A540009", - [ContractName.RISK_VAULT]: "0x78a9bCbA870A367559258AAAC5b7e533cF9C0EB7", - [ContractName.UNISWAP_V2_ROUTER]: "0x80E7C7932059ce5E67506B0BC25971B8209e003f", - [ContractName.JUNIOR_TOKEN]: "0xc3e818236440461916BF75C91bd28Bb27bEa746e", - [ContractName.SENIOR_TOKEN]: "0x9c6A5C213F5CB326186E876C3e37ec8F73768b2B", - [ContractName.SENIOR_JUNIOR_PAIR]: "0xb6368834321662839717dbd3dea511525B8382B5", + [ContractName.MOCK_AUSDC]: "0xc6461cf8E77b40293d90c9670FcC2Da04346Df1A", + [ContractName.MOCK_CUSDT]: "0xe786547f22F29E477B51135b24A39E937d291d17", + [ContractName.UNISWAP_V2_FACTORY]: "0x3e83552ED9bF1418Bf50fbc7071C87361Ce156b5", + [ContractName.WETH]: "0xED6eF615b61D37a5E1cce5D5Aaddc1064Fb9fA07", + [ContractName.RISK_VAULT]: "0x86840DBAE8aF63780ffFB2990aADDF5C78aeb184", + [ContractName.UNISWAP_V2_ROUTER]: "0xBA659094Ffd44F3CCcFffd7c172cB42f0aD362b0", + [ContractName.JUNIOR_TOKEN]: "0x2DDd2DD26A3d90d4a67F02A69728B386B1461710", + [ContractName.SENIOR_TOKEN]: "0xC5F805bBD905803e5Ec1280827068B9889978cF3", + [ContractName.SENIOR_JUNIOR_PAIR]: "0x40C4F4B6fB472bFE986134A2A99C691E4323b09E", }, [SupportedChainId.FLOW_TESTNET]: { [ContractName.MOCK_AUSDC]: "0x27448B112B42c930915bF3953A691c80BdcE7208", diff --git a/frontend/src/pages/Index.tsx b/frontend/src/pages/Index.tsx index a4e12c9..1376b05 100644 --- a/frontend/src/pages/Index.tsx +++ b/frontend/src/pages/Index.tsx @@ -315,7 +315,7 @@ const Index = () => {

- Our Partners + Our Supporters

Backed by leading organizations in the blockchain ecosystem diff --git a/ignition/deployments/chain-296/deployed_addresses.json b/ignition/deployments/chain-296/deployed_addresses.json index 098fd79..956dd4c 100644 --- a/ignition/deployments/chain-296/deployed_addresses.json +++ b/ignition/deployments/chain-296/deployed_addresses.json @@ -1,11 +1,11 @@ { - "RiskTokenModule#MockAUSDC": "0x2Ec140Ba967BD9d2B5C0C138F22E20A530beFaF4", - "RiskTokenModule#MockCUSDT": "0xbc20b977781705589EC578aC7d5680Af821D4c1c", - "RiskTokenModule#UniswapV2Factory": "0x0310c9Cf82c2b0a426F2a5e09d1d670B31442a63", - "RiskTokenModule#WETH": "0x86840528937f5f1578601d3d31Bc7cFF6A540009", - "RiskTokenModule#RiskVault": "0x78a9bCbA870A367559258AAAC5b7e533cF9C0EB7", - "RiskTokenModule#UniswapV2Router02": "0x80E7C7932059ce5E67506B0BC25971B8209e003f", - "RiskTokenModule#juniorTokenContract": "0xc3e818236440461916BF75C91bd28Bb27bEa746e", - "RiskTokenModule#seniorTokenContract": "0x9c6A5C213F5CB326186E876C3e37ec8F73768b2B", - "RiskTokenModule#UniswapV2Pair": "0xb6368834321662839717dbd3dea511525B8382B5" + "RiskTokenModule#MockAUSDC": "0xc6461cf8E77b40293d90c9670FcC2Da04346Df1A", + "RiskTokenModule#MockCUSDT": "0xe786547f22F29E477B51135b24A39E937d291d17", + "RiskTokenModule#UniswapV2Factory": "0x3e83552ED9bF1418Bf50fbc7071C87361Ce156b5", + "RiskTokenModule#WETH": "0xED6eF615b61D37a5E1cce5D5Aaddc1064Fb9fA07", + "RiskTokenModule#RiskVault": "0x86840DBAE8aF63780ffFB2990aADDF5C78aeb184", + "RiskTokenModule#UniswapV2Router02": "0xBA659094Ffd44F3CCcFffd7c172cB42f0aD362b0", + "RiskTokenModule#juniorTokenContract": "0x2DDd2DD26A3d90d4a67F02A69728B386B1461710", + "RiskTokenModule#seniorTokenContract": "0xC5F805bBD905803e5Ec1280827068B9889978cF3", + "RiskTokenModule#UniswapV2Pair": "0x40C4F4B6fB472bFE986134A2A99C691E4323b09E" } From f80d69107a750d4f9383c120fdca880f3864be58 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Fri, 8 Aug 2025 11:00:15 +0100 Subject: [PATCH 41/50] dashboard ui fixes --- .../dashboard/PositionManagement.tsx | 24 +++++++++++-------- frontend/src/pages/Dashboard.tsx | 15 +++++++----- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/frontend/src/components/dashboard/PositionManagement.tsx b/frontend/src/components/dashboard/PositionManagement.tsx index 0c340a5..23ccb03 100644 --- a/frontend/src/components/dashboard/PositionManagement.tsx +++ b/frontend/src/components/dashboard/PositionManagement.tsx @@ -20,7 +20,8 @@ interface PositionManagementProps { riskProfile: { percentage: number }; totalPortfolioValue: number; formatNumber: (num: number, decimals?: number) => string; - isExecuting: boolean; + isRebalancing: boolean; + isWithdrawing: boolean; onRebalance: (targetPercent: number) => void; onWithdraw: (asset: 'aUSDC' | 'cUSDT', amount: string) => void; vaultInfo: any; @@ -30,7 +31,8 @@ const PositionManagement: React.FC = ({ riskProfile, totalPortfolioValue, formatNumber, - isExecuting, + isRebalancing, + isWithdrawing, onRebalance, onWithdraw, vaultInfo, @@ -52,7 +54,8 @@ const PositionManagement: React.FC = ({ const handleRebalanceExecute = () => { onRebalance(targetSeniorPercent); - setIsRebalancePreview(false); + // Keep the preview visible during execution + // It will reset when the component re-renders after successful rebalancing }; const handleWithdrawExecute = () => { @@ -86,7 +89,7 @@ const PositionManagement: React.FC = ({

- {isRebalancePreview && ( + {(isRebalancePreview || isRebalancing) && (
Target Allocation @@ -127,7 +130,7 @@ const PositionManagement: React.FC = ({
{/* Action Buttons */} - {isRebalancePreview ? ( + {(isRebalancePreview || isRebalancing) ? (
diff --git a/frontend/src/components/QuickTrade.tsx b/frontend/src/components/QuickTrade.tsx index 41b44c3..aec8f68 100644 --- a/frontend/src/components/QuickTrade.tsx +++ b/frontend/src/components/QuickTrade.tsx @@ -6,7 +6,7 @@ import { Label } from '@/components/ui/label'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { useWeb3 } from '@/context/PrivyWeb3Context'; import { Shield, TrendingUp, Scale, Zap, DollarSign, AlertCircle } from 'lucide-react'; -import { Phase, ContractName, getContractAddress, SupportedChainId } from '@/config/contracts'; +import { Phase, ContractName, getContractAddress, SupportedChainId, getPhaseNameFromBigInt } from '@/config/contracts'; import SmartLiquiditySuggestion from './SmartLiquiditySuggestion'; import { ethers } from 'ethers'; @@ -298,7 +298,7 @@ const QuickTrade: React.FC = () => { - Current phase: {vaultInfo.currentPhase !== undefined ? Phase[vaultInfo.currentPhase] : 'Loading...'}. Deposits and withdrawals allowed at any time. + Current phase: {getPhaseNameFromBigInt(vaultInfo.currentPhase)}. Deposits and withdrawals allowed at any time. diff --git a/frontend/src/components/dashboard/PositionManagement.tsx b/frontend/src/components/dashboard/PositionManagement.tsx index 23ccb03..574ef39 100644 --- a/frontend/src/components/dashboard/PositionManagement.tsx +++ b/frontend/src/components/dashboard/PositionManagement.tsx @@ -263,10 +263,12 @@ const PositionManagement: React.FC = ({ - {vaultInfo.currentPhase === 0 && 'Withdrawals require equal amounts of SENIOR and JUNIOR tokens.'} - {vaultInfo.currentPhase === 1 && 'Any combination of SENIOR and JUNIOR tokens can be withdrawn.'} - {vaultInfo.currentPhase === 2 && 'All token holders can withdraw remaining funds with any token combination.'} + {vaultInfo.currentPhase === 0n && 'Active Period: Withdrawals require equal amounts of Senior and Junior tokens.'} + {vaultInfo.currentPhase === 1n && 'Claims Period: Any combination of Senior and Junior tokens can be withdrawn.'} + {vaultInfo.currentPhase === 2n && 'Final Claims Period: All token holders can withdraw remaining funds with any token combination.'} {vaultInfo.currentPhase === undefined && 'Loading withdrawal rules...'} + {(vaultInfo.currentPhase !== 0n && vaultInfo.currentPhase !== 1n && vaultInfo.currentPhase !== 2n && vaultInfo.currentPhase !== undefined) && + `Phase ${vaultInfo.currentPhase?.toString()}: Any combination of tokens can be withdrawn.`} diff --git a/frontend/src/config/contracts.ts b/frontend/src/config/contracts.ts index 1efe77e..e7c0740 100644 --- a/frontend/src/config/contracts.ts +++ b/frontend/src/config/contracts.ts @@ -245,10 +245,16 @@ export enum Phase { export const PHASE_NAMES = { [Phase.ACTIVE]: "Active Period", - [Phase.CLAIMS]: "Claims Period", + [Phase.CLAIMS]: "Claims Period", [Phase.FINAL_CLAIMS]: "Final Claims Period", } as const; +// Utility function to get phase name from BigInt +export function getPhaseNameFromBigInt(phase: bigint | undefined): string { + if (phase === undefined) return 'Loading...'; + return PHASE_NAMES[Number(phase) as Phase] || `Unknown Phase (${phase.toString()})`; +} + // Phase durations in seconds (matching smart contract) export const PHASE_DURATIONS = { [Phase.ACTIVE]: 5 * 24 * 60 * 60, // 5 days diff --git a/frontend/src/context/PrivyWeb3Context.tsx b/frontend/src/context/PrivyWeb3Context.tsx index eb8c704..f00e145 100644 --- a/frontend/src/context/PrivyWeb3Context.tsx +++ b/frontend/src/context/PrivyWeb3Context.tsx @@ -38,7 +38,7 @@ interface VaultInfo { cUSDTBalance: bigint; totalTokensIssued: bigint; emergencyMode: boolean; - currentPhase: Phase; + currentPhase: bigint; phaseStartTime: bigint; cycleStartTime: bigint; timeRemaining: bigint; @@ -198,7 +198,7 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { cUSDTBalance: 0n, totalTokensIssued: 0n, emergencyMode: false, - currentPhase: Phase.ACTIVE, + currentPhase: 0n, phaseStartTime: 0n, cycleStartTime: 0n, timeRemaining: 0n, @@ -225,7 +225,7 @@ const InnerWeb3Provider: React.FC<{ children: ReactNode }> = ({ children }) => { cUSDTBalance: 0n, totalTokensIssued: 0n, emergencyMode: false, - currentPhase: Phase.ACTIVE, + currentPhase: 0n, phaseStartTime: 0n, cycleStartTime: 0n, timeRemaining: 0n, diff --git a/frontend/src/pages/Admin.tsx b/frontend/src/pages/Admin.tsx index 773aef9..e987bbf 100644 --- a/frontend/src/pages/Admin.tsx +++ b/frontend/src/pages/Admin.tsx @@ -143,20 +143,16 @@ const Admin = () => {

Phase Progression:

- - Deposit (2d) + + Active Period (5d) - - Coverage (3d) + + Claims Period (1d) - - Claims (1d) - - - - Final Claims (1d) + + Final Claims Period (1d)
@@ -180,7 +176,7 @@ const Admin = () => { Force Phase Transition (Immediate) - {vaultInfo.currentPhase === Phase.FINAL_CLAIMS && ( + {Number(vaultInfo.currentPhase) === Phase.FINAL_CLAIMS && (
- {vaultInfo.currentPhase !== Phase.FINAL_CLAIMS && ( + {Number(vaultInfo.currentPhase) !== Phase.FINAL_CLAIMS && ( New cycles can only be started from the Final Claims phase diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx index b6a7727..7a40953 100644 --- a/frontend/src/pages/Dashboard.tsx +++ b/frontend/src/pages/Dashboard.tsx @@ -12,7 +12,7 @@ import { Clock, RefreshCw, } from 'lucide-react'; -import { Phase } from '@/config/contracts'; +import { Phase, getPhaseNameFromBigInt } from '@/config/contracts'; import StatCard from '@/components/StatCard'; // Import custom hooks @@ -155,7 +155,7 @@ const Dashboard = () => { }; // Withdrawal handler - const handleWithdraw = async (amount: string) => { + const handleWithdraw = async (asset: 'aUSDC' | 'cUSDT', amount: string) => { if (!amount || parseFloat(amount) <= 0) return; setIsWithdrawing(true); @@ -298,7 +298,7 @@ const Dashboard = () => { } className="text-white" From 40e5a409554c9f9a96052586262c26022d76692b Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Fri, 8 Aug 2025 11:28:19 +0100 Subject: [PATCH 43/50] clean up withdraw UI --- .../dashboard/PositionManagement.tsx | 131 +++++++++--------- frontend/src/pages/Dashboard.tsx | 4 +- 2 files changed, 67 insertions(+), 68 deletions(-) diff --git a/frontend/src/components/dashboard/PositionManagement.tsx b/frontend/src/components/dashboard/PositionManagement.tsx index 574ef39..98fb787 100644 --- a/frontend/src/components/dashboard/PositionManagement.tsx +++ b/frontend/src/components/dashboard/PositionManagement.tsx @@ -6,6 +6,7 @@ import { Label } from '@/components/ui/label'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { Progress } from '@/components/ui/progress'; import { Phase } from '@/config/contracts'; +import { useWeb3 } from '@/context/PrivyWeb3Context'; import { Activity, Minus, @@ -14,6 +15,7 @@ import { RefreshCw, Info, AlertCircle, + DollarSign, } from 'lucide-react'; interface PositionManagementProps { @@ -23,7 +25,7 @@ interface PositionManagementProps { isRebalancing: boolean; isWithdrawing: boolean; onRebalance: (targetPercent: number) => void; - onWithdraw: (asset: 'aUSDC' | 'cUSDT', amount: string) => void; + onWithdraw: (amount: string) => void; vaultInfo: any; } @@ -37,10 +39,10 @@ const PositionManagement: React.FC = ({ onWithdraw, vaultInfo, }) => { + const { balances } = useWeb3(); const [targetSeniorPercent, setTargetSeniorPercent] = useState(50); const [isRebalancePreview, setIsRebalancePreview] = useState(false); - const [selectedWithdrawAsset, setSelectedWithdrawAsset] = useState<'aUSDC' | 'cUSDT' | null>(null); - const [withdrawAssetAmount, setWithdrawAssetAmount] = useState(''); + const [withdrawAmount, setWithdrawAmount] = useState(''); // Initialize target percent to current allocation useEffect(() => { @@ -59,10 +61,9 @@ const PositionManagement: React.FC = ({ }; const handleWithdrawExecute = () => { - if (!selectedWithdrawAsset || !withdrawAssetAmount) return; - onWithdraw(selectedWithdrawAsset, withdrawAssetAmount); - setSelectedWithdrawAsset(null); - setWithdrawAssetAmount(''); + if (!withdrawAmount) return; + onWithdraw(withdrawAmount); + setWithdrawAmount(''); }; return ( @@ -118,7 +119,7 @@ const PositionManagement: React.FC = ({ } text-xs sm:text-sm min-h-[2.5rem]`} onClick={() => handleRebalancePreview(percent)} > - {percent}%
Protection
+ {percent}%
Senior
))}
@@ -177,77 +178,75 @@ const PositionManagement: React.FC = ({ Withdraw - Choose target asset and amount to withdraw from your position + Withdraw from your position to both aUSDC and cUSDT proportionally - {/* Asset Selection */} + {/* Current Asset Holdings */}
- -
- - +
{/* Amount Input */} - {selectedWithdrawAsset && ( -
- -
- setWithdrawAssetAmount(e.target.value)} - className="bg-slate-700/50 border-slate-600 text-white placeholder-slate-400 pr-16 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" - /> - -
-
- Max withdrawable: ${formatNumber(totalPortfolioValue)} -
+
+ +
+ + setWithdrawAmount(e.target.value)} + className="pl-10 bg-slate-700/50 border-slate-600 text-white placeholder-slate-400 pr-16 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" + /> +
- )} +
+ Max withdrawable: ${formatNumber(totalPortfolioValue)} +
+
+ Will be distributed proportionally to both aUSDC and cUSDT +
+
- + + {Number(vaultInfo.currentPhase) === Phase.FINAL_CLAIMS && (
+
+ Available: {formatTokenAmount(balances[assetType])} + Min: {minBet} +
{/* Enhanced Cost/Payout Breakdown */} diff --git a/frontend/src/pages/WidgetDemo.tsx b/frontend/src/pages/WidgetDemo.tsx index ac3d2be..28fe0ff 100644 --- a/frontend/src/pages/WidgetDemo.tsx +++ b/frontend/src/pages/WidgetDemo.tsx @@ -34,7 +34,7 @@ const WidgetDemo: React.FC = () => { const [seniorPrice, setSeniorPrice] = useState('1.00'); const [juniorPrice, setJuniorPrice] = useState('1.00'); const [aiRecommendation, setAiRecommendation] = useState<{ betType: 'hack' | 'safe'; confidence: number } | null>(null); - const { isConnected, address, connectWallet, disconnectWallet } = useWeb3(); + const { isConnected, address, connectWallet, disconnectWallet, vaultInfo, balances } = useWeb3(); // Use Aave as the default protocol const selectedProtocol = demoProtocols[0]; @@ -112,7 +112,7 @@ const WidgetDemo: React.FC = () => { Get AI-powered recommendations that analyze your portfolio to suggest optimal protection or yield strategies. No complex insurance jargon - just smart betting with real returns.

-
+
Live Protocol @@ -125,6 +125,12 @@ const WidgetDemo: React.FC = () => {
Real Returns
+ {isConnected && ( +
+
+ Connected +
+ )}
@@ -142,6 +148,44 @@ const WidgetDemo: React.FC = () => { />
+ {/* Protocol Stats */} + {isConnected && ( +
+

+ + Protocol Statistics +

+
+
+
Total Value Locked
+
+ ${((Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18).toLocaleString()} +
+
+
+
Active Tokens
+
+ {(Number(vaultInfo.totalTokensIssued) / 1e18).toLocaleString()} +
+
+
+
Your Position
+
+ ${((Number(balances.seniorTokens) + Number(balances.juniorTokens)) / 1e18 * parseFloat(seniorPrice)).toFixed(2)} +
+
+
+
Protocol Status
+
+ {vaultInfo.emergencyMode ? 'Emergency' : 'Normal'} +
+
+
+
+ )} + {/* Key Features */}
From b3c1e503a0fbb5a088bd5dbdddcdcb4e12812a46 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Fri, 8 Aug 2025 14:02:28 +0100 Subject: [PATCH 48/50] remove protocol stats --- frontend/src/pages/WidgetDemo.tsx | 48 ++++--------------------------- 1 file changed, 5 insertions(+), 43 deletions(-) diff --git a/frontend/src/pages/WidgetDemo.tsx b/frontend/src/pages/WidgetDemo.tsx index 28fe0ff..bc3e1b7 100644 --- a/frontend/src/pages/WidgetDemo.tsx +++ b/frontend/src/pages/WidgetDemo.tsx @@ -35,7 +35,7 @@ const WidgetDemo: React.FC = () => { const [juniorPrice, setJuniorPrice] = useState('1.00'); const [aiRecommendation, setAiRecommendation] = useState<{ betType: 'hack' | 'safe'; confidence: number } | null>(null); const { isConnected, address, connectWallet, disconnectWallet, vaultInfo, balances } = useWeb3(); - + // Use Aave as the default protocol const selectedProtocol = demoProtocols[0]; @@ -43,7 +43,7 @@ const WidgetDemo: React.FC = () => { const formatAddress = (addr: string) => { return `${addr.slice(0, 6)}...${addr.slice(-4)}`; }; - + // Memoize the callback to prevent infinite re-renders const handleOddsUpdate = useCallback((odds: { hack: number; safe: number }, senior: string, junior: string) => { setCurrentOdds(odds); @@ -109,7 +109,7 @@ const WidgetDemo: React.FC = () => { Smart DeFi Insurance Made Simple

- Get AI-powered recommendations that analyze your portfolio to suggest optimal protection or yield strategies. + Get AI-powered recommendations that analyze your portfolio to suggest optimal protection or yield strategies. No complex insurance jargon - just smart betting with real returns.

@@ -148,44 +148,6 @@ const WidgetDemo: React.FC = () => { />
- {/* Protocol Stats */} - {isConnected && ( -
-

- - Protocol Statistics -

-
-
-
Total Value Locked
-
- ${((Number(vaultInfo.aUSDCBalance) + Number(vaultInfo.cUSDTBalance)) / 1e18).toLocaleString()} -
-
-
-
Active Tokens
-
- {(Number(vaultInfo.totalTokensIssued) / 1e18).toLocaleString()} -
-
-
-
Your Position
-
- ${((Number(balances.seniorTokens) + Number(balances.juniorTokens)) / 1e18 * parseFloat(seniorPrice)).toFixed(2)} -
-
-
-
Protocol Status
-
- {vaultInfo.emergencyMode ? 'Emergency' : 'Normal'} -
-
-
-
- )} - {/* Key Features */}
@@ -199,7 +161,7 @@ const WidgetDemo: React.FC = () => {

AI analyzes your wallet composition and market conditions to recommend optimal betting strategies.

- + @@ -211,7 +173,7 @@ const WidgetDemo: React.FC = () => {

Recommendations consider your existing positions to avoid over-concentration and optimize returns.

- + From f2adf321e2994abc028738576e0e70d633fc7769 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Fri, 8 Aug 2025 14:33:03 +0100 Subject: [PATCH 49/50] simplify readme --- README.md | 89 +++++++++++++------------------------------------------ 1 file changed, 21 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index 155d72f..db375cd 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,19 @@ # CoverMax 🛡️ -*A decentralized insurance protocol powered by tradeable risk tokens* +_A decentralized insurance protocol powered by tradeable risk tokens_ ## 🎮 Quick Start for Testing Want to try out CoverMax? Use this test wallet that already has test tokens: **Test Private Key:** + ``` 994fc012e651448eacdba62f2e49c17796e44aac67155e512894c23ddbf3e1fd ``` This wallet is pre-funded with test tokens (aUSDC, cUSDT) that you can use to: + - Deposit into insurance pools - Receive and trade risk tokens - Submit test claims @@ -52,6 +54,7 @@ The core innovation is that **selling risk tokens = providing insurance coverage ### Example Scenarios #### Risk Tier Trading (Advanced Strategy) + ``` 1. Alice deposits 1000 aUSDC → receives 500 CM-SENIOR + 500 CM-JUNIOR tokens 2. Bob deposits 1000 cUSDT → receives 500 CM-SENIOR + 500 CM-JUNIOR tokens @@ -76,18 +79,19 @@ The core innovation is that **selling risk tokens = providing insurance coverage - **aUSDC**: Aave interest-bearing USDC - **cUSDT**: Compound interest-bearing USDT -- *Extensible to other yield-bearing assets* +- _Extensible to other yield-bearing assets_ ### Risk Token Tiers -| Token Type | Risk Level | Claim Priority | Use Case | -|------------|------------|----------------|----------| +| Token Type | Risk Level | Claim Priority | Use Case | +| ---------- | ---------- | -------------- | -------------------------------- | | CM-SENIOR | Lower | First claims | Conservative insurance providers | -| CM-JUNIOR | Higher | Subordinate | Risk-seeking yield farmers | +| CM-JUNIOR | Higher | Subordinate | Risk-seeking yield farmers | ## 🔄 Protocol Lifecycle ### Phase 1: Active Period (5 days) + - Combined deposit and coverage period for maximum flexibility - Users can deposit yield-bearing assets at any time during the protocol lifecycle - Active insurance coverage for all deposited assets @@ -98,6 +102,7 @@ The core innovation is that **selling risk tokens = providing insurance coverage - Risk tokens continue trading on secondary markets ### Phase 2: Claims Period (1 day) + - Priority redemption period for senior token holders - Senior tokens have first claim on remaining assets - Any combination of senior/junior tokens can be withdrawn (in normal mode) @@ -105,6 +110,7 @@ The core innovation is that **selling risk tokens = providing insurance coverage - Deposits continue to be accepted ### Phase 3: Final Claims (1 day) + - All remaining tokens can be redeemed with any combination of senior/junior - Deposits continue to be accepted - Protocol cycle completes and can restart @@ -112,16 +118,19 @@ The core innovation is that **selling risk tokens = providing insurance coverage ## 💰 Economic Model ### For Insurance Providers + - **Deposit** yield-bearing assets to earn insurance premiums - **Hold tokens** to bear risk and earn yield from claims that don't materialize - **Sell tokens** to reduce risk exposure and lock in profits ### For Risk Traders + - **Buy risk tokens** on Uniswap to speculate on insurance outcomes - **Sell risk tokens** to exit positions or reduce exposure - **Arbitrage** between risk levels and market pricing ### For Insurance Seekers + - **Submit claims** backed by evidence when covered events occur - **Receive payouts** from the insurance pool when claims are approved - **Benefit** from community-funded insurance coverage @@ -129,83 +138,25 @@ The core innovation is that **selling risk tokens = providing insurance coverage ## 🦄 Uniswap Integration ### Why Uniswap? + Risk tokens are standard ERC20 tokens that can be traded on any DEX. Uniswap provides: + - **Liquidity**: Deep markets for risk token trading - **Price Discovery**: Market-driven risk pricing - **Accessibility**: Anyone can buy/sell insurance risk - **Composability**: Risk tokens can be used in other DeFi protocols -### Trading Strategy Examples - -#### 1. Risk Tier Arbitrage (CM-SENIOR ↔ CM-JUNIOR Pool) -```solidity -// Strategy: Trade down risk by converting junior to senior tokens -// Bob wants more downside protection, less upside exposure -uniswapRouter.swapExactTokensForTokens( - 200 * 1e18, // Sell 200 CM-JUNIOR tokens - 190 * 1e18, // Expect ~190 CM-SENIOR tokens (forfeit some upside) - [juniorToken, seniorToken], - msg.sender, - deadline -); - -// Result: Bob now has more senior tokens (priority claims) -// but less junior tokens (subordinate claims) -``` - -#### 2. Complete Risk Exit (Risk Token → Stablecoin) -```solidity -// Strategy: Exit insurance position entirely -// Sell risk tokens for stablecoins to eliminate exposure -uniswapRouter.swapExactTokensForTokens( - 250 * 1e18, // Sell 250 CM-SENIOR tokens - minAmountOut, - [seniorToken, USDC], - msg.sender, - deadline -); -``` - -#### 3. Risk Speculation (Stablecoin → Risk Token) -```solidity -// Strategy: Buy underpriced risk for potential yield -// Charlie thinks insurance claims are unlikely -uniswapRouter.swapExactTokensForTokens( - 1000 * 1e6, // Spend 1000 USDC - minTokensOut, - [USDC, juniorToken], - msg.sender, - deadline -); -``` - -## 🔧 Technical Implementation - -### Smart Contract Features - -- **Reentrancy Protection**: All external functions protected against reentrancy attacks -- **Flexible Deposits**: Users can deposit at any time during the protocol lifecycle -- **Phase-Based Withdrawals**: Withdrawal rules adapt based on current protocol phase -- **Proportional Redemption**: Fair distribution of assets based on token holdings -- **Emergency Pause**: Owner can pause protocol in emergencies -- **Claim Processing**: Structured insurance claim submission and approval system - -### Security Considerations - -- **Audited OpenZeppelin contracts** for standard functionality -- **Custom errors** for gas-efficient error handling -- **Precision math** using 27-decimal precision for accurate calculations -- **Access controls** with owner-only administrative functions - ## 📊 Key Metrics ### Protocol Health + - **Total Value Locked (TVL)**: Combined value of all deposited assets - **Insurance Coverage Ratio**: Amount of active insurance coverage - **Token Distribution**: Spread of risk across token holders - **Claim Success Rate**: Percentage of approved vs submitted claims ### Market Dynamics + - **Risk Token Price**: Market valuation of insurance risk - **Liquidity Depth**: Available trading volume on Uniswap - **Volatility**: Price stability of risk tokens @@ -242,11 +193,13 @@ npx hardhat test All tests should pass. For troubleshooting, ensure you are using a compatible Node.js version and Hardhat is installed. # Deploy to local network + npx hardhat ignition deploy ignition/modules/RiskToken.ts --network localhost ## 🤝 Contributing Contributions welcome! This project includes: + - **Hardhat development environment** - **TypeScript support** - **Comprehensive test suite** @@ -262,4 +215,4 @@ For commercial licensing inquiries, contact: legal@covermax.fi --- -*CoverMax: Phase-based risk management with dual-tier tokens* +_CoverMax: Phase-based risk management with dual-tier tokens_ From 58cb6e31ae143b077084186614a0a2e3e77050b9 Mon Sep 17 00:00:00 2001 From: "Sree S." Date: Fri, 8 Aug 2025 18:33:13 +0100 Subject: [PATCH 50/50] fix strategy preview on dashboard --- .../src/components/dashboard/DepositStrategies.tsx | 10 +++++++--- frontend/src/pages/Dashboard.tsx | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/dashboard/DepositStrategies.tsx b/frontend/src/components/dashboard/DepositStrategies.tsx index 8eee8a1..b113bf2 100644 --- a/frontend/src/components/dashboard/DepositStrategies.tsx +++ b/frontend/src/components/dashboard/DepositStrategies.tsx @@ -20,6 +20,8 @@ interface DepositStrategiesProps { formatNumber: (num: number, decimals?: number) => string; isExecuting: boolean; onExecuteStrategy: (strategy: 'safety' | 'upside' | 'balanced', amount: string, asset: 'aUSDC' | 'cUSDT') => void; + seniorPrice?: string; + juniorPrice?: string; } const DepositStrategies: React.FC = ({ @@ -28,6 +30,8 @@ const DepositStrategies: React.FC = ({ formatNumber, isExecuting, onExecuteStrategy, + seniorPrice = '1.00', + juniorPrice = '1.00', }) => { const [activeStrategy, setActiveStrategy] = useState<'safety' | 'upside' | 'balanced'>('balanced'); const [amount, setAmount] = useState(''); @@ -179,13 +183,13 @@ const DepositStrategies: React.FC = ({
Strategy Preview:
{activeStrategy === 'safety' && ( -
Depositing ${amount} will get you ~${amount} in Senior tokens (priority claims)
+
Depositing ${amount} will get you ~{formatNumber(parseFloat(amount) / parseFloat(seniorPrice))} Senior tokens (priority claims)
)} {activeStrategy === 'balanced' && ( -
Depositing ${amount} will get you ~${formatNumber(parseFloat(amount) / 2)} Senior + ~${formatNumber(parseFloat(amount) / 2)} Junior tokens
+
Depositing ${amount} will get you ~{formatNumber((parseFloat(amount) / 2) / parseFloat(seniorPrice))} Senior + ~{formatNumber((parseFloat(amount) / 2) / parseFloat(juniorPrice))} Junior tokens
)} {activeStrategy === 'upside' && ( -
Depositing ${amount} will get you ~${amount} in Junior tokens (higher upside potential)
+
Depositing ${amount} will get you ~{formatNumber(parseFloat(amount) / parseFloat(juniorPrice))} Junior tokens (higher upside potential)
)}
diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx index ad0b7ff..6903b74 100644 --- a/frontend/src/pages/Dashboard.tsx +++ b/frontend/src/pages/Dashboard.tsx @@ -339,6 +339,8 @@ const Dashboard = () => { formatNumber={formatNumber} isExecuting={isExecuting} onExecuteStrategy={executeStrategy} + seniorPrice={seniorPrice} + juniorPrice={juniorPrice} />