@ape.swap/bonds-sdk 7.0.4-test.2 → 7.0.4-test.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/evm/state/fetchUsersBondsEVM.js +1 -1
- package/dist/adapters/evm/state/fetchUsersBondsEVM.js.map +1 -1
- package/dist/adapters/evm/views/lpStaking/YourLpStakingBondModal.js +1 -1
- package/dist/adapters/evm/views/lpStaking/YourLpStakingBondModal.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/views/YourBondsModal/components/NFTImage/NFTImage.d.ts +2 -1
- package/dist/views/YourBondsModal/components/NFTImage/NFTImage.js +3 -4
- package/dist/views/YourBondsModal/components/NFTImage/NFTImage.js.map +1 -1
- package/package.json +1 -1
|
@@ -216,7 +216,7 @@ const fetchUserLpStakingBonds = async (chainId, account, lpStakingBonds) => {
|
|
|
216
216
|
billNftId: parseInt(row.token_id),
|
|
217
217
|
processing: false,
|
|
218
218
|
// The position NFT is a Uniswap v3 position with no bond art
|
|
219
|
-
image: 'https://www.ape.bond/images/bills/
|
|
219
|
+
image: 'https://www.ape.bond/images/bills/lp-staking.png',
|
|
220
220
|
chainId,
|
|
221
221
|
contractAddress: lpStakingConfig.positionManager,
|
|
222
222
|
data: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchUsersBondsEVM.js","sources":["../../../../src/adapters/evm/state/fetchUsersBondsEVM.ts"],"sourcesContent":["import billAbi from '../../../config/abi/BOND_2_0_0.json'\nimport multicall from '../utils/multicall'\nimport { UserBill, UserOwnedBillsData } from '../../../types/yourbonds'\nimport { BillsConfig, BillVersion, ChainId } from '@ape.swap/apeswap-lists'\nimport { TokenPrices } from '../../../state/tokenPrices/useTokenPrices'\nimport { BondsData } from '../../../types/bonds'\nimport { apiGet } from '../../../utils/httpClient'\nimport { PRICE_API_URL } from '../../../config/constants/variables'\nimport partition from 'lodash-es/partition.js'\nimport APE_BOND_POSITION_ADAPTER_ABI from '../../../config/abi/apeBondPositionAdapter.json'\nexport const fetchUsersBondsEVM = async (\n chainId: ChainId,\n account: string,\n bondData: BillsConfig[],\n tokenPrices: Partial<Record<ChainId, TokenPrices[]>>,\n): Promise<UserOwnedBillsData[]> => {\n try {\n if (!account) {\n return []\n }\n const [lpStakingBonds, bonds] = partition(bondData, (bond) => bond.billType === 'lpStaking')\n\n // Fetch and set user owned bill data without NFT Data\n const userOwnedBills = await fetchUserOwnedBills(chainId, account, bonds, tokenPrices)\n const mapUserOwnedBills = bonds.map((bill: BillsConfig) =>\n userOwnedBills.filter((b) => b.address.toLowerCase() === bill.contractAddress[bill.chainId]?.toLowerCase()),\n )\n const userOwnedBillsData = bonds.map((bill: BillsConfig, i: number) => ({\n index: bill.index,\n userOwnedBills: mapUserOwnedBills[i],\n }))\n\n const combinedData = userOwnedBillsData.map((data) => {\n const enrichedUserBills = data.userOwnedBills.map((bill) => {\n return {\n ...bill,\n }\n })\n return {\n ...data,\n userOwnedBills: enrichedUserBills,\n }\n })\n\n // Isolated, so a failed LP staking read (campaigns multicall, RPC) doesn't fail the chain's regular bills\n const lpStakingData =\n lpStakingBonds.length > 0\n ? await fetchUserLpStakingBonds(chainId, account, lpStakingBonds).catch((e) => {\n console.error('Error fetching LP staking positions:', e)\n return []\n })\n : []\n\n return Promise.resolve([...combinedData, ...lpStakingData])\n } catch (error) {\n console.error('Error fetching user owned bills data:', error)\n return Promise.reject(error)\n }\n}\n\n// REAL's API only answers browsers from origins it allowlists, so it's called through ape.bond's proxy, which\n// forwards to REAL's API (test stack or mainnet, set on ape.bond's side).\n// TODO: staging proxy for now; switch to the production one (https://ape.bond/api/real-lp) once it's deployed.\nconst REAL_LP_API = 'https://staging.ape.bond/api/real-lp'\n// A position's page on REAL's site, where its bonus and pool rewards are claimed.\n// TODO: test site for now; REAL will send the production URL when mainnet is live.\nconst REAL_LP_DASHBOARD = 'https://staking-test.real.finance/lp/dashboard'\n\n// REAL's /rewards/<wallet>: the pool (epoch) rewards, lifetime figures. Only the fields used below are typed.\ninterface RealLpRewards {\n tokens: { token: string; symbol: string; decimals: number; claims_enabled: boolean }[]\n positions: { lineage_id: string; tokens: { token: string; claimable_wei: string }[] }[]\n}\n\n// One row of REAL's /positions/<wallet>: one episode of a position, i.e. one NFT while it sits in the vault.\n// Only the fields used below are typed.\ninterface RealLpPosition {\n token_id: string\n lineage_id: string\n next_episode_id: string | null\n stake_ordinal: number\n status: 'active' | 'rebalanced' | 'unstaked'\n tick_lower: number\n tick_upper: number\n liquidity_wei: string\n principal_usd: string\n value_usd_now: string | null\n apebond: {\n campaign_id: string\n deposited_at: number\n bonus: {\n token: string\n amount_wei: string\n unlock_at: number\n status: 'reserved' | 'claimable' | 'claimed' | 'forfeited'\n claimed_at: number | null\n token_id: string\n } | null\n } | null\n}\n\n/**\n * Raw token amounts (wei) a Uniswap v3 position holds at the pool's current tick: all token0 below its range, all\n * token1 above it, both inside. Floating point: it's for display only.\n */\nconst getPositionAmounts = (liquidity: number, tickLower: number, tickUpper: number, currentTick: number) => {\n const sqrtPrice = (tick: number) => Math.pow(1.0001, tick / 2)\n const sqrtLower = sqrtPrice(tickLower)\n const sqrtUpper = sqrtPrice(tickUpper)\n const sqrtCurrent = sqrtPrice(Math.min(Math.max(currentTick, tickLower), tickUpper))\n return {\n amount0: (liquidity * (sqrtUpper - sqrtCurrent)) / (sqrtCurrent * sqrtUpper),\n amount1: liquidity * (sqrtCurrent - sqrtLower),\n }\n}\n\n/**\n * The user's LP staking positions, shaped as purchased bonds. A position has no bill: it's a Uniswap v3 NFT staked\n * in REAL's vault, and what ApeBond pays is its bonus, reserved in REAL's escrow until the cliff. So each position\n * becomes one bill whose payout is that bonus, vesting all at once at the cliff (`vestingCliff` = `vestingTerm`).\n * Claims happen on REAL's site, so the bills are marked paused (the row's claim button would call `redeem` on the\n * vault). See docs/lp-staking-bonds/2026-10-23-real-lp-positions-rewards-api.md.\n */\nconst fetchUserLpStakingBonds = async (\n chainId: ChainId,\n account: string,\n lpStakingBonds: BillsConfig[],\n): Promise<UserOwnedBillsData[]> => {\n let rows: RealLpPosition[]\n let assetPriceUsd: string | undefined\n let assetIsToken0 = true\n let currentTick = 0\n let rewards: RealLpRewards | undefined\n try {\n const [response, rewardsResponse] = await Promise.all([\n apiGet<{\n current_tick: number\n current_price_usd: string\n asset_is_token0: boolean\n positions: RealLpPosition[]\n }>(`${REAL_LP_API}/positions/${account}`),\n // The positions still show without their pool rewards if this fails\n apiGet<RealLpRewards>(`${REAL_LP_API}/rewards/${account}`).catch((error) => {\n console.error('Error fetching LP staking rewards:', error)\n return undefined\n }),\n ])\n rewards = rewardsResponse\n rows = response?.positions ?? []\n assetPriceUsd = response?.current_price_usd\n assetIsToken0 = response?.asset_is_token0 ?? true\n currentTick = response?.current_tick ?? 0\n } catch (error) {\n // Don't fail the chain's regular bonds because REAL's API is unreachable (or refuses our origin)\n console.error('Error fetching LP staking positions:', error)\n return []\n }\n\n // All episodes of a position share its lineage_id; the one with no next episode is its current state.\n // Only positions bought through ApeBond have an apebond block.\n const currentPositions = rows.filter((row) => row.apebond && row.next_episode_id === null)\n\n // Each campaign's bonus rate and minimum bonus, for the minimum position value that earns a bonus.\n // campaigns() → (enabled, downTicks, upTicks, toleranceTicks, bonusCliffSeconds, bonusBps, minBonusAmount)\n const campaigns = await multicall(\n chainId,\n APE_BOND_POSITION_ADAPTER_ABI,\n lpStakingBonds.map((bond) => ({\n address: bond.lpStakingConfig!.adapter,\n name: 'campaigns',\n params: [bond.lpStakingConfig!.campaignId],\n })),\n )\n\n return lpStakingBonds.map((bond, bondIndex) => {\n const lpStakingConfig = bond.lpStakingConfig!\n const campaign = campaigns?.[bondIndex]\n const bonusDecimals = lpStakingConfig.bonusRewardToken.decimals[bond.chainId] ?? 18\n const bonusThreshold =\n campaign && Number(campaign[5]) > 0\n ? (Number(campaign[6]) / 10 ** bonusDecimals) * (10000 / Number(campaign[5]))\n : undefined\n const userOwnedBills: UserBill[] = currentPositions\n .filter((row) => row.apebond!.campaign_id.toLowerCase() === lpStakingConfig.campaignId.toLowerCase())\n .map((row) => {\n const { deposited_at: depositedAt, bonus } = row.apebond!\n // No bonus when the purchase was below the campaign minimum; forfeited bonuses have amount 0\n const amount = bonus?.amount_wei ?? '0'\n const cliff = bonus ? bonus.unlock_at - depositedAt : 0\n const chainId = bond.chainId\n const bonusToken = lpStakingConfig.bonusRewardToken\n // The pool is the bonus token ($ASSET) paired with the bond's principal token (USDC)\n const assetToken = {\n address: bonusToken.address[chainId] ?? '',\n symbol: bonusToken.symbol,\n name: bonusToken.symbol,\n decimals: bonusToken.decimals,\n }\n const pairedToken = {\n address: bond.lpToken.address[chainId] ?? '',\n symbol: bond.lpToken.symbol,\n name: bond.lpToken.symbol,\n decimals: bond.lpToken.decimals,\n }\n // Value of the position when it was staked: what the buyer paid, minus the zap fees and the change returned\n const principalUsd = parseFloat(row.principal_usd ?? '0')\n // Value of the position now (null once unstaked: the vault no longer holds it)\n const valueUsdNow = parseFloat(row.value_usd_now ?? '0')\n const assetPrice = parseFloat(assetPriceUsd ?? '0')\n // What the staked position holds now. An unstaked position is back in the wallet, so nothing is staked.\n // current_price_usd is $ASSET's price in USDC, and USDC is counted at $1 (as REAL's value_usd_now does).\n const { amount0, amount1 } =\n row.status === 'unstaked'\n ? { amount0: 0, amount1: 0 }\n : getPositionAmounts(parseFloat(row.liquidity_wei), row.tick_lower, row.tick_upper, currentTick)\n const [token0, token1] = assetIsToken0 ? [assetToken, pairedToken] : [pairedToken, assetToken]\n const toStakedToken = (token: typeof assetToken, rawAmount: number) => {\n const amount = rawAmount / 10 ** (token.decimals[chainId] ?? 18)\n return {\n address: token.address,\n symbol: token.symbol,\n amount,\n amountUsd: amount * (token === assetToken ? assetPrice : 1),\n }\n }\n return {\n // Rows are matched to their bond by contract address; for LP staking that's the vault\n address: bond.contractAddress[bond.chainId] ?? '',\n // The position's current NFT, the one REAL's page link uses. After a rebalance past the cliff the escrow\n // still pays on the NFT id the position had at the cliff (bonus.token_id), which has no field here.\n id: row.token_id,\n // The NFT contract is the position manager. The price range (price_lower_usd / price_upper_usd,\n // range_status_now) has no field.\n // Neither do the position's status (an unstaked position still shows, with its bonus as the API reports\n // it) and `finalized` (false for ~13 min after a purchase).\n billNftAddress: lpStakingConfig.positionManager,\n totalPayout: amount,\n // What's left to receive: everything until it's claimed (or forfeited, where amount is 0)\n payout: bonus?.status === 'claimed' ? '0' : amount,\n pendingRewards: bonus?.status === 'claimable' ? amount : '0',\n payoutClaimed: bonus?.status === 'claimed' ? amount : '0',\n vestingStartTimestamp: depositedAt.toString(),\n vestingTerm: cliff.toString(),\n lastBlockTimestamp: (bonus?.claimed_at ?? depositedAt).toString(),\n // No price per payout token: the bonus is a share of the position's value\n truePricePaid: '0',\n paused: true,\n lpStakingData: {\n token0: toStakedToken(token0, amount0),\n token1: toStakedToken(token1, amount1),\n bonusStatus: bonus?.status ?? null,\n bonusThreshold,\n // The position's page on REAL's site. The ordinal is only appended from 2 on (an NFT staked again by\n // hand after an unstake); older ids of the lineage redirect to the current one.\n positionUrl: `${REAL_LP_DASHBOARD}/${row.token_id}${row.stake_ordinal >= 2 ? `-${row.stake_ordinal}` : ''}`,\n // Matched by lineage_id, shared by every episode of the position (it survives rebalances)\n poolRewards: rewards\n ? rewards.tokens.map((rewardToken) => {\n const positionToken = rewards!.positions\n .find((position) => position.lineage_id === row.lineage_id)\n ?.tokens.find((token) => token.token.toLowerCase() === rewardToken.token.toLowerCase())\n // claimable_wei is what's earned and not claimed yet; $ASSET can't be claimed before\n // claims_enabled (mainnet launch + REAL's timelock)\n const rewardAmount = Number(positionToken?.claimable_wei ?? '0') / 10 ** rewardToken.decimals\n return {\n address: rewardToken.token,\n symbol: rewardToken.symbol,\n amount: rewardAmount,\n // Only $ASSET has a price (current_price_usd); REAL's API doesn't price $OVTR\n amountUsd:\n rewardToken.token.toLowerCase() === assetToken.address.toLowerCase()\n ? rewardAmount * assetPrice\n : undefined,\n claimsEnabled: rewardToken.claims_enabled,\n }\n })\n : undefined,\n },\n // What api-v2 provides for regular bills, here from REAL's API (useUserBonds doesn't send LP staking\n // bills to api-v2)\n nftData: {\n tokenId: parseInt(row.token_id),\n billNftId: parseInt(row.token_id),\n processing: false,\n // The position NFT is a Uniswap v3 position with no bond art\n image: 'https://www.ape.bond/images/bills/hidden-bill.jpg',\n chainId,\n contractAddress: lpStakingConfig.positionManager,\n data: {\n billContract: bond.contractAddress[chainId] ?? '',\n billNftAddress: lpStakingConfig.positionManager,\n billNftId: parseInt(row.token_id),\n // Not in REAL's API\n blockNumber: 0,\n bondArtCollection: '',\n bondPartner: bond.bondPartner ?? '',\n bondVersion: bond.billVersion ?? '',\n chainId,\n // The purchase opened the position's first episode, whose id is <token_id>-<opening tx hash>\n createTransactionHash: row.lineage_id.split('-')[1] ?? '',\n createdAddressOwner: account,\n createdAt: depositedAt,\n // The amount paid isn't in REAL's API (only in the purchase tx). The principal token is USDC, so the\n // position's USD value at purchase stands in for it.\n deposit: principalUsd,\n dollarValue: principalUsd,\n expires: depositedAt + cliff,\n pairName: assetIsToken0\n ? `${assetToken.symbol}-${pairedToken.symbol}`\n : `${pairedToken.symbol}-${assetToken.symbol}`,\n // The position's current value (used by the share image), in $ASSET (the payout token) so that\n // payout × payoutTokenPrice gives value_usd_now back. The bonus itself is in the bill's payout fields.\n payout: assetPrice > 0 ? valueUsdNow / assetPrice : 0,\n payoutToken: assetToken.address,\n payoutTokenData: {\n address: assetToken.address,\n name: assetToken.name,\n symbol: assetToken.symbol,\n decimals: assetToken.decimals,\n },\n payoutTokenPrice: assetPriceUsd ?? '0',\n principalToken: pairedToken.address,\n token0: assetIsToken0 ? assetToken : pairedToken,\n token1: assetIsToken0 ? pairedToken : assetToken,\n type: bond.billType,\n vestingPeriodSeconds: cliff,\n },\n },\n // The bonus is paid in the bonus token, not the bond's earnToken, and only unlocks at the cliff.\n // The $OVTR and $ASSET staking rewards (REAL's /rewards/<wallet>) have no field.\n bond: {\n ...bond,\n earnToken: lpStakingConfig.bonusRewardToken,\n vestingCliff: cliff,\n vestingTerm: cliff,\n payoutTokenPrice: assetPriceUsd,\n } as BondsData,\n }\n })\n return { index: bond.index, userOwnedBills }\n })\n}\n\nconst fetchUserOwnedBills = async (\n chainId: ChainId,\n account: string,\n bonds: BillsConfig[],\n tokenPrices: Partial<Record<ChainId, TokenPrices[]>>,\n): Promise<UserBill[]> => {\n // Maps all the bills in the list repo to make a call to each of them to get Bills Id and paused state (only for V4)\n const billIdAndPausedCalls = bonds.flatMap((b, index) => {\n const calls = [\n {\n address: b.contractAddress[b.chainId] ?? '',\n name: 'getBillIds',\n params: [account],\n bondIndex: index,\n },\n ]\n // Only add paused call for V4 bonds\n if (b.billVersion === BillVersion.V4) {\n calls.push({\n address: b.contractAddress[b.chainId] ?? '',\n name: 'paused',\n params: [],\n bondIndex: index,\n })\n }\n return calls\n })\n const billIdAndPausedResults = await multicall(chainId, billAbi, billIdAndPausedCalls, true, 15)\n\n // Separate billIds and pausedStates from results, tracking which bonds have paused calls\n const billIds: any[] = []\n const pausedStates: Map<string, boolean> = new Map()\n let resultIndex = 0\n\n bonds.forEach((b) => {\n // First result is always getBillIds\n billIds.push(billIdAndPausedResults?.[resultIndex])\n resultIndex++\n\n // Next result is paused only if V4\n if (b.billVersion === BillVersion.V4) {\n pausedStates.set(\n b.contractAddress[b.chainId]?.toLowerCase() as string,\n billIdAndPausedResults?.[resultIndex]?.[0] ?? false,\n )\n resultIndex++\n }\n })\n const billDataCalls: any = []\n const billVersions: any = []\n\n billIds?.forEach((idArray: any, index: number) =>\n idArray[0].forEach((id: bigint) => {\n if (id > 0) {\n billDataCalls.push({\n address: bonds[index].contractAddress[bonds[index].chainId],\n name: bonds[index].billVersion !== BillVersion.V1 ? 'getBillInfo' : 'billInfo',\n params: [id],\n bond: bonds[index],\n })\n billDataCalls.push({\n address: bonds[index].contractAddress[bonds[index].chainId],\n name: bonds[index].billVersion !== BillVersion.V1 ? 'claimablePayout' : 'pendingPayoutFor',\n params: [id],\n bond: bonds[index],\n })\n billVersions.push(bonds[index].billVersion)\n }\n }),\n )\n const billData = await multicall(chainId, billAbi, billDataCalls, true, 150)\n const result = []\n\n for (let i = 0; i < billVersions.length; i++) {\n const billPos = i === 0 ? 0 : i * 2\n let bond: BondsData = billDataCalls[billPos].bond\n\n let principalTokenPrice = tokenPrices?.[bond.chainId]?.find(\n (tokenPrice) => tokenPrice.tokenAddress?.toLowerCase() === bond?.lpToken?.address?.[bond.chainId]?.toLowerCase(),\n )?.price\n\n let payoutTokenPrice = tokenPrices?.[bond.chainId]?.find(\n (tokenPrice: TokenPrices) =>\n tokenPrice?.tokenAddress?.toLowerCase() === bond?.earnToken?.address?.[bond.chainId]?.toLowerCase(),\n )?.price\n\n if (principalTokenPrice === undefined) {\n try {\n const res = await apiGet<{ price: string }>(\n `${PRICE_API_URL}/realtime/price?token=${bond?.lpToken?.address?.[bond?.chainId]}&chain=${bond?.chainId}`,\n )\n console.log('Individual call for: ', bond.lpToken.symbol, '. Price: ', res.price)\n principalTokenPrice = parseFloat(res.price ?? '0')\n } catch {\n principalTokenPrice = 0\n }\n }\n if (payoutTokenPrice === undefined) {\n try {\n const res = await apiGet<{ price: string }>(\n `${PRICE_API_URL}/realtime/price?token=${bond?.earnToken?.address?.[bond?.chainId]}&chain=${bond?.chainId}`,\n )\n console.log('Individual call for: ', bond.earnToken.symbol, '. Price: ', res.price)\n payoutTokenPrice = parseFloat(res.price ?? '0')\n } catch {\n payoutTokenPrice = 0\n }\n }\n\n bond = {\n ...bond,\n payoutTokenPrice: payoutTokenPrice?.toString(),\n principalTokenPrice: principalTokenPrice?.toString(),\n }\n const paused = pausedStates.get(bond.contractAddress[bond.chainId]?.toLowerCase() as string) ?? false\n\n const data =\n billVersions[i] !== BillVersion.V1\n ? {\n address: billDataCalls[billPos].address,\n id: billDataCalls[billPos].params[0].toString(),\n payout: (\n BigInt(billData[billPos][0]?.payout.toString()) - BigInt(billData[billPos][0]?.payoutClaimed.toString())\n ).toString(),\n totalPayout: billData[billPos][0]?.payout.toString(),\n payoutClaimed: billData[billPos][0]?.payoutClaimed.toString(),\n billNftAddress: bond.billNnftAddress[bond.chainId] ?? '',\n vesting: billData[billPos][0]?.vesting.toString(),\n vestingTerm: billData[billPos][0]?.vestingTerm.toString(),\n lastBlockTimestamp: billData[billPos][0]?.lastClaimTimestamp.toString(),\n vestingStartTimestamp: billData[billPos][0]?.vestingStartTimestamp.toString(),\n truePricePaid: billData[billPos][0]?.truePricePaid.toString(),\n pendingRewards: billData[billPos + 1][0].toString(),\n paused,\n bond,\n }\n : {\n address: billDataCalls[billPos].address,\n id: billDataCalls[billPos].params[0].toString(),\n payoutClaimed: billData?.[billPos]?.[0]?.payoutClaimed?.toString(),\n payout: billData[billPos][0].toString(),\n billNftAddress: bond.billNnftAddress[bond.chainId] ?? '',\n vesting: billData[billPos][1].toString(),\n lastBlockTimestamp: billData[billPos][2].toString(),\n truePricePaid: billData[billPos][3].toString(),\n pendingRewards: billData[billPos + 1][0].toString(),\n paused,\n bond,\n }\n result.push(data)\n }\n\n return result\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetchUsersBondsEVM.js","sources":["../../../../src/adapters/evm/state/fetchUsersBondsEVM.ts"],"sourcesContent":["import billAbi from '../../../config/abi/BOND_2_0_0.json'\nimport multicall from '../utils/multicall'\nimport { UserBill, UserOwnedBillsData } from '../../../types/yourbonds'\nimport { BillsConfig, BillVersion, ChainId } from '@ape.swap/apeswap-lists'\nimport { TokenPrices } from '../../../state/tokenPrices/useTokenPrices'\nimport { BondsData } from '../../../types/bonds'\nimport { apiGet } from '../../../utils/httpClient'\nimport { PRICE_API_URL } from '../../../config/constants/variables'\nimport partition from 'lodash-es/partition.js'\nimport APE_BOND_POSITION_ADAPTER_ABI from '../../../config/abi/apeBondPositionAdapter.json'\nexport const fetchUsersBondsEVM = async (\n chainId: ChainId,\n account: string,\n bondData: BillsConfig[],\n tokenPrices: Partial<Record<ChainId, TokenPrices[]>>,\n): Promise<UserOwnedBillsData[]> => {\n try {\n if (!account) {\n return []\n }\n const [lpStakingBonds, bonds] = partition(bondData, (bond) => bond.billType === 'lpStaking')\n\n // Fetch and set user owned bill data without NFT Data\n const userOwnedBills = await fetchUserOwnedBills(chainId, account, bonds, tokenPrices)\n const mapUserOwnedBills = bonds.map((bill: BillsConfig) =>\n userOwnedBills.filter((b) => b.address.toLowerCase() === bill.contractAddress[bill.chainId]?.toLowerCase()),\n )\n const userOwnedBillsData = bonds.map((bill: BillsConfig, i: number) => ({\n index: bill.index,\n userOwnedBills: mapUserOwnedBills[i],\n }))\n\n const combinedData = userOwnedBillsData.map((data) => {\n const enrichedUserBills = data.userOwnedBills.map((bill) => {\n return {\n ...bill,\n }\n })\n return {\n ...data,\n userOwnedBills: enrichedUserBills,\n }\n })\n\n // Isolated, so a failed LP staking read (campaigns multicall, RPC) doesn't fail the chain's regular bills\n const lpStakingData =\n lpStakingBonds.length > 0\n ? await fetchUserLpStakingBonds(chainId, account, lpStakingBonds).catch((e) => {\n console.error('Error fetching LP staking positions:', e)\n return []\n })\n : []\n\n return Promise.resolve([...combinedData, ...lpStakingData])\n } catch (error) {\n console.error('Error fetching user owned bills data:', error)\n return Promise.reject(error)\n }\n}\n\n// REAL's API only answers browsers from origins it allowlists, so it's called through ape.bond's proxy, which\n// forwards to REAL's API (test stack or mainnet, set on ape.bond's side).\n// TODO: staging proxy for now; switch to the production one (https://ape.bond/api/real-lp) once it's deployed.\nconst REAL_LP_API = 'https://staging.ape.bond/api/real-lp'\n// A position's page on REAL's site, where its bonus and pool rewards are claimed.\n// TODO: test site for now; REAL will send the production URL when mainnet is live.\nconst REAL_LP_DASHBOARD = 'https://staking-test.real.finance/lp/dashboard'\n\n// REAL's /rewards/<wallet>: the pool (epoch) rewards, lifetime figures. Only the fields used below are typed.\ninterface RealLpRewards {\n tokens: { token: string; symbol: string; decimals: number; claims_enabled: boolean }[]\n positions: { lineage_id: string; tokens: { token: string; claimable_wei: string }[] }[]\n}\n\n// One row of REAL's /positions/<wallet>: one episode of a position, i.e. one NFT while it sits in the vault.\n// Only the fields used below are typed.\ninterface RealLpPosition {\n token_id: string\n lineage_id: string\n next_episode_id: string | null\n stake_ordinal: number\n status: 'active' | 'rebalanced' | 'unstaked'\n tick_lower: number\n tick_upper: number\n liquidity_wei: string\n principal_usd: string\n value_usd_now: string | null\n apebond: {\n campaign_id: string\n deposited_at: number\n bonus: {\n token: string\n amount_wei: string\n unlock_at: number\n status: 'reserved' | 'claimable' | 'claimed' | 'forfeited'\n claimed_at: number | null\n token_id: string\n } | null\n } | null\n}\n\n/**\n * Raw token amounts (wei) a Uniswap v3 position holds at the pool's current tick: all token0 below its range, all\n * token1 above it, both inside. Floating point: it's for display only.\n */\nconst getPositionAmounts = (liquidity: number, tickLower: number, tickUpper: number, currentTick: number) => {\n const sqrtPrice = (tick: number) => Math.pow(1.0001, tick / 2)\n const sqrtLower = sqrtPrice(tickLower)\n const sqrtUpper = sqrtPrice(tickUpper)\n const sqrtCurrent = sqrtPrice(Math.min(Math.max(currentTick, tickLower), tickUpper))\n return {\n amount0: (liquidity * (sqrtUpper - sqrtCurrent)) / (sqrtCurrent * sqrtUpper),\n amount1: liquidity * (sqrtCurrent - sqrtLower),\n }\n}\n\n/**\n * The user's LP staking positions, shaped as purchased bonds. A position has no bill: it's a Uniswap v3 NFT staked\n * in REAL's vault, and what ApeBond pays is its bonus, reserved in REAL's escrow until the cliff. So each position\n * becomes one bill whose payout is that bonus, vesting all at once at the cliff (`vestingCliff` = `vestingTerm`).\n * Claims happen on REAL's site, so the bills are marked paused (the row's claim button would call `redeem` on the\n * vault). See docs/lp-staking-bonds/2026-10-23-real-lp-positions-rewards-api.md.\n */\nconst fetchUserLpStakingBonds = async (\n chainId: ChainId,\n account: string,\n lpStakingBonds: BillsConfig[],\n): Promise<UserOwnedBillsData[]> => {\n let rows: RealLpPosition[]\n let assetPriceUsd: string | undefined\n let assetIsToken0 = true\n let currentTick = 0\n let rewards: RealLpRewards | undefined\n try {\n const [response, rewardsResponse] = await Promise.all([\n apiGet<{\n current_tick: number\n current_price_usd: string\n asset_is_token0: boolean\n positions: RealLpPosition[]\n }>(`${REAL_LP_API}/positions/${account}`),\n // The positions still show without their pool rewards if this fails\n apiGet<RealLpRewards>(`${REAL_LP_API}/rewards/${account}`).catch((error) => {\n console.error('Error fetching LP staking rewards:', error)\n return undefined\n }),\n ])\n rewards = rewardsResponse\n rows = response?.positions ?? []\n assetPriceUsd = response?.current_price_usd\n assetIsToken0 = response?.asset_is_token0 ?? true\n currentTick = response?.current_tick ?? 0\n } catch (error) {\n // Don't fail the chain's regular bonds because REAL's API is unreachable (or refuses our origin)\n console.error('Error fetching LP staking positions:', error)\n return []\n }\n\n // All episodes of a position share its lineage_id; the one with no next episode is its current state.\n // Only positions bought through ApeBond have an apebond block.\n const currentPositions = rows.filter((row) => row.apebond && row.next_episode_id === null)\n\n // Each campaign's bonus rate and minimum bonus, for the minimum position value that earns a bonus.\n // campaigns() → (enabled, downTicks, upTicks, toleranceTicks, bonusCliffSeconds, bonusBps, minBonusAmount)\n const campaigns = await multicall(\n chainId,\n APE_BOND_POSITION_ADAPTER_ABI,\n lpStakingBonds.map((bond) => ({\n address: bond.lpStakingConfig!.adapter,\n name: 'campaigns',\n params: [bond.lpStakingConfig!.campaignId],\n })),\n )\n\n return lpStakingBonds.map((bond, bondIndex) => {\n const lpStakingConfig = bond.lpStakingConfig!\n const campaign = campaigns?.[bondIndex]\n const bonusDecimals = lpStakingConfig.bonusRewardToken.decimals[bond.chainId] ?? 18\n const bonusThreshold =\n campaign && Number(campaign[5]) > 0\n ? (Number(campaign[6]) / 10 ** bonusDecimals) * (10000 / Number(campaign[5]))\n : undefined\n const userOwnedBills: UserBill[] = currentPositions\n .filter((row) => row.apebond!.campaign_id.toLowerCase() === lpStakingConfig.campaignId.toLowerCase())\n .map((row) => {\n const { deposited_at: depositedAt, bonus } = row.apebond!\n // No bonus when the purchase was below the campaign minimum; forfeited bonuses have amount 0\n const amount = bonus?.amount_wei ?? '0'\n const cliff = bonus ? bonus.unlock_at - depositedAt : 0\n const chainId = bond.chainId\n const bonusToken = lpStakingConfig.bonusRewardToken\n // The pool is the bonus token ($ASSET) paired with the bond's principal token (USDC)\n const assetToken = {\n address: bonusToken.address[chainId] ?? '',\n symbol: bonusToken.symbol,\n name: bonusToken.symbol,\n decimals: bonusToken.decimals,\n }\n const pairedToken = {\n address: bond.lpToken.address[chainId] ?? '',\n symbol: bond.lpToken.symbol,\n name: bond.lpToken.symbol,\n decimals: bond.lpToken.decimals,\n }\n // Value of the position when it was staked: what the buyer paid, minus the zap fees and the change returned\n const principalUsd = parseFloat(row.principal_usd ?? '0')\n // Value of the position now (null once unstaked: the vault no longer holds it)\n const valueUsdNow = parseFloat(row.value_usd_now ?? '0')\n const assetPrice = parseFloat(assetPriceUsd ?? '0')\n // What the staked position holds now. An unstaked position is back in the wallet, so nothing is staked.\n // current_price_usd is $ASSET's price in USDC, and USDC is counted at $1 (as REAL's value_usd_now does).\n const { amount0, amount1 } =\n row.status === 'unstaked'\n ? { amount0: 0, amount1: 0 }\n : getPositionAmounts(parseFloat(row.liquidity_wei), row.tick_lower, row.tick_upper, currentTick)\n const [token0, token1] = assetIsToken0 ? [assetToken, pairedToken] : [pairedToken, assetToken]\n const toStakedToken = (token: typeof assetToken, rawAmount: number) => {\n const amount = rawAmount / 10 ** (token.decimals[chainId] ?? 18)\n return {\n address: token.address,\n symbol: token.symbol,\n amount,\n amountUsd: amount * (token === assetToken ? assetPrice : 1),\n }\n }\n return {\n // Rows are matched to their bond by contract address; for LP staking that's the vault\n address: bond.contractAddress[bond.chainId] ?? '',\n // The position's current NFT, the one REAL's page link uses. After a rebalance past the cliff the escrow\n // still pays on the NFT id the position had at the cliff (bonus.token_id), which has no field here.\n id: row.token_id,\n // The NFT contract is the position manager. The price range (price_lower_usd / price_upper_usd,\n // range_status_now) has no field.\n // Neither do the position's status (an unstaked position still shows, with its bonus as the API reports\n // it) and `finalized` (false for ~13 min after a purchase).\n billNftAddress: lpStakingConfig.positionManager,\n totalPayout: amount,\n // What's left to receive: everything until it's claimed (or forfeited, where amount is 0)\n payout: bonus?.status === 'claimed' ? '0' : amount,\n pendingRewards: bonus?.status === 'claimable' ? amount : '0',\n payoutClaimed: bonus?.status === 'claimed' ? amount : '0',\n vestingStartTimestamp: depositedAt.toString(),\n vestingTerm: cliff.toString(),\n lastBlockTimestamp: (bonus?.claimed_at ?? depositedAt).toString(),\n // No price per payout token: the bonus is a share of the position's value\n truePricePaid: '0',\n paused: true,\n lpStakingData: {\n token0: toStakedToken(token0, amount0),\n token1: toStakedToken(token1, amount1),\n bonusStatus: bonus?.status ?? null,\n bonusThreshold,\n // The position's page on REAL's site. The ordinal is only appended from 2 on (an NFT staked again by\n // hand after an unstake); older ids of the lineage redirect to the current one.\n positionUrl: `${REAL_LP_DASHBOARD}/${row.token_id}${row.stake_ordinal >= 2 ? `-${row.stake_ordinal}` : ''}`,\n // Matched by lineage_id, shared by every episode of the position (it survives rebalances)\n poolRewards: rewards\n ? rewards.tokens.map((rewardToken) => {\n const positionToken = rewards!.positions\n .find((position) => position.lineage_id === row.lineage_id)\n ?.tokens.find((token) => token.token.toLowerCase() === rewardToken.token.toLowerCase())\n // claimable_wei is what's earned and not claimed yet; $ASSET can't be claimed before\n // claims_enabled (mainnet launch + REAL's timelock)\n const rewardAmount = Number(positionToken?.claimable_wei ?? '0') / 10 ** rewardToken.decimals\n return {\n address: rewardToken.token,\n symbol: rewardToken.symbol,\n amount: rewardAmount,\n // Only $ASSET has a price (current_price_usd); REAL's API doesn't price $OVTR\n amountUsd:\n rewardToken.token.toLowerCase() === assetToken.address.toLowerCase()\n ? rewardAmount * assetPrice\n : undefined,\n claimsEnabled: rewardToken.claims_enabled,\n }\n })\n : undefined,\n },\n // What api-v2 provides for regular bills, here from REAL's API (useUserBonds doesn't send LP staking\n // bills to api-v2)\n nftData: {\n tokenId: parseInt(row.token_id),\n billNftId: parseInt(row.token_id),\n processing: false,\n // The position NFT is a Uniswap v3 position with no bond art\n image: 'https://www.ape.bond/images/bills/lp-staking.png',\n chainId,\n contractAddress: lpStakingConfig.positionManager,\n data: {\n billContract: bond.contractAddress[chainId] ?? '',\n billNftAddress: lpStakingConfig.positionManager,\n billNftId: parseInt(row.token_id),\n // Not in REAL's API\n blockNumber: 0,\n bondArtCollection: '',\n bondPartner: bond.bondPartner ?? '',\n bondVersion: bond.billVersion ?? '',\n chainId,\n // The purchase opened the position's first episode, whose id is <token_id>-<opening tx hash>\n createTransactionHash: row.lineage_id.split('-')[1] ?? '',\n createdAddressOwner: account,\n createdAt: depositedAt,\n // The amount paid isn't in REAL's API (only in the purchase tx). The principal token is USDC, so the\n // position's USD value at purchase stands in for it.\n deposit: principalUsd,\n dollarValue: principalUsd,\n expires: depositedAt + cliff,\n pairName: assetIsToken0\n ? `${assetToken.symbol}-${pairedToken.symbol}`\n : `${pairedToken.symbol}-${assetToken.symbol}`,\n // The position's current value (used by the share image), in $ASSET (the payout token) so that\n // payout × payoutTokenPrice gives value_usd_now back. The bonus itself is in the bill's payout fields.\n payout: assetPrice > 0 ? valueUsdNow / assetPrice : 0,\n payoutToken: assetToken.address,\n payoutTokenData: {\n address: assetToken.address,\n name: assetToken.name,\n symbol: assetToken.symbol,\n decimals: assetToken.decimals,\n },\n payoutTokenPrice: assetPriceUsd ?? '0',\n principalToken: pairedToken.address,\n token0: assetIsToken0 ? assetToken : pairedToken,\n token1: assetIsToken0 ? pairedToken : assetToken,\n type: bond.billType,\n vestingPeriodSeconds: cliff,\n },\n },\n // The bonus is paid in the bonus token, not the bond's earnToken, and only unlocks at the cliff.\n // The $OVTR and $ASSET staking rewards (REAL's /rewards/<wallet>) have no field.\n bond: {\n ...bond,\n earnToken: lpStakingConfig.bonusRewardToken,\n vestingCliff: cliff,\n vestingTerm: cliff,\n payoutTokenPrice: assetPriceUsd,\n } as BondsData,\n }\n })\n return { index: bond.index, userOwnedBills }\n })\n}\n\nconst fetchUserOwnedBills = async (\n chainId: ChainId,\n account: string,\n bonds: BillsConfig[],\n tokenPrices: Partial<Record<ChainId, TokenPrices[]>>,\n): Promise<UserBill[]> => {\n // Maps all the bills in the list repo to make a call to each of them to get Bills Id and paused state (only for V4)\n const billIdAndPausedCalls = bonds.flatMap((b, index) => {\n const calls = [\n {\n address: b.contractAddress[b.chainId] ?? '',\n name: 'getBillIds',\n params: [account],\n bondIndex: index,\n },\n ]\n // Only add paused call for V4 bonds\n if (b.billVersion === BillVersion.V4) {\n calls.push({\n address: b.contractAddress[b.chainId] ?? '',\n name: 'paused',\n params: [],\n bondIndex: index,\n })\n }\n return calls\n })\n const billIdAndPausedResults = await multicall(chainId, billAbi, billIdAndPausedCalls, true, 15)\n\n // Separate billIds and pausedStates from results, tracking which bonds have paused calls\n const billIds: any[] = []\n const pausedStates: Map<string, boolean> = new Map()\n let resultIndex = 0\n\n bonds.forEach((b) => {\n // First result is always getBillIds\n billIds.push(billIdAndPausedResults?.[resultIndex])\n resultIndex++\n\n // Next result is paused only if V4\n if (b.billVersion === BillVersion.V4) {\n pausedStates.set(\n b.contractAddress[b.chainId]?.toLowerCase() as string,\n billIdAndPausedResults?.[resultIndex]?.[0] ?? false,\n )\n resultIndex++\n }\n })\n const billDataCalls: any = []\n const billVersions: any = []\n\n billIds?.forEach((idArray: any, index: number) =>\n idArray[0].forEach((id: bigint) => {\n if (id > 0) {\n billDataCalls.push({\n address: bonds[index].contractAddress[bonds[index].chainId],\n name: bonds[index].billVersion !== BillVersion.V1 ? 'getBillInfo' : 'billInfo',\n params: [id],\n bond: bonds[index],\n })\n billDataCalls.push({\n address: bonds[index].contractAddress[bonds[index].chainId],\n name: bonds[index].billVersion !== BillVersion.V1 ? 'claimablePayout' : 'pendingPayoutFor',\n params: [id],\n bond: bonds[index],\n })\n billVersions.push(bonds[index].billVersion)\n }\n }),\n )\n const billData = await multicall(chainId, billAbi, billDataCalls, true, 150)\n const result = []\n\n for (let i = 0; i < billVersions.length; i++) {\n const billPos = i === 0 ? 0 : i * 2\n let bond: BondsData = billDataCalls[billPos].bond\n\n let principalTokenPrice = tokenPrices?.[bond.chainId]?.find(\n (tokenPrice) => tokenPrice.tokenAddress?.toLowerCase() === bond?.lpToken?.address?.[bond.chainId]?.toLowerCase(),\n )?.price\n\n let payoutTokenPrice = tokenPrices?.[bond.chainId]?.find(\n (tokenPrice: TokenPrices) =>\n tokenPrice?.tokenAddress?.toLowerCase() === bond?.earnToken?.address?.[bond.chainId]?.toLowerCase(),\n )?.price\n\n if (principalTokenPrice === undefined) {\n try {\n const res = await apiGet<{ price: string }>(\n `${PRICE_API_URL}/realtime/price?token=${bond?.lpToken?.address?.[bond?.chainId]}&chain=${bond?.chainId}`,\n )\n console.log('Individual call for: ', bond.lpToken.symbol, '. Price: ', res.price)\n principalTokenPrice = parseFloat(res.price ?? '0')\n } catch {\n principalTokenPrice = 0\n }\n }\n if (payoutTokenPrice === undefined) {\n try {\n const res = await apiGet<{ price: string }>(\n `${PRICE_API_URL}/realtime/price?token=${bond?.earnToken?.address?.[bond?.chainId]}&chain=${bond?.chainId}`,\n )\n console.log('Individual call for: ', bond.earnToken.symbol, '. Price: ', res.price)\n payoutTokenPrice = parseFloat(res.price ?? '0')\n } catch {\n payoutTokenPrice = 0\n }\n }\n\n bond = {\n ...bond,\n payoutTokenPrice: payoutTokenPrice?.toString(),\n principalTokenPrice: principalTokenPrice?.toString(),\n }\n const paused = pausedStates.get(bond.contractAddress[bond.chainId]?.toLowerCase() as string) ?? false\n\n const data =\n billVersions[i] !== BillVersion.V1\n ? {\n address: billDataCalls[billPos].address,\n id: billDataCalls[billPos].params[0].toString(),\n payout: (\n BigInt(billData[billPos][0]?.payout.toString()) - BigInt(billData[billPos][0]?.payoutClaimed.toString())\n ).toString(),\n totalPayout: billData[billPos][0]?.payout.toString(),\n payoutClaimed: billData[billPos][0]?.payoutClaimed.toString(),\n billNftAddress: bond.billNnftAddress[bond.chainId] ?? '',\n vesting: billData[billPos][0]?.vesting.toString(),\n vestingTerm: billData[billPos][0]?.vestingTerm.toString(),\n lastBlockTimestamp: billData[billPos][0]?.lastClaimTimestamp.toString(),\n vestingStartTimestamp: billData[billPos][0]?.vestingStartTimestamp.toString(),\n truePricePaid: billData[billPos][0]?.truePricePaid.toString(),\n pendingRewards: billData[billPos + 1][0].toString(),\n paused,\n bond,\n }\n : {\n address: billDataCalls[billPos].address,\n id: billDataCalls[billPos].params[0].toString(),\n payoutClaimed: billData?.[billPos]?.[0]?.payoutClaimed?.toString(),\n payout: billData[billPos][0].toString(),\n billNftAddress: bond.billNnftAddress[bond.chainId] ?? '',\n vesting: billData[billPos][1].toString(),\n lastBlockTimestamp: billData[billPos][2].toString(),\n truePricePaid: billData[billPos][3].toString(),\n pendingRewards: billData[billPos + 1][0].toString(),\n paused,\n bond,\n }\n result.push(data)\n }\n\n return result\n}\n"],"names":[],"mappings":";;;;;;;;AAUO,MAAM,kBAAkB,GAAG,OAChC,OAAgB,EAChB,OAAe,EACf,QAAuB,EACvB,WAAoD,KACnB;AACjC,IAAA,IAAI;QACF,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,EAAE;QACX;QACA,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC;;AAG5F,QAAA,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC;AACtF,QAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAiB,KACpD,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,CAC5G;AACD,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAiB,EAAE,CAAS,MAAM;YACtE,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACrC,SAAA,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;gBACzD,OAAO;AACL,oBAAA,GAAG,IAAI;iBACR;AACH,YAAA,CAAC,CAAC;YACF,OAAO;AACL,gBAAA,GAAG,IAAI;AACP,gBAAA,cAAc,EAAE,iBAAiB;aAClC;AACH,QAAA,CAAC,CAAC;;AAGF,QAAA,MAAM,aAAa,GACjB,cAAc,CAAC,MAAM,GAAG;AACtB,cAAE,MAAM,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI;AAC1E,gBAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC,CAAC;AACxD,gBAAA,OAAO,EAAE;AACX,YAAA,CAAC;cACD,EAAE;AAER,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC;IAC7D;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC;AAC7D,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B;AACF;AAEA;AACA;AACA;AACA,MAAM,WAAW,GAAG,sCAAsC;AAC1D;AACA;AACA,MAAM,iBAAiB,GAAG,gDAAgD;AAmC1E;;;AAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAiB,EAAE,WAAmB,KAAI;AAC1G,IAAA,MAAM,SAAS,GAAG,CAAC,IAAY,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC;AAC9D,IAAA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AACtC,IAAA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IACtC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IACpF,OAAO;AACL,QAAA,OAAO,EAAE,CAAC,SAAS,IAAI,SAAS,GAAG,WAAW,CAAC,KAAK,WAAW,GAAG,SAAS,CAAC;AAC5E,QAAA,OAAO,EAAE,SAAS,IAAI,WAAW,GAAG,SAAS,CAAC;KAC/C;AACH,CAAC;AAED;;;;;;AAMG;AACH,MAAM,uBAAuB,GAAG,OAC9B,OAAgB,EAChB,OAAe,EACf,cAA6B,KACI;AACjC,IAAA,IAAI,IAAsB;AAC1B,IAAA,IAAI,aAAiC;IACrC,IAAI,aAAa,GAAG,IAAI;IACxB,IAAI,WAAW,GAAG,CAAC;AACnB,IAAA,IAAI,OAAkC;AACtC,IAAA,IAAI;QACF,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AACpD,YAAA,MAAM,CAKH,CAAA,EAAG,WAAW,CAAA,WAAA,EAAc,OAAO,EAAE,CAAC;;AAEzC,YAAA,MAAM,CAAgB,CAAA,EAAG,WAAW,CAAA,SAAA,EAAY,OAAO,CAAA,CAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;AACzE,gBAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC;AAC1D,gBAAA,OAAO,SAAS;AAClB,YAAA,CAAC,CAAC;AACH,SAAA,CAAC;QACF,OAAO,GAAG,eAAe;AACzB,QAAA,IAAI,GAAG,QAAQ,EAAE,SAAS,IAAI,EAAE;AAChC,QAAA,aAAa,GAAG,QAAQ,EAAE,iBAAiB;AAC3C,QAAA,aAAa,GAAG,QAAQ,EAAE,eAAe,IAAI,IAAI;AACjD,QAAA,WAAW,GAAG,QAAQ,EAAE,YAAY,IAAI,CAAC;IAC3C;IAAE,OAAO,KAAK,EAAE;;AAEd,QAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC;AAC5D,QAAA,OAAO,EAAE;IACX;;;IAIA,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC;;;AAI1F,IAAA,MAAM,SAAS,GAAG,MAAM,SAAS,CAC/B,OAAO,EACP,6BAA6B,EAC7B,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AAC5B,QAAA,OAAO,EAAE,IAAI,CAAC,eAAgB,CAAC,OAAO;AACtC,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,MAAM,EAAE,CAAC,IAAI,CAAC,eAAgB,CAAC,UAAU,CAAC;KAC3C,CAAC,CAAC,CACJ;IAED,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;AAC5C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAgB;AAC7C,QAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AACvC,QAAA,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnF,QAAA,MAAM,cAAc,GAClB,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG;cAC9B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,aAAa,KAAK,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;cAC1E,SAAS;QACf,MAAM,cAAc,GAAe;aAChC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE;AACnG,aAAA,GAAG,CAAC,CAAC,GAAG,KAAI;YACX,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,OAAQ;;AAEzD,YAAA,MAAM,MAAM,GAAG,KAAK,EAAE,UAAU,IAAI,GAAG;AACvC,YAAA,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,WAAW,GAAG,CAAC;AACvD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,YAAA,MAAM,UAAU,GAAG,eAAe,CAAC,gBAAgB;;AAEnD,YAAA,MAAM,UAAU,GAAG;gBACjB,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;gBAC1C,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ;aAC9B;AACD,YAAA,MAAM,WAAW,GAAG;gBAClB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AAC5C,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,gBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;aAChC;;YAED,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC;;YAEzD,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC;YACxD,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,IAAI,GAAG,CAAC;;;YAGnD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GACxB,GAAG,CAAC,MAAM,KAAK;kBACX,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;kBACxB,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC;YACpG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC;AAC9F,YAAA,MAAM,aAAa,GAAG,CAAC,KAAwB,EAAE,SAAiB,KAAI;AACpE,gBAAA,MAAM,MAAM,GAAG,SAAS,GAAG,EAAE,KAAK,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChE,OAAO;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM;AACN,oBAAA,SAAS,EAAE,MAAM,IAAI,KAAK,KAAK,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;iBAC5D;AACH,YAAA,CAAC;YACD,OAAO;;gBAEL,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;;gBAGjD,EAAE,EAAE,GAAG,CAAC,QAAQ;;;;;gBAKhB,cAAc,EAAE,eAAe,CAAC,eAAe;AAC/C,gBAAA,WAAW,EAAE,MAAM;;AAEnB,gBAAA,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,GAAG,GAAG,GAAG,MAAM;AAClD,gBAAA,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,GAAG;AAC5D,gBAAA,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,GAAG;AACzD,gBAAA,qBAAqB,EAAE,WAAW,CAAC,QAAQ,EAAE;AAC7C,gBAAA,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE;gBAC7B,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,IAAI,WAAW,EAAE,QAAQ,EAAE;;AAEjE,gBAAA,aAAa,EAAE,GAAG;AAClB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,aAAa,EAAE;AACb,oBAAA,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;AACtC,oBAAA,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;AACtC,oBAAA,WAAW,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI;oBAClC,cAAc;;;oBAGd,WAAW,EAAE,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,GAAG,CAAC,QAAQ,CAAA,EAAG,GAAG,CAAC,aAAa,IAAI,CAAC,GAAG,CAAA,CAAA,EAAI,GAAG,CAAC,aAAa,CAAA,CAAE,GAAG,EAAE,CAAA,CAAE;;AAE3G,oBAAA,WAAW,EAAE;0BACT,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,KAAI;AACjC,4BAAA,MAAM,aAAa,GAAG,OAAQ,CAAC;AAC5B,iCAAA,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU;kCACxD,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;;;AAGzF,4BAAA,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,EAAE,aAAa,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,QAAQ;4BAC7F,OAAO;gCACL,OAAO,EAAE,WAAW,CAAC,KAAK;gCAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;AAC1B,gCAAA,MAAM,EAAE,YAAY;;AAEpB,gCAAA,SAAS,EACP,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,OAAO,CAAC,WAAW;sCAC9D,YAAY,GAAG;AACjB,sCAAE,SAAS;gCACf,aAAa,EAAE,WAAW,CAAC,cAAc;6BAC1C;AACH,wBAAA,CAAC;AACH,0BAAE,SAAS;AACd,iBAAA;;;AAGD,gBAAA,OAAO,EAAE;AACP,oBAAA,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/B,oBAAA,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjC,oBAAA,UAAU,EAAE,KAAK;;AAEjB,oBAAA,KAAK,EAAE,kDAAkD;oBACzD,OAAO;oBACP,eAAe,EAAE,eAAe,CAAC,eAAe;AAChD,oBAAA,IAAI,EAAE;wBACJ,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE;wBACjD,cAAc,EAAE,eAAe,CAAC,eAAe;AAC/C,wBAAA,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAEjC,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,iBAAiB,EAAE,EAAE;AACrB,wBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;AACnC,wBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;wBACnC,OAAO;;AAEP,wBAAA,qBAAqB,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACzD,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,SAAS,EAAE,WAAW;;;AAGtB,wBAAA,OAAO,EAAE,YAAY;AACrB,wBAAA,WAAW,EAAE,YAAY;wBACzB,OAAO,EAAE,WAAW,GAAG,KAAK;AAC5B,wBAAA,QAAQ,EAAE;8BACN,GAAG,UAAU,CAAC,MAAM,CAAA,CAAA,EAAI,WAAW,CAAC,MAAM,CAAA;8BAC1C,GAAG,WAAW,CAAC,MAAM,CAAA,CAAA,EAAI,UAAU,CAAC,MAAM,CAAA,CAAE;;;AAGhD,wBAAA,MAAM,EAAE,UAAU,GAAG,CAAC,GAAG,WAAW,GAAG,UAAU,GAAG,CAAC;wBACrD,WAAW,EAAE,UAAU,CAAC,OAAO;AAC/B,wBAAA,eAAe,EAAE;4BACf,OAAO,EAAE,UAAU,CAAC,OAAO;4BAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;4BACrB,MAAM,EAAE,UAAU,CAAC,MAAM;4BACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;AAC9B,yBAAA;wBACD,gBAAgB,EAAE,aAAa,IAAI,GAAG;wBACtC,cAAc,EAAE,WAAW,CAAC,OAAO;wBACnC,MAAM,EAAE,aAAa,GAAG,UAAU,GAAG,WAAW;wBAChD,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,UAAU;wBAChD,IAAI,EAAE,IAAI,CAAC,QAAQ;AACnB,wBAAA,oBAAoB,EAAE,KAAK;AAC5B,qBAAA;AACF,iBAAA;;;AAGD,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,IAAI;oBACP,SAAS,EAAE,eAAe,CAAC,gBAAgB;AAC3C,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,gBAAgB,EAAE,aAAa;AACnB,iBAAA;aACf;AACH,QAAA,CAAC,CAAC;QACJ,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE;AAC9C,IAAA,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,mBAAmB,GAAG,OAC1B,OAAgB,EAChB,OAAe,EACf,KAAoB,EACpB,WAAoD,KAC7B;;IAEvB,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;AACtD,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA;gBACE,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;AAC3C,gBAAA,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,CAAC,OAAO,CAAC;AACjB,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA;SACF;;QAED,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,EAAE,EAAE;YACpC,KAAK,CAAC,IAAI,CAAC;gBACT,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;AAC3C,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC;QACJ;AACA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,CAAC;AACF,IAAA,MAAM,sBAAsB,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,CAAC;;IAGhG,MAAM,OAAO,GAAU,EAAE;AACzB,IAAA,MAAM,YAAY,GAAyB,IAAI,GAAG,EAAE;IACpD,IAAI,WAAW,GAAG,CAAC;AAEnB,IAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;;QAElB,OAAO,CAAC,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAAC,CAAC;AACnD,QAAA,WAAW,EAAE;;QAGb,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,EAAE,EAAE;YACpC,YAAY,CAAC,GAAG,CACd,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,EAAY,EACrD,sBAAsB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CACpD;AACD,YAAA,WAAW,EAAE;QACf;AACF,IAAA,CAAC,CAAC;IACF,MAAM,aAAa,GAAQ,EAAE;IAC7B,MAAM,YAAY,GAAQ,EAAE;IAE5B,OAAO,EAAE,OAAO,CAAC,CAAC,OAAY,EAAE,KAAa,KAC3C,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAU,KAAI;AAChC,QAAA,IAAI,EAAE,GAAG,CAAC,EAAE;YACV,aAAa,CAAC,IAAI,CAAC;AACjB,gBAAA,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAC3D,gBAAA,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,EAAE,GAAG,aAAa,GAAG,UAAU;gBAC9E,MAAM,EAAE,CAAC,EAAE,CAAC;AACZ,gBAAA,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AACnB,aAAA,CAAC;YACF,aAAa,CAAC,IAAI,CAAC;AACjB,gBAAA,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAC3D,gBAAA,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,EAAE,GAAG,iBAAiB,GAAG,kBAAkB;gBAC1F,MAAM,EAAE,CAAC,EAAE,CAAC;AACZ,gBAAA,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AACnB,aAAA,CAAC;YACF,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;QAC7C;IACF,CAAC,CAAC,CACH;AACD,IAAA,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC;IAC5E,MAAM,MAAM,GAAG,EAAE;AAEjB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAA,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACnC,IAAI,IAAI,GAAc,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI;AAEjD,QAAA,IAAI,mBAAmB,GAAG,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CACzD,CAAC,UAAU,KAAK,UAAU,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CACjH,EAAE,KAAK;AAER,QAAA,IAAI,gBAAgB,GAAG,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CACtD,CAAC,UAAuB,KACtB,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CACtG,EAAE,KAAK;AAER,QAAA,IAAI,mBAAmB,KAAK,SAAS,EAAE;AACrC,YAAA,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,MAAM,CACtB,GAAG,aAAa,CAAA,sBAAA,EAAyB,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA,OAAA,EAAU,IAAI,EAAE,OAAO,CAAA,CAAE,CAC1G;AACD,gBAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC;gBACjF,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC;YACpD;AAAE,YAAA,MAAM;gBACN,mBAAmB,GAAG,CAAC;YACzB;QACF;AACA,QAAA,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAClC,YAAA,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,MAAM,CACtB,GAAG,aAAa,CAAA,sBAAA,EAAyB,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA,OAAA,EAAU,IAAI,EAAE,OAAO,CAAA,CAAE,CAC5G;AACD,gBAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC;gBACnF,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC;YACjD;AAAE,YAAA,MAAM;gBACN,gBAAgB,GAAG,CAAC;YACtB;QACF;AAEA,QAAA,IAAI,GAAG;AACL,YAAA,GAAG,IAAI;AACP,YAAA,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAC9C,YAAA,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,EAAE;SACrD;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAY,CAAC,IAAI,KAAK;QAErG,MAAM,IAAI,GACR,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC;AAC9B,cAAE;AACE,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO;AACvC,gBAAA,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AAC/C,gBAAA,MAAM,EAAE,CACN,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,EACxG,QAAQ,EAAE;AACZ,gBAAA,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE;AACpD,gBAAA,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,EAAE;gBAC7D,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACxD,gBAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE;AACjD,gBAAA,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE;AACzD,gBAAA,kBAAkB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,QAAQ,EAAE;AACvE,gBAAA,qBAAqB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,QAAQ,EAAE;AAC7E,gBAAA,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC7D,gBAAA,cAAc,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACnD,MAAM;gBACN,IAAI;AACL;AACH,cAAE;AACE,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO;AACvC,gBAAA,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AAC/C,gBAAA,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE;gBAClE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACvC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACxD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACxC,kBAAkB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACnD,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AAC9C,gBAAA,cAAc,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACnD,MAAM;gBACN,IAAI;aACL;AACP,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACnB;AAEA,IAAA,OAAO,MAAM;AACf,CAAC;;;;"}
|
|
@@ -67,7 +67,7 @@ const YourLpStakingBondModal = ({ userBill: userBillProp, lostProfit, onDismiss,
|
|
|
67
67
|
: cliffPeriods.hours > 0
|
|
68
68
|
? `${cliffPeriods.hours} hours`
|
|
69
69
|
: `${cliffPeriods.minutes} minutes`;
|
|
70
|
-
return (jsx(Modal, { className: clsx('ape:w-[480px] ape:[overflow-y:unset]! ape:p-0! ape:top-[56%] ape:overflow-x-visible', showNFTImg ? 'ape:bg-transparent!' : 'ape:bg-white2'), children: jsxs(Flex, { className: clsx('ape:flex-col ape:rounded-normal ape:relative ape:p-[20px]', showNFTImg ? 'ape:bg-transparent!' : 'ape:bg-white2'), children: [jsx(NftImage, { userBill: userBill, showNFTImg: showNFTImg, setShowNFTImg: setShowNFTImg }), !showNFTImg && (jsxs(Flex, { className: "ape:flex-col", children: [jsx(YourLpBondModalHeader, { userBill: userBill, onDismiss: onDismiss }), jsxs(Flex, { className: "ape:mt-[10px] ape:flex-col ape:gap-[10px]", children: [jsxs(Flex, { className: "ape:w-full ape:gap-[15px] ape:relative", children: [jsxs(Flex, { className: "ape:bg-white3 ape:rounded-normal ape:flex-col ape:md:flex-row ape:justify-center ape:md:justify-between ape:gap-[4px] ape:md:gap-0 ape:p-[10px] ape:w-1/2 ape:items-center ape:text-[14px]", children: [jsx(Flex, { children: "Deposit" }), isLoading ? (jsx(ValueSkeleton, { width: "60px" })) : depositUSD ? (jsxs(Flex, { children: ["$", formatNumberSI(depositUSD)] })) : (jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: ["Indexing...", jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: "Our services are indexing the tx and deposit amount will be calculated shortly" }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }))] }), jsx(Flex, { className: "ape:absolute ape:top-1/2 ape:left-1/2 ape:-translate-y-1/2 ape:-translate-x-1/2", children: jsx(Arrow, { direction: "right", width: '5px' }) }), jsxs(Flex, { className: "ape:bg-white3 ape:rounded-normal ape:flex-col ape:md:flex-row ape:justify-center ape:md:justify-between ape:gap-[4px] ape:md:gap-0 ape:p-[10px] ape:w-1/2 ape:items-center ape:text-[14px]", children: [jsx(Flex, { children: "Staked" }), jsxs(Flex, { className: "ape:flex-col ape:gap-[4px]", children: [isLoading && (jsxs(Fragment, { children: [jsx(ValueSkeleton, { width: "100px" }), jsx(ValueSkeleton, { width: "100px" })] })), stakedTokens.map((token) => (jsxs(Flex, { className: "ape:items-center ape:justify-center ape:md:justify-end ape:gap-[5px]", children: [jsxs(Flex, { className: "ape:text-[12px]", children: [formatNumberSI(token.amount), " ", token.symbol] }), jsxs(Flex, { className: "ape:text-[10px] ape:font-normal ape:opacity-60", children: ["($", formatNumberSI(token.amountUsd), ")"] })] }, token.address)))] })] })] }), lostProfit && (jsxs(Flex, { className: "ape:bg-white3 ape:rounded-normal ape:w-full ape:p-[10px] ape:justify-between", children: [jsx(Flex, { className: "ape:w-1/5", children: jsx("img", { src: `https://ape.bond/images/launch/mythical.png`, alt: "mythical", style: { width: '90px', height: '90px' } }) }), jsxs(Flex, { className: "ape:w-[75%] ape:flex-col ape:gap-[3px]", children: [jsxs(Flex, { children: ["You missed a", ' ', jsxs(Flex, { className: "ape:px-[3px]", style: { color: 'var(--ape-color-success)' }, children: ["$", lostProfit] }), ' ', "bonus"] }), jsx(Flex, { className: "ape:text-[12px] ape:font-normal", style: { lineHeight: '16px' }, children: "Holding an Ape Tier would\u2019ve gotten you an extra 5% bonus on this purchase and all future ones." }), jsx(Button, { variant: "secondary", className: "ape:w-full ape:text-[14px]! ape:h-[30px] ape:font-semibold", onClick: () => window.open('https://ape.bond/true-yield', '_blank'), children: "Upgrade Your Tier" })] })] })), jsxs(Flex, { className: "ape:flex-col ape:text-[12px] ape:font-normal", children: [jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white3 ape:h-[26px] ape:rounded-[10px_10px_0px_0px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Bonus Reward" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: `Your Bonus Reward unlocks ${cliffLength} after your purchase. Unstaking before it unlocks forfeits the bonus. Once unlocked, you can claim it on REAL's site.` }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), isLoading ? (jsx(ValueSkeleton, { width: "90px" })) : (jsxs(Flex, { className: "ape:items-center", children: [jsxs(Text, { weight: 700, className: "ape:ml-[10px]", size: "12px", children: [formatNumberSI(pending(userBill) + claimable(userBill), 2), " ", payoutTokenSymbol] }), jsxs(Text, { weight: 400, className: "ape:ml-[5px] ape:opacity-60 ape:text-[10px]!", children: ["($", formatNumberSI(pendingUSD(userBill) + claimableUSD(userBill)), ")"] })] }))] }), jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white4 ape:h-[26px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Claim Status" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: UserBillTooltipText.FullyVested }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), jsx(Flex, { className: "ape:items-center", children: isLoading ? (jsx(ValueSkeleton, { width: "90px" })) : userBill?.lpStakingData?.bonusStatus === null ? (jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: ["Not eligible", jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: bonusThreshold !== undefined
|
|
70
|
+
return (jsx(Modal, { className: clsx('ape:w-[480px] ape:[overflow-y:unset]! ape:p-0! ape:top-[56%] ape:overflow-x-visible', showNFTImg ? 'ape:bg-transparent!' : 'ape:bg-white2'), children: jsxs(Flex, { className: clsx('ape:flex-col ape:rounded-normal ape:relative ape:p-[20px]', showNFTImg ? 'ape:bg-transparent!' : 'ape:bg-white2'), children: [jsx(NftImage, { userBill: userBill, showNFTImg: showNFTImg, setShowNFTImg: setShowNFTImg, isLpStakingBond: true }), !showNFTImg && (jsxs(Flex, { className: "ape:flex-col", children: [jsx(YourLpBondModalHeader, { userBill: userBill, onDismiss: onDismiss }), jsxs(Flex, { className: "ape:mt-[10px] ape:flex-col ape:gap-[10px]", children: [jsxs(Flex, { className: "ape:w-full ape:gap-[15px] ape:relative", children: [jsxs(Flex, { className: "ape:bg-white3 ape:rounded-normal ape:flex-col ape:md:flex-row ape:justify-center ape:md:justify-between ape:gap-[4px] ape:md:gap-0 ape:p-[10px] ape:w-1/2 ape:items-center ape:text-[14px]", children: [jsx(Flex, { children: "Deposit" }), isLoading ? (jsx(ValueSkeleton, { width: "60px" })) : depositUSD ? (jsxs(Flex, { children: ["$", formatNumberSI(depositUSD)] })) : (jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: ["Indexing...", jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: "Our services are indexing the tx and deposit amount will be calculated shortly" }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }))] }), jsx(Flex, { className: "ape:absolute ape:top-1/2 ape:left-1/2 ape:-translate-y-1/2 ape:-translate-x-1/2", children: jsx(Arrow, { direction: "right", width: '5px' }) }), jsxs(Flex, { className: "ape:bg-white3 ape:rounded-normal ape:flex-col ape:md:flex-row ape:justify-center ape:md:justify-between ape:gap-[4px] ape:md:gap-0 ape:p-[10px] ape:w-1/2 ape:items-center ape:text-[14px]", children: [jsx(Flex, { children: "Staked" }), jsxs(Flex, { className: "ape:flex-col ape:gap-[4px]", children: [isLoading && (jsxs(Fragment, { children: [jsx(ValueSkeleton, { width: "100px" }), jsx(ValueSkeleton, { width: "100px" })] })), stakedTokens.map((token) => (jsxs(Flex, { className: "ape:items-center ape:justify-center ape:md:justify-end ape:gap-[5px]", children: [jsxs(Flex, { className: "ape:text-[12px]", children: [formatNumberSI(token.amount), " ", token.symbol] }), jsxs(Flex, { className: "ape:text-[10px] ape:font-normal ape:opacity-60", children: ["($", formatNumberSI(token.amountUsd), ")"] })] }, token.address)))] })] })] }), lostProfit && (jsxs(Flex, { className: "ape:bg-white3 ape:rounded-normal ape:w-full ape:p-[10px] ape:justify-between", children: [jsx(Flex, { className: "ape:w-1/5", children: jsx("img", { src: `https://ape.bond/images/launch/mythical.png`, alt: "mythical", style: { width: '90px', height: '90px' } }) }), jsxs(Flex, { className: "ape:w-[75%] ape:flex-col ape:gap-[3px]", children: [jsxs(Flex, { children: ["You missed a", ' ', jsxs(Flex, { className: "ape:px-[3px]", style: { color: 'var(--ape-color-success)' }, children: ["$", lostProfit] }), ' ', "bonus"] }), jsx(Flex, { className: "ape:text-[12px] ape:font-normal", style: { lineHeight: '16px' }, children: "Holding an Ape Tier would\u2019ve gotten you an extra 5% bonus on this purchase and all future ones." }), jsx(Button, { variant: "secondary", className: "ape:w-full ape:text-[14px]! ape:h-[30px] ape:font-semibold", onClick: () => window.open('https://ape.bond/true-yield', '_blank'), children: "Upgrade Your Tier" })] })] })), jsxs(Flex, { className: "ape:flex-col ape:text-[12px] ape:font-normal", children: [jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white3 ape:h-[26px] ape:rounded-[10px_10px_0px_0px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Bonus Reward" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: `Your Bonus Reward unlocks ${cliffLength} after your purchase. Unstaking before it unlocks forfeits the bonus. Once unlocked, you can claim it on REAL's site.` }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), isLoading ? (jsx(ValueSkeleton, { width: "90px" })) : (jsxs(Flex, { className: "ape:items-center", children: [jsxs(Text, { weight: 700, className: "ape:ml-[10px]", size: "12px", children: [formatNumberSI(pending(userBill) + claimable(userBill), 2), " ", payoutTokenSymbol] }), jsxs(Text, { weight: 400, className: "ape:ml-[5px] ape:opacity-60 ape:text-[10px]!", children: ["($", formatNumberSI(pendingUSD(userBill) + claimableUSD(userBill)), ")"] })] }))] }), jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white4 ape:h-[26px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Claim Status" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: UserBillTooltipText.FullyVested }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), jsx(Flex, { className: "ape:items-center", children: isLoading ? (jsx(ValueSkeleton, { width: "90px" })) : userBill?.lpStakingData?.bonusStatus === null ? (jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: ["Not eligible", jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: bonusThreshold !== undefined
|
|
71
71
|
? `This sale was not eligible for Bonus Rewards as its value was below the minimum threshold of ${formatNumberSI(bonusThreshold)} ${payoutTokenSymbol} ($${formatNumberSI(bonusThreshold * payoutTokenPrice)}).`
|
|
72
72
|
: 'This sale was not eligible for Bonus Rewards as its value was below the minimum threshold.' }), width: "230px", placement: "bottomRight", transformTip: "translate(5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] })) : isPendingCliff ? (`Claiming starts in ${cliffCountdown.days !== 0 ? `${cliffCountdown.days} days` : cliffCountdown.hours !== 0 ? `${cliffCountdown.hours} hours` : `${cliffCountdown.minutes} mins`}`) : claimable(userBill) > 0 ? ('Claim now!') : claimed(userBill) > 0 ? ('Claimed') : (
|
|
73
73
|
// Forfeited: unstaked before the cliff
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YourLpStakingBondModal.js","sources":["../../../../../src/adapters/evm/views/lpStaking/YourLpStakingBondModal.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport clsx from 'clsx'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { UserBillTooltipText } from '../../../../config/constants/tooltips'\nimport { claimable, claimableUSD, claimed, pending, pendingUSD } from '../../../../utils/displayHelpers'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport SafeHTMLComponent from '../../../../components/SafeHTMLComponent'\nimport NFTImage from '../../../../views/YourBondsModal/components/NFTImage/NFTImage'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport Modal from '../../../../components/uikit-sdk/Modal'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport Arrow from '../../../../components/uikit-sdk/Svg/Icons/Arrow'\nimport QuestionCircle from '../../../../components/uikit-sdk/Svg/Icons/QuestionCircle'\nimport Skeleton from '../../../../components/uikit-sdk/Skeleton'\nimport YourLpBondModalHeader from './YourLpBondModalHeader'\n\n// Stands in for a value while the position isn't loaded yet\nconst ValueSkeleton = ({ width }: { width: string }) => (\n <Skeleton animation=\"waves\" style={{ width, height: '14px', borderRadius: 'var(--ape-radius-normal)' }} />\n)\n\nconst YourLpStakingBondModal = ({\n userBill: userBillProp,\n lostProfit,\n onDismiss,\n}: {\n userBill?: UserBill\n lostProfit?: string\n onDismiss?: () => void\n}) => {\n // Hooks\n const { data: liveBonds } = useBondsData()\n // Subscribes the modal to the user bonds query (refetched every 2 minutes), so the position updates while it's\n // open: the bill passed in is a snapshot from when the modal was opened (e.g. the deposit still \"Indexing...\")\n const { data: userBonds } = useUserBonds()\n const userBill =\n userBonds?.find(\n (bill) =>\n bill.bond?.billType === 'lpStaking' &&\n bill.id === userBillProp?.id &&\n bill.bond?.chainId === userBillProp?.bond?.chainId,\n ) ?? userBillProp\n\n // State\n const [showNFTImg, setShowNFTImg] = useState(false)\n\n // Static Data\n // Right after a purchase the modal opens before REAL's API lists the position (see ModalHandlerLpStaking)\n const isLoading = !userBill\n // REAL's API only prices a fresh purchase some minutes after it shows up, so 0 means it's still being indexed\n const depositUSD = userBill?.nftData?.data?.dollarValue\n // Minimum position value for a purchase to earn the bonus, in the bonus token\n const bonusThreshold = userBill?.lpStakingData?.bonusThreshold\n const payoutTokenPrice = parseFloat(userBill?.bond?.payoutTokenPrice ?? '0')\n // The position's two pool tokens, as staked now\n const stakedTokens = userBill?.lpStakingData ? [userBill.lpStakingData.token0, userBill.lpStakingData.token1] : []\n const payoutSymbol = userBill?.bond?.showcaseTokenName ?? userBill?.bond?.earnToken.symbol\n const payoutTokenSymbol = payoutSymbol === 'AIX' && userBill?.bond?.chainId === ChainId.SOL ? 'SOLAIX' : payoutSymbol\n // The same bond, if it's still on sale. Matched by index: the bill's copy of the bond has the bonus token as\n // earnToken, so matching by earn token symbol like the regular Actions do wouldn't find it.\n const liveBond = liveBonds?.find(\n (bond) =>\n !bond?.soldOut && !bond?.hide && bond.index === userBill?.bond?.index && bond.chainId === userBill?.bond?.chainId,\n )\n const canPurchaseAgain = !!liveBond\n const positionUrl = userBill?.lpStakingData?.positionUrl\n const poolRewards = userBill?.lpStakingData?.poolRewards\n\n // Cliff display info:\n const vestingCliff = Number(userBill?.bond?.vestingCliff)\n const currentTime = Math.round(new Date().getTime() / 1000)\n const vestingStartTimestamp = parseInt(userBill?.vestingStartTimestamp ?? '0')\n const isPendingCliff = vestingCliff ? currentTime - vestingStartTimestamp < vestingCliff : false\n const cliffCountdown = getTimePeriods(vestingStartTimestamp + (vestingCliff ?? 0) - currentTime, true)\n // The cliff's length, from the campaign (90 days on mainnet, 5 minutes on the Sepolia test stack). Unknown (0)\n // for purchases with no bonus.\n const cliffPeriods = getTimePeriods(vestingCliff || 0, true)\n const cliffLength = !vestingCliff\n ? undefined\n : cliffPeriods.days > 0\n ? `${cliffPeriods.days} days`\n : cliffPeriods.hours > 0\n ? `${cliffPeriods.hours} hours`\n : `${cliffPeriods.minutes} minutes`\n\n return (\n <Modal\n className={clsx(\n 'ape:w-[480px] ape:[overflow-y:unset]! ape:p-0! ape:top-[56%] ape:overflow-x-visible',\n showNFTImg ? 'ape:bg-transparent!' : 'ape:bg-white2',\n )}\n >\n <Flex\n className={clsx(\n 'ape:flex-col ape:rounded-normal ape:relative ape:p-[20px]',\n showNFTImg ? 'ape:bg-transparent!' : 'ape:bg-white2',\n )}\n >\n <NFTImage userBill={userBill} showNFTImg={showNFTImg} setShowNFTImg={setShowNFTImg} />\n\n {/* Modal Content */}\n\n {!showNFTImg && (\n <Flex className=\"ape:flex-col\">\n <YourLpBondModalHeader userBill={userBill} onDismiss={onDismiss} />\n <Flex className=\"ape:mt-[10px] ape:flex-col ape:gap-[10px]\">\n <Flex className=\"ape:w-full ape:gap-[15px] ape:relative\">\n {/* On mobile the label goes on top and the amount below it */}\n <Flex className=\"ape:bg-white3 ape:rounded-normal ape:flex-col ape:md:flex-row ape:justify-center ape:md:justify-between ape:gap-[4px] ape:md:gap-0 ape:p-[10px] ape:w-1/2 ape:items-center ape:text-[14px]\">\n <Flex>Deposit</Flex>\n {isLoading ? (\n <ValueSkeleton width=\"60px\" />\n ) : depositUSD ? (\n <Flex>${formatNumberSI(depositUSD)}</Flex>\n ) : (\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n Indexing...\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>Our services are indexing the tx and deposit amount will be calculated shortly</Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n )}\n </Flex>\n <Flex className=\"ape:absolute ape:top-1/2 ape:left-1/2 ape:-translate-y-1/2 ape:-translate-x-1/2\">\n <Arrow direction=\"right\" width={'5px'} />\n </Flex>\n <Flex className=\"ape:bg-white3 ape:rounded-normal ape:flex-col ape:md:flex-row ape:justify-center ape:md:justify-between ape:gap-[4px] ape:md:gap-0 ape:p-[10px] ape:w-1/2 ape:items-center ape:text-[14px]\">\n <Flex>Staked</Flex>\n <Flex className=\"ape:flex-col ape:gap-[4px]\">\n {isLoading && (\n <>\n <ValueSkeleton width=\"100px\" />\n <ValueSkeleton width=\"100px\" />\n </>\n )}\n {stakedTokens.map((token) => (\n <Flex\n key={token.address}\n className=\"ape:items-center ape:justify-center ape:md:justify-end ape:gap-[5px]\"\n >\n <Flex className=\"ape:text-[12px]\">\n {formatNumberSI(token.amount)} {token.symbol}\n </Flex>\n <Flex className=\"ape:text-[10px] ape:font-normal ape:opacity-60\">\n (${formatNumberSI(token.amountUsd)})\n </Flex>\n </Flex>\n ))}\n </Flex>\n </Flex>\n </Flex>\n {lostProfit && (\n <Flex className=\"ape:bg-white3 ape:rounded-normal ape:w-full ape:p-[10px] ape:justify-between\">\n <Flex className=\"ape:w-1/5\">\n <img\n src={`https://ape.bond/images/launch/mythical.png`}\n alt=\"mythical\"\n style={{ width: '90px', height: '90px' }}\n />\n </Flex>\n <Flex className=\"ape:w-[75%] ape:flex-col ape:gap-[3px]\">\n <Flex>\n You missed a{' '}\n <Flex className=\"ape:px-[3px]\" style={{ color: 'var(--ape-color-success)' }}>\n ${lostProfit}\n </Flex>{' '}\n bonus\n </Flex>\n <Flex className=\"ape:text-[12px] ape:font-normal\" style={{ lineHeight: '16px' }}>\n Holding an Ape Tier would’ve gotten you an extra 5% bonus on this purchase and all future ones.\n </Flex>\n <Button\n variant=\"secondary\"\n className=\"ape:w-full ape:text-[14px]! ape:h-[30px] ape:font-semibold\"\n onClick={() => window.open('https://ape.bond/true-yield', '_blank')}\n >\n Upgrade Your Tier\n </Button>\n </Flex>\n </Flex>\n )}\n <Flex className=\"ape:flex-col ape:text-[12px] ape:font-normal\">\n <Flex className=\"ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white3 ape:h-[26px] ape:rounded-[10px_10px_0px_0px]\">\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n <Flex className=\"ape:opacity-60\">Bonus Reward</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n {`Your Bonus Reward unlocks ${cliffLength} after your purchase. Unstaking before it unlocks forfeits the bonus. Once unlocked, you can claim it on REAL's site.`}\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isLoading ? (\n <ValueSkeleton width=\"90px\" />\n ) : (\n <Flex className=\"ape:items-center\">\n <Text weight={700} className=\"ape:ml-[10px]\" size=\"12px\">\n {/* The bonus, locked or claimable; 0 once claimed */}\n {formatNumberSI(pending(userBill) + claimable(userBill), 2)} {payoutTokenSymbol}\n </Text>\n <Text weight={400} className=\"ape:ml-[5px] ape:opacity-60 ape:text-[10px]!\">\n (${formatNumberSI(pendingUSD(userBill) + claimableUSD(userBill))})\n </Text>\n </Flex>\n )}\n </Flex>\n <Flex className=\"ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white4 ape:h-[26px]\">\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n <Flex className=\"ape:opacity-60\">Claim Status</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{UserBillTooltipText.FullyVested}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n <Flex className=\"ape:items-center\">\n {isLoading ? (\n <ValueSkeleton width=\"90px\" />\n ) : userBill?.lpStakingData?.bonusStatus === null ? (\n // The purchase was below the campaign's minimum bonus, so it has no bonus at all\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n Not eligible\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n {bonusThreshold !== undefined\n ? `This sale was not eligible for Bonus Rewards as its value was below the minimum threshold of ${formatNumberSI(bonusThreshold)} ${payoutTokenSymbol} ($${formatNumberSI(bonusThreshold * payoutTokenPrice)}).`\n : 'This sale was not eligible for Bonus Rewards as its value was below the minimum threshold.'}\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomRight\"\n transformTip=\"translate(5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n ) : isPendingCliff ? (\n `Claiming starts in ${cliffCountdown.days !== 0 ? `${cliffCountdown.days} days` : cliffCountdown.hours !== 0 ? `${cliffCountdown.hours} hours` : `${cliffCountdown.minutes} mins`}`\n ) : claimable(userBill) > 0 ? (\n 'Claim now!'\n ) : claimed(userBill) > 0 ? (\n 'Claimed'\n ) : (\n // Forfeited: unstaked before the cliff\n '-'\n )}\n </Flex>\n </Flex>\n {/* On mobile the rewards stack one per line, so the row grows to fit them */}\n <Flex className=\"ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white3 ape:min-h-[26px] ape:md:h-[26px] ape:rounded-[0px_0px_10px_10px]\">\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n <Flex className=\"ape:opacity-60\">Pool Rewards</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n Pool Rewards are accrued per epoch, by the position's weight among all staked positions,\n and only while it's in range.\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n <Flex className=\"ape:flex-col ape:md:flex-row ape:items-end ape:md:items-center ape:gap-[2px] ape:md:gap-[10px]\">\n {isLoading ? (\n <ValueSkeleton width=\"90px\" />\n ) : poolRewards ? (\n poolRewards.map((reward, index) => (\n <React.Fragment key={reward.address}>\n {/* Separator between the rewards on one line; on mobile they're stacked instead */}\n {index > 0 && (\n <Text as=\"span\" weight={700} className=\"ape:hidden ape:md:inline\" size=\"12px\">\n ·\n </Text>\n )}\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n <Text weight={700} size=\"12px\">\n {formatNumberSI(reward.amount, 2)} {reward.symbol}\n </Text>\n {reward.amountUsd !== undefined && (\n <Flex className=\"ape:text-[10px] ape:font-normal ape:opacity-60\">\n (${formatNumberSI(reward.amountUsd)})\n </Flex>\n )}\n </Flex>\n </React.Fragment>\n ))\n ) : (\n '-'\n )}\n </Flex>\n </Flex>\n </Flex>\n {userBill?.bond?.warningCard && (\n <Flex className=\"ape:w-full ape:justify-center ape:rounded-normal ape:bg-[#DE62F366]\">\n <Text as=\"div\" weight={400} size=\"12px\" className=\"ape:p-[4px_10px]\" style={{ lineHeight: '16px' }}>\n <SafeHTMLComponent html={userBill?.bond?.warningCard} />\n </Text>\n </Flex>\n )}\n <Flex className=\"ape:w-full ape:justify-between ape:gap-[10px] ape:md:gap-[15px] ape:h-[40px]\">\n {/* Every claim (bonus and pool rewards) happens on REAL's site, on the position's page */}\n <Button\n className=\"ape:w-full ape:text-[14px]!\"\n disabled={!positionUrl}\n onClick={() => window.open(positionUrl, '_blank', 'noopener,noreferrer')}\n >\n Manage on REAL\n </Button>\n {isLoading ? (\n // Not known yet whether the bond is still on sale, so no \"sold out\" tooltip\n <Button className=\"ape:text-[14px]! ape:w-full\" disabled>\n Buy again\n </Button>\n ) : canPurchaseAgain ? (\n <Button\n className=\"ape:text-[14px]! ape:w-full\"\n onClick={() =>\n (window.location.href = `/bonds?bondAddress=${liveBond.contractAddress[liveBond.chainId]}&bondChain=${liveBond.chainId}`)\n }\n >\n Buy again\n </Button>\n ) : (\n // The tooltip's wrappers are sized to their content, so they're stretched to the button's half.\n // The disabled button lets the pointer through, so hovering or tapping it opens the tooltip.\n <div className=\"ape:w-full ape:flex ape:*:w-full ape:*:*:w-full\">\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>Bond sold out</Flex>}\n width=\"150px\"\n placement=\"topRight\"\n >\n <Button className=\"ape:text-[14px]! ape:w-full ape:pointer-events-none\" disabled>\n Buy again\n </Button>\n </TooltipBubble>\n </div>\n )}\n </Flex>\n </Flex>\n </Flex>\n )}\n </Flex>\n </Modal>\n )\n}\n\nexport default YourLpStakingBondModal\n"],"names":["_jsx","_jsxs","NFTImage","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YourLpStakingBondModal.js","sources":["../../../../../src/adapters/evm/views/lpStaking/YourLpStakingBondModal.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport clsx from 'clsx'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { UserBillTooltipText } from '../../../../config/constants/tooltips'\nimport { claimable, claimableUSD, claimed, pending, pendingUSD } from '../../../../utils/displayHelpers'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport SafeHTMLComponent from '../../../../components/SafeHTMLComponent'\nimport NFTImage from '../../../../views/YourBondsModal/components/NFTImage/NFTImage'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport Modal from '../../../../components/uikit-sdk/Modal'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport Arrow from '../../../../components/uikit-sdk/Svg/Icons/Arrow'\nimport QuestionCircle from '../../../../components/uikit-sdk/Svg/Icons/QuestionCircle'\nimport Skeleton from '../../../../components/uikit-sdk/Skeleton'\nimport YourLpBondModalHeader from './YourLpBondModalHeader'\n\n// Stands in for a value while the position isn't loaded yet\nconst ValueSkeleton = ({ width }: { width: string }) => (\n <Skeleton animation=\"waves\" style={{ width, height: '14px', borderRadius: 'var(--ape-radius-normal)' }} />\n)\n\nconst YourLpStakingBondModal = ({\n userBill: userBillProp,\n lostProfit,\n onDismiss,\n}: {\n userBill?: UserBill\n lostProfit?: string\n onDismiss?: () => void\n}) => {\n // Hooks\n const { data: liveBonds } = useBondsData()\n // Subscribes the modal to the user bonds query (refetched every 2 minutes), so the position updates while it's\n // open: the bill passed in is a snapshot from when the modal was opened (e.g. the deposit still \"Indexing...\")\n const { data: userBonds } = useUserBonds()\n const userBill =\n userBonds?.find(\n (bill) =>\n bill.bond?.billType === 'lpStaking' &&\n bill.id === userBillProp?.id &&\n bill.bond?.chainId === userBillProp?.bond?.chainId,\n ) ?? userBillProp\n\n // State\n const [showNFTImg, setShowNFTImg] = useState(false)\n\n // Static Data\n // Right after a purchase the modal opens before REAL's API lists the position (see ModalHandlerLpStaking)\n const isLoading = !userBill\n // REAL's API only prices a fresh purchase some minutes after it shows up, so 0 means it's still being indexed\n const depositUSD = userBill?.nftData?.data?.dollarValue\n // Minimum position value for a purchase to earn the bonus, in the bonus token\n const bonusThreshold = userBill?.lpStakingData?.bonusThreshold\n const payoutTokenPrice = parseFloat(userBill?.bond?.payoutTokenPrice ?? '0')\n // The position's two pool tokens, as staked now\n const stakedTokens = userBill?.lpStakingData ? [userBill.lpStakingData.token0, userBill.lpStakingData.token1] : []\n const payoutSymbol = userBill?.bond?.showcaseTokenName ?? userBill?.bond?.earnToken.symbol\n const payoutTokenSymbol = payoutSymbol === 'AIX' && userBill?.bond?.chainId === ChainId.SOL ? 'SOLAIX' : payoutSymbol\n // The same bond, if it's still on sale. Matched by index: the bill's copy of the bond has the bonus token as\n // earnToken, so matching by earn token symbol like the regular Actions do wouldn't find it.\n const liveBond = liveBonds?.find(\n (bond) =>\n !bond?.soldOut && !bond?.hide && bond.index === userBill?.bond?.index && bond.chainId === userBill?.bond?.chainId,\n )\n const canPurchaseAgain = !!liveBond\n const positionUrl = userBill?.lpStakingData?.positionUrl\n const poolRewards = userBill?.lpStakingData?.poolRewards\n\n // Cliff display info:\n const vestingCliff = Number(userBill?.bond?.vestingCliff)\n const currentTime = Math.round(new Date().getTime() / 1000)\n const vestingStartTimestamp = parseInt(userBill?.vestingStartTimestamp ?? '0')\n const isPendingCliff = vestingCliff ? currentTime - vestingStartTimestamp < vestingCliff : false\n const cliffCountdown = getTimePeriods(vestingStartTimestamp + (vestingCliff ?? 0) - currentTime, true)\n // The cliff's length, from the campaign (90 days on mainnet, 5 minutes on the Sepolia test stack). Unknown (0)\n // for purchases with no bonus.\n const cliffPeriods = getTimePeriods(vestingCliff || 0, true)\n const cliffLength = !vestingCliff\n ? undefined\n : cliffPeriods.days > 0\n ? `${cliffPeriods.days} days`\n : cliffPeriods.hours > 0\n ? `${cliffPeriods.hours} hours`\n : `${cliffPeriods.minutes} minutes`\n\n return (\n <Modal\n className={clsx(\n 'ape:w-[480px] ape:[overflow-y:unset]! ape:p-0! ape:top-[56%] ape:overflow-x-visible',\n showNFTImg ? 'ape:bg-transparent!' : 'ape:bg-white2',\n )}\n >\n <Flex\n className={clsx(\n 'ape:flex-col ape:rounded-normal ape:relative ape:p-[20px]',\n showNFTImg ? 'ape:bg-transparent!' : 'ape:bg-white2',\n )}\n >\n {/* The position is a Uniswap v3 NFT with no bond art: the image is a placeholder, with nothing to share */}\n <NFTImage userBill={userBill} showNFTImg={showNFTImg} setShowNFTImg={setShowNFTImg} isLpStakingBond />\n\n {/* Modal Content */}\n\n {!showNFTImg && (\n <Flex className=\"ape:flex-col\">\n <YourLpBondModalHeader userBill={userBill} onDismiss={onDismiss} />\n <Flex className=\"ape:mt-[10px] ape:flex-col ape:gap-[10px]\">\n <Flex className=\"ape:w-full ape:gap-[15px] ape:relative\">\n {/* On mobile the label goes on top and the amount below it */}\n <Flex className=\"ape:bg-white3 ape:rounded-normal ape:flex-col ape:md:flex-row ape:justify-center ape:md:justify-between ape:gap-[4px] ape:md:gap-0 ape:p-[10px] ape:w-1/2 ape:items-center ape:text-[14px]\">\n <Flex>Deposit</Flex>\n {isLoading ? (\n <ValueSkeleton width=\"60px\" />\n ) : depositUSD ? (\n <Flex>${formatNumberSI(depositUSD)}</Flex>\n ) : (\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n Indexing...\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>Our services are indexing the tx and deposit amount will be calculated shortly</Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n )}\n </Flex>\n <Flex className=\"ape:absolute ape:top-1/2 ape:left-1/2 ape:-translate-y-1/2 ape:-translate-x-1/2\">\n <Arrow direction=\"right\" width={'5px'} />\n </Flex>\n <Flex className=\"ape:bg-white3 ape:rounded-normal ape:flex-col ape:md:flex-row ape:justify-center ape:md:justify-between ape:gap-[4px] ape:md:gap-0 ape:p-[10px] ape:w-1/2 ape:items-center ape:text-[14px]\">\n <Flex>Staked</Flex>\n <Flex className=\"ape:flex-col ape:gap-[4px]\">\n {isLoading && (\n <>\n <ValueSkeleton width=\"100px\" />\n <ValueSkeleton width=\"100px\" />\n </>\n )}\n {stakedTokens.map((token) => (\n <Flex\n key={token.address}\n className=\"ape:items-center ape:justify-center ape:md:justify-end ape:gap-[5px]\"\n >\n <Flex className=\"ape:text-[12px]\">\n {formatNumberSI(token.amount)} {token.symbol}\n </Flex>\n <Flex className=\"ape:text-[10px] ape:font-normal ape:opacity-60\">\n (${formatNumberSI(token.amountUsd)})\n </Flex>\n </Flex>\n ))}\n </Flex>\n </Flex>\n </Flex>\n {lostProfit && (\n <Flex className=\"ape:bg-white3 ape:rounded-normal ape:w-full ape:p-[10px] ape:justify-between\">\n <Flex className=\"ape:w-1/5\">\n <img\n src={`https://ape.bond/images/launch/mythical.png`}\n alt=\"mythical\"\n style={{ width: '90px', height: '90px' }}\n />\n </Flex>\n <Flex className=\"ape:w-[75%] ape:flex-col ape:gap-[3px]\">\n <Flex>\n You missed a{' '}\n <Flex className=\"ape:px-[3px]\" style={{ color: 'var(--ape-color-success)' }}>\n ${lostProfit}\n </Flex>{' '}\n bonus\n </Flex>\n <Flex className=\"ape:text-[12px] ape:font-normal\" style={{ lineHeight: '16px' }}>\n Holding an Ape Tier would’ve gotten you an extra 5% bonus on this purchase and all future ones.\n </Flex>\n <Button\n variant=\"secondary\"\n className=\"ape:w-full ape:text-[14px]! ape:h-[30px] ape:font-semibold\"\n onClick={() => window.open('https://ape.bond/true-yield', '_blank')}\n >\n Upgrade Your Tier\n </Button>\n </Flex>\n </Flex>\n )}\n <Flex className=\"ape:flex-col ape:text-[12px] ape:font-normal\">\n <Flex className=\"ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white3 ape:h-[26px] ape:rounded-[10px_10px_0px_0px]\">\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n <Flex className=\"ape:opacity-60\">Bonus Reward</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n {`Your Bonus Reward unlocks ${cliffLength} after your purchase. Unstaking before it unlocks forfeits the bonus. Once unlocked, you can claim it on REAL's site.`}\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isLoading ? (\n <ValueSkeleton width=\"90px\" />\n ) : (\n <Flex className=\"ape:items-center\">\n <Text weight={700} className=\"ape:ml-[10px]\" size=\"12px\">\n {/* The bonus, locked or claimable; 0 once claimed */}\n {formatNumberSI(pending(userBill) + claimable(userBill), 2)} {payoutTokenSymbol}\n </Text>\n <Text weight={400} className=\"ape:ml-[5px] ape:opacity-60 ape:text-[10px]!\">\n (${formatNumberSI(pendingUSD(userBill) + claimableUSD(userBill))})\n </Text>\n </Flex>\n )}\n </Flex>\n <Flex className=\"ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white4 ape:h-[26px]\">\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n <Flex className=\"ape:opacity-60\">Claim Status</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{UserBillTooltipText.FullyVested}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n <Flex className=\"ape:items-center\">\n {isLoading ? (\n <ValueSkeleton width=\"90px\" />\n ) : userBill?.lpStakingData?.bonusStatus === null ? (\n // The purchase was below the campaign's minimum bonus, so it has no bonus at all\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n Not eligible\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n {bonusThreshold !== undefined\n ? `This sale was not eligible for Bonus Rewards as its value was below the minimum threshold of ${formatNumberSI(bonusThreshold)} ${payoutTokenSymbol} ($${formatNumberSI(bonusThreshold * payoutTokenPrice)}).`\n : 'This sale was not eligible for Bonus Rewards as its value was below the minimum threshold.'}\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomRight\"\n transformTip=\"translate(5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n ) : isPendingCliff ? (\n `Claiming starts in ${cliffCountdown.days !== 0 ? `${cliffCountdown.days} days` : cliffCountdown.hours !== 0 ? `${cliffCountdown.hours} hours` : `${cliffCountdown.minutes} mins`}`\n ) : claimable(userBill) > 0 ? (\n 'Claim now!'\n ) : claimed(userBill) > 0 ? (\n 'Claimed'\n ) : (\n // Forfeited: unstaked before the cliff\n '-'\n )}\n </Flex>\n </Flex>\n {/* On mobile the rewards stack one per line, so the row grows to fit them */}\n <Flex className=\"ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white3 ape:min-h-[26px] ape:md:h-[26px] ape:rounded-[0px_0px_10px_10px]\">\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n <Flex className=\"ape:opacity-60\">Pool Rewards</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n Pool Rewards are accrued per epoch, by the position's weight among all staked positions,\n and only while it's in range.\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"block-header icon ape:text-white ape:font-normal ape:text-[12px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n <Flex className=\"ape:flex-col ape:md:flex-row ape:items-end ape:md:items-center ape:gap-[2px] ape:md:gap-[10px]\">\n {isLoading ? (\n <ValueSkeleton width=\"90px\" />\n ) : poolRewards ? (\n poolRewards.map((reward, index) => (\n <React.Fragment key={reward.address}>\n {/* Separator between the rewards on one line; on mobile they're stacked instead */}\n {index > 0 && (\n <Text as=\"span\" weight={700} className=\"ape:hidden ape:md:inline\" size=\"12px\">\n ·\n </Text>\n )}\n <Flex className=\"ape:items-center ape:gap-[5px]\">\n <Text weight={700} size=\"12px\">\n {formatNumberSI(reward.amount, 2)} {reward.symbol}\n </Text>\n {reward.amountUsd !== undefined && (\n <Flex className=\"ape:text-[10px] ape:font-normal ape:opacity-60\">\n (${formatNumberSI(reward.amountUsd)})\n </Flex>\n )}\n </Flex>\n </React.Fragment>\n ))\n ) : (\n '-'\n )}\n </Flex>\n </Flex>\n </Flex>\n {userBill?.bond?.warningCard && (\n <Flex className=\"ape:w-full ape:justify-center ape:rounded-normal ape:bg-[#DE62F366]\">\n <Text as=\"div\" weight={400} size=\"12px\" className=\"ape:p-[4px_10px]\" style={{ lineHeight: '16px' }}>\n <SafeHTMLComponent html={userBill?.bond?.warningCard} />\n </Text>\n </Flex>\n )}\n <Flex className=\"ape:w-full ape:justify-between ape:gap-[10px] ape:md:gap-[15px] ape:h-[40px]\">\n {/* Every claim (bonus and pool rewards) happens on REAL's site, on the position's page */}\n <Button\n className=\"ape:w-full ape:text-[14px]!\"\n disabled={!positionUrl}\n onClick={() => window.open(positionUrl, '_blank', 'noopener,noreferrer')}\n >\n Manage on REAL\n </Button>\n {isLoading ? (\n // Not known yet whether the bond is still on sale, so no \"sold out\" tooltip\n <Button className=\"ape:text-[14px]! ape:w-full\" disabled>\n Buy again\n </Button>\n ) : canPurchaseAgain ? (\n <Button\n className=\"ape:text-[14px]! ape:w-full\"\n onClick={() =>\n (window.location.href = `/bonds?bondAddress=${liveBond.contractAddress[liveBond.chainId]}&bondChain=${liveBond.chainId}`)\n }\n >\n Buy again\n </Button>\n ) : (\n // The tooltip's wrappers are sized to their content, so they're stretched to the button's half.\n // The disabled button lets the pointer through, so hovering or tapping it opens the tooltip.\n <div className=\"ape:w-full ape:flex ape:*:w-full ape:*:*:w-full\">\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>Bond sold out</Flex>}\n width=\"150px\"\n placement=\"topRight\"\n >\n <Button className=\"ape:text-[14px]! ape:w-full ape:pointer-events-none\" disabled>\n Buy again\n </Button>\n </TooltipBubble>\n </div>\n )}\n </Flex>\n </Flex>\n </Flex>\n )}\n </Flex>\n </Modal>\n )\n}\n\nexport default YourLpStakingBondModal\n"],"names":["_jsx","_jsxs","NFTImage","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAsBA;AACA,MAAM,aAAa,GAAG,CAAC,EAAE,KAAK,EAAqB,MACjDA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,0BAA0B,EAAE,EAAA,CAAI,CAC3G;AAED,MAAM,sBAAsB,GAAG,CAAC,EAC9B,QAAQ,EAAE,YAAY,EACtB,UAAU,EACV,SAAS,GAKV,KAAI;;IAEH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE;;;IAG1C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE;AAC1C,IAAA,MAAM,QAAQ,GACZ,SAAS,EAAE,IAAI,CACb,CAAC,IAAI,KACH,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,WAAW;AACnC,QAAA,IAAI,CAAC,EAAE,KAAK,YAAY,EAAE,EAAE;AAC5B,QAAA,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,YAAY,EAAE,IAAI,EAAE,OAAO,CACrD,IAAI,YAAY;;IAGnB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;;;AAInD,IAAA,MAAM,SAAS,GAAG,CAAC,QAAQ;;IAE3B,MAAM,UAAU,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW;;AAEvD,IAAA,MAAM,cAAc,GAAG,QAAQ,EAAE,aAAa,EAAE,cAAc;AAC9D,IAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,IAAI,GAAG,CAAC;;IAE5E,MAAM,YAAY,GAAG,QAAQ,EAAE,aAAa,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE;AAClH,IAAA,MAAM,YAAY,GAAG,QAAQ,EAAE,IAAI,EAAE,iBAAiB,IAAI,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM;IAC1F,MAAM,iBAAiB,GAAG,YAAY,KAAK,KAAK,IAAI,QAAQ,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,GAAG,QAAQ,GAAG,YAAY;;;AAGrH,IAAA,MAAM,QAAQ,GAAG,SAAS,EAAE,IAAI,CAC9B,CAAC,IAAI,KACH,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,IAAI,EAAE,OAAO,CACpH;AACD,IAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,QAAQ;AACnC,IAAA,MAAM,WAAW,GAAG,QAAQ,EAAE,aAAa,EAAE,WAAW;AACxD,IAAA,MAAM,WAAW,GAAG,QAAQ,EAAE,aAAa,EAAE,WAAW;;IAGxD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC;AACzD,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAC3D,MAAM,qBAAqB,GAAG,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,IAAI,GAAG,CAAC;AAC9E,IAAA,MAAM,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,qBAAqB,GAAG,YAAY,GAAG,KAAK;AAChG,IAAA,MAAM,cAAc,GAAG,cAAc,CAAC,qBAAqB,IAAI,YAAY,IAAI,CAAC,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC;;;IAGtG,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,IAAI,CAAC,EAAE,IAAI,CAAC;IAC5D,MAAM,WAAW,GAAG,CAAC;AACnB,UAAE;AACF,UAAE,YAAY,CAAC,IAAI,GAAG;AACpB,cAAE,CAAA,EAAG,YAAY,CAAC,IAAI,CAAA,KAAA;AACtB,cAAE,YAAY,CAAC,KAAK,GAAG;AACrB,kBAAE,CAAA,EAAG,YAAY,CAAC,KAAK,CAAA,MAAA;AACvB,kBAAE,CAAA,EAAG,YAAY,CAAC,OAAO,UAAU;AAEzC,IAAA,QACEA,GAAA,CAAC,KAAK,IACJ,SAAS,EAAE,IAAI,CACb,qFAAqF,EACrF,UAAU,GAAG,qBAAqB,GAAG,eAAe,CACrD,EAAA,QAAA,EAEDC,IAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAE,IAAI,CACb,2DAA2D,EAC3D,UAAU,GAAG,qBAAqB,GAAG,eAAe,CACrD,aAGDD,GAAA,CAACE,QAAQ,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAA,IAAA,EAAA,CAAG,EAIrG,CAAC,UAAU,KACVD,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,CAC5BD,IAAC,qBAAqB,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAA,CAAI,EACnEC,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,2CAA2C,EAAA,QAAA,EAAA,CACzDA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,wCAAwC,EAAA,QAAA,EAAA,CAEtDA,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,4LAA4L,EAAA,QAAA,EAAA,CAC1MD,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAe,EACnB,SAAS,IACRA,IAAC,aAAa,EAAA,EAAC,KAAK,EAAC,MAAM,GAAG,IAC5B,UAAU,IACZC,IAAA,CAAC,IAAI,oBAAG,cAAc,CAAC,UAAU,CAAC,IAAQ,KAE1CA,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAAA,aAAA,EAE9CD,GAAA,CAAC,aAAa,EAAA,EACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EACFA,IAAC,IAAI,EAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,CAAsF,EAE7F,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,YAAY,EACtB,YAAY,EAAC,oBAAoB,YAEjCA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAChFA,IAAC,cAAc,EAAA,EAAC,KAAK,EAAC,MAAM,GAAG,EAAA,CAC1B,EAAA,CACO,CAAA,EAAA,CACX,CACR,IACI,EACPA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,iFAAiF,EAAA,QAAA,EAC/FA,GAAA,CAAC,KAAK,IAAC,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,KAAK,EAAA,CAAI,GACpC,EACPC,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,4LAA4L,EAAA,QAAA,EAAA,CAC1MD,IAAC,IAAI,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAc,EACnBC,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,CACzC,SAAS,KACRA,IAAA,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAA,CACEH,GAAA,CAAC,aAAa,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,CAAG,EAC/BA,GAAA,CAAC,aAAa,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,CAAG,IAC9B,CACJ,EACA,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,MACtBC,IAAA,CAAC,IAAI,IAEH,SAAS,EAAC,sEAAsE,EAAA,QAAA,EAAA,CAEhFA,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,iBAAiB,aAC9B,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAA,GAAA,EAAG,KAAK,CAAC,MAAM,IACvC,EACPA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gDAAgD,mBAC3D,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,EAAA,GAAA,CAAA,EAAA,CAC7B,CAAA,EAAA,EARF,KAAK,CAAC,OAAO,CASb,CACR,CAAC,IACG,CAAA,EAAA,CACF,CAAA,EAAA,CACF,EACN,UAAU,KACTA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,8EAA8E,EAAA,QAAA,EAAA,CAC5FD,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,WAAW,EAAA,QAAA,EACzBA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,CAAA,2CAAA,CAA6C,EAClD,GAAG,EAAC,UAAU,EACd,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CACxC,GACG,EACPC,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,wCAAwC,aACtDA,IAAA,CAAC,IAAI,+BACU,GAAG,EAChBA,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAA,QAAA,EAAA,CAAA,GAAA,EACvE,UAAU,IACP,EAAC,GAAG,aAEN,EACPD,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,sGAAA,EAAA,CAExE,EACPA,GAAA,CAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,SAAS,EAAC,4DAA4D,EACtE,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,kCAG5D,CAAA,EAAA,CACJ,CAAA,EAAA,CACF,CACR,EACDC,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CAC5DA,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,6HAA6H,aAC3IA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAC9CD,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,CAAoB,EACpDA,IAAC,aAAa,EAAA,EACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EACFA,GAAA,CAAC,IAAI,cACF,CAAA,0BAAA,EAA6B,WAAW,uHAAuH,EAAA,CAC3J,EAET,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,YAAY,EACtB,YAAY,EAAC,oBAAoB,EAAA,QAAA,EAEjCA,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAChFA,GAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,EAAA,CAC1B,EAAA,CACO,IACX,EACN,SAAS,IACRA,GAAA,CAAC,aAAa,EAAA,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,KAE9BC,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,kBAAkB,EAAA,QAAA,EAAA,CAChCA,KAAC,IAAI,EAAA,EAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,aAErD,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAA,GAAA,EAAG,iBAAiB,CAAA,EAAA,CAC1E,EACPA,KAAC,IAAI,EAAA,EAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CAAA,IAAA,EACtE,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,SAC3D,CAAA,EAAA,CACF,CACR,IACI,EACPA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,6FAA6F,aAC3GA,IAAA,CAAC,IAAI,IAAC,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAC9CD,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gBAAgB,6BAAoB,EACpDA,GAAA,CAAC,aAAa,EAAA,EACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EAAEA,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAE,mBAAmB,CAAC,WAAW,GAAQ,EACpD,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,YAAY,EACtB,YAAY,EAAC,oBAAoB,EAAA,QAAA,EAEjCA,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAChFA,GAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,GAC1B,EAAA,CACO,CAAA,EAAA,CACX,EACPA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,kBAAkB,EAAA,QAAA,EAC/B,SAAS,IACRA,GAAA,CAAC,aAAa,EAAA,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,IAC5B,QAAQ,EAAE,aAAa,EAAE,WAAW,KAAK,IAAI,IAE/CC,IAAA,CAAC,IAAI,IAAC,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAAA,cAAA,EAE9CD,GAAA,CAAC,aAAa,EAAA,EACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EACFA,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EACF,cAAc,KAAK;AAClB,0EAAE,CAAA,6FAAA,EAAgG,cAAc,CAAC,cAAc,CAAC,CAAA,CAAA,EAAI,iBAAiB,CAAA,GAAA,EAAM,cAAc,CAAC,cAAc,GAAG,gBAAgB,CAAC,CAAA,EAAA;0EAC1M,4FAA4F,EAAA,CAC3F,EAET,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,aAAa,EACvB,YAAY,EAAC,mBAAmB,EAAA,QAAA,EAEhCA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAChFA,GAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,EAAA,CAC1B,EAAA,CACO,CAAA,EAAA,CACX,IACL,cAAc,IAChB,sBAAsB,cAAc,CAAC,IAAI,KAAK,CAAC,GAAG,CAAA,EAAG,cAAc,CAAC,IAAI,CAAA,KAAA,CAAO,GAAG,cAAc,CAAC,KAAK,KAAK,CAAC,GAAG,CAAA,EAAG,cAAc,CAAC,KAAK,QAAQ,GAAG,CAAA,EAAG,cAAc,CAAC,OAAO,CAAA,KAAA,CAAO,CAAA,CAAE,IACjL,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IACzB,YAAY,IACV,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IACvB,SAAS;;oDAGT,GAAG,CACJ,GACI,CAAA,EAAA,CACF,EAEPC,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,iJAAiJ,EAAA,QAAA,EAAA,CAC/JA,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gCAAgC,aAC9CD,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gBAAgB,6BAAoB,EACpDA,GAAA,CAAC,aAAa,EAAA,EACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EACFA,GAAA,CAAC,IAAI,yIAGE,EAET,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,YAAY,EACtB,YAAY,EAAC,oBAAoB,YAEjCA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAChFA,GAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,EAAA,CAC1B,GACO,CAAA,EAAA,CACX,EACPA,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gGAAgG,EAAA,QAAA,EAC7G,SAAS,IACRA,GAAA,CAAC,aAAa,EAAA,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,IAC5B,WAAW,IACb,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAC5BC,IAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CAEZ,KAAK,GAAG,CAAC,KACRD,GAAA,CAAC,IAAI,IAAC,EAAE,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAC,0BAA0B,EAAC,IAAI,EAAC,MAAM,EAAA,QAAA,EAAA,QAAA,EAAA,CAEtE,CACR,EACDC,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAC9CA,KAAC,IAAI,EAAA,EAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAC,MAAM,aAC3B,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAA,GAAA,EAAG,MAAM,CAAC,MAAM,IAC5C,EACN,MAAM,CAAC,SAAS,KAAK,SAAS,KAC7BA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gDAAgD,EAAA,QAAA,EAAA,CAAA,IAAA,EAC3D,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,EAAA,GAAA,CAAA,EAAA,CAC9B,CACR,CAAA,EAAA,CACI,CAAA,EAAA,EAhBY,MAAM,CAAC,OAAO,CAiBlB,CAClB,CAAC,KAEF,GAAG,CACJ,GACI,CAAA,EAAA,CACF,CAAA,EAAA,CACF,EACN,QAAQ,EAAE,IAAI,EAAE,WAAW,KAC1BD,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,qEAAqE,EAAA,QAAA,EACnFA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAC,KAAK,EAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,kBAAkB,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAA,QAAA,EAChGA,GAAA,CAAC,iBAAiB,EAAA,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,GAAI,EAAA,CACnD,EAAA,CACF,CACR,EACDC,IAAA,CAAC,IAAI,IAAC,SAAS,EAAC,8EAA8E,EAAA,QAAA,EAAA,CAE5FD,GAAA,CAAC,MAAM,EAAA,EACL,SAAS,EAAC,6BAA6B,EACvC,QAAQ,EAAE,CAAC,WAAW,EACtB,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,qBAAqB,CAAC,+BAGjE,EACR,SAAS,IAERA,IAAC,MAAM,EAAA,EAAC,SAAS,EAAC,6BAA6B,EAAC,QAAQ,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAE/C,IACP,gBAAgB,IAClBA,GAAA,CAAC,MAAM,EAAA,EACL,SAAS,EAAC,6BAA6B,EACvC,OAAO,EAAE,OACN,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA,mBAAA,EAAsB,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAC,OAAO,CAAA,CAAE,CAAC,0BAIpH,KAITA,aAAK,SAAS,EAAC,iDAAiD,EAAA,QAAA,EAC9DA,GAAA,CAAC,aAAa,IACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EAAEA,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAA,eAAA,EAAA,CAAqB,EAChC,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,UAAU,EAAA,QAAA,EAEpBA,IAAC,MAAM,EAAA,EAAC,SAAS,EAAC,qDAAqD,EAAC,QAAQ,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAEvE,EAAA,CACK,EAAA,CACZ,CACP,CAAA,EAAA,CACI,CAAA,EAAA,CACF,IACF,CACR,CAAA,EAAA,CACI,EAAA,CACD;AAEZ;;;;"}
|
package/dist/styles.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--ape-font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--ape-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ape-color-gray-300:oklch(87.2% .01 258.338);--ape-color-white:#fff;--ape-spacing:.25rem;--ape-text-sm:.875rem;--ape-text-sm--line-height:calc(1.25 / .875);--ape-text-base:1rem;--ape-text-base--line-height:calc(1.5 / 1);--ape-font-weight-light:300;--ape-font-weight-normal:400;--ape-font-weight-medium:500;--ape-font-weight-semibold:600;--ape-font-weight-bold:700;--ape-ease-out:cubic-bezier(0, 0, .2, 1);--ape-ease-in-out:cubic-bezier(.4, 0, .2, 1);--ape-default-transition-duration:.15s;--ape-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--ape-default-font-family:var(--ape-font-sans);--ape-default-mono-font-family:var(--ape-font-mono);--ape-color-white1:#0e0d16;--ape-color-white2:#161420;--ape-color-white3:#1f1d29;--ape-color-white4:#282632;--ape-color-white5:#312f3a;--ape-color-primary-button:#6560c5;--ape-color-primary-button-disable:#48475b;--ape-color-primary-button-hovered:#8480d1;--ape-color-success:#38a611;--ape-color-error:#df4141;--ape-color-text:#fafafa;--ape-color-text-disabled:#424242;--ape-color-text-disabled-button:#73728e;--ape-color-primary-bright:#fafafa;--ape-color-modal-overlay:#42424280;--ape-gradient-abond:linear-gradient(98.79deg, #6560c5 -2.37%, #e07753 100%);--ape-font-body:"Poppins", sans-serif;--ape-radius-small:6px;--ape-radius-default:16px;--ape-radius-normal:10px;--ape-radius-card:32px;--ape-z-index-dropdown:10;--ape-z-index-modal:102}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--ape-default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--ape-default-font-feature-settings,normal);font-variation-settings:var(--ape-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--ape-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--ape-default-mono-font-feature-settings,normal);font-variation-settings:var(--ape-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.ape-root{width:100%;min-width:0;font-family:var(--ape-font-body);-webkit-font-smoothing:antialiased;color:var(--ape-color-text);background-color:var(--ape-color-white1);scroll-behavior:smooth;font-weight:600}.ape-root a{color:var(--ape-color-text);text-decoration:none}.ape-root a:hover{color:var(--ape-color-primary-button);text-decoration:underline}.ape-root hr{background-color:var(--ape-color-white3);border:none;height:1px}.ape-root ::-webkit-scrollbar{width:6px}.ape-root ::-webkit-scrollbar-thumb{background:var(--ape-color-text);border-radius:8px}.ape-root ::-webkit-scrollbar-track{background:var(--ape-color-white2);border-radius:10px}}@layer components{@keyframes ape-ellipsis{0%{content:"."}33%{content:".."}66%{content:"..."}}.ape-ellipsis:after{content:".";text-align:left;width:1em;animation:1.25s infinite ape-ellipsis;display:inline-block}.ape-carousel-viewport{-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;-webkit-touch-callout:none}.ape-carousel-viewport::-webkit-scrollbar{display:none}.ape-you-tooltip:after{content:"";border-style:solid;border-width:6px;border-color:transparent var(--ape-color-primary-button) transparent transparent;position:absolute;top:50%;left:-11px;transform:translateY(-50%)}.ape-you-card{position:absolute;top:0;right:-45px}.ape-you-card:before{content:"";border:9px solid #0000;border-right-color:var(--ape-color-primary-button);width:0;height:0;display:block;position:absolute;top:50%;right:100%;transform:translateY(-50%)}@keyframes ape-spinner-rotation{0%{transform:rotate(40deg)}to{transform:rotate(400deg)}}.ape-spinner{box-sizing:border-box;border-radius:50%;display:inline-block}.ape-spinner-loading{animation:1s linear infinite ape-spinner-rotation;transform:rotate(40deg)}.ape-icon{fill:currentColor;transition:transform .3s linear}.ape-icon path{fill:currentColor}.ape-text-link{cursor:pointer;text-decoration:none;display:inline-block;position:relative}.ape-text-link:after{content:"";background:var(--ape-color-text);border-radius:var(--ape-radius-normal);transform-origin:100% 100%;backface-visibility:hidden;width:100%;height:1.5px;transition:transform .25s ease-out;position:absolute;bottom:0;left:0;transform:scaleX(0)}.ape-text-link:hover:after{transform-origin:0 100%;transform:scaleX(1)}.ape-tooltip-bubble{color:var(--ape-color-text);border-radius:var(--ape-radius-normal);background-color:var(--ape-tooltip-bg,var(--ape-color-white2));width:max-content;z-index:var(--ape-z-index-modal);padding:20px;font-size:12px;font-weight:600;line-height:18px;position:relative;top:15px;box-shadow:0 0 25px #c8c8c84d}.ape-tooltip-bottom-right:before,.ape-tooltip-bottom-left:before,.ape-tooltip-top-right:before,.ape-tooltip-top-left:before,.ape-tooltip-left:before{content:"";border:12px solid #0000;width:0;display:block;position:absolute}.ape-tooltip-bottom-right:before{border-top:0;border-bottom-style:solid;border-bottom-width:15px;border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));top:0;right:3%;transform:translate(-50%,-100%)}.ape-tooltip-bottom-left:before{border-top:0;border-bottom-style:solid;border-bottom-width:15px;border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));top:0;left:calc(3% + 15px);transform:translate(-50%,-100%)}.ape-tooltip-top-right:before{border-top-style:solid;border-top-width:15px;border-bottom:0;border-top-color:var(--ape-tooltip-bg,var(--ape-color-white2));bottom:0;right:3%;transform:translate(-50%,100%)}.ape-tooltip-top-left:before{border-top-style:solid;border-top-width:15px;border-bottom:0;border-top-color:var(--ape-tooltip-bg,var(--ape-color-white2));bottom:0;left:calc(3% + 15px);transform:translate(-50%,100%)}.ape-tooltip-only-container-right:before{content:"";border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));position:absolute;right:3%}.ape-tooltip-left:before{color:var(--ape-color-white2);border-right:15px solid;top:65%;left:-13px;transform:translate(-50%,-100%)}@keyframes ape-skeleton-waves{0%{left:-150px}to{left:100%}}@keyframes ape-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.ape-skeleton-waves{background-color:var(--ape-color-white2);min-height:16px;display:block;position:relative;overflow:hidden;transform:translate(0)}.ape-skeleton-waves:before{content:"";background-image:linear-gradient(90deg,#0000,#f3f3f34d,#0000);width:250px;height:100%;animation:1.5s cubic-bezier(.4,0,.2,1) infinite ape-skeleton-waves;position:absolute;top:0;left:-150px}.ape-skeleton-pulse{background-color:var(--ape-color-white2);border-radius:2px;min-height:20px;animation:2s ease-out infinite ape-skeleton-pulse;display:block;transform:translate(0)}}@layer utilities{.ape\:pointer-events-none{pointer-events:none}.ape\:absolute{position:absolute}.ape\:fixed{position:fixed}.ape\:relative{position:relative}.ape\:inset-0{inset:0}.ape\:-top-\[15px\]{top:-15px}.ape\:top-0{top:0}.ape\:top-1\/2{top:50%}.ape\:top-\[-180px\]{top:-180px}.ape\:top-\[5px\]{top:5px}.ape\:top-\[12px\]{top:12px}.ape\:top-\[24px\]{top:24px}.ape\:top-\[25px\]{top:25px}.ape\:top-\[45px\]{top:45px}.ape\:top-\[50px\]{top:50px}.ape\:top-\[56\%\]{top:56%}.ape\:right-0{right:0}.ape\:right-3{right:calc(var(--ape-spacing) * 3)}.ape\:right-\[5px\]{right:5px}.ape\:right-\[6px\]{right:6px}.ape\:right-\[10px\]{right:10px}.ape\:right-\[50\%\]{right:50%}.ape\:bottom-0{bottom:0}.ape\:bottom-\[-43px\]{bottom:-43px}.ape\:bottom-\[3px\]{bottom:3px}.ape\:bottom-\[calc\(100\%-10px\)\]{bottom:calc(100% - 10px)}.ape\:bottom-\[unset\]{bottom:unset}.ape\:left-0{left:0}.ape\:left-1\/2{left:50%}.ape\:left-\[-20px\]{left:-20px}.ape\:left-\[-50px\]{left:-50px}.ape\:left-\[1px\]{left:1px}.ape\:left-\[25\%\]{left:25%}.ape\:left-\[40px\]{left:40px}.ape\:left-\[65\%\]{left:65%}.ape\:-z-\[1\]{z-index:calc(1 * -1)}.ape\:z-0{z-index:0}.ape\:z-10{z-index:10}.ape\:z-100{z-index:100}.ape\:z-\[1\]{z-index:1}.ape\:z-\[2\]{z-index:2}.ape\:z-\[5\]{z-index:5}.ape\:z-\[20\]{z-index:20}.ape\:z-\[100\]{z-index:100}.ape\:z-\[103\]{z-index:103}.ape\:z-\[121\]{z-index:121}.ape\:z-\[999\]{z-index:999}.ape\:z-\[1000\]{z-index:1000}.ape\:z-\[1001\]{z-index:1001}.ape\:z-\[5000\]{z-index:5000}.ape\:float-left{float:left}.ape\:m-0{margin:0}.ape\:m-\[0_5px_5px_0\]{margin:0 5px 5px 0}.ape\:m-\[10px_0px_15px_0px\]{margin:10px 0 15px}.ape\:m-auto{margin:auto}.ape\:mx-\[-5px\]{margin-inline:-5px}.ape\:mx-\[-8px\]{margin-inline:-8px}.ape\:mx-\[2\.5px\]{margin-inline:2.5px}.ape\:mx-\[2px\]{margin-inline:2px}.ape\:mx-\[3px\]{margin-inline:3px}.ape\:mx-\[5px\]{margin-inline:5px}.ape\:mx-\[8px\]{margin-inline:8px}.ape\:mx-\[10px\]{margin-inline:10px}.ape\:mx-\[20px\]{margin-inline:20px}.ape\:mx-\[25px\]{margin-inline:25px}.ape\:my-\[2px\]{margin-block:2px}.ape\:my-\[10px\]{margin-block:10px}.ape\:my-\[15px\]{margin-block:15px}.ape\:my-\[20px\]{margin-block:20px}.ape\:mt-0{margin-top:0}.ape\:mt-0\.75{margin-top:calc(var(--ape-spacing) * .75)}.ape\:mt-1{margin-top:var(--ape-spacing)}.ape\:mt-2{margin-top:calc(var(--ape-spacing) * 2)}.ape\:mt-2\.5{margin-top:calc(var(--ape-spacing) * 2.5)}.ape\:mt-4{margin-top:calc(var(--ape-spacing) * 4)}.ape\:mt-\[-5px\]{margin-top:-5px}.ape\:mt-\[-15px\]{margin-top:-15px}.ape\:mt-\[3px\]{margin-top:3px}.ape\:mt-\[5px\]{margin-top:5px}.ape\:mt-\[10px\]{margin-top:10px}.ape\:mt-\[15px\]{margin-top:15px}.ape\:mt-\[20px\]{margin-top:20px}.ape\:mt-\[25px\]{margin-top:25px}.ape\:mt-\[30px\]{margin-top:30px}.ape\:mt-\[35px\]{margin-top:35px}.ape\:mt-\[40px\]{margin-top:40px}.ape\:mt-px{margin-top:1px}.ape\:mr-0{margin-right:0}.ape\:mr-1\.25{margin-right:calc(var(--ape-spacing) * 1.25)}.ape\:mr-\[3px\]{margin-right:3px}.ape\:mr-\[4px\]{margin-right:4px}.ape\:mr-\[5px\]{margin-right:5px}.ape\:mr-\[6px\]{margin-right:6px}.ape\:mr-\[8px\]{margin-right:8px}.ape\:mr-\[10px\]{margin-right:10px}.ape\:mr-\[15px\]{margin-right:15px}.ape\:mr-\[20px\]{margin-right:20px}.ape\:mb-1\.25{margin-bottom:calc(var(--ape-spacing) * 1.25)}.ape\:mb-2{margin-bottom:calc(var(--ape-spacing) * 2)}.ape\:mb-2\.5{margin-bottom:calc(var(--ape-spacing) * 2.5)}.ape\:mb-5{margin-bottom:calc(var(--ape-spacing) * 5)}.ape\:mb-\[1px\]{margin-bottom:1px}.ape\:mb-\[3px\]{margin-bottom:3px}.ape\:mb-\[5px\]{margin-bottom:5px}.ape\:mb-\[8px\]{margin-bottom:8px}.ape\:mb-\[10px\]{margin-bottom:10px}.ape\:mb-\[14px\]{margin-bottom:14px}.ape\:mb-\[15px\]{margin-bottom:15px}.ape\:mb-\[20px\]{margin-bottom:20px}.ape\:mb-\[30px\]{margin-bottom:30px}.ape\:mb-\[50px\]{margin-bottom:50px}.ape\:ml-0{margin-left:0}.ape\:ml-1{margin-left:var(--ape-spacing)}.ape\:ml-3\.5{margin-left:calc(var(--ape-spacing) * 3.5)}.ape\:ml-3\.75{margin-left:calc(var(--ape-spacing) * 3.75)}.ape\:ml-5{margin-left:calc(var(--ape-spacing) * 5)}.ape\:ml-\[3px\]{margin-left:3px}.ape\:ml-\[4px\]{margin-left:4px}.ape\:ml-\[5px\]{margin-left:5px}.ape\:ml-\[6px\]{margin-left:6px}.ape\:ml-\[7px\]{margin-left:7px}.ape\:ml-\[10px\]{margin-left:10px}.ape\:ml-\[15px\]{margin-left:15px}.ape\:ml-\[20px\]{margin-left:20px}.ape\:ml-\[30px\]{margin-left:30px}.ape\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ape\:block{display:block}.ape\:block\!{display:block!important}.ape\:flex{display:flex}.ape\:hidden{display:none}.ape\:hidden\!{display:none!important}.ape\:inline-flex{display:inline-flex}.ape\:aspect-\[1\/0\.56\]{aspect-ratio:1/.56}.ape\:size-full{width:100%;height:100%}.ape\:h-7\.5{height:calc(var(--ape-spacing) * 7.5)}.ape\:h-8{height:calc(var(--ape-spacing) * 8)}.ape\:h-10{height:calc(var(--ape-spacing) * 10)}.ape\:h-11\.25{height:calc(var(--ape-spacing) * 11.25)}.ape\:h-\[2px\]{height:2px}.ape\:h-\[3px\]{height:3px}.ape\:h-\[5px\]{height:5px}.ape\:h-\[14px\]{height:14px}.ape\:h-\[15px\]{height:15px}.ape\:h-\[18px\]{height:18px}.ape\:h-\[20px\]{height:20px}.ape\:h-\[21px\]{height:21px}.ape\:h-\[22px\]{height:22px}.ape\:h-\[24px\]{height:24px}.ape\:h-\[25px\]{height:25px}.ape\:h-\[26px\]{height:26px}.ape\:h-\[30px\]{height:30px}.ape\:h-\[30vh\]{height:30vh}.ape\:h-\[31px\]{height:31px}.ape\:h-\[32px\]{height:32px}.ape\:h-\[34px\]{height:34px}.ape\:h-\[35px\]{height:35px}.ape\:h-\[36px\]{height:36px}.ape\:h-\[36px\]\!{height:36px!important}.ape\:h-\[40px\]{height:40px}.ape\:h-\[45px\]{height:45px}.ape\:h-\[49px\]{height:49px}.ape\:h-\[60px\]{height:60px}.ape\:h-\[70px\]{height:70px}.ape\:h-\[75px\]{height:75px}.ape\:h-\[84px\]{height:84px}.ape\:h-\[91px\]{height:91px}.ape\:h-\[125px\]{height:125px}.ape\:h-\[300px\]{height:300px}.ape\:h-\[400px\]{height:400px}.ape\:h-\[725px\]{height:725px}.ape\:h-\[calc\(100\%\+20px\)\]{height:calc(100% + 20px)}.ape\:h-\[calc\(100\%-150px\)\]{height:calc(100% - 150px)}.ape\:h-\[unset\]{height:unset}.ape\:h-auto{height:auto}.ape\:h-fit{height:fit-content}.ape\:h-fit\!{height:fit-content!important}.ape\:h-full{height:100%}.ape\:h-px{height:1px}.ape\:h-screen{height:100vh}.ape\:max-h-\[32px\]{max-height:32px}.ape\:max-h-\[48px\]{max-height:48px}.ape\:max-h-\[95vh\]{max-height:95vh}.ape\:max-h-\[300px\]{max-height:300px}.ape\:max-h-none{max-height:none}.ape\:min-h-4{min-height:calc(var(--ape-spacing) * 4)}.ape\:min-h-23{min-height:calc(var(--ape-spacing) * 23)}.ape\:min-h-\[26px\]{min-height:26px}.ape\:min-h-\[27px\]{min-height:27px}.ape\:min-h-\[30px\]{min-height:30px}.ape\:min-h-\[40px\]{min-height:40px}.ape\:min-h-\[47\.45px\]{min-height:47.45px}.ape\:min-h-\[90px\]{min-height:90px}.ape\:min-h-\[160px\]{min-height:160px}.ape\:min-h-\[225px\]{min-height:225px}.ape\:min-h-\[330px\]{min-height:330px}.ape\:min-h-\[480px\]{min-height:480px}.ape\:w-1\/2{width:50%}.ape\:w-1\/5{width:20%}.ape\:w-7\!{width:calc(var(--ape-spacing) * 7)!important}.ape\:w-43\.75{width:calc(var(--ape-spacing) * 43.75)}.ape\:w-85{width:calc(var(--ape-spacing) * 85)}.ape\:w-95{width:calc(var(--ape-spacing) * 95)}.ape\:w-\[6px\]{width:6px}.ape\:w-\[8px\]{width:8px}.ape\:w-\[14px\]{width:14px}.ape\:w-\[15px\]{width:15px}.ape\:w-\[20px\]{width:20px}.ape\:w-\[25px\]{width:25px}.ape\:w-\[30px\]{width:30px}.ape\:w-\[32\%\]{width:32%}.ape\:w-\[34\%\]{width:34%}.ape\:w-\[35px\]{width:35px}.ape\:w-\[36\%\]{width:36%}.ape\:w-\[40px\]{width:40px}.ape\:w-\[45\%\]{width:45%}.ape\:w-\[49\%\]{width:49%}.ape\:w-\[50px\]{width:50px}.ape\:w-\[55px\]{width:55px}.ape\:w-\[60px\]{width:60px}.ape\:w-\[65\%\]{width:65%}.ape\:w-\[75\%\]{width:75%}.ape\:w-\[85px\]{width:85px}.ape\:w-\[98vw\]{width:98vw}.ape\:w-\[100px\]{width:100px}.ape\:w-\[110px\]{width:110px}.ape\:w-\[115px\]{width:115px}.ape\:w-\[120px\]{width:120px}.ape\:w-\[122px\]{width:122px}.ape\:w-\[125px\]{width:125px}.ape\:w-\[127px\]{width:127px}.ape\:w-\[130px\]{width:130px}.ape\:w-\[135px\]{width:135px}.ape\:w-\[144px\]{width:144px}.ape\:w-\[155px\]{width:155px}.ape\:w-\[160px\]{width:160px}.ape\:w-\[170px\]{width:170px}.ape\:w-\[175px\]{width:175px}.ape\:w-\[190px\]{width:190px}.ape\:w-\[210px\]{width:210px}.ape\:w-\[220px\]{width:220px}.ape\:w-\[235px\]{width:235px}.ape\:w-\[300px\]{width:300px}.ape\:w-\[380px\]{width:380px}.ape\:w-\[380px\]\!{width:380px!important}.ape\:w-\[400px\]{width:400px}.ape\:w-\[416px\]{width:416px}.ape\:w-\[420px\]{width:420px}.ape\:w-\[450px\]{width:450px}.ape\:w-\[480px\]{width:480px}.ape\:w-\[500px\]{width:500px}.ape\:w-\[740px\]\!{width:740px!important}.ape\:w-\[calc\(33\.33\%-20px\)\]{width:calc(33.33% - 20px)}.ape\:w-\[calc\(50vw-25px\)\]{width:calc(50vw - 25px)}.ape\:w-\[calc\(100\%\+40px\)\]{width:calc(100% + 40px)}.ape\:w-\[calc\(100\%-2px\)\]{width:calc(100% - 2px)}.ape\:w-auto{width:auto}.ape\:w-fit{width:fit-content}.ape\:w-full{width:100%}.ape\:w-max{width:max-content}.ape\:w-screen{width:100vw}.ape\:max-w-75{max-width:calc(var(--ape-spacing) * 75)}.ape\:max-w-\[95vw\]{max-width:95vw}.ape\:max-w-\[100px\]{max-width:100px}.ape\:max-w-\[150px\]{max-width:150px}.ape\:max-w-\[300px\]{max-width:300px}.ape\:max-w-full{max-width:100%}.ape\:min-w-\[10px\]{min-width:10px}.ape\:min-w-\[14px\]{min-width:14px}.ape\:min-w-\[20px\]{min-width:20px}.ape\:min-w-\[25px\]{min-width:25px}.ape\:min-w-\[30px\]{min-width:30px}.ape\:min-w-\[33px\]{min-width:33px}.ape\:min-w-\[40px\]{min-width:40px}.ape\:min-w-\[48px\]{min-width:48px}.ape\:min-w-\[65px\]{min-width:65px}.ape\:min-w-\[100px\]{min-width:100px}.ape\:min-w-\[120px\]{min-width:120px}.ape\:min-w-\[148px\]{min-width:148px}.ape\:min-w-\[250px\]{min-width:250px}.ape\:min-w-\[700px\]{min-width:700px}.ape\:min-w-\[unset\]{min-width:unset}.ape\:min-w-full{min-width:100%}.ape\:\[flex\:0_0_100\%\]{flex:0 0 100%}.ape\:flex-1{flex:1}.ape\:shrink-0{flex-shrink:0}.ape\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:translate-x-\[50\%\]{--tw-translate-x:50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:scale-\[0\.5\]{scale:.5}.ape\:rotate-\[-45deg\]{rotate:-45deg}.ape\:cursor-\[unset\]{cursor:unset}.ape\:cursor-pointer{cursor:pointer}.ape\:snap-center{scroll-snap-align:center}.ape\:list-none{list-style-type:none}.ape\:appearance-none{appearance:none}.ape\:flex-col{flex-direction:column}.ape\:flex-col-reverse{flex-direction:column-reverse}.ape\:flex-row{flex-direction:row}.ape\:flex-row-reverse{flex-direction:row-reverse}.ape\:flex-wrap{flex-wrap:wrap}.ape\:items-center{align-items:center}.ape\:items-end{align-items:flex-end}.ape\:items-start{align-items:flex-start}.ape\:items-stretch{align-items:stretch}.ape\:justify-around{justify-content:space-around}.ape\:justify-between{justify-content:space-between}.ape\:justify-center{justify-content:center}.ape\:justify-end{justify-content:flex-end}.ape\:justify-start{justify-content:flex-start}.ape\:gap-1{gap:var(--ape-spacing)}.ape\:gap-2\.5{gap:calc(var(--ape-spacing) * 2.5)}.ape\:gap-4{gap:calc(var(--ape-spacing) * 4)}.ape\:gap-\[1px\]{gap:1px}.ape\:gap-\[2px\]{gap:2px}.ape\:gap-\[3px\]{gap:3px}.ape\:gap-\[4px\]{gap:4px}.ape\:gap-\[5px\]{gap:5px}.ape\:gap-\[7px\]{gap:7px}.ape\:gap-\[8px\]{gap:8px}.ape\:gap-\[10px\]{gap:10px}.ape\:gap-\[14px\]{gap:14px}.ape\:gap-\[15px\]{gap:15px}.ape\:gap-\[20px\]{gap:20px}.ape\:overflow-hidden{overflow:hidden}.ape\:overflow-x-auto{overflow-x:auto}.ape\:overflow-x-hidden{overflow-x:hidden}.ape\:overflow-x-visible{overflow-x:visible}.ape\:\[overflow-y\:unset\]\!{overflow-y:unset!important}.ape\:overflow-y-auto{overflow-y:auto}.ape\:overflow-y-hidden{overflow-y:hidden}.ape\:overflow-y-scroll{overflow-y:scroll}.ape\:rounded-\[0_0_10px_10px\],.ape\:rounded-\[0px_0px_10px_10px\]{border-radius:0 0 10px 10px}.ape\:rounded-\[0px_10px_10px_0px\]{border-radius:0 10px 10px 0}.ape\:rounded-\[4px\]{border-radius:4px}.ape\:rounded-\[5px\]{border-radius:5px}.ape\:rounded-\[6px\]{border-radius:6px}.ape\:rounded-\[6px_6px_0px_0px\]{border-radius:6px 6px 0 0}.ape\:rounded-\[8px\]{border-radius:8px}.ape\:rounded-\[10px\]{border-radius:10px}.ape\:rounded-\[10px_0px_10px_0px\]{border-radius:10px 0}.ape\:rounded-\[10px_10px_0_0\],.ape\:rounded-\[10px_10px_0px_0px\]{border-radius:10px 10px 0 0}.ape\:rounded-\[14px\]{border-radius:14px}.ape\:rounded-\[40px\]{border-radius:40px}.ape\:rounded-\[50\%\]{border-radius:50%}.ape\:rounded-\[50px\]{border-radius:50px}.ape\:rounded-full{border-radius:3.40282e38px}.ape\:rounded-none{border-radius:0}.ape\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:rounded-small{border-radius:var(--ape-radius-small)}.ape\:rounded-tl-\[10px\]{border-top-left-radius:10px}.ape\:rounded-br-\[8px\]{border-bottom-right-radius:8px}.ape\:border{border-style:var(--tw-border-style);border-width:1px}.ape\:border-0{border-style:var(--tw-border-style);border-width:0}.ape\:border-2{border-style:var(--tw-border-style);border-width:2px}.ape\:border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.ape\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.ape\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.ape\:border-none{--tw-border-style:none;border-style:none}.ape\:border-solid{--tw-border-style:solid;border-style:solid}.ape\:border-\[\#9960C5\]{border-color:#9960c5}.ape\:border-\[\#222222\]{border-color:#222}.ape\:border-\[grey\]{border-color:gray}.ape\:border-primary-button{border-color:var(--ape-color-primary-button)}.ape\:border-success{border-color:var(--ape-color-success)}.ape\:border-text{border-color:var(--ape-color-text)}.ape\:border-white2{border-color:var(--ape-color-white2)}.ape\:border-white3{border-color:var(--ape-color-white3)}.ape\:border-white4{border-color:var(--ape-color-white4)}.ape\:bg-\[\#38A6110D\]{background-color:#38a6110d}.ape\:bg-\[\#9960C5\]{background-color:#9960c5}.ape\:bg-\[\#DE62F366\]{background-color:#de62f366}.ape\:bg-\[grey\]{background-color:gray}.ape\:bg-modal-overlay{background-color:var(--ape-color-modal-overlay)}.ape\:bg-primary-button{background-color:var(--ape-color-primary-button)}.ape\:bg-text{background-color:var(--ape-color-text)}.ape\:bg-text-disabled{background-color:var(--ape-color-text-disabled)}.ape\:bg-transparent{background-color:#0000}.ape\:bg-transparent\!{background-color:#0000!important}.ape\:bg-white{background-color:var(--ape-color-white)}.ape\:bg-white1{background-color:var(--ape-color-white1)}.ape\:bg-white2{background-color:var(--ape-color-white2)}.ape\:bg-white2\!{background-color:var(--ape-color-white2)!important}.ape\:bg-white3{background-color:var(--ape-color-white3)}.ape\:bg-white4{background-color:var(--ape-color-white4)}.ape\:bg-\[image\:var\(--ape-gradient-abond\)\]{background-image:var(--ape-gradient-abond)}.ape\:bg-\[image\:var\(--banner-bg-mobile\)\]{background-image:var(--banner-bg-mobile)}.ape\:bg-\[linear-gradient\(180deg\,\#FFFFFF_50\%\,\#666666_100\%\)\]{background-image:linear-gradient(#fff 50%,#666 100%)}.ape\:bg-cover{background-size:cover}.ape\:bg-clip-text{-webkit-background-clip:text;background-clip:text}.ape\:bg-no-repeat{background-repeat:no-repeat}.ape\:object-contain{object-fit:contain}.ape\:object-cover{object-fit:cover}.ape\:p-0{padding:0}.ape\:p-0\!{padding:0!important}.ape\:p-2{padding:calc(var(--ape-spacing) * 2)}.ape\:p-2\.5{padding:calc(var(--ape-spacing) * 2.5)}.ape\:p-3{padding:calc(var(--ape-spacing) * 3)}.ape\:p-3\.75{padding:calc(var(--ape-spacing) * 3.75)}.ape\:p-4{padding:calc(var(--ape-spacing) * 4)}.ape\:p-5{padding:calc(var(--ape-spacing) * 5)}.ape\:p-\[0_1px\]{padding:0 1px}.ape\:p-\[0_20px_20px_20px\]{padding:0 20px 20px}.ape\:p-\[0px_8px\]\!{padding:0 8px!important}.ape\:p-\[2\.5px_5px\]{padding:2.5px 5px}.ape\:p-\[2px\]{padding:2px}.ape\:p-\[2px_5px\]{padding:2px 5px}.ape\:p-\[2px_6px\]{padding:2px 6px}.ape\:p-\[2px_8px\]{padding:2px 8px}.ape\:p-\[2px_10px\]{padding:2px 10px}.ape\:p-\[2px_10px_2px_5px\]{padding:2px 10px 2px 5px}.ape\:p-\[3px_6px\]{padding:3px 6px}.ape\:p-\[4px_2px\]{padding:4px 2px}.ape\:p-\[4px_6px\]{padding:4px 6px}.ape\:p-\[4px_10px\]{padding:4px 10px}.ape\:p-\[5px\]{padding:5px}.ape\:p-\[5px_10px\]{padding:5px 10px}.ape\:p-\[5px_15px\]{padding:5px 15px}.ape\:p-\[5px_20px\]{padding:5px 20px}.ape\:p-\[6px\]{padding:6px}.ape\:p-\[6px_12px\]{padding:6px 12px}.ape\:p-\[8px\]{padding:8px}.ape\:p-\[8px_4px_4px_4px\]{padding:8px 4px 4px}.ape\:p-\[8px_10px\]{padding:8px 10px}.ape\:p-\[8px_12px\]{padding:8px 12px}.ape\:p-\[8px_16px\]{padding:8px 16px}.ape\:p-\[10px\]{padding:10px}.ape\:p-\[15px\]{padding:15px}.ape\:p-\[15px_20px_5px_20px\]{padding:15px 20px 5px}.ape\:p-\[16px\]{padding:16px}.ape\:p-\[20px\]{padding:20px}.ape\:p-px{padding:1px}.ape\:px-2\.5{padding-inline:calc(var(--ape-spacing) * 2.5)}.ape\:px-6{padding-inline:calc(var(--ape-spacing) * 6)}.ape\:px-\[3px\]{padding-inline:3px}.ape\:px-\[4px\]{padding-inline:4px}.ape\:px-\[5px\]{padding-inline:5px}.ape\:px-\[6px\]{padding-inline:6px}.ape\:px-\[8px\]{padding-inline:8px}.ape\:px-\[10px\]{padding-inline:10px}.ape\:px-\[14px\]{padding-inline:14px}.ape\:px-\[15px\]{padding-inline:15px}.ape\:px-\[19px\]{padding-inline:19px}.ape\:py-2\.5{padding-block:calc(var(--ape-spacing) * 2.5)}.ape\:py-\[2px\]{padding-block:2px}.ape\:py-\[3px\]{padding-block:3px}.ape\:py-\[5px\]{padding-block:5px}.ape\:py-\[6px\]{padding-block:6px}.ape\:py-\[10px\]{padding-block:10px}.ape\:py-\[14px\]{padding-block:14px}.ape\:pt-1\.25{padding-top:calc(var(--ape-spacing) * 1.25)}.ape\:pt-3\!{padding-top:calc(var(--ape-spacing) * 3)!important}.ape\:pt-4{padding-top:calc(var(--ape-spacing) * 4)}.ape\:pt-\[2px\]{padding-top:2px}.ape\:pt-\[3px\]{padding-top:3px}.ape\:pt-\[5px\]{padding-top:5px}.ape\:pt-\[10px\]{padding-top:10px}.ape\:pt-\[15px\]{padding-top:15px}.ape\:pt-\[20px\]{padding-top:20px}.ape\:pt-\[100px\]{padding-top:100px}.ape\:pr-0{padding-right:0}.ape\:pr-1\.25{padding-right:calc(var(--ape-spacing) * 1.25)}.ape\:pr-\[4px\]{padding-right:4px}.ape\:pr-\[14px\]{padding-right:14px}.ape\:pr-\[15px\]{padding-right:15px}.ape\:pr-\[20px\]{padding-right:20px}.ape\:pr-\[23px\]{padding-right:23px}.ape\:pb-\[2px\]{padding-bottom:2px}.ape\:pb-\[5px\]{padding-bottom:5px}.ape\:pb-\[10px\]{padding-bottom:10px}.ape\:pb-\[20px\]{padding-bottom:20px}.ape\:pb-\[100px\]{padding-bottom:100px}.ape\:pl-0{padding-left:0}.ape\:pl-0\!{padding-left:0!important}.ape\:pl-1\.25{padding-left:calc(var(--ape-spacing) * 1.25)}.ape\:pl-5\!{padding-left:calc(var(--ape-spacing) * 5)!important}.ape\:pl-\[5px\]{padding-left:5px}.ape\:pl-\[10px\]{padding-left:10px}.ape\:pl-\[15px\]{padding-left:15px}.ape\:pl-\[20px\]{padding-left:20px}.ape\:pl-\[26px\]{padding-left:26px}.ape\:pl-\[35px\]{padding-left:35px}.ape\:text-center{text-align:center}.ape\:text-left{text-align:left}.ape\:align-middle{vertical-align:middle}.ape\:align-sub{vertical-align:sub}.ape\:font-\[inherit\]{font-family:inherit}.ape\:font-body{font-family:var(--ape-font-body)}.ape\:text-base{font-size:var(--ape-text-base);line-height:var(--tw-leading,var(--ape-text-base--line-height))}.ape\:text-sm{font-size:var(--ape-text-sm);line-height:var(--tw-leading,var(--ape-text-sm--line-height))}.ape\:text-sm\!{font-size:var(--ape-text-sm)!important;line-height:var(--tw-leading,var(--ape-text-sm--line-height))!important}.ape\:text-\[10px\]{font-size:10px}.ape\:text-\[10px\]\!{font-size:10px!important}.ape\:text-\[11px\]{font-size:11px}.ape\:text-\[12px\]{font-size:12px}.ape\:text-\[12px\]\!{font-size:12px!important}.ape\:text-\[13px\]{font-size:13px}.ape\:text-\[13px\]\!{font-size:13px!important}.ape\:text-\[14\.26px\]{font-size:14.26px}.ape\:text-\[14px\]{font-size:14px}.ape\:text-\[14px\]\!{font-size:14px!important}.ape\:text-\[16px\]{font-size:16px}.ape\:text-\[18px\]{font-size:18px}.ape\:text-\[18px\]\!{font-size:18px!important}.ape\:text-\[20px\]{font-size:20px}.ape\:text-\[22px\]{font-size:22px}.ape\:text-\[24px\]{font-size:24px}.ape\:text-\[24px\]\!{font-size:24px!important}.ape\:text-\[25\.26px\]{font-size:25.26px}.ape\:text-\[32px\]{font-size:32px}.ape\:leading-4{--tw-leading:calc(var(--ape-spacing) * 4);line-height:calc(var(--ape-spacing) * 4)}.ape\:leading-4\!{--tw-leading:calc(var(--ape-spacing) * 4)!important;line-height:calc(var(--ape-spacing) * 4)!important}.ape\:leading-5{--tw-leading:calc(var(--ape-spacing) * 5);line-height:calc(var(--ape-spacing) * 5)}.ape\:leading-5\.5\!{--tw-leading:calc(var(--ape-spacing) * 5.5)!important;line-height:calc(var(--ape-spacing) * 5.5)!important}.ape\:leading-\[11px\]{--tw-leading:11px;line-height:11px}.ape\:leading-\[12px\]{--tw-leading:12px;line-height:12px}.ape\:leading-\[13px\]{--tw-leading:13px;line-height:13px}.ape\:leading-\[14px\]{--tw-leading:14px;line-height:14px}.ape\:leading-\[15px\]{--tw-leading:15px;line-height:15px}.ape\:leading-\[18px\]{--tw-leading:18px;line-height:18px}.ape\:leading-\[18px\]\!{--tw-leading:18px!important;line-height:18px!important}.ape\:leading-\[21px\]{--tw-leading:21px;line-height:21px}.ape\:leading-\[22px\]{--tw-leading:22px;line-height:22px}.ape\:leading-\[24px\]{--tw-leading:24px;line-height:24px}.ape\:leading-\[28px\]{--tw-leading:28px;line-height:28px}.ape\:leading-\[30\.26px\]{--tw-leading:30.26px;line-height:30.26px}.ape\:leading-\[33px\]{--tw-leading:33px;line-height:33px}.ape\:font-bold{--tw-font-weight:var(--ape-font-weight-bold);font-weight:var(--ape-font-weight-bold)}.ape\:font-light{--tw-font-weight:var(--ape-font-weight-light);font-weight:var(--ape-font-weight-light)}.ape\:font-medium{--tw-font-weight:var(--ape-font-weight-medium);font-weight:var(--ape-font-weight-medium)}.ape\:font-normal{--tw-font-weight:var(--ape-font-weight-normal);font-weight:var(--ape-font-weight-normal)}.ape\:font-semibold{--tw-font-weight:var(--ape-font-weight-semibold);font-weight:var(--ape-font-weight-semibold)}.ape\:tracking-\[0\]{--tw-tracking:0;letter-spacing:0}.ape\:break-all{word-break:break-all}.ape\:text-ellipsis{text-overflow:ellipsis}.ape\:whitespace-normal{white-space:normal}.ape\:whitespace-nowrap{white-space:nowrap}.ape\:text-\[\#777\]{color:#777}.ape\:text-error{color:var(--ape-color-error)}.ape\:text-gray-300{color:var(--ape-color-gray-300)}.ape\:text-primary-bright{color:var(--ape-color-primary-bright)}.ape\:text-primary-button{color:var(--ape-color-primary-button)}.ape\:text-primary-button-disable{color:var(--ape-color-primary-button-disable)}.ape\:text-success{color:var(--ape-color-success)}.ape\:text-text{color:var(--ape-color-text)}.ape\:text-text-disabled{color:var(--ape-color-text-disabled)}.ape\:text-text-disabled-button{color:var(--ape-color-text-disabled-button)}.ape\:text-transparent{color:#0000}.ape\:text-white{color:var(--ape-color-white)}.ape\:capitalize{text-transform:capitalize}.ape\:normal-case{text-transform:none}.ape\:uppercase{text-transform:uppercase}.ape\:line-through{text-decoration-line:line-through}.ape\:no-underline{text-decoration-line:none}.ape\:underline{text-decoration-line:underline}.ape\:opacity-0{opacity:0}.ape\:opacity-20{opacity:.2}.ape\:opacity-50{opacity:.5}.ape\:opacity-60{opacity:.6}.ape\:opacity-70{opacity:.7}.ape\:opacity-80{opacity:.8}.ape\:opacity-90{opacity:.9}.ape\:shadow-\[0px_1px_4px_rgb\(0_0_0\/0\.16\)\]{--tw-shadow:0px 1px 4px var(--tw-shadow-color,#00000029);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-\[0px_1px_4px_rgb\(0_0_0\/0\.26\)\]{--tw-shadow:0px 1px 4px var(--tw-shadow-color,#00000042);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-\[rgba\(0\,0\,0\,0\.16\)_0px_1px_4px\]{--tw-shadow-color:#00000029}@supports (color:color-mix(in lab, red, red)){.ape\:shadow-\[rgba\(0\,0\,0\,0\.16\)_0px_1px_4px\]{--tw-shadow-color:color-mix(in oklab, #00000029 0px 1px 4px var(--tw-shadow-alpha), transparent)}}.ape\:blur-\[1px\]{--tw-blur:blur(1px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.ape\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:duration-300{--tw-duration:.3s;transition-duration:.3s}.ape\:duration-500{--tw-duration:.5s;transition-duration:.5s}.ape\:duration-1000{--tw-duration:1s;transition-duration:1s}.ape\:duration-\[1500ms\]{--tw-duration:1.5s;transition-duration:1.5s}.ape\:ease-\[ease\]{--tw-ease:ease;transition-timing-function:ease}.ape\:ease-in-out{--tw-ease:var(--ape-ease-in-out);transition-timing-function:var(--ape-ease-in-out)}.ape\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.ape\:ease-out{--tw-ease:var(--ape-ease-out);transition-timing-function:var(--ape-ease-out)}.ape\:outline-none{--tw-outline-style:none;outline-style:none}.ape\:select-none{-webkit-user-select:none;user-select:none}.ape\:\[-webkit-text-fill-color\:transparent\]{-webkit-text-fill-color:transparent}:is(:is(.ape\:\*\:\*\:w-full>*)>*),:is(.ape\:\*\:w-full>*){width:100%}@media (hover:hover){.ape\:group-hover\:bg-\[rgb\(20_18_29_\/_0\.25\)\]\!:is(:where(.ape\:group):hover *){background-color:#14121d40!important}.ape\:group-hover\/tooltip\:block:is(:where(.ape\:group\/tooltip):hover *){display:block}}.ape\:peer-checked\:block:is(:where(.ape\:peer):checked~*){display:block}.ape\:first\:rounded-t-normal:first-child{border-top-left-radius:var(--ape-radius-normal);border-top-right-radius:var(--ape-radius-normal)}.ape\:last\:mr-0:last-child{margin-right:0}.ape\:last\:rounded-b-normal:last-child{border-bottom-right-radius:var(--ape-radius-normal);border-bottom-left-radius:var(--ape-radius-normal)}.ape\:checked\:border-primary-button:checked{border-color:var(--ape-color-primary-button)}.ape\:checked\:bg-primary-button:checked{background-color:var(--ape-color-primary-button)}@media (hover:hover){.ape\:hover\:z-\[1000\]:hover{z-index:1000}.ape\:hover\:cursor-pointer:hover{cursor:pointer}.ape\:hover\:bg-\[rgb\(20_18_29_\/_0\.36\)\]\!:hover{background-color:#14121d5c!important}.ape\:hover\:bg-white3:hover{background-color:var(--ape-color-white3)}.ape\:hover\:bg-white4:hover{background-color:var(--ape-color-white4)}.ape\:hover\:bg-white5:hover{background-color:var(--ape-color-white5)}.ape\:hover\:underline:hover{text-decoration-line:underline}.ape\:hover\:opacity-60:hover{opacity:.6}.ape\:hover\:opacity-80:hover{opacity:.8}.ape\:hover\:opacity-90:hover{opacity:.9}.ape\:hover\:brightness-115:hover{--tw-brightness:brightness(115%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.ape\:hover\:\[backdrop-filter\:blur\(2px\)\]:hover{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ape\:hover\:\[background\:linear-gradient\(90deg\,rgba\(49\,46\,122\,0\.70\)_0\%\,rgba\(92\,79\,174\,0\.70\)_100\%\)\]:hover{background:linear-gradient(90deg,#312e7ab3 0%,#5c4faeb3 100%)}}.ape\:focus\:outline:focus,.ape\:focus\:outline-1:focus{outline-style:var(--tw-outline-style);outline-width:1px}.ape\:focus\:outline-primary-button:focus{outline-color:var(--ape-color-primary-button)}.ape\:focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.ape\:focus\:not-checked\:shadow-none:focus:not(:checked){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:focus\:not-checked\:outline-none:focus:not(:checked){--tw-outline-style:none;outline-style:none}.ape\:active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (hover:hover){.ape\:enabled\:hover\:border-primary-button-hovered:enabled:hover{border-color:var(--ape-color-primary-button-hovered)}.ape\:enabled\:hover\:bg-primary-button:enabled:hover{background-color:var(--ape-color-primary-button)}.ape\:enabled\:hover\:bg-primary-button-hovered:enabled:hover{background-color:var(--ape-color-primary-button-hovered)}.ape\:enabled\:hover\:text-text:enabled:hover{color:var(--ape-color-text)}.ape\:enabled\:hover\:not-checked\:border-primary-button:enabled:hover:not(:checked){border-color:var(--ape-color-primary-button)}}.ape\:active\:enabled\:scale-90:active:enabled{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.ape\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.ape\:disabled\:border-transparent:disabled{border-color:#0000}.ape\:disabled\:bg-white3:disabled{background-color:var(--ape-color-white3)}.ape\:disabled\:text-primary-button-disable:disabled{color:var(--ape-color-primary-button-disable)}.ape\:disabled\:text-text-disabled-button:disabled{color:var(--ape-color-text-disabled-button)}.ape\:disabled\:opacity-90:disabled{opacity:.9}@media not all and (min-width:1000px){.ape\:max-\[1000px\]\:w-\[49\%\]{width:49%}}@media not all and (min-width:852px){.ape\:max-md\:mb-\[10px\]{margin-bottom:10px}}@media not all and (min-width:768px){.ape\:max-\[768px\]\:w-full{width:100%}}@media not all and (min-width:576px){.ape\:max-sm\:mb-\[10px\]{margin-bottom:10px}.ape\:max-sm\:w-1\/2{width:50%}.ape\:max-sm\:w-\[55\%\]{width:55%}.ape\:max-sm\:text-\[12px\]{font-size:12px}.ape\:max-sm\:text-\[18px\]{font-size:18px}.ape\:max-sm\:leading-\[14px\]{--tw-leading:14px;line-height:14px}.ape\:max-sm\:leading-\[21px\]{--tw-leading:21px;line-height:21px}}@media (min-width:513px){.ape\:min-\[513px\]\:justify-center{justify-content:center}.ape\:min-\[513px\]\:pl-0{padding-left:0}}@media (min-width:576px){.ape\:sm\:top-\[-240px\]{top:-240px}.ape\:sm\:ml-2{margin-left:calc(var(--ape-spacing) * 2)}.ape\:sm\:ml-5{margin-left:calc(var(--ape-spacing) * 5)}.ape\:sm\:max-w-\[200px\]{max-width:200px}.ape\:sm\:justify-start{justify-content:flex-start}.ape\:sm\:text-\[16px\]\!{font-size:16px!important}}@media (min-width:800px){.ape\:min-\[800px\]\:max-h-none{max-height:none}.ape\:min-\[800px\]\:w-\[350px\]{width:350px}.ape\:min-\[800px\]\:flex-col{flex-direction:column}.ape\:min-\[800px\]\:flex-row{flex-direction:row}.ape\:min-\[800px\]\:gap-\[5px\]{gap:5px}.ape\:min-\[800px\]\:p-\[12px\]{padding:12px}.ape\:min-\[800px\]\:p-\[20px\]{padding:20px}.ape\:min-\[800px\]\:pb-\[5px\]{padding-bottom:5px}@media not all and (min-width:1000px){.ape\:min-\[800px\]\:max-\[1000px\]\:bg-bottom{background-position:bottom}}}@media (min-width:852px){.ape\:md\:top-\[20px\]{top:20px}.ape\:md\:top-\[unset\]{top:unset}.ape\:md\:right-\[-13\%\]{right:-13%}.ape\:md\:right-\[-50px\]{right:-50px}.ape\:md\:-bottom-12\.5{bottom:calc(var(--ape-spacing) * -12.5)}.ape\:md\:bottom-\[-15px\]{bottom:-15px}.ape\:md\:bottom-\[unset\]{bottom:unset}.ape\:md\:mt-0{margin-top:0}.ape\:md\:mt-\[5px\]{margin-top:5px}.ape\:md\:mr-\[15px\]{margin-right:15px}.ape\:md\:mb-0{margin-bottom:0}.ape\:md\:ml-\[5px\]{margin-left:5px}.ape\:md\:block{display:block}.ape\:md\:flex{display:flex}.ape\:md\:flex\!{display:flex!important}.ape\:md\:hidden{display:none}.ape\:md\:hidden\!{display:none!important}.ape\:md\:inline{display:inline}.ape\:md\:h-\[26px\]{height:26px}.ape\:md\:h-\[200px\]{height:200px}.ape\:md\:h-\[225px\]{height:225px}.ape\:md\:max-h-\[350px\]{max-height:350px}.ape\:md\:min-h-\[430px\]{min-height:430px}.ape\:md\:w-1\/2{width:50%}.ape\:md\:w-87\.5{width:calc(var(--ape-spacing) * 87.5)}.ape\:md\:w-175{width:calc(var(--ape-spacing) * 175)}.ape\:md\:w-\[35\%\]{width:35%}.ape\:md\:w-\[150px\]{width:150px}.ape\:md\:w-\[180px\]{width:180px}.ape\:md\:w-\[200px\]{width:200px}.ape\:md\:w-\[225px\]{width:225px}.ape\:md\:w-\[300px\]{width:300px}.ape\:md\:w-\[calc\(100\%-300px\)\]{width:calc(100% - 300px)}.ape\:md\:w-\[unset\]{width:unset}.ape\:md\:w-full{width:100%}.ape\:md\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:-translate-y-3\/4{--tw-translate-y:calc(calc(3 / 4 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:scale-\[0\.4\]{scale:.4}.ape\:md\:flex-col{flex-direction:column}.ape\:md\:flex-row,.ape\:min-md\:flex-row{flex-direction:row}.ape\:md\:items-center{align-items:center}.ape\:md\:justify-between{justify-content:space-between}.ape\:md\:justify-end{justify-content:flex-end}.ape\:md\:gap-0{gap:0}.ape\:md\:gap-\[10px\]{gap:10px}.ape\:md\:gap-\[15px\]{gap:15px}.ape\:min-md\:gap-\[5px\]{gap:5px}.ape\:md\:rounded-\[20px\]{border-radius:20px}.ape\:md\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:md\:p-3{padding:calc(var(--ape-spacing) * 3)}.ape\:md\:p-5{padding:calc(var(--ape-spacing) * 5)}.ape\:md\:p-\[4px_10px\]{padding:4px 10px}.ape\:md\:p-\[20px\]{padding:20px}.ape\:md\:pr-\[20px\]{padding-right:20px}.ape\:md\:pb-1\.25{padding-bottom:calc(var(--ape-spacing) * 1.25)}.ape\:min-md\:pb-\[5px\]{padding-bottom:5px}.ape\:md\:pl-\[20px\]{padding-left:20px}.ape\:md\:text-\[12px\]\!{font-size:12px!important}.ape\:md\:text-\[14px\]{font-size:14px}.ape\:md\:text-\[14px\]\!{font-size:14px!important}.ape\:md\:text-\[16px\]{font-size:16px}.ape\:md\:text-\[18px\]{font-size:18px}.ape\:md\:text-\[20px\]{font-size:20px}.ape\:md\:text-\[24px\]{font-size:24px}.ape\:min-md\:text-\[16px\]{font-size:16px}.ape\:md\:leading-\[21px\]\!{--tw-leading:21px!important;line-height:21px!important}.ape\:md\:font-bold{--tw-font-weight:var(--ape-font-weight-bold);font-weight:var(--ape-font-weight-bold)}@media (hover:hover){.ape\:md\:hover\:z-\[1000\]\!:hover{z-index:1000!important}}}@media (min-width:968px){.ape\:lg\:mt-0{margin-top:0}.ape\:lg\:mr-\[10px\]{margin-right:10px}.ape\:lg\:mr-\[15px\]{margin-right:15px}.ape\:lg\:mb-0{margin-bottom:0}.ape\:lg\:ml-0{margin-left:0}.ape\:lg\:ml-\[10px\]{margin-left:10px}.ape\:lg\:flex{display:flex}.ape\:lg\:inline{display:inline}.ape\:lg\:h-\[40px\]{height:40px}.ape\:lg\:w-1\/2{width:50%}.ape\:lg\:w-\[30\%\]{width:30%}.ape\:lg\:w-\[35\%\]{width:35%}.ape\:lg\:w-\[45\%\]{width:45%}.ape\:lg\:w-\[65\%\]{width:65%}.ape\:lg\:w-\[210px\]{width:210px}.ape\:lg\:w-\[300px\]{width:300px}.ape\:lg\:w-\[unset\]{width:unset}.ape\:lg\:w-auto{width:auto}.ape\:lg\:min-w-75\!{min-width:calc(var(--ape-spacing) * 75)!important}.ape\:lg\:flex-row{flex-direction:row}.ape\:lg\:items-center{align-items:center}.ape\:lg\:gap-\[10px\]{gap:10px}.ape\:lg\:gap-\[15px\]{gap:15px}.ape\:lg\:overflow-visible{overflow:visible}.ape\:lg\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:lg\:bg-white4{background-color:var(--ape-color-white4)}.ape\:lg\:bg-\[image\:var\(--banner-bg-desktop\)\]{background-image:var(--banner-bg-desktop)}.ape\:lg\:px-\[10px\]{padding-inline:10px}.ape\:lg\:pr-\[20px\]{padding-right:20px}.ape\:lg\:pb-\[20px\]{padding-bottom:20px}.ape\:lg\:text-\[16px\]\!{font-size:16px!important}.ape\:lg\:leading-6\!{--tw-leading:calc(var(--ape-spacing) * 6)!important;line-height:calc(var(--ape-spacing) * 6)!important}}@media (min-width:1000px){.ape\:min-\[1000px\]\:absolute{position:absolute}.ape\:min-\[1000px\]\:left-\[10px\]{left:10px}.ape\:min-\[1000px\]\:mt-0{margin-top:0}.ape\:min-\[1000px\]\:block{display:block}.ape\:min-\[1000px\]\:flex{display:flex}.ape\:min-\[1000px\]\:hidden{display:none}.ape\:min-\[1000px\]\:h-\[70px\]{height:70px}.ape\:min-\[1000px\]\:w-\[30\%\]{width:30%}.ape\:min-\[1000px\]\:w-\[70\%\]{width:70%}.ape\:min-\[1000px\]\:w-\[130px\]{width:130px}.ape\:min-\[1000px\]\:w-\[210px\]{width:210px}.ape\:min-\[1000px\]\:w-\[300px\]{width:300px}.ape\:min-\[1000px\]\:w-auto{width:auto}.ape\:min-\[1000px\]\:min-w-\[300px\]{min-width:300px}.ape\:min-\[1000px\]\:flex-row{flex-direction:row}.ape\:min-\[1000px\]\:items-center{align-items:center}.ape\:min-\[1000px\]\:justify-between{justify-content:space-between}.ape\:min-\[1000px\]\:justify-center{justify-content:center}.ape\:min-\[1000px\]\:justify-end{justify-content:flex-end}.ape\:min-\[1000px\]\:gap-\[20px\]{gap:20px}.ape\:min-\[1000px\]\:p-0{padding:0}.ape\:min-\[1000px\]\:p-\[20px_0_10px_0\]{padding:20px 0 10px}.ape\:min-\[1000px\]\:pr-\[20px\]{padding-right:20px}}@media (min-width:1080px){.ape\:xl\:flex{display:flex}.ape\:xl\:w-\[30\%\]{width:30%}.ape\:xl\:w-\[70\%\]{width:70%}.ape\:xl\:w-\[100px\]{width:100px}.ape\:xl\:w-\[115px\]{width:115px}.ape\:xl\:w-\[135px\]{width:135px}.ape\:xl\:min-w-\[400px\]{min-width:400px}.ape\:xl\:flex-row{flex-direction:row}.ape\:xl\:justify-between{justify-content:space-between}.ape\:xl\:gap-\[30px\]{gap:30px}.ape\:xl\:p-\[20px_0_10px_0\]{padding:20px 0 10px}}@media (min-width:1200px){.ape\:xxl\:flex{display:flex}}.ape\:\[\&_\*\]\:text-\[14px\]\! *{font-size:14px!important}.ape\:\[\&_\*\]\:text-\[18px\]\! *{font-size:18px!important}.ape\:\[\&_\*\]\:text-\[24px\]\! *{font-size:24px!important}.ape\:\[\&_button\]\:ml-auto button,.ape\:\[\&_svg\]\:ml-auto svg{margin-left:auto}.ape\:\[\&_svg\]\:w-\[11px\] svg{width:11px}.ape\:\[\&_svg\]\:cursor-pointer svg{cursor:pointer}.ape\:\[\&_svg\]\:bg-transparent svg{background-color:#0000}.ape\:\[\&_svg\]\:fill-text svg{fill:var(--ape-color-text)}.ape\:\[\&\:\:-webkit-scrollbar\]\:h-\[5px\]::-webkit-scrollbar{height:5px}.ape\:\[\&\>\*\]\:h-\[31px\]\!>*{height:31px!important}.ape\:\[\&\>\*\]\:w-\[210px\]>*{width:210px}.ape\:\[\&\>\*\]\:text-\[14px\]\!>*{font-size:14px!important}@media (min-width:1080px){.ape\:xl\:\[\&\>\*\]\:w-\[100px\]>*{width:100px}}.ape\:\[\&\>div\]\:pt-0\!>div{padding-top:0!important}.ape\:\[\&\>div\:last-child\]\:mr-0>div:last-child{margin-right:0}.ape\:\[\&\>div\>div\]\:bg-white2>div>div{background-color:var(--ape-color-white2)}}.ape-root .lifi-bridge-modal [id^=widget-scrollable-container]{overflow-y:hidden!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--ape-font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--ape-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ape-color-gray-300:oklch(87.2% .01 258.338);--ape-color-white:#fff;--ape-spacing:.25rem;--ape-text-sm:.875rem;--ape-text-sm--line-height:calc(1.25 / .875);--ape-text-base:1rem;--ape-text-base--line-height:calc(1.5 / 1);--ape-font-weight-light:300;--ape-font-weight-normal:400;--ape-font-weight-medium:500;--ape-font-weight-semibold:600;--ape-font-weight-bold:700;--ape-ease-out:cubic-bezier(0, 0, .2, 1);--ape-ease-in-out:cubic-bezier(.4, 0, .2, 1);--ape-default-transition-duration:.15s;--ape-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--ape-default-font-family:var(--ape-font-sans);--ape-default-mono-font-family:var(--ape-font-mono);--ape-color-white1:#0e0d16;--ape-color-white2:#161420;--ape-color-white3:#1f1d29;--ape-color-white4:#282632;--ape-color-white5:#312f3a;--ape-color-primary-button:#6560c5;--ape-color-primary-button-disable:#48475b;--ape-color-primary-button-hovered:#8480d1;--ape-color-success:#38a611;--ape-color-error:#df4141;--ape-color-text:#fafafa;--ape-color-text-disabled:#424242;--ape-color-text-disabled-button:#73728e;--ape-color-primary-bright:#fafafa;--ape-color-modal-overlay:#42424280;--ape-gradient-abond:linear-gradient(98.79deg, #6560c5 -2.37%, #e07753 100%);--ape-font-body:"Poppins", sans-serif;--ape-radius-small:6px;--ape-radius-default:16px;--ape-radius-normal:10px;--ape-radius-card:32px;--ape-z-index-dropdown:10;--ape-z-index-modal:102}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--ape-default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--ape-default-font-feature-settings,normal);font-variation-settings:var(--ape-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--ape-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--ape-default-mono-font-feature-settings,normal);font-variation-settings:var(--ape-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.ape-root{width:100%;min-width:0;font-family:var(--ape-font-body);-webkit-font-smoothing:antialiased;color:var(--ape-color-text);background-color:var(--ape-color-white1);scroll-behavior:smooth;font-weight:600}.ape-root a{color:var(--ape-color-text);text-decoration:none}.ape-root a:hover{color:var(--ape-color-primary-button);text-decoration:underline}.ape-root hr{background-color:var(--ape-color-white3);border:none;height:1px}.ape-root ::-webkit-scrollbar{width:6px}.ape-root ::-webkit-scrollbar-thumb{background:var(--ape-color-text);border-radius:8px}.ape-root ::-webkit-scrollbar-track{background:var(--ape-color-white2);border-radius:10px}}@layer components{@keyframes ape-ellipsis{0%{content:"."}33%{content:".."}66%{content:"..."}}.ape-ellipsis:after{content:".";text-align:left;width:1em;animation:1.25s infinite ape-ellipsis;display:inline-block}.ape-carousel-viewport{-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;-webkit-touch-callout:none}.ape-carousel-viewport::-webkit-scrollbar{display:none}.ape-you-tooltip:after{content:"";border-style:solid;border-width:6px;border-color:transparent var(--ape-color-primary-button) transparent transparent;position:absolute;top:50%;left:-11px;transform:translateY(-50%)}.ape-you-card{position:absolute;top:0;right:-45px}.ape-you-card:before{content:"";border:9px solid #0000;border-right-color:var(--ape-color-primary-button);width:0;height:0;display:block;position:absolute;top:50%;right:100%;transform:translateY(-50%)}@keyframes ape-spinner-rotation{0%{transform:rotate(40deg)}to{transform:rotate(400deg)}}.ape-spinner{box-sizing:border-box;border-radius:50%;display:inline-block}.ape-spinner-loading{animation:1s linear infinite ape-spinner-rotation;transform:rotate(40deg)}.ape-icon{fill:currentColor;transition:transform .3s linear}.ape-icon path{fill:currentColor}.ape-text-link{cursor:pointer;text-decoration:none;display:inline-block;position:relative}.ape-text-link:after{content:"";background:var(--ape-color-text);border-radius:var(--ape-radius-normal);transform-origin:100% 100%;backface-visibility:hidden;width:100%;height:1.5px;transition:transform .25s ease-out;position:absolute;bottom:0;left:0;transform:scaleX(0)}.ape-text-link:hover:after{transform-origin:0 100%;transform:scaleX(1)}.ape-tooltip-bubble{color:var(--ape-color-text);border-radius:var(--ape-radius-normal);background-color:var(--ape-tooltip-bg,var(--ape-color-white2));width:max-content;z-index:var(--ape-z-index-modal);padding:20px;font-size:12px;font-weight:600;line-height:18px;position:relative;top:15px;box-shadow:0 0 25px #c8c8c84d}.ape-tooltip-bottom-right:before,.ape-tooltip-bottom-left:before,.ape-tooltip-top-right:before,.ape-tooltip-top-left:before,.ape-tooltip-left:before{content:"";border:12px solid #0000;width:0;display:block;position:absolute}.ape-tooltip-bottom-right:before{border-top:0;border-bottom-style:solid;border-bottom-width:15px;border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));top:0;right:3%;transform:translate(-50%,-100%)}.ape-tooltip-bottom-left:before{border-top:0;border-bottom-style:solid;border-bottom-width:15px;border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));top:0;left:calc(3% + 15px);transform:translate(-50%,-100%)}.ape-tooltip-top-right:before{border-top-style:solid;border-top-width:15px;border-bottom:0;border-top-color:var(--ape-tooltip-bg,var(--ape-color-white2));bottom:0;right:3%;transform:translate(-50%,100%)}.ape-tooltip-top-left:before{border-top-style:solid;border-top-width:15px;border-bottom:0;border-top-color:var(--ape-tooltip-bg,var(--ape-color-white2));bottom:0;left:calc(3% + 15px);transform:translate(-50%,100%)}.ape-tooltip-only-container-right:before{content:"";border-bottom-color:var(--ape-tooltip-bg,var(--ape-color-white2));position:absolute;right:3%}.ape-tooltip-left:before{color:var(--ape-color-white2);border-right:15px solid;top:65%;left:-13px;transform:translate(-50%,-100%)}@keyframes ape-skeleton-waves{0%{left:-150px}to{left:100%}}@keyframes ape-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.ape-skeleton-waves{background-color:var(--ape-color-white2);min-height:16px;display:block;position:relative;overflow:hidden;transform:translate(0)}.ape-skeleton-waves:before{content:"";background-image:linear-gradient(90deg,#0000,#f3f3f34d,#0000);width:250px;height:100%;animation:1.5s cubic-bezier(.4,0,.2,1) infinite ape-skeleton-waves;position:absolute;top:0;left:-150px}.ape-skeleton-pulse{background-color:var(--ape-color-white2);border-radius:2px;min-height:20px;animation:2s ease-out infinite ape-skeleton-pulse;display:block;transform:translate(0)}}@layer utilities{.ape\:pointer-events-none{pointer-events:none}.ape\:absolute{position:absolute}.ape\:fixed{position:fixed}.ape\:relative{position:relative}.ape\:inset-0{inset:0}.ape\:-top-\[15px\]{top:-15px}.ape\:top-0{top:0}.ape\:top-1\/2{top:50%}.ape\:top-\[-180px\]{top:-180px}.ape\:top-\[5px\]{top:5px}.ape\:top-\[12px\]{top:12px}.ape\:top-\[24px\]{top:24px}.ape\:top-\[25px\]{top:25px}.ape\:top-\[45px\]{top:45px}.ape\:top-\[50px\]{top:50px}.ape\:top-\[56\%\]{top:56%}.ape\:right-0{right:0}.ape\:right-3{right:calc(var(--ape-spacing) * 3)}.ape\:right-\[5px\]{right:5px}.ape\:right-\[6px\]{right:6px}.ape\:right-\[10px\]{right:10px}.ape\:right-\[50\%\]{right:50%}.ape\:bottom-0{bottom:0}.ape\:bottom-\[-43px\]{bottom:-43px}.ape\:bottom-\[3px\]{bottom:3px}.ape\:bottom-\[calc\(100\%-10px\)\]{bottom:calc(100% - 10px)}.ape\:bottom-\[unset\]{bottom:unset}.ape\:left-0{left:0}.ape\:left-1\/2{left:50%}.ape\:left-\[-20px\]{left:-20px}.ape\:left-\[-50px\]{left:-50px}.ape\:left-\[1px\]{left:1px}.ape\:left-\[25\%\]{left:25%}.ape\:left-\[40px\]{left:40px}.ape\:left-\[65\%\]{left:65%}.ape\:-z-\[1\]{z-index:calc(1 * -1)}.ape\:z-0{z-index:0}.ape\:z-10{z-index:10}.ape\:z-100{z-index:100}.ape\:z-\[1\]{z-index:1}.ape\:z-\[2\]{z-index:2}.ape\:z-\[5\]{z-index:5}.ape\:z-\[20\]{z-index:20}.ape\:z-\[100\]{z-index:100}.ape\:z-\[103\]{z-index:103}.ape\:z-\[121\]{z-index:121}.ape\:z-\[999\]{z-index:999}.ape\:z-\[1000\]{z-index:1000}.ape\:z-\[1001\]{z-index:1001}.ape\:z-\[5000\]{z-index:5000}.ape\:float-left{float:left}.ape\:m-0{margin:0}.ape\:m-\[0_5px_5px_0\]{margin:0 5px 5px 0}.ape\:m-\[10px_0px_15px_0px\]{margin:10px 0 15px}.ape\:m-auto{margin:auto}.ape\:mx-\[-5px\]{margin-inline:-5px}.ape\:mx-\[-8px\]{margin-inline:-8px}.ape\:mx-\[2\.5px\]{margin-inline:2.5px}.ape\:mx-\[2px\]{margin-inline:2px}.ape\:mx-\[3px\]{margin-inline:3px}.ape\:mx-\[5px\]{margin-inline:5px}.ape\:mx-\[8px\]{margin-inline:8px}.ape\:mx-\[10px\]{margin-inline:10px}.ape\:mx-\[20px\]{margin-inline:20px}.ape\:mx-\[25px\]{margin-inline:25px}.ape\:my-\[2px\]{margin-block:2px}.ape\:my-\[10px\]{margin-block:10px}.ape\:my-\[15px\]{margin-block:15px}.ape\:my-\[20px\]{margin-block:20px}.ape\:mt-0{margin-top:0}.ape\:mt-0\.75{margin-top:calc(var(--ape-spacing) * .75)}.ape\:mt-1{margin-top:var(--ape-spacing)}.ape\:mt-2{margin-top:calc(var(--ape-spacing) * 2)}.ape\:mt-2\.5{margin-top:calc(var(--ape-spacing) * 2.5)}.ape\:mt-4{margin-top:calc(var(--ape-spacing) * 4)}.ape\:mt-\[-5px\]{margin-top:-5px}.ape\:mt-\[-15px\]{margin-top:-15px}.ape\:mt-\[3px\]{margin-top:3px}.ape\:mt-\[5px\]{margin-top:5px}.ape\:mt-\[10px\]{margin-top:10px}.ape\:mt-\[15px\]{margin-top:15px}.ape\:mt-\[20px\]{margin-top:20px}.ape\:mt-\[25px\]{margin-top:25px}.ape\:mt-\[30px\]{margin-top:30px}.ape\:mt-\[35px\]{margin-top:35px}.ape\:mt-\[40px\]{margin-top:40px}.ape\:mt-px{margin-top:1px}.ape\:mr-0{margin-right:0}.ape\:mr-1\.25{margin-right:calc(var(--ape-spacing) * 1.25)}.ape\:mr-\[3px\]{margin-right:3px}.ape\:mr-\[4px\]{margin-right:4px}.ape\:mr-\[5px\]{margin-right:5px}.ape\:mr-\[6px\]{margin-right:6px}.ape\:mr-\[8px\]{margin-right:8px}.ape\:mr-\[10px\]{margin-right:10px}.ape\:mr-\[15px\]{margin-right:15px}.ape\:mr-\[20px\]{margin-right:20px}.ape\:mb-1\.25{margin-bottom:calc(var(--ape-spacing) * 1.25)}.ape\:mb-2{margin-bottom:calc(var(--ape-spacing) * 2)}.ape\:mb-2\.5{margin-bottom:calc(var(--ape-spacing) * 2.5)}.ape\:mb-5{margin-bottom:calc(var(--ape-spacing) * 5)}.ape\:mb-\[1px\]{margin-bottom:1px}.ape\:mb-\[3px\]{margin-bottom:3px}.ape\:mb-\[5px\]{margin-bottom:5px}.ape\:mb-\[8px\]{margin-bottom:8px}.ape\:mb-\[10px\]{margin-bottom:10px}.ape\:mb-\[14px\]{margin-bottom:14px}.ape\:mb-\[15px\]{margin-bottom:15px}.ape\:mb-\[20px\]{margin-bottom:20px}.ape\:mb-\[30px\]{margin-bottom:30px}.ape\:mb-\[50px\]{margin-bottom:50px}.ape\:ml-0{margin-left:0}.ape\:ml-1{margin-left:var(--ape-spacing)}.ape\:ml-3\.5{margin-left:calc(var(--ape-spacing) * 3.5)}.ape\:ml-3\.75{margin-left:calc(var(--ape-spacing) * 3.75)}.ape\:ml-5{margin-left:calc(var(--ape-spacing) * 5)}.ape\:ml-\[3px\]{margin-left:3px}.ape\:ml-\[4px\]{margin-left:4px}.ape\:ml-\[5px\]{margin-left:5px}.ape\:ml-\[6px\]{margin-left:6px}.ape\:ml-\[7px\]{margin-left:7px}.ape\:ml-\[10px\]{margin-left:10px}.ape\:ml-\[15px\]{margin-left:15px}.ape\:ml-\[20px\]{margin-left:20px}.ape\:ml-\[30px\]{margin-left:30px}.ape\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ape\:block{display:block}.ape\:block\!{display:block!important}.ape\:flex{display:flex}.ape\:hidden{display:none}.ape\:hidden\!{display:none!important}.ape\:inline-flex{display:inline-flex}.ape\:aspect-\[1\/0\.56\]{aspect-ratio:1/.56}.ape\:size-full{width:100%;height:100%}.ape\:h-7\.5{height:calc(var(--ape-spacing) * 7.5)}.ape\:h-8{height:calc(var(--ape-spacing) * 8)}.ape\:h-10{height:calc(var(--ape-spacing) * 10)}.ape\:h-11\.25{height:calc(var(--ape-spacing) * 11.25)}.ape\:h-\[2px\]{height:2px}.ape\:h-\[3px\]{height:3px}.ape\:h-\[5px\]{height:5px}.ape\:h-\[14px\]{height:14px}.ape\:h-\[15px\]{height:15px}.ape\:h-\[18px\]{height:18px}.ape\:h-\[20px\]{height:20px}.ape\:h-\[21px\]{height:21px}.ape\:h-\[22px\]{height:22px}.ape\:h-\[24px\]{height:24px}.ape\:h-\[25px\]{height:25px}.ape\:h-\[26px\]{height:26px}.ape\:h-\[30px\]{height:30px}.ape\:h-\[30vh\]{height:30vh}.ape\:h-\[31px\]{height:31px}.ape\:h-\[32px\]{height:32px}.ape\:h-\[34px\]{height:34px}.ape\:h-\[35px\]{height:35px}.ape\:h-\[36px\]{height:36px}.ape\:h-\[36px\]\!{height:36px!important}.ape\:h-\[40px\]{height:40px}.ape\:h-\[45px\]{height:45px}.ape\:h-\[49px\]{height:49px}.ape\:h-\[60px\]{height:60px}.ape\:h-\[70px\]{height:70px}.ape\:h-\[75px\]{height:75px}.ape\:h-\[84px\]{height:84px}.ape\:h-\[91px\]{height:91px}.ape\:h-\[125px\]{height:125px}.ape\:h-\[300px\]{height:300px}.ape\:h-\[400px\]{height:400px}.ape\:h-\[725px\]{height:725px}.ape\:h-\[calc\(100\%\+20px\)\]{height:calc(100% + 20px)}.ape\:h-\[calc\(100\%-150px\)\]{height:calc(100% - 150px)}.ape\:h-\[unset\]{height:unset}.ape\:h-auto{height:auto}.ape\:h-fit{height:fit-content}.ape\:h-fit\!{height:fit-content!important}.ape\:h-full{height:100%}.ape\:h-px{height:1px}.ape\:h-screen{height:100vh}.ape\:max-h-\[32px\]{max-height:32px}.ape\:max-h-\[48px\]{max-height:48px}.ape\:max-h-\[95vh\]{max-height:95vh}.ape\:max-h-\[300px\]{max-height:300px}.ape\:max-h-none{max-height:none}.ape\:min-h-4{min-height:calc(var(--ape-spacing) * 4)}.ape\:min-h-23{min-height:calc(var(--ape-spacing) * 23)}.ape\:min-h-\[26px\]{min-height:26px}.ape\:min-h-\[27px\]{min-height:27px}.ape\:min-h-\[30px\]{min-height:30px}.ape\:min-h-\[40px\]{min-height:40px}.ape\:min-h-\[47\.45px\]{min-height:47.45px}.ape\:min-h-\[90px\]{min-height:90px}.ape\:min-h-\[160px\]{min-height:160px}.ape\:min-h-\[225px\]{min-height:225px}.ape\:min-h-\[330px\]{min-height:330px}.ape\:min-h-\[480px\]{min-height:480px}.ape\:w-1\/2{width:50%}.ape\:w-1\/5{width:20%}.ape\:w-7\!{width:calc(var(--ape-spacing) * 7)!important}.ape\:w-43\.75{width:calc(var(--ape-spacing) * 43.75)}.ape\:w-85{width:calc(var(--ape-spacing) * 85)}.ape\:w-95{width:calc(var(--ape-spacing) * 95)}.ape\:w-\[8px\]{width:8px}.ape\:w-\[14px\]{width:14px}.ape\:w-\[15px\]{width:15px}.ape\:w-\[20px\]{width:20px}.ape\:w-\[25px\]{width:25px}.ape\:w-\[30px\]{width:30px}.ape\:w-\[32\%\]{width:32%}.ape\:w-\[34\%\]{width:34%}.ape\:w-\[35px\]{width:35px}.ape\:w-\[36\%\]{width:36%}.ape\:w-\[40px\]{width:40px}.ape\:w-\[45\%\]{width:45%}.ape\:w-\[49\%\]{width:49%}.ape\:w-\[50px\]{width:50px}.ape\:w-\[55px\]{width:55px}.ape\:w-\[60px\]{width:60px}.ape\:w-\[65\%\]{width:65%}.ape\:w-\[75\%\]{width:75%}.ape\:w-\[85px\]{width:85px}.ape\:w-\[98vw\]{width:98vw}.ape\:w-\[100px\]{width:100px}.ape\:w-\[110px\]{width:110px}.ape\:w-\[115px\]{width:115px}.ape\:w-\[120px\]{width:120px}.ape\:w-\[122px\]{width:122px}.ape\:w-\[125px\]{width:125px}.ape\:w-\[127px\]{width:127px}.ape\:w-\[130px\]{width:130px}.ape\:w-\[135px\]{width:135px}.ape\:w-\[144px\]{width:144px}.ape\:w-\[155px\]{width:155px}.ape\:w-\[160px\]{width:160px}.ape\:w-\[170px\]{width:170px}.ape\:w-\[175px\]{width:175px}.ape\:w-\[190px\]{width:190px}.ape\:w-\[210px\]{width:210px}.ape\:w-\[220px\]{width:220px}.ape\:w-\[235px\]{width:235px}.ape\:w-\[300px\]{width:300px}.ape\:w-\[380px\]{width:380px}.ape\:w-\[380px\]\!{width:380px!important}.ape\:w-\[400px\]{width:400px}.ape\:w-\[416px\]{width:416px}.ape\:w-\[420px\]{width:420px}.ape\:w-\[450px\]{width:450px}.ape\:w-\[480px\]{width:480px}.ape\:w-\[500px\]{width:500px}.ape\:w-\[740px\]\!{width:740px!important}.ape\:w-\[calc\(33\.33\%-20px\)\]{width:calc(33.33% - 20px)}.ape\:w-\[calc\(50vw-25px\)\]{width:calc(50vw - 25px)}.ape\:w-\[calc\(100\%\+40px\)\]{width:calc(100% + 40px)}.ape\:w-\[calc\(100\%-2px\)\]{width:calc(100% - 2px)}.ape\:w-auto{width:auto}.ape\:w-fit{width:fit-content}.ape\:w-full{width:100%}.ape\:w-max{width:max-content}.ape\:w-screen{width:100vw}.ape\:max-w-75{max-width:calc(var(--ape-spacing) * 75)}.ape\:max-w-\[95vw\]{max-width:95vw}.ape\:max-w-\[100px\]{max-width:100px}.ape\:max-w-\[150px\]{max-width:150px}.ape\:max-w-\[300px\]{max-width:300px}.ape\:max-w-full{max-width:100%}.ape\:min-w-\[10px\]{min-width:10px}.ape\:min-w-\[14px\]{min-width:14px}.ape\:min-w-\[20px\]{min-width:20px}.ape\:min-w-\[25px\]{min-width:25px}.ape\:min-w-\[30px\]{min-width:30px}.ape\:min-w-\[33px\]{min-width:33px}.ape\:min-w-\[40px\]{min-width:40px}.ape\:min-w-\[48px\]{min-width:48px}.ape\:min-w-\[65px\]{min-width:65px}.ape\:min-w-\[100px\]{min-width:100px}.ape\:min-w-\[120px\]{min-width:120px}.ape\:min-w-\[148px\]{min-width:148px}.ape\:min-w-\[250px\]{min-width:250px}.ape\:min-w-\[700px\]{min-width:700px}.ape\:min-w-\[unset\]{min-width:unset}.ape\:min-w-full{min-width:100%}.ape\:\[flex\:0_0_100\%\]{flex:0 0 100%}.ape\:flex-1{flex:1}.ape\:shrink-0{flex-shrink:0}.ape\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:translate-x-\[50\%\]{--tw-translate-x:50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:scale-\[0\.5\]{scale:.5}.ape\:rotate-\[-45deg\]{rotate:-45deg}.ape\:cursor-\[unset\]{cursor:unset}.ape\:cursor-pointer{cursor:pointer}.ape\:snap-center{scroll-snap-align:center}.ape\:list-none{list-style-type:none}.ape\:appearance-none{appearance:none}.ape\:flex-col{flex-direction:column}.ape\:flex-col-reverse{flex-direction:column-reverse}.ape\:flex-row{flex-direction:row}.ape\:flex-row-reverse{flex-direction:row-reverse}.ape\:flex-wrap{flex-wrap:wrap}.ape\:items-center{align-items:center}.ape\:items-end{align-items:flex-end}.ape\:items-start{align-items:flex-start}.ape\:items-stretch{align-items:stretch}.ape\:justify-around{justify-content:space-around}.ape\:justify-between{justify-content:space-between}.ape\:justify-center{justify-content:center}.ape\:justify-end{justify-content:flex-end}.ape\:justify-start{justify-content:flex-start}.ape\:gap-1{gap:var(--ape-spacing)}.ape\:gap-2\.5{gap:calc(var(--ape-spacing) * 2.5)}.ape\:gap-4{gap:calc(var(--ape-spacing) * 4)}.ape\:gap-\[1px\]{gap:1px}.ape\:gap-\[2px\]{gap:2px}.ape\:gap-\[3px\]{gap:3px}.ape\:gap-\[4px\]{gap:4px}.ape\:gap-\[5px\]{gap:5px}.ape\:gap-\[7px\]{gap:7px}.ape\:gap-\[8px\]{gap:8px}.ape\:gap-\[10px\]{gap:10px}.ape\:gap-\[14px\]{gap:14px}.ape\:gap-\[15px\]{gap:15px}.ape\:gap-\[20px\]{gap:20px}.ape\:overflow-hidden{overflow:hidden}.ape\:overflow-x-auto{overflow-x:auto}.ape\:overflow-x-hidden{overflow-x:hidden}.ape\:overflow-x-visible{overflow-x:visible}.ape\:\[overflow-y\:unset\]\!{overflow-y:unset!important}.ape\:overflow-y-auto{overflow-y:auto}.ape\:overflow-y-hidden{overflow-y:hidden}.ape\:overflow-y-scroll{overflow-y:scroll}.ape\:rounded-\[0_0_10px_10px\],.ape\:rounded-\[0px_0px_10px_10px\]{border-radius:0 0 10px 10px}.ape\:rounded-\[0px_10px_10px_0px\]{border-radius:0 10px 10px 0}.ape\:rounded-\[4px\]{border-radius:4px}.ape\:rounded-\[5px\]{border-radius:5px}.ape\:rounded-\[6px\]{border-radius:6px}.ape\:rounded-\[6px_6px_0px_0px\]{border-radius:6px 6px 0 0}.ape\:rounded-\[8px\]{border-radius:8px}.ape\:rounded-\[10px\]{border-radius:10px}.ape\:rounded-\[10px_0px_10px_0px\]{border-radius:10px 0}.ape\:rounded-\[10px_10px_0_0\],.ape\:rounded-\[10px_10px_0px_0px\]{border-radius:10px 10px 0 0}.ape\:rounded-\[14px\]{border-radius:14px}.ape\:rounded-\[40px\]{border-radius:40px}.ape\:rounded-\[50px\]{border-radius:50px}.ape\:rounded-full{border-radius:3.40282e38px}.ape\:rounded-none{border-radius:0}.ape\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:rounded-small{border-radius:var(--ape-radius-small)}.ape\:rounded-tl-\[10px\]{border-top-left-radius:10px}.ape\:rounded-br-\[8px\]{border-bottom-right-radius:8px}.ape\:border{border-style:var(--tw-border-style);border-width:1px}.ape\:border-0{border-style:var(--tw-border-style);border-width:0}.ape\:border-2{border-style:var(--tw-border-style);border-width:2px}.ape\:border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.ape\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.ape\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.ape\:border-none{--tw-border-style:none;border-style:none}.ape\:border-solid{--tw-border-style:solid;border-style:solid}.ape\:border-\[\#9960C5\]{border-color:#9960c5}.ape\:border-\[\#222222\]{border-color:#222}.ape\:border-\[grey\]{border-color:gray}.ape\:border-primary-button{border-color:var(--ape-color-primary-button)}.ape\:border-success{border-color:var(--ape-color-success)}.ape\:border-text{border-color:var(--ape-color-text)}.ape\:border-white2{border-color:var(--ape-color-white2)}.ape\:border-white3{border-color:var(--ape-color-white3)}.ape\:border-white4{border-color:var(--ape-color-white4)}.ape\:bg-\[\#38A6110D\]{background-color:#38a6110d}.ape\:bg-\[\#9960C5\]{background-color:#9960c5}.ape\:bg-\[\#DE62F366\]{background-color:#de62f366}.ape\:bg-modal-overlay{background-color:var(--ape-color-modal-overlay)}.ape\:bg-primary-button{background-color:var(--ape-color-primary-button)}.ape\:bg-text{background-color:var(--ape-color-text)}.ape\:bg-text-disabled{background-color:var(--ape-color-text-disabled)}.ape\:bg-transparent{background-color:#0000}.ape\:bg-transparent\!{background-color:#0000!important}.ape\:bg-white{background-color:var(--ape-color-white)}.ape\:bg-white1{background-color:var(--ape-color-white1)}.ape\:bg-white2{background-color:var(--ape-color-white2)}.ape\:bg-white2\!{background-color:var(--ape-color-white2)!important}.ape\:bg-white3{background-color:var(--ape-color-white3)}.ape\:bg-white4{background-color:var(--ape-color-white4)}.ape\:bg-\[image\:var\(--ape-gradient-abond\)\]{background-image:var(--ape-gradient-abond)}.ape\:bg-\[image\:var\(--banner-bg-mobile\)\]{background-image:var(--banner-bg-mobile)}.ape\:bg-\[linear-gradient\(180deg\,\#FFFFFF_50\%\,\#666666_100\%\)\]{background-image:linear-gradient(#fff 50%,#666 100%)}.ape\:bg-cover{background-size:cover}.ape\:bg-clip-text{-webkit-background-clip:text;background-clip:text}.ape\:bg-no-repeat{background-repeat:no-repeat}.ape\:object-contain{object-fit:contain}.ape\:object-cover{object-fit:cover}.ape\:p-0{padding:0}.ape\:p-0\!{padding:0!important}.ape\:p-2{padding:calc(var(--ape-spacing) * 2)}.ape\:p-2\.5{padding:calc(var(--ape-spacing) * 2.5)}.ape\:p-3{padding:calc(var(--ape-spacing) * 3)}.ape\:p-3\.75{padding:calc(var(--ape-spacing) * 3.75)}.ape\:p-4{padding:calc(var(--ape-spacing) * 4)}.ape\:p-5{padding:calc(var(--ape-spacing) * 5)}.ape\:p-\[0_1px\]{padding:0 1px}.ape\:p-\[0_20px_20px_20px\]{padding:0 20px 20px}.ape\:p-\[0px_8px\]\!{padding:0 8px!important}.ape\:p-\[2\.5px_5px\]{padding:2.5px 5px}.ape\:p-\[2px\]{padding:2px}.ape\:p-\[2px_5px\]{padding:2px 5px}.ape\:p-\[2px_6px\]{padding:2px 6px}.ape\:p-\[2px_8px\]{padding:2px 8px}.ape\:p-\[2px_10px\]{padding:2px 10px}.ape\:p-\[2px_10px_2px_5px\]{padding:2px 10px 2px 5px}.ape\:p-\[3px_6px\]{padding:3px 6px}.ape\:p-\[4px_2px\]{padding:4px 2px}.ape\:p-\[4px_6px\]{padding:4px 6px}.ape\:p-\[4px_10px\]{padding:4px 10px}.ape\:p-\[5px\]{padding:5px}.ape\:p-\[5px_10px\]{padding:5px 10px}.ape\:p-\[5px_15px\]{padding:5px 15px}.ape\:p-\[5px_20px\]{padding:5px 20px}.ape\:p-\[6px\]{padding:6px}.ape\:p-\[6px_12px\]{padding:6px 12px}.ape\:p-\[8px\]{padding:8px}.ape\:p-\[8px_4px_4px_4px\]{padding:8px 4px 4px}.ape\:p-\[8px_10px\]{padding:8px 10px}.ape\:p-\[8px_12px\]{padding:8px 12px}.ape\:p-\[8px_16px\]{padding:8px 16px}.ape\:p-\[10px\]{padding:10px}.ape\:p-\[15px\]{padding:15px}.ape\:p-\[15px_20px_5px_20px\]{padding:15px 20px 5px}.ape\:p-\[16px\]{padding:16px}.ape\:p-\[20px\]{padding:20px}.ape\:p-px{padding:1px}.ape\:px-2\.5{padding-inline:calc(var(--ape-spacing) * 2.5)}.ape\:px-6{padding-inline:calc(var(--ape-spacing) * 6)}.ape\:px-\[3px\]{padding-inline:3px}.ape\:px-\[4px\]{padding-inline:4px}.ape\:px-\[5px\]{padding-inline:5px}.ape\:px-\[6px\]{padding-inline:6px}.ape\:px-\[8px\]{padding-inline:8px}.ape\:px-\[10px\]{padding-inline:10px}.ape\:px-\[14px\]{padding-inline:14px}.ape\:px-\[15px\]{padding-inline:15px}.ape\:px-\[19px\]{padding-inline:19px}.ape\:py-2\.5{padding-block:calc(var(--ape-spacing) * 2.5)}.ape\:py-\[2px\]{padding-block:2px}.ape\:py-\[3px\]{padding-block:3px}.ape\:py-\[5px\]{padding-block:5px}.ape\:py-\[6px\]{padding-block:6px}.ape\:py-\[10px\]{padding-block:10px}.ape\:py-\[14px\]{padding-block:14px}.ape\:pt-1\.25{padding-top:calc(var(--ape-spacing) * 1.25)}.ape\:pt-3\!{padding-top:calc(var(--ape-spacing) * 3)!important}.ape\:pt-4{padding-top:calc(var(--ape-spacing) * 4)}.ape\:pt-\[2px\]{padding-top:2px}.ape\:pt-\[3px\]{padding-top:3px}.ape\:pt-\[5px\]{padding-top:5px}.ape\:pt-\[10px\]{padding-top:10px}.ape\:pt-\[15px\]{padding-top:15px}.ape\:pt-\[20px\]{padding-top:20px}.ape\:pt-\[100px\]{padding-top:100px}.ape\:pr-0{padding-right:0}.ape\:pr-1\.25{padding-right:calc(var(--ape-spacing) * 1.25)}.ape\:pr-\[4px\]{padding-right:4px}.ape\:pr-\[14px\]{padding-right:14px}.ape\:pr-\[15px\]{padding-right:15px}.ape\:pr-\[20px\]{padding-right:20px}.ape\:pr-\[23px\]{padding-right:23px}.ape\:pb-\[2px\]{padding-bottom:2px}.ape\:pb-\[5px\]{padding-bottom:5px}.ape\:pb-\[10px\]{padding-bottom:10px}.ape\:pb-\[20px\]{padding-bottom:20px}.ape\:pb-\[100px\]{padding-bottom:100px}.ape\:pl-0{padding-left:0}.ape\:pl-0\!{padding-left:0!important}.ape\:pl-1\.25{padding-left:calc(var(--ape-spacing) * 1.25)}.ape\:pl-5\!{padding-left:calc(var(--ape-spacing) * 5)!important}.ape\:pl-\[5px\]{padding-left:5px}.ape\:pl-\[10px\]{padding-left:10px}.ape\:pl-\[15px\]{padding-left:15px}.ape\:pl-\[20px\]{padding-left:20px}.ape\:pl-\[26px\]{padding-left:26px}.ape\:pl-\[35px\]{padding-left:35px}.ape\:text-center{text-align:center}.ape\:text-left{text-align:left}.ape\:align-middle{vertical-align:middle}.ape\:align-sub{vertical-align:sub}.ape\:font-\[inherit\]{font-family:inherit}.ape\:font-body{font-family:var(--ape-font-body)}.ape\:text-base{font-size:var(--ape-text-base);line-height:var(--tw-leading,var(--ape-text-base--line-height))}.ape\:text-sm{font-size:var(--ape-text-sm);line-height:var(--tw-leading,var(--ape-text-sm--line-height))}.ape\:text-sm\!{font-size:var(--ape-text-sm)!important;line-height:var(--tw-leading,var(--ape-text-sm--line-height))!important}.ape\:text-\[10px\]{font-size:10px}.ape\:text-\[10px\]\!{font-size:10px!important}.ape\:text-\[11px\]{font-size:11px}.ape\:text-\[12px\]{font-size:12px}.ape\:text-\[12px\]\!{font-size:12px!important}.ape\:text-\[13px\]{font-size:13px}.ape\:text-\[13px\]\!{font-size:13px!important}.ape\:text-\[14\.26px\]{font-size:14.26px}.ape\:text-\[14px\]{font-size:14px}.ape\:text-\[14px\]\!{font-size:14px!important}.ape\:text-\[16px\]{font-size:16px}.ape\:text-\[18px\]{font-size:18px}.ape\:text-\[18px\]\!{font-size:18px!important}.ape\:text-\[20px\]{font-size:20px}.ape\:text-\[22px\]{font-size:22px}.ape\:text-\[24px\]{font-size:24px}.ape\:text-\[24px\]\!{font-size:24px!important}.ape\:text-\[25\.26px\]{font-size:25.26px}.ape\:text-\[32px\]{font-size:32px}.ape\:leading-4{--tw-leading:calc(var(--ape-spacing) * 4);line-height:calc(var(--ape-spacing) * 4)}.ape\:leading-4\!{--tw-leading:calc(var(--ape-spacing) * 4)!important;line-height:calc(var(--ape-spacing) * 4)!important}.ape\:leading-5{--tw-leading:calc(var(--ape-spacing) * 5);line-height:calc(var(--ape-spacing) * 5)}.ape\:leading-5\.5\!{--tw-leading:calc(var(--ape-spacing) * 5.5)!important;line-height:calc(var(--ape-spacing) * 5.5)!important}.ape\:leading-\[11px\]{--tw-leading:11px;line-height:11px}.ape\:leading-\[12px\]{--tw-leading:12px;line-height:12px}.ape\:leading-\[13px\]{--tw-leading:13px;line-height:13px}.ape\:leading-\[14px\]{--tw-leading:14px;line-height:14px}.ape\:leading-\[15px\]{--tw-leading:15px;line-height:15px}.ape\:leading-\[18px\]{--tw-leading:18px;line-height:18px}.ape\:leading-\[18px\]\!{--tw-leading:18px!important;line-height:18px!important}.ape\:leading-\[21px\]{--tw-leading:21px;line-height:21px}.ape\:leading-\[22px\]{--tw-leading:22px;line-height:22px}.ape\:leading-\[24px\]{--tw-leading:24px;line-height:24px}.ape\:leading-\[28px\]{--tw-leading:28px;line-height:28px}.ape\:leading-\[30\.26px\]{--tw-leading:30.26px;line-height:30.26px}.ape\:leading-\[33px\]{--tw-leading:33px;line-height:33px}.ape\:font-bold{--tw-font-weight:var(--ape-font-weight-bold);font-weight:var(--ape-font-weight-bold)}.ape\:font-light{--tw-font-weight:var(--ape-font-weight-light);font-weight:var(--ape-font-weight-light)}.ape\:font-medium{--tw-font-weight:var(--ape-font-weight-medium);font-weight:var(--ape-font-weight-medium)}.ape\:font-normal{--tw-font-weight:var(--ape-font-weight-normal);font-weight:var(--ape-font-weight-normal)}.ape\:font-semibold{--tw-font-weight:var(--ape-font-weight-semibold);font-weight:var(--ape-font-weight-semibold)}.ape\:tracking-\[0\]{--tw-tracking:0;letter-spacing:0}.ape\:break-all{word-break:break-all}.ape\:text-ellipsis{text-overflow:ellipsis}.ape\:whitespace-normal{white-space:normal}.ape\:whitespace-nowrap{white-space:nowrap}.ape\:text-\[\#777\]{color:#777}.ape\:text-error{color:var(--ape-color-error)}.ape\:text-gray-300{color:var(--ape-color-gray-300)}.ape\:text-primary-bright{color:var(--ape-color-primary-bright)}.ape\:text-primary-button{color:var(--ape-color-primary-button)}.ape\:text-primary-button-disable{color:var(--ape-color-primary-button-disable)}.ape\:text-success{color:var(--ape-color-success)}.ape\:text-text{color:var(--ape-color-text)}.ape\:text-text-disabled{color:var(--ape-color-text-disabled)}.ape\:text-text-disabled-button{color:var(--ape-color-text-disabled-button)}.ape\:text-transparent{color:#0000}.ape\:text-white{color:var(--ape-color-white)}.ape\:capitalize{text-transform:capitalize}.ape\:normal-case{text-transform:none}.ape\:uppercase{text-transform:uppercase}.ape\:line-through{text-decoration-line:line-through}.ape\:no-underline{text-decoration-line:none}.ape\:underline{text-decoration-line:underline}.ape\:opacity-0{opacity:0}.ape\:opacity-20{opacity:.2}.ape\:opacity-50{opacity:.5}.ape\:opacity-60{opacity:.6}.ape\:opacity-70{opacity:.7}.ape\:opacity-80{opacity:.8}.ape\:opacity-90{opacity:.9}.ape\:shadow-\[0px_1px_4px_rgb\(0_0_0\/0\.16\)\]{--tw-shadow:0px 1px 4px var(--tw-shadow-color,#00000029);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-\[0px_1px_4px_rgb\(0_0_0\/0\.26\)\]{--tw-shadow:0px 1px 4px var(--tw-shadow-color,#00000042);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:shadow-\[rgba\(0\,0\,0\,0\.16\)_0px_1px_4px\]{--tw-shadow-color:#00000029}@supports (color:color-mix(in lab, red, red)){.ape\:shadow-\[rgba\(0\,0\,0\,0\.16\)_0px_1px_4px\]{--tw-shadow-color:color-mix(in oklab, #00000029 0px 1px 4px var(--tw-shadow-alpha), transparent)}}.ape\:blur-\[1px\]{--tw-blur:blur(1px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.ape\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--ape-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ape-default-transition-duration))}.ape\:duration-300{--tw-duration:.3s;transition-duration:.3s}.ape\:duration-500{--tw-duration:.5s;transition-duration:.5s}.ape\:duration-1000{--tw-duration:1s;transition-duration:1s}.ape\:duration-\[1500ms\]{--tw-duration:1.5s;transition-duration:1.5s}.ape\:ease-\[ease\]{--tw-ease:ease;transition-timing-function:ease}.ape\:ease-in-out{--tw-ease:var(--ape-ease-in-out);transition-timing-function:var(--ape-ease-in-out)}.ape\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.ape\:ease-out{--tw-ease:var(--ape-ease-out);transition-timing-function:var(--ape-ease-out)}.ape\:outline-none{--tw-outline-style:none;outline-style:none}.ape\:select-none{-webkit-user-select:none;user-select:none}.ape\:\[-webkit-text-fill-color\:transparent\]{-webkit-text-fill-color:transparent}:is(:is(.ape\:\*\:\*\:w-full>*)>*),:is(.ape\:\*\:w-full>*){width:100%}@media (hover:hover){.ape\:group-hover\:bg-\[rgb\(20_18_29_\/_0\.25\)\]\!:is(:where(.ape\:group):hover *){background-color:#14121d40!important}.ape\:group-hover\/tooltip\:block:is(:where(.ape\:group\/tooltip):hover *){display:block}}.ape\:peer-checked\:block:is(:where(.ape\:peer):checked~*){display:block}.ape\:first\:rounded-t-normal:first-child{border-top-left-radius:var(--ape-radius-normal);border-top-right-radius:var(--ape-radius-normal)}.ape\:last\:mr-0:last-child{margin-right:0}.ape\:last\:rounded-b-normal:last-child{border-bottom-right-radius:var(--ape-radius-normal);border-bottom-left-radius:var(--ape-radius-normal)}.ape\:checked\:border-primary-button:checked{border-color:var(--ape-color-primary-button)}.ape\:checked\:bg-primary-button:checked{background-color:var(--ape-color-primary-button)}@media (hover:hover){.ape\:hover\:z-\[1000\]:hover{z-index:1000}.ape\:hover\:cursor-pointer:hover{cursor:pointer}.ape\:hover\:bg-\[rgb\(20_18_29_\/_0\.36\)\]\!:hover{background-color:#14121d5c!important}.ape\:hover\:bg-white3:hover{background-color:var(--ape-color-white3)}.ape\:hover\:bg-white4:hover{background-color:var(--ape-color-white4)}.ape\:hover\:bg-white5:hover{background-color:var(--ape-color-white5)}.ape\:hover\:underline:hover{text-decoration-line:underline}.ape\:hover\:opacity-60:hover{opacity:.6}.ape\:hover\:opacity-80:hover{opacity:.8}.ape\:hover\:opacity-90:hover{opacity:.9}.ape\:hover\:brightness-115:hover{--tw-brightness:brightness(115%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.ape\:hover\:\[backdrop-filter\:blur\(2px\)\]:hover{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ape\:hover\:\[background\:linear-gradient\(90deg\,rgba\(49\,46\,122\,0\.70\)_0\%\,rgba\(92\,79\,174\,0\.70\)_100\%\)\]:hover{background:linear-gradient(90deg,#312e7ab3 0%,#5c4faeb3 100%)}}.ape\:focus\:outline:focus,.ape\:focus\:outline-1:focus{outline-style:var(--tw-outline-style);outline-width:1px}.ape\:focus\:outline-primary-button:focus{outline-color:var(--ape-color-primary-button)}.ape\:focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.ape\:focus\:not-checked\:shadow-none:focus:not(:checked){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ape\:focus\:not-checked\:outline-none:focus:not(:checked){--tw-outline-style:none;outline-style:none}.ape\:active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (hover:hover){.ape\:enabled\:hover\:border-primary-button-hovered:enabled:hover{border-color:var(--ape-color-primary-button-hovered)}.ape\:enabled\:hover\:bg-primary-button:enabled:hover{background-color:var(--ape-color-primary-button)}.ape\:enabled\:hover\:bg-primary-button-hovered:enabled:hover{background-color:var(--ape-color-primary-button-hovered)}.ape\:enabled\:hover\:text-text:enabled:hover{color:var(--ape-color-text)}.ape\:enabled\:hover\:not-checked\:border-primary-button:enabled:hover:not(:checked){border-color:var(--ape-color-primary-button)}}.ape\:active\:enabled\:scale-90:active:enabled{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.ape\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.ape\:disabled\:border-transparent:disabled{border-color:#0000}.ape\:disabled\:bg-white3:disabled{background-color:var(--ape-color-white3)}.ape\:disabled\:text-primary-button-disable:disabled{color:var(--ape-color-primary-button-disable)}.ape\:disabled\:text-text-disabled-button:disabled{color:var(--ape-color-text-disabled-button)}.ape\:disabled\:opacity-90:disabled{opacity:.9}@media not all and (min-width:1000px){.ape\:max-\[1000px\]\:w-\[49\%\]{width:49%}}@media not all and (min-width:852px){.ape\:max-md\:mb-\[10px\]{margin-bottom:10px}}@media not all and (min-width:768px){.ape\:max-\[768px\]\:w-full{width:100%}}@media not all and (min-width:576px){.ape\:max-sm\:mb-\[10px\]{margin-bottom:10px}.ape\:max-sm\:w-1\/2{width:50%}.ape\:max-sm\:w-\[55\%\]{width:55%}.ape\:max-sm\:text-\[12px\]{font-size:12px}.ape\:max-sm\:text-\[18px\]{font-size:18px}.ape\:max-sm\:leading-\[14px\]{--tw-leading:14px;line-height:14px}.ape\:max-sm\:leading-\[21px\]{--tw-leading:21px;line-height:21px}}@media (min-width:513px){.ape\:min-\[513px\]\:justify-center{justify-content:center}.ape\:min-\[513px\]\:pl-0{padding-left:0}}@media (min-width:576px){.ape\:sm\:top-\[-240px\]{top:-240px}.ape\:sm\:ml-2{margin-left:calc(var(--ape-spacing) * 2)}.ape\:sm\:ml-5{margin-left:calc(var(--ape-spacing) * 5)}.ape\:sm\:max-w-\[200px\]{max-width:200px}.ape\:sm\:justify-start{justify-content:flex-start}.ape\:sm\:text-\[16px\]\!{font-size:16px!important}}@media (min-width:800px){.ape\:min-\[800px\]\:max-h-none{max-height:none}.ape\:min-\[800px\]\:w-\[350px\]{width:350px}.ape\:min-\[800px\]\:flex-col{flex-direction:column}.ape\:min-\[800px\]\:flex-row{flex-direction:row}.ape\:min-\[800px\]\:gap-\[5px\]{gap:5px}.ape\:min-\[800px\]\:p-\[12px\]{padding:12px}.ape\:min-\[800px\]\:p-\[20px\]{padding:20px}.ape\:min-\[800px\]\:pb-\[5px\]{padding-bottom:5px}@media not all and (min-width:1000px){.ape\:min-\[800px\]\:max-\[1000px\]\:bg-bottom{background-position:bottom}}}@media (min-width:852px){.ape\:md\:top-\[20px\]{top:20px}.ape\:md\:top-\[unset\]{top:unset}.ape\:md\:right-\[-13\%\]{right:-13%}.ape\:md\:right-\[-50px\]{right:-50px}.ape\:md\:-bottom-12\.5{bottom:calc(var(--ape-spacing) * -12.5)}.ape\:md\:bottom-\[-15px\]{bottom:-15px}.ape\:md\:bottom-\[unset\]{bottom:unset}.ape\:md\:mt-0{margin-top:0}.ape\:md\:mt-\[5px\]{margin-top:5px}.ape\:md\:mr-\[15px\]{margin-right:15px}.ape\:md\:mb-0{margin-bottom:0}.ape\:md\:ml-\[5px\]{margin-left:5px}.ape\:md\:block{display:block}.ape\:md\:flex{display:flex}.ape\:md\:flex\!{display:flex!important}.ape\:md\:hidden{display:none}.ape\:md\:hidden\!{display:none!important}.ape\:md\:inline{display:inline}.ape\:md\:h-\[26px\]{height:26px}.ape\:md\:h-\[200px\]{height:200px}.ape\:md\:h-\[225px\]{height:225px}.ape\:md\:max-h-\[350px\]{max-height:350px}.ape\:md\:min-h-\[430px\]{min-height:430px}.ape\:md\:w-1\/2{width:50%}.ape\:md\:w-87\.5{width:calc(var(--ape-spacing) * 87.5)}.ape\:md\:w-175{width:calc(var(--ape-spacing) * 175)}.ape\:md\:w-\[35\%\]{width:35%}.ape\:md\:w-\[150px\]{width:150px}.ape\:md\:w-\[180px\]{width:180px}.ape\:md\:w-\[200px\]{width:200px}.ape\:md\:w-\[225px\]{width:225px}.ape\:md\:w-\[300px\]{width:300px}.ape\:md\:w-\[calc\(100\%-300px\)\]{width:calc(100% - 300px)}.ape\:md\:w-\[unset\]{width:unset}.ape\:md\:w-full{width:100%}.ape\:md\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:-translate-y-3\/4{--tw-translate-y:calc(calc(3 / 4 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.ape\:md\:scale-\[0\.4\]{scale:.4}.ape\:md\:flex-col{flex-direction:column}.ape\:md\:flex-row,.ape\:min-md\:flex-row{flex-direction:row}.ape\:md\:items-center{align-items:center}.ape\:md\:justify-between{justify-content:space-between}.ape\:md\:justify-end{justify-content:flex-end}.ape\:md\:gap-0{gap:0}.ape\:md\:gap-\[10px\]{gap:10px}.ape\:md\:gap-\[15px\]{gap:15px}.ape\:min-md\:gap-\[5px\]{gap:5px}.ape\:md\:rounded-\[20px\]{border-radius:20px}.ape\:md\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:md\:p-3{padding:calc(var(--ape-spacing) * 3)}.ape\:md\:p-5{padding:calc(var(--ape-spacing) * 5)}.ape\:md\:p-\[4px_10px\]{padding:4px 10px}.ape\:md\:p-\[20px\]{padding:20px}.ape\:md\:pr-\[20px\]{padding-right:20px}.ape\:md\:pb-1\.25{padding-bottom:calc(var(--ape-spacing) * 1.25)}.ape\:min-md\:pb-\[5px\]{padding-bottom:5px}.ape\:md\:pl-\[20px\]{padding-left:20px}.ape\:md\:text-\[12px\]\!{font-size:12px!important}.ape\:md\:text-\[14px\]{font-size:14px}.ape\:md\:text-\[14px\]\!{font-size:14px!important}.ape\:md\:text-\[16px\]{font-size:16px}.ape\:md\:text-\[18px\]{font-size:18px}.ape\:md\:text-\[20px\]{font-size:20px}.ape\:md\:text-\[24px\]{font-size:24px}.ape\:min-md\:text-\[16px\]{font-size:16px}.ape\:md\:leading-\[21px\]\!{--tw-leading:21px!important;line-height:21px!important}.ape\:md\:font-bold{--tw-font-weight:var(--ape-font-weight-bold);font-weight:var(--ape-font-weight-bold)}@media (hover:hover){.ape\:md\:hover\:z-\[1000\]\!:hover{z-index:1000!important}}}@media (min-width:968px){.ape\:lg\:mt-0{margin-top:0}.ape\:lg\:mr-\[10px\]{margin-right:10px}.ape\:lg\:mr-\[15px\]{margin-right:15px}.ape\:lg\:mb-0{margin-bottom:0}.ape\:lg\:ml-0{margin-left:0}.ape\:lg\:ml-\[10px\]{margin-left:10px}.ape\:lg\:flex{display:flex}.ape\:lg\:inline{display:inline}.ape\:lg\:h-\[40px\]{height:40px}.ape\:lg\:w-1\/2{width:50%}.ape\:lg\:w-\[30\%\]{width:30%}.ape\:lg\:w-\[35\%\]{width:35%}.ape\:lg\:w-\[45\%\]{width:45%}.ape\:lg\:w-\[65\%\]{width:65%}.ape\:lg\:w-\[210px\]{width:210px}.ape\:lg\:w-\[300px\]{width:300px}.ape\:lg\:w-\[unset\]{width:unset}.ape\:lg\:w-auto{width:auto}.ape\:lg\:min-w-75\!{min-width:calc(var(--ape-spacing) * 75)!important}.ape\:lg\:flex-row{flex-direction:row}.ape\:lg\:items-center{align-items:center}.ape\:lg\:gap-\[10px\]{gap:10px}.ape\:lg\:gap-\[15px\]{gap:15px}.ape\:lg\:overflow-visible{overflow:visible}.ape\:lg\:rounded-normal{border-radius:var(--ape-radius-normal)}.ape\:lg\:bg-white4{background-color:var(--ape-color-white4)}.ape\:lg\:bg-\[image\:var\(--banner-bg-desktop\)\]{background-image:var(--banner-bg-desktop)}.ape\:lg\:px-\[10px\]{padding-inline:10px}.ape\:lg\:pr-\[20px\]{padding-right:20px}.ape\:lg\:pb-\[20px\]{padding-bottom:20px}.ape\:lg\:text-\[16px\]\!{font-size:16px!important}.ape\:lg\:leading-6\!{--tw-leading:calc(var(--ape-spacing) * 6)!important;line-height:calc(var(--ape-spacing) * 6)!important}}@media (min-width:1000px){.ape\:min-\[1000px\]\:absolute{position:absolute}.ape\:min-\[1000px\]\:left-\[10px\]{left:10px}.ape\:min-\[1000px\]\:mt-0{margin-top:0}.ape\:min-\[1000px\]\:block{display:block}.ape\:min-\[1000px\]\:flex{display:flex}.ape\:min-\[1000px\]\:hidden{display:none}.ape\:min-\[1000px\]\:h-\[70px\]{height:70px}.ape\:min-\[1000px\]\:w-\[30\%\]{width:30%}.ape\:min-\[1000px\]\:w-\[70\%\]{width:70%}.ape\:min-\[1000px\]\:w-\[130px\]{width:130px}.ape\:min-\[1000px\]\:w-\[210px\]{width:210px}.ape\:min-\[1000px\]\:w-\[300px\]{width:300px}.ape\:min-\[1000px\]\:w-auto{width:auto}.ape\:min-\[1000px\]\:min-w-\[300px\]{min-width:300px}.ape\:min-\[1000px\]\:flex-row{flex-direction:row}.ape\:min-\[1000px\]\:items-center{align-items:center}.ape\:min-\[1000px\]\:justify-between{justify-content:space-between}.ape\:min-\[1000px\]\:justify-center{justify-content:center}.ape\:min-\[1000px\]\:justify-end{justify-content:flex-end}.ape\:min-\[1000px\]\:gap-\[20px\]{gap:20px}.ape\:min-\[1000px\]\:p-0{padding:0}.ape\:min-\[1000px\]\:p-\[20px_0_10px_0\]{padding:20px 0 10px}.ape\:min-\[1000px\]\:pr-\[20px\]{padding-right:20px}}@media (min-width:1080px){.ape\:xl\:flex{display:flex}.ape\:xl\:w-\[30\%\]{width:30%}.ape\:xl\:w-\[70\%\]{width:70%}.ape\:xl\:w-\[100px\]{width:100px}.ape\:xl\:w-\[115px\]{width:115px}.ape\:xl\:w-\[135px\]{width:135px}.ape\:xl\:min-w-\[400px\]{min-width:400px}.ape\:xl\:flex-row{flex-direction:row}.ape\:xl\:justify-between{justify-content:space-between}.ape\:xl\:gap-\[30px\]{gap:30px}.ape\:xl\:p-\[20px_0_10px_0\]{padding:20px 0 10px}}@media (min-width:1200px){.ape\:xxl\:flex{display:flex}}.ape\:\[\&_\*\]\:text-\[14px\]\! *{font-size:14px!important}.ape\:\[\&_\*\]\:text-\[18px\]\! *{font-size:18px!important}.ape\:\[\&_\*\]\:text-\[24px\]\! *{font-size:24px!important}.ape\:\[\&_button\]\:ml-auto button,.ape\:\[\&_svg\]\:ml-auto svg{margin-left:auto}.ape\:\[\&_svg\]\:w-\[11px\] svg{width:11px}.ape\:\[\&_svg\]\:cursor-pointer svg{cursor:pointer}.ape\:\[\&_svg\]\:bg-transparent svg{background-color:#0000}.ape\:\[\&_svg\]\:fill-text svg{fill:var(--ape-color-text)}.ape\:\[\&\:\:-webkit-scrollbar\]\:h-\[5px\]::-webkit-scrollbar{height:5px}.ape\:\[\&\>\*\]\:h-\[31px\]\!>*{height:31px!important}.ape\:\[\&\>\*\]\:w-\[210px\]>*{width:210px}.ape\:\[\&\>\*\]\:text-\[14px\]\!>*{font-size:14px!important}@media (min-width:1080px){.ape\:xl\:\[\&\>\*\]\:w-\[100px\]>*{width:100px}}.ape\:\[\&\>div\]\:pt-0\!>div{padding-top:0!important}.ape\:\[\&\>div\:last-child\]\:mr-0>div:last-child{margin-right:0}.ape\:\[\&\>div\>div\]\:bg-white2>div>div{background-color:var(--ape-color-white2)}}.ape-root .lifi-bridge-modal [id^=widget-scrollable-container]{overflow-y:hidden!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { UserBill } from '../../../../types/yourbonds';
|
|
2
|
-
declare const NftImage: ({ userBill, showNFTImg, setShowNFTImg, }: {
|
|
2
|
+
declare const NftImage: ({ userBill, showNFTImg, setShowNFTImg, isLpStakingBond, }: {
|
|
3
3
|
userBill?: UserBill;
|
|
4
4
|
showNFTImg: boolean;
|
|
5
5
|
setShowNFTImg: (value: boolean) => void;
|
|
6
|
+
isLpStakingBond?: boolean;
|
|
6
7
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
export default NftImage;
|
|
@@ -8,11 +8,10 @@ import ProgressiveImage from '../../../../components/ProgressiveImage/index.js';
|
|
|
8
8
|
import Flex from '../../../../components/uikit-sdk/Flex/index.js';
|
|
9
9
|
import Text from '../../../../components/uikit-sdk/Text/index.js';
|
|
10
10
|
import Skeleton from '../../../../components/uikit-sdk/Skeleton/index.js';
|
|
11
|
-
import Close from '../../../../components/uikit-sdk/Svg/Icons/Close.js';
|
|
12
11
|
import Tag from '../../../../components/uikit-sdk/Svg/Icons/Tag.js';
|
|
13
12
|
import Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret.js';
|
|
14
13
|
|
|
15
|
-
const NftImage = ({ userBill, showNFTImg, setShowNFTImg, }) => {
|
|
14
|
+
const NftImage = ({ userBill, showNFTImg, setShowNFTImg, isLpStakingBond = false, }) => {
|
|
16
15
|
// Hooks
|
|
17
16
|
const controls = useAnimation();
|
|
18
17
|
const isMobile = useIsMobile();
|
|
@@ -38,7 +37,7 @@ const NftImage = ({ userBill, showNFTImg, setShowNFTImg, }) => {
|
|
|
38
37
|
setShowNFTImg(false);
|
|
39
38
|
setIsOpenTraits(false);
|
|
40
39
|
};
|
|
41
|
-
return (jsxs(Fragment, { children: [jsx(AnimatePresence, { children: showNFTImg && (jsx(motion.div, { animate: { opacity: 1 }, transition: { duration: 1, delay: 0.3 }, className: "ape:absolute ape:flex ape:top-[-180px] ape:sm:top-[-240px] ape:right-[50%] ape:md:right-[-13%] ape:translate-x-[50%] ape:md:translate-x-0 ape:opacity-0 ape:z-[5000]", children: jsx(LinkShare, { userBill: userBill }) })) }), jsx(AnimatePresence, { children: bondNFTData?.image && (jsxs(motion.div, { animate: controls, onClick: () => {
|
|
40
|
+
return (jsxs(Fragment, { children: [jsx(AnimatePresence, { children: showNFTImg && !isLpStakingBond && (jsx(motion.div, { animate: { opacity: 1 }, transition: { duration: 1, delay: 0.3 }, className: "ape:absolute ape:flex ape:top-[-180px] ape:sm:top-[-240px] ape:right-[50%] ape:md:right-[-13%] ape:translate-x-[50%] ape:md:translate-x-0 ape:opacity-0 ape:z-[5000]", children: jsx(LinkShare, { userBill: userBill }) })) }), jsx(AnimatePresence, { children: bondNFTData?.image && (jsxs(motion.div, { animate: controls, onClick: () => {
|
|
42
41
|
if (showNFTImg) {
|
|
43
42
|
closeAnimation();
|
|
44
43
|
}
|
|
@@ -47,7 +46,7 @@ const NftImage = ({ userBill, showNFTImg, setShowNFTImg, }) => {
|
|
|
47
46
|
}
|
|
48
47
|
}, onAnimationStart: () => {
|
|
49
48
|
setShowNFTImg(true);
|
|
50
|
-
}, className: clsx('ape:flex ape:-z-[1] ape:bottom-[calc(100%-10px)] ape:left-[25%] ape:w-1/2 ape:aspect-[1/0.56] ape:cursor-pointer ape:rounded-normal ape:flex-col ape:hover:z-[1000] ape:md:hover:z-[1000]!', showNFTImg ? 'ape:fixed' : 'ape:absolute'), children: [jsxs(Flex, { className: clsx(showNFTImg ? 'ape:hidden' : 'ape:flex', 'ape:absolute ape:z-[121] ape:w-full ape:h-full ape:opacity-0 ape:items-center ape:justify-center ape:font-bold ape:rounded-normal ape:hover:z-[1000] ape:hover:opacity-80 ape:hover:[background:linear-gradient(90deg,rgba(49,46,122,0.70)_0%,rgba(92,79,174,0.70)_100%)] ape:hover:[backdrop-filter:blur(2px)]'), children: ["View NFT ", '>'] }), showNFTImg && (
|
|
49
|
+
}, className: clsx('ape:flex ape:-z-[1] ape:bottom-[calc(100%-10px)] ape:left-[25%] ape:w-1/2 ape:aspect-[1/0.56] ape:cursor-pointer ape:rounded-normal ape:flex-col ape:hover:z-[1000] ape:md:hover:z-[1000]!', showNFTImg ? 'ape:fixed' : 'ape:absolute'), children: [jsxs(Flex, { className: clsx(showNFTImg ? 'ape:hidden' : 'ape:flex', 'ape:absolute ape:z-[121] ape:w-full ape:h-full ape:opacity-0 ape:items-center ape:justify-center ape:font-bold ape:rounded-normal ape:hover:z-[1000] ape:hover:opacity-80 ape:hover:[background:linear-gradient(90deg,rgba(49,46,122,0.70)_0%,rgba(92,79,174,0.70)_100%)] ape:hover:[backdrop-filter:blur(2px)]'), children: ["View NFT ", '>'] }), showNFTImg && (jsxs("svg", { className: "ape:absolute ape:top-[5px] ape:right-[5px] ape:opacity-90", width: "10px", height: "10px", viewBox: "0 0 20 20", xmlns: "http://www.w3.org/2000/svg", children: [jsx("circle", { cx: "10", cy: "10", r: "10", fill: "grey" }), jsx("path", { d: "M6 6L14 14M14 6L6 14", stroke: "#FAFAFA", strokeWidth: "2.2", strokeLinecap: "round" })] })), jsx(ProgressiveImage, { src: `${bondNFTData?.image}`, blurSrc: `https://ape.bond/images/bills/bluredNFT.png` }), showNFTImg && !isLpStakingBond && (jsx(Flex, { className: "ape:absolute ape:bottom-[-43px] ape:md:-bottom-12.5 ape:w-full ape:justify-center", children: jsxs(Flex, { className: "ape:flex-col ape:w-full ape:min-w-[250px] ape:pb-[10px] ape:items-center ape:scale-[0.5] ape:-translate-y-1/2 ape:md:scale-[0.4] ape:md:-translate-y-3/4", children: [jsxs(Flex, { className: clsx('ape:justify-between ape:h-[24px] ape:bg-white3 ape:px-[15px] ape:w-full', isOpenTraits ? 'ape:rounded-[6px_6px_0px_0px]' : 'ape:rounded-normal'), onClick: (event) => {
|
|
51
50
|
event.stopPropagation();
|
|
52
51
|
setIsOpenTraits(!isOpenTraits);
|
|
53
52
|
}, children: [jsxs(Flex, { className: "ape:gap-[10px] ape:items-center", children: [jsx(Tag, { direction: "down" }), jsx(Text, { size: "12px", weight: 400, className: "ape:opacity-60", children: "Traits" })] }), jsx(Caret, { direction: isOpenTraits ? 'up' : 'down' })] }), jsx(AnimatePresence, { children: isOpenTraits && (jsx(motion.div, { initial: { height: 0 }, animate: { height: 'fit-content' }, transition: { opacity: { duration: 0.2 } }, exit: { height: 0 }, className: "ape:overflow-hidden ape:w-full ape:absolute ape:top-[24px] ape:rounded-[0_0_10px_10px]", onClick: (event) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NFTImage.js","sources":["../../../../../src/views/YourBondsModal/components/NFTImage/NFTImage.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport clsx from 'clsx'\nimport { AnimatePresence, motion, useAnimation } from 'framer-motion'\nimport LinkShare from '../LinkShare/LinkShare'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { useIsMobile } from '../../../../hooks/useIsMobile'\nimport ProgressiveImage from '../../../../components/ProgressiveImage'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport Skeleton from '../../../../components/uikit-sdk/Skeleton'\nimport Close from '../../../../components/uikit-sdk/Svg/Icons/Close'\nimport Tag from '../../../../components/uikit-sdk/Svg/Icons/Tag'\nimport Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret'\n\nconst NftImage = ({\n userBill,\n showNFTImg,\n setShowNFTImg,\n}: {\n userBill?: UserBill\n showNFTImg: boolean\n setShowNFTImg: (value: boolean) => void\n}) => {\n // Hooks\n const controls = useAnimation()\n const isMobile = useIsMobile()\n\n // State\n const [isOpenTraits, setIsOpenTraits] = useState<boolean>(false)\n\n //Static Data\n const bondNFTData = userBill?.nftData\n const BILL_ATTRIBUTES = ['The Legend', 'The Location', 'The Moment', 'The Trend', 'The Innovation']\n const attributes = bondNFTData?.attributes?.filter((attrib) => BILL_ATTRIBUTES.includes(attrib.trait_type))\n\n const openAnimation = () => {\n controls.start({\n scale: isMobile ? [1, 2] : [1, 3],\n zIndex: 1000,\n transition: { duration: 0.2 },\n })\n }\n\n const closeAnimation = () => {\n controls.start({\n scale: isMobile ? [2, 1] : [2, 1],\n zIndex: -1,\n transition: { duration: 0.3 },\n })\n setShowNFTImg(false)\n setIsOpenTraits(false)\n }\n return (\n <>\n <AnimatePresence>\n {showNFTImg && (\n <motion.div\n animate={{ opacity: 1 }}\n transition={{ duration: 1, delay: 0.3 }}\n className=\"ape:absolute ape:flex ape:top-[-180px] ape:sm:top-[-240px] ape:right-[50%] ape:md:right-[-13%] ape:translate-x-[50%] ape:md:translate-x-0 ape:opacity-0 ape:z-[5000]\"\n >\n <LinkShare userBill={userBill} />\n </motion.div>\n )}\n </AnimatePresence>\n <AnimatePresence>\n {bondNFTData?.image && (\n <motion.div\n animate={controls}\n onClick={() => {\n if (showNFTImg) {\n closeAnimation()\n } else {\n openAnimation()\n }\n }}\n onAnimationStart={() => {\n setShowNFTImg(true)\n }}\n className={clsx(\n 'ape:flex ape:-z-[1] ape:bottom-[calc(100%-10px)] ape:left-[25%] ape:w-1/2 ape:aspect-[1/0.56] ape:cursor-pointer ape:rounded-normal ape:flex-col ape:hover:z-[1000] ape:md:hover:z-[1000]!',\n showNFTImg ? 'ape:fixed' : 'ape:absolute',\n )}\n >\n <Flex\n className={clsx(\n showNFTImg ? 'ape:hidden' : 'ape:flex',\n 'ape:absolute ape:z-[121] ape:w-full ape:h-full ape:opacity-0 ape:items-center ape:justify-center ape:font-bold ape:rounded-normal ape:hover:z-[1000] ape:hover:opacity-80 ape:hover:[background:linear-gradient(90deg,rgba(49,46,122,0.70)_0%,rgba(92,79,174,0.70)_100%)] ape:hover:[backdrop-filter:blur(2px)]',\n )}\n >\n View NFT {'>'}\n </Flex>\n {showNFTImg && (\n <Flex className=\"ape:absolute ape:top-[5px] ape:right-[5px] ape:bg-[grey] ape:opacity-90 ape:p-[2px] ape:rounded-[50%] ape:items-center ape:justify-center\">\n <Flex className=\"ape:w-[6px]\">\n <Close />\n </Flex>\n </Flex>\n )}\n <ProgressiveImage src={`${bondNFTData?.image}`} blurSrc={`https://ape.bond/images/bills/bluredNFT.png`} />\n {showNFTImg && (\n <Flex className=\"ape:absolute ape:bottom-[-43px] ape:md:-bottom-12.5 ape:w-full ape:justify-center\">\n <Flex className=\"ape:flex-col ape:w-full ape:min-w-[250px] ape:pb-[10px] ape:items-center ape:scale-[0.5] ape:-translate-y-1/2 ape:md:scale-[0.4] ape:md:-translate-y-3/4\">\n <Flex\n className={clsx(\n 'ape:justify-between ape:h-[24px] ape:bg-white3 ape:px-[15px] ape:w-full',\n isOpenTraits ? 'ape:rounded-[6px_6px_0px_0px]' : 'ape:rounded-normal',\n )}\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation()\n setIsOpenTraits(!isOpenTraits)\n }}\n >\n <Flex className=\"ape:gap-[10px] ape:items-center\">\n <Tag direction=\"down\" />\n <Text size=\"12px\" weight={400} className=\"ape:opacity-60\">\n Traits\n </Text>\n </Flex>\n <Caret direction={isOpenTraits ? 'up' : 'down'} />\n </Flex>\n <AnimatePresence>\n {isOpenTraits && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n className=\"ape:overflow-hidden ape:w-full ape:absolute ape:top-[24px] ape:rounded-[0_0_10px_10px]\"\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation()\n setIsOpenTraits(!isOpenTraits)\n }}\n >\n <Flex className=\"ape:flex-col\">\n {attributes\n ? attributes.map((a, index) => (\n <Flex\n key={`${a.value}-${index}`}\n className=\"ape:bg-white4 ape:w-full ape:p-[2px_8px] ape:h-[22px]\"\n >\n <Text size=\"10px\" weight={500} className=\"ape:mr-[3px]\">\n {a?.trait_type} -\n </Text>\n <Text size=\"10px\" weight={500}>\n {a?.value}\n </Text>\n </Flex>\n ))\n : BILL_ATTRIBUTES.map((attrib, index) => {\n return (\n <Flex\n key={`${attrib}-${index}`}\n className=\"ape:bg-white4 ape:w-full ape:p-[2px_8px] ape:h-[22px]\"\n >\n <Text size=\"10px\" weight={500}>\n {attrib}\n </Text>\n <Skeleton width=\"150px\" />\n </Flex>\n )\n })}\n </Flex>\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n </Flex>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </>\n )\n}\n\nexport default NftImage\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NFTImage.js","sources":["../../../../../src/views/YourBondsModal/components/NFTImage/NFTImage.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport clsx from 'clsx'\nimport { AnimatePresence, motion, useAnimation } from 'framer-motion'\nimport LinkShare from '../LinkShare/LinkShare'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { useIsMobile } from '../../../../hooks/useIsMobile'\nimport ProgressiveImage from '../../../../components/ProgressiveImage'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport Skeleton from '../../../../components/uikit-sdk/Skeleton'\nimport Tag from '../../../../components/uikit-sdk/Svg/Icons/Tag'\nimport Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret'\n\nconst NftImage = ({\n userBill,\n showNFTImg,\n setShowNFTImg,\n isLpStakingBond = false,\n}: {\n userBill?: UserBill\n showNFTImg: boolean\n setShowNFTImg: (value: boolean) => void\n isLpStakingBond?: boolean // LP staking positions have a placeholder image: no share link and no traits\n}) => {\n // Hooks\n const controls = useAnimation()\n const isMobile = useIsMobile()\n\n // State\n const [isOpenTraits, setIsOpenTraits] = useState<boolean>(false)\n\n //Static Data\n const bondNFTData = userBill?.nftData\n const BILL_ATTRIBUTES = ['The Legend', 'The Location', 'The Moment', 'The Trend', 'The Innovation']\n const attributes = bondNFTData?.attributes?.filter((attrib) => BILL_ATTRIBUTES.includes(attrib.trait_type))\n\n const openAnimation = () => {\n controls.start({\n scale: isMobile ? [1, 2] : [1, 3],\n zIndex: 1000,\n transition: { duration: 0.2 },\n })\n }\n\n const closeAnimation = () => {\n controls.start({\n scale: isMobile ? [2, 1] : [2, 1],\n zIndex: -1,\n transition: { duration: 0.3 },\n })\n setShowNFTImg(false)\n setIsOpenTraits(false)\n }\n return (\n <>\n <AnimatePresence>\n {showNFTImg && !isLpStakingBond && (\n <motion.div\n animate={{ opacity: 1 }}\n transition={{ duration: 1, delay: 0.3 }}\n className=\"ape:absolute ape:flex ape:top-[-180px] ape:sm:top-[-240px] ape:right-[50%] ape:md:right-[-13%] ape:translate-x-[50%] ape:md:translate-x-0 ape:opacity-0 ape:z-[5000]\"\n >\n <LinkShare userBill={userBill} />\n </motion.div>\n )}\n </AnimatePresence>\n <AnimatePresence>\n {bondNFTData?.image && (\n <motion.div\n animate={controls}\n onClick={() => {\n if (showNFTImg) {\n closeAnimation()\n } else {\n openAnimation()\n }\n }}\n onAnimationStart={() => {\n setShowNFTImg(true)\n }}\n className={clsx(\n 'ape:flex ape:-z-[1] ape:bottom-[calc(100%-10px)] ape:left-[25%] ape:w-1/2 ape:aspect-[1/0.56] ape:cursor-pointer ape:rounded-normal ape:flex-col ape:hover:z-[1000] ape:md:hover:z-[1000]!',\n showNFTImg ? 'ape:fixed' : 'ape:absolute',\n )}\n >\n <Flex\n className={clsx(\n showNFTImg ? 'ape:hidden' : 'ape:flex',\n 'ape:absolute ape:z-[121] ape:w-full ape:h-full ape:opacity-0 ape:items-center ape:justify-center ape:font-bold ape:rounded-normal ape:hover:z-[1000] ape:hover:opacity-80 ape:hover:[background:linear-gradient(90deg,rgba(49,46,122,0.70)_0%,rgba(92,79,174,0.70)_100%)] ape:hover:[backdrop-filter:blur(2px)]',\n )}\n >\n View NFT {'>'}\n </Flex>\n {showNFTImg && (\n // custom close icon to keep it centered\n <svg\n className=\"ape:absolute ape:top-[5px] ape:right-[5px] ape:opacity-90\"\n width=\"10px\"\n height=\"10px\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"grey\" />\n <path d=\"M6 6L14 14M14 6L6 14\" stroke=\"#FAFAFA\" strokeWidth=\"2.2\" strokeLinecap=\"round\" />\n </svg>\n )}\n <ProgressiveImage src={`${bondNFTData?.image}`} blurSrc={`https://ape.bond/images/bills/bluredNFT.png`} />\n {showNFTImg && !isLpStakingBond && (\n <Flex className=\"ape:absolute ape:bottom-[-43px] ape:md:-bottom-12.5 ape:w-full ape:justify-center\">\n <Flex className=\"ape:flex-col ape:w-full ape:min-w-[250px] ape:pb-[10px] ape:items-center ape:scale-[0.5] ape:-translate-y-1/2 ape:md:scale-[0.4] ape:md:-translate-y-3/4\">\n <Flex\n className={clsx(\n 'ape:justify-between ape:h-[24px] ape:bg-white3 ape:px-[15px] ape:w-full',\n isOpenTraits ? 'ape:rounded-[6px_6px_0px_0px]' : 'ape:rounded-normal',\n )}\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation()\n setIsOpenTraits(!isOpenTraits)\n }}\n >\n <Flex className=\"ape:gap-[10px] ape:items-center\">\n <Tag direction=\"down\" />\n <Text size=\"12px\" weight={400} className=\"ape:opacity-60\">\n Traits\n </Text>\n </Flex>\n <Caret direction={isOpenTraits ? 'up' : 'down'} />\n </Flex>\n <AnimatePresence>\n {isOpenTraits && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n className=\"ape:overflow-hidden ape:w-full ape:absolute ape:top-[24px] ape:rounded-[0_0_10px_10px]\"\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation()\n setIsOpenTraits(!isOpenTraits)\n }}\n >\n <Flex className=\"ape:flex-col\">\n {attributes\n ? attributes.map((a, index) => (\n <Flex\n key={`${a.value}-${index}`}\n className=\"ape:bg-white4 ape:w-full ape:p-[2px_8px] ape:h-[22px]\"\n >\n <Text size=\"10px\" weight={500} className=\"ape:mr-[3px]\">\n {a?.trait_type} -\n </Text>\n <Text size=\"10px\" weight={500}>\n {a?.value}\n </Text>\n </Flex>\n ))\n : BILL_ATTRIBUTES.map((attrib, index) => {\n return (\n <Flex\n key={`${attrib}-${index}`}\n className=\"ape:bg-white4 ape:w-full ape:p-[2px_8px] ape:h-[22px]\"\n >\n <Text size=\"10px\" weight={500}>\n {attrib}\n </Text>\n <Skeleton width=\"150px\" />\n </Flex>\n )\n })}\n </Flex>\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n </Flex>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </>\n )\n}\n\nexport default NftImage\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,QAAQ,GAAG,CAAC,EAChB,QAAQ,EACR,UAAU,EACV,aAAa,EACb,eAAe,GAAG,KAAK,GAMxB,KAAI;;AAEH,IAAA,MAAM,QAAQ,GAAG,YAAY,EAAE;AAC/B,IAAA,MAAM,QAAQ,GAAG,WAAW,EAAE;;IAG9B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC;;AAGhE,IAAA,MAAM,WAAW,GAAG,QAAQ,EAAE,OAAO;AACrC,IAAA,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC;IACnG,MAAM,UAAU,GAAG,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE3G,MAAM,aAAa,GAAG,MAAK;QACzB,QAAQ,CAAC,KAAK,CAAC;AACb,YAAA,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;AAC9B,SAAA,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,MAAK;QAC1B,QAAQ,CAAC,KAAK,CAAC;AACb,YAAA,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,EAAE,EAAE;AACV,YAAA,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;AAC9B,SAAA,CAAC;QACF,aAAa,CAAC,KAAK,CAAC;QACpB,eAAe,CAAC,KAAK,CAAC;AACxB,IAAA,CAAC;AACD,IAAA,QACEA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACEC,GAAA,CAAC,eAAe,cACb,UAAU,IAAI,CAAC,eAAe,KAC7BA,GAAA,CAAC,MAAM,CAAC,GAAG,EAAA,EACT,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACvB,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EACvC,SAAS,EAAC,sKAAsK,EAAA,QAAA,EAEhLA,GAAA,CAAC,SAAS,EAAA,EAAC,QAAQ,EAAE,QAAQ,GAAI,EAAA,CACtB,CACd,EAAA,CACe,EAClBA,IAAC,eAAe,EAAA,EAAA,QAAA,EACb,WAAW,EAAE,KAAK,KACjBF,IAAA,CAAC,MAAM,CAAC,GAAG,EAAA,EACT,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,MAAK;wBACZ,IAAI,UAAU,EAAE;AACd,4BAAA,cAAc,EAAE;wBAClB;6BAAO;AACL,4BAAA,aAAa,EAAE;wBACjB;AACF,oBAAA,CAAC,EACD,gBAAgB,EAAE,MAAK;wBACrB,aAAa,CAAC,IAAI,CAAC;AACrB,oBAAA,CAAC,EACD,SAAS,EAAE,IAAI,CACb,4LAA4L,EAC5L,UAAU,GAAG,WAAW,GAAG,cAAc,CAC1C,EAAA,QAAA,EAAA,CAEDA,IAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAE,IAAI,CACb,UAAU,GAAG,YAAY,GAAG,UAAU,EACtC,iTAAiT,CAClT,0BAES,GAAG,CAAA,EAAA,CACR,EACN,UAAU,KAETA,IAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,2DAA2D,EACrE,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,EAAA,QAAA,EAAA,CAElCE,GAAA,CAAA,QAAA,EAAA,EAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAA,CAAG,EAC7CA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,sBAAsB,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAA,CAAG,IACtF,CACP,EACDA,GAAA,CAAC,gBAAgB,IAAC,GAAG,EAAE,CAAA,EAAG,WAAW,EAAE,KAAK,CAAA,CAAE,EAAE,OAAO,EAAE,CAAA,2CAAA,CAA6C,EAAA,CAAI,EACzG,UAAU,IAAI,CAAC,eAAe,KAC7BA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,mFAAmF,YACjGF,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,0JAA0J,EAAA,QAAA,EAAA,CACxKA,KAAC,IAAI,EAAA,EACH,SAAS,EAAE,IAAI,CACb,yEAAyE,EACzE,YAAY,GAAG,+BAA+B,GAAG,oBAAoB,CACtE,EACD,OAAO,EAAE,CAAC,KAAuB,KAAI;4CACnC,KAAK,CAAC,eAAe,EAAE;AACvB,4CAAA,eAAe,CAAC,CAAC,YAAY,CAAC;wCAChC,CAAC,EAAA,QAAA,EAAA,CAEDA,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAA,CAC/CE,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAC,MAAM,EAAA,CAAG,EACxBA,GAAA,CAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,QAAA,EAAA,CAElD,CAAA,EAAA,CACF,EACPA,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,EAAA,CAAI,CAAA,EAAA,CAC7C,EACPA,GAAA,CAAC,eAAe,EAAA,EAAA,QAAA,EACb,YAAY,KACXA,IAAC,MAAM,CAAC,GAAG,EAAA,EACT,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EACtB,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAClC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAC1C,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EACnB,SAAS,EAAC,wFAAwF,EAClG,OAAO,EAAE,CAAC,KAAuB,KAAI;gDACnC,KAAK,CAAC,eAAe,EAAE;AACvB,gDAAA,eAAe,CAAC,CAAC,YAAY,CAAC;4CAChC,CAAC,EAAA,QAAA,EAEDA,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,YAC3B;AACC,sDAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MACtBF,IAAA,CAAC,IAAI,EAAA,EAEH,SAAS,EAAC,uDAAuD,EAAA,QAAA,EAAA,CAEjEA,IAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,CACpD,CAAC,EAAE,UAAU,EAAA,IAAA,CAAA,EAAA,CACT,EACPE,GAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,EAAA,QAAA,EAC1B,CAAC,EAAE,KAAK,EAAA,CACJ,KARF,CAAA,EAAG,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CASrB,CACR;sDACD,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AACpC,wDAAA,QACEF,IAAA,CAAC,IAAI,EAAA,EAEH,SAAS,EAAC,uDAAuD,EAAA,QAAA,EAAA,CAEjEE,GAAA,CAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,EAAA,QAAA,EAC1B,MAAM,GACF,EACPA,GAAA,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,CAAG,CAAA,EAAA,EANrB,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAOpB;AAEX,oDAAA,CAAC,CAAC,EAAA,CACD,EAAA,CACI,CACd,EAAA,CACe,CAAA,EAAA,CACb,EAAA,CACF,CACR,CAAA,EAAA,CACU,CACd,EAAA,CACe,CAAA,EAAA,CACjB;AAEP;;;;"}
|