From 54ef4018aec475792034aea005b52550d4c9fb02 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Wed, 21 Jan 2026 12:00:29 -0800 Subject: [PATCH] cleanup for migration helper --- Anchor.toml | 28 +- programs/raydium_migration_helper/Cargo.toml | 32 + programs/raydium_migration_helper/Xargo.toml | 2 + .../raydium_migration_helper/src/error.rs | 19 + .../raydium_migration_helper/src/events.rs | 27 + .../src/instructions/mod.rs | 5 + .../withdraw_and_provide_liquidity.rs | 720 ++++++++ programs/raydium_migration_helper/src/lib.rs | 61 + scripts/v0.5/migrateToV6Raydium.ts | 1464 +++++++++++++++++ scripts/v0.5/previewMigrationRaydium.ts | 844 ++++++++++ .../v0.7/types/raydium_migration_helper.ts | 531 ++++++ .../unit/initializeConditionalVault.test.ts | 28 - tests/fixtures/amm_v5.so | Bin 0 -> 380856 bytes tests/fixtures/autocrat_v5.so | Bin 0 -> 586720 bytes tests/fixtures/launchpad_v5.so | Bin 0 -> 533472 bytes .../futarchy/integration/futarchyAmm.test.ts | 10 +- tests/futarchy/main.test.ts | 3 - tests/futarchy/unit/finalizeProposal.test.ts | 8 - tests/integration/fullLaunch.test.ts | 1 - tests/integration/fullLaunch_v7.test.ts | 1 - tests/integration/migrateToV6Raydium.test.ts | 1391 ++++++++++++++++ tests/main.test.ts | 42 +- .../priceBasedPerformancePackage/main.test.ts | 2 - 23 files changed, 5165 insertions(+), 54 deletions(-) create mode 100644 programs/raydium_migration_helper/Cargo.toml create mode 100644 programs/raydium_migration_helper/Xargo.toml create mode 100644 programs/raydium_migration_helper/src/error.rs create mode 100644 programs/raydium_migration_helper/src/events.rs create mode 100644 programs/raydium_migration_helper/src/instructions/mod.rs create mode 100644 programs/raydium_migration_helper/src/instructions/withdraw_and_provide_liquidity.rs create mode 100644 programs/raydium_migration_helper/src/lib.rs create mode 100644 scripts/v0.5/migrateToV6Raydium.ts create mode 100644 scripts/v0.5/previewMigrationRaydium.ts create mode 100644 sdk/src/v0.7/types/raydium_migration_helper.ts create mode 100644 tests/fixtures/amm_v5.so create mode 100644 tests/fixtures/autocrat_v5.so create mode 100644 tests/fixtures/launchpad_v5.so create mode 100644 tests/integration/migrateToV6Raydium.test.ts diff --git a/Anchor.toml b/Anchor.toml index 10a9ab039..b805c1da3 100644 --- a/Anchor.toml +++ b/Anchor.toml @@ -12,6 +12,7 @@ futarchy = "FUTARELBfJfQ8RDGhg1wdhddq1odMAJUePHFuBYfUxKq" launchpad = "MooNyh4CBUYEKyXVnjGYQ8mEiJDpGvJMdvrZx1iGeHV" launchpad_v7 = "moontUzsdepotRGe5xsfip7vLPTJnVuafqdUWexVnPM" price_based_performance_package = "pbPPQH7jyKoSLu8QYs3rSY3YkDRXEBojKbTgnUg7NDS" +raydium_migration_helper = "migR87BnBEkJbbDECLzRxhmNsQ44WMzhDCpCJhfPvR1" [registry] url = "https://api.apr.dev" @@ -29,6 +30,8 @@ initialize-dao = "yarn run tsx scripts/v0.6/initializeDao.ts" initialize-launch = "yarn run tsx scripts/initializeLaunch.ts" initialize-proposal = "yarn run tsx scripts/v0.5/initializeProposal.ts" migrate-meta = "yarn run tsx scripts/v0.5/migrateMeta.ts" +migrate-to-v6-raydium = "yarn run tsx scripts/v0.5/migrateToV6Raydium.ts" +preview-migration-raydium = "yarn run tsx scripts/v0.5/previewMigrationRaydium.ts" remove-spending-limit = "yarn run tsx scripts/v0.5/squads/removeSpendingLimit.ts" start-launch = "yarn run tsx scripts/v0.5/startLaunch.ts" test = "npx mocha --import=tsx --bail tests/main.test.ts --timeout 5000" @@ -49,7 +52,6 @@ v06-migrate-daos-proposals = "yarn run tsx scripts/v0.6/migrateDaosProposals.ts" v06-create-dao = "yarn run tsx scripts/v0.6/createDao.ts" v06-provide-liquidity = "yarn run tsx scripts/v0.6/provideLiquidity.ts" v06-collect-meteora-damm-fees = "yarn run tsx scripts/v0.6/collectMeteoraDammFees.ts" -v06-return-funds = "yarn run tsx scripts/v0.6/returnFunds.ts" v07-collect-meteora-damm-fees = "yarn run tsx scripts/v0.7/collectMeteoraDammFees.ts" v07-launch-template = "yarn run tsx scripts/v0.7/launchTemplate.ts" v07-start-launch = "yarn run tsx scripts/v0.7/startLaunch.ts" @@ -76,3 +78,27 @@ program = "./tests/fixtures/openbook_twap.so" [[test.genesis]] address = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" program = "./tests/fixtures/mpl_token_metadata.so" + +[[test.genesis]] +address = "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C" +program = "./tests/fixtures/raydium_cp_swap.so" + +[[test.genesis]] +address = "mooNhciQJi1LqHDmse2JPic2NqG2PXCanbE3ZYzP3qA" +program = "./tests/fixtures/launchpad_v5.so" + +[[test.genesis]] +address = "auToUr3CQza3D4qreT6Std2MTomfzvrEeCC5qh7ivW5" +program = "./tests/fixtures/autocrat_v5.so" + +[[test.genesis]] +address = "AMMJdEiCCa8mdugg6JPF7gFirmmxisTfDJoSNSUi5zDJ" +program = "./tests/fixtures/amm_v5.so" + +[[test.genesis]] +address = "VLTX1ishMBbcX3rdBWGssxawAo1Q2X2qxYFYqiGodVg" +program = "./target/deploy/conditional_vault.so" + +[[test.genesis]] +address = "SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf" +program = "./tests/fixtures/squads_multisig.so" diff --git a/programs/raydium_migration_helper/Cargo.toml b/programs/raydium_migration_helper/Cargo.toml new file mode 100644 index 000000000..130302d93 --- /dev/null +++ b/programs/raydium_migration_helper/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "raydium_migration_helper" +version = "0.1.0" +description = "Helper program for migrating autocrat v5 daos to futarchy v6 daos" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "raydium_migration_helper" + +[features] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +cpi = ["no-entrypoint"] +default = [] +production= [] + +[dependencies] +anchor-lang = "0.29.0" +anchor-spl = "0.29.0" +spl-memo = "=4.0.0" +solana-program = "=1.17.14" +spl-token = "=4.0.0" +spl-associated-token-account = "2.2" +ahash = "=0.8.6" +solana-security-txt = "1.1.1" +raydium-cpmm-cpi = { git = "https://github.com/raydium-io/raydium-cpi", package = "raydium-cpmm-cpi", branch = "anchor-0.29.0" } +futarchy = { path = "../futarchy", features = ["cpi"] } +damm_v2_cpi = { path = "../damm_v2_cpi", features = ["cpi"] } + + diff --git a/programs/raydium_migration_helper/Xargo.toml b/programs/raydium_migration_helper/Xargo.toml new file mode 100644 index 000000000..475fb71ed --- /dev/null +++ b/programs/raydium_migration_helper/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] diff --git a/programs/raydium_migration_helper/src/error.rs b/programs/raydium_migration_helper/src/error.rs new file mode 100644 index 000000000..bde82004d --- /dev/null +++ b/programs/raydium_migration_helper/src/error.rs @@ -0,0 +1,19 @@ +use anchor_lang::prelude::*; + +#[error_code] +pub enum RaydiumMigrationError { + #[msg("Insufficient LP token balance")] + InsufficientLpBalance, + + #[msg("Token account owner mismatch")] + TokenAccountOwnerMismatch, + + #[msg("Invalid token mint")] + InvalidTokenMint, + + #[msg("Math overflow error")] + MathOverflow, + + #[msg("Base and quote mints must be different")] + DuplicateTokenMints, +} diff --git a/programs/raydium_migration_helper/src/events.rs b/programs/raydium_migration_helper/src/events.rs new file mode 100644 index 000000000..23853ea6d --- /dev/null +++ b/programs/raydium_migration_helper/src/events.rs @@ -0,0 +1,27 @@ +use anchor_lang::prelude::*; + +#[event] +pub struct MigrationExecuted { + /// The vault authority that executed the migration + pub vault_authority: Pubkey, + /// Amount of LP tokens withdrawn from Raydium + pub lp_amount: u64, + /// Amount of base tokens withdrawn from Raydium LP + pub withdrawn_base: u64, + /// Amount of quote tokens withdrawn from Raydium LP + pub withdrawn_quote: u64, + /// Amount of base tokens sent to Meteora DAMM v2 pool (10%) + pub base_to_meteora: u64, + /// Amount of quote tokens sent to Meteora DAMM v2 pool (10%) + pub quote_to_meteora: u64, + /// Amount of base tokens sent to Futarchy AMM (90%) + pub base_to_futarchy: u64, + /// Amount of quote tokens sent to Futarchy AMM (90%) + pub quote_to_futarchy: u64, + /// The Meteora DAMM v2 pool that was created + pub meteora_pool: Pubkey, + /// Amount of base tokens transferred to V6 vault treasury + pub treasury_base_transferred: u64, + /// Amount of quote tokens transferred to V6 vault treasury + pub treasury_quote_transferred: u64, +} diff --git a/programs/raydium_migration_helper/src/instructions/mod.rs b/programs/raydium_migration_helper/src/instructions/mod.rs new file mode 100644 index 000000000..dcba676f3 --- /dev/null +++ b/programs/raydium_migration_helper/src/instructions/mod.rs @@ -0,0 +1,5 @@ +use super::*; + +pub mod withdraw_and_provide_liquidity; + +pub use withdraw_and_provide_liquidity::*; diff --git a/programs/raydium_migration_helper/src/instructions/withdraw_and_provide_liquidity.rs b/programs/raydium_migration_helper/src/instructions/withdraw_and_provide_liquidity.rs new file mode 100644 index 000000000..9db7502a4 --- /dev/null +++ b/programs/raydium_migration_helper/src/instructions/withdraw_and_provide_liquidity.rs @@ -0,0 +1,720 @@ +use super::*; + +#[derive(Accounts)] +pub struct MeteoraAccounts<'info> { + pub damm_v2_program: Program<'info, DammV2Cpi>, + + /// CHECK: checked by damm v2 program - custom Meteora config + pub config: UncheckedAccount<'info>, + + pub token_2022_program: Program<'info, Token2022>, + + /// CHECK: checked by damm v2 program + #[account(mut, seeds = [POSITION_NFT_ACCOUNT_PREFIX.as_ref(), position_nft_mint.key().as_ref()], bump, seeds::program = damm_v2_program)] + pub position_nft_account: UncheckedAccount<'info>, + + /// CHECK: checked by damm v2 program + #[account(mut, seeds = [ + POOL_PREFIX.as_ref(), + config.key().as_ref(), + &max_key(&base_mint.key(), "e_mint.key()), + &min_key(&base_mint.key(), "e_mint.key()), + ], bump, seeds::program = damm_v2_program)] + pub pool: UncheckedAccount<'info>, + + /// CHECK: checked by damm v2 program + #[account(mut, seeds = [POSITION_PREFIX.as_ref(), position_nft_mint.key().as_ref()], bump, seeds::program = damm_v2_program)] + pub position: UncheckedAccount<'info>, + + /// CHECK: checked by damm v2 program - PDA derived from base_mint for uniqueness + #[account(mut, seeds = [b"position_nft_mint", base_mint.key().as_ref()], bump)] + pub position_nft_mint: UncheckedAccount<'info>, + + /// CHECK: references from root struct + pub base_mint: UncheckedAccount<'info>, + + /// CHECK: references from root struct + pub quote_mint: UncheckedAccount<'info>, + + /// CHECK: checked by damm v2 program + #[account(mut, seeds = [ + TOKEN_VAULT_PREFIX.as_ref(), + base_mint.key().as_ref(), + pool.key().as_ref(), + ], bump, seeds::program = damm_v2_program)] + pub token_a_vault: UncheckedAccount<'info>, + + /// CHECK: checked by damm v2 program + #[account(mut, seeds = [ + TOKEN_VAULT_PREFIX.as_ref(), + quote_mint.key().as_ref(), + pool.key().as_ref(), + ], bump, seeds::program = damm_v2_program)] + pub token_b_vault: UncheckedAccount<'info>, + + /// CHECK: checked by damm v2 program - global authority for pool creation + #[account(seeds = [b"damm_pool_creator_authority"], bump)] + pub pool_creator_authority: UncheckedAccount<'info>, + + /// CHECK: checked by damm v2 program + #[account(seeds = [POOL_AUTHORITY_PREFIX.as_ref()], bump, seeds::program = damm_v2_program)] + pub pool_authority: UncheckedAccount<'info>, + + /// CHECK: checked by damm v2 program + pub damm_v2_event_authority: UncheckedAccount<'info>, +} + +#[derive(Accounts)] +pub struct WithdrawAndProvideLiquidity<'info> { + /// The vault/DAO that owns the LP tokens (must sign) + /// This will be the V5 vault PDA signing via Squads + #[account(mut)] + pub vault_authority: Signer<'info>, + + /// Migration signer PDA - used to sign for Meteora CPI token transfers + /// Seeds: ["migration_signer", base_mint] + /// CHECK: PDA owned by this program, validated by seeds + #[account( + mut, + seeds = [b"migration_signer", base_mint.key().as_ref()], + bump + )] + pub migration_signer: UncheckedAccount<'info>, + + /// Migration signer's base token account (receives tokens from vault, transfers to Meteora) + #[account( + mut, + token::mint = base_mint, + token::authority = migration_signer, + )] + pub migration_signer_base_ata: Account<'info, TokenAccount>, + + /// Migration signer's quote token account (receives tokens from vault, transfers to Meteora) + #[account( + mut, + token::mint = quote_mint, + token::authority = migration_signer, + )] + pub migration_signer_quote_ata: Account<'info, TokenAccount>, + + // ===== Raydium Withdrawal Accounts ===== + /// Raydium CPMM pool state + /// CHECK: Validated by Raydium CPMM program via CPI - program verifies pool ownership and structure + #[account(mut)] + pub pool_state: UncheckedAccount<'info>, + + /// LP token mint + #[account(mut)] + pub lp_mint: Account<'info, Mint>, + + /// Vault's LP token account (will be burned from) + #[account( + mut, + constraint = vault_lp_token.owner == vault_authority.key() @ RaydiumMigrationError::TokenAccountOwnerMismatch, + constraint = vault_lp_token.mint == lp_mint.key() @ RaydiumMigrationError::InvalidTokenMint, + )] + pub vault_lp_token: Account<'info, TokenAccount>, + + /// Vault's token0 account (will receive tokens from pool) + /// Note: token0/token1 ordering is derived from base_mint/quote_mint pubkey comparison + #[account( + mut, + constraint = vault_token0.owner == vault_authority.key() @ RaydiumMigrationError::TokenAccountOwnerMismatch, + )] + pub vault_token0: Account<'info, TokenAccount>, + + /// Vault's token1 account (will receive tokens from pool) + /// Note: token0/token1 ordering is derived from base_mint/quote_mint pubkey comparison + #[account( + mut, + constraint = vault_token1.owner == vault_authority.key() @ RaydiumMigrationError::TokenAccountOwnerMismatch, + )] + pub vault_token1: Account<'info, TokenAccount>, + + // ===== V6 Futarchy AMM Accounts ===== + /// V6 DAO account + /// CHECK: Validated by futarchy program via CPI - program verifies DAO ownership and state + #[account(mut)] + pub dao: UncheckedAccount<'info>, + + /// Base token mint (used for determining token0/token1 -> base/quote mapping) + pub base_mint: Account<'info, Mint>, + + /// Quote token mint (used for determining token0/token1 -> base/quote mapping) + pub quote_mint: Account<'info, Mint>, + + /// Raydium authority PDA + /// CHECK: Validated by Raydium program via CPI - derived from pool state seeds + pub raydium_authority: UncheckedAccount<'info>, + + /// Pool's token0 vault + /// CHECK: Validated by Raydium program via CPI - program verifies vault ownership + #[account(mut)] + pub pool_token0_vault: UncheckedAccount<'info>, + + /// Pool's token1 vault + /// CHECK: Validated by Raydium program via CPI - program verifies vault ownership + #[account(mut)] + pub pool_token1_vault: UncheckedAccount<'info>, + + /// AMM position PDA (owned by futarchy program) + /// CHECK: Created/validated by futarchy program via CPI - PDA derived from dao + position_authority + #[account(mut)] + pub amm_position: UncheckedAccount<'info>, + + /// AMM base vault (owned by DAO) + /// CHECK: Validated by futarchy program via CPI - program verifies vault ownership by DAO + #[account(mut)] + pub amm_base_vault: UncheckedAccount<'info>, + + /// AMM quote vault (owned by DAO) + /// CHECK: Validated by futarchy program via CPI - program verifies vault ownership by DAO + #[account(mut)] + pub amm_quote_vault: UncheckedAccount<'info>, + + /// V6 vault base treasury ATA (receives remaining base tokens after liquidity provision) + /// CHECK: Token account validated by SPL token program during transfer - must be valid ATA + #[account(mut)] + pub v6_vault_base_ata: UncheckedAccount<'info>, + + /// V6 vault quote treasury ATA (receives remaining quote tokens after liquidity provision) + /// CHECK: Token account validated by SPL token program during transfer - must be valid ATA + #[account(mut)] + pub v6_vault_quote_ata: UncheckedAccount<'info>, + + /// V6 vault PDA (will be the position authority for the AMM position) + /// This is separate from vault_authority (V5 vault) which signs the transaction + /// CHECK: Used as position_authority in futarchy CPI - futarchy validates during provide_liquidity + pub v6_vault_pda: UncheckedAccount<'info>, + + /// Event authority for futarchy CPI events + /// CHECK: Required by futarchy #[event_cpi] - PDA derived from futarchy program ID + pub event_authority: UncheckedAccount<'info>, + + // ===== Programs ===== + /// Raydium CPMM program + pub raydium_program: Program<'info, RaydiumCpmm>, + + /// Futarchy v0.6 program + pub futarchy_program: Program<'info, Futarchy>, + + /// SPL Token program + pub token_program: Program<'info, Token>, + + /// SPL Token 2022 program (required by Raydium for Token-2022 support) + /// CHECK: Passed to Raydium CPI - Raydium validates program ID internally + pub token_program_2022: UncheckedAccount<'info>, + + /// System program + pub system_program: Program<'info, System>, + + /// Memo program (required by Raydium for withdrawal logs) + /// CHECK: Passed to Raydium CPI - Raydium validates memo program ID + pub memo_program: UncheckedAccount<'info>, + + // ===== Meteora DAMM v2 Accounts ===== + pub meteora_accounts: MeteoraAccounts<'info>, +} + +impl WithdrawAndProvideLiquidity<'_> { + pub fn validate(&self, lp_amount: u64) -> Result<()> { + // Validate base and quote mints are different + require!( + self.base_mint.key() != self.quote_mint.key(), + RaydiumMigrationError::DuplicateTokenMints + ); + + // Derive token0/token1 ordering from base/quote mints + let base_is_token0 = self.base_mint.key() < self.quote_mint.key(); + + // Validate that vault token accounts match the expected base/quote mints + let expected_token0_mint = if base_is_token0 { + self.base_mint.key() + } else { + self.quote_mint.key() + }; + let expected_token1_mint = if base_is_token0 { + self.quote_mint.key() + } else { + self.base_mint.key() + }; + + require!( + self.vault_token0.mint == expected_token0_mint, + RaydiumMigrationError::InvalidTokenMint + ); + require!( + self.vault_token1.mint == expected_token1_mint, + RaydiumMigrationError::InvalidTokenMint + ); + + // Validate LP amount and balance + require!(lp_amount > 0, RaydiumMigrationError::InsufficientLpBalance); + require!( + self.vault_lp_token.amount >= lp_amount, + RaydiumMigrationError::InsufficientLpBalance + ); + + Ok(()) + } + + pub fn handle( + ctx: Context, + lp_amount: u64, + min_raydium_amount_0: u64, + min_raydium_amount_1: u64, + min_futarchy_liquidity: u64, + ) -> Result<()> { + // Derive token0/token1 ordering from base/quote mints + let base_is_token0 = ctx.accounts.base_mint.key() < ctx.accounts.quote_mint.key(); + + // 1. Snapshot current vault token balances BEFORE Raydium withdrawal + let token0_balance_before = ctx.accounts.vault_token0.amount; + let token1_balance_before = ctx.accounts.vault_token1.amount; + + // 2. Execute Raydium withdraw CPI + raydium_cpmm_cpi::cpi::withdraw( + CpiContext::new( + ctx.accounts.raydium_program.to_account_info(), + raydium_cpmm_cpi::cpi::accounts::Withdraw { + owner: ctx.accounts.vault_authority.to_account_info(), + authority: ctx.accounts.raydium_authority.to_account_info(), + pool_state: ctx.accounts.pool_state.to_account_info(), + owner_lp_token: ctx.accounts.vault_lp_token.to_account_info(), + token_0_account: ctx.accounts.vault_token0.to_account_info(), + token_1_account: ctx.accounts.vault_token1.to_account_info(), + token_0_vault: ctx.accounts.pool_token0_vault.to_account_info(), + token_1_vault: ctx.accounts.pool_token1_vault.to_account_info(), + token_program: ctx.accounts.token_program.to_account_info(), + token_program_2022: ctx.accounts.token_program_2022.to_account_info(), + vault_0_mint: if base_is_token0 { + ctx.accounts.base_mint.to_account_info() + } else { + ctx.accounts.quote_mint.to_account_info() + }, + vault_1_mint: if base_is_token0 { + ctx.accounts.quote_mint.to_account_info() + } else { + ctx.accounts.base_mint.to_account_info() + }, + lp_mint: ctx.accounts.lp_mint.to_account_info(), + memo_program: ctx.accounts.memo_program.to_account_info(), + }, + ), + lp_amount, + min_raydium_amount_0, + min_raydium_amount_1, + )?; + + // 3. Reload token accounts and calculate withdrawn amounts (delta) + ctx.accounts.vault_token0.reload()?; + ctx.accounts.vault_token1.reload()?; + + let withdrawn_token0 = ctx + .accounts + .vault_token0 + .amount + .checked_sub(token0_balance_before) + .ok_or(RaydiumMigrationError::MathOverflow)?; + let withdrawn_token1 = ctx + .accounts + .vault_token1 + .amount + .checked_sub(token1_balance_before) + .ok_or(RaydiumMigrationError::MathOverflow)?; + + // 4. Map token0/token1 to base/quote using the ordering we derived earlier + let (withdrawn_base, withdrawn_quote) = if base_is_token0 { + (withdrawn_token0, withdrawn_token1) + } else { + (withdrawn_token1, withdrawn_token0) + }; + + // 5. Calculate split: 90% to futarchy, 10% to Meteora (both base AND quote) + let base_to_meteora = withdrawn_base / 10; // 10% + let base_to_futarchy = withdrawn_base - base_to_meteora; // 90% + + let quote_to_meteora = withdrawn_quote / 10; // 10% + let quote_to_futarchy = withdrawn_quote - quote_to_meteora; // 90% + + // 6. Transfer 10% of tokens to migration_signer's accounts for Meteora CPI + let (migration_signer_base_source, migration_signer_quote_source) = if base_is_token0 { + ( + ctx.accounts.vault_token0.to_account_info(), + ctx.accounts.vault_token1.to_account_info(), + ) + } else { + ( + ctx.accounts.vault_token1.to_account_info(), + ctx.accounts.vault_token0.to_account_info(), + ) + }; + + // Transfer base tokens to migration_signer + let transfer_base_to_signer_ix = spl_token::instruction::transfer( + &ctx.accounts.token_program.key(), + &migration_signer_base_source.key(), + &ctx.accounts.migration_signer_base_ata.key(), + &ctx.accounts.vault_authority.key(), + &[], + base_to_meteora, + )?; + + invoke( + &transfer_base_to_signer_ix, + &[ + migration_signer_base_source.clone(), + ctx.accounts.migration_signer_base_ata.to_account_info(), + ctx.accounts.vault_authority.to_account_info(), + ], + )?; + + // Transfer quote tokens to migration_signer + let transfer_quote_to_signer_ix = spl_token::instruction::transfer( + &ctx.accounts.token_program.key(), + &migration_signer_quote_source.key(), + &ctx.accounts.migration_signer_quote_ata.key(), + &ctx.accounts.vault_authority.key(), + &[], + quote_to_meteora, + )?; + + invoke( + &transfer_quote_to_signer_ix, + &[ + migration_signer_quote_source.clone(), + ctx.accounts.migration_signer_quote_ata.to_account_info(), + ctx.accounts.vault_authority.to_account_info(), + ], + )?; + + // Verify transfers succeeded by reloading and checking balances + ctx.accounts.migration_signer_base_ata.reload()?; + ctx.accounts.migration_signer_quote_ata.reload()?; + + require!( + ctx.accounts.migration_signer_base_ata.amount >= base_to_meteora, + RaydiumMigrationError::InsufficientLpBalance + ); + require!( + ctx.accounts.migration_signer_quote_ata.amount >= quote_to_meteora, + RaydiumMigrationError::InsufficientLpBalance + ); + + // 7. Create Meteora DAMM v2 pool with 10% of tokens (two-sided liquidity) + msg!( + "Before Meteora CPI - migration_signer base: {}, quote: {}", + ctx.accounts.migration_signer_base_ata.amount, + ctx.accounts.migration_signer_quote_ata.amount + ); + + ctx.accounts.create_meteora_pool( + base_to_meteora, + quote_to_meteora, + base_is_token0, + ctx.bumps.migration_signer, + ctx.bumps.meteora_accounts.position_nft_mint, + ctx.bumps.meteora_accounts.pool_creator_authority, + )?; + + // Check if tokens were deducted after Meteora CPI + ctx.accounts.migration_signer_base_ata.reload()?; + ctx.accounts.migration_signer_quote_ata.reload()?; + msg!( + "After Meteora CPI - migration_signer base: {}, quote: {}", + ctx.accounts.migration_signer_base_ata.amount, + ctx.accounts.migration_signer_quote_ata.amount + ); + + // 8. CPI to V6 futarchy program to provide liquidity with 90% of tokens + ctx.accounts.vault_token0.reload()?; + ctx.accounts.vault_token1.reload()?; + msg!( + "Before Futarchy CPI - vault_token0: {}, vault_token1: {}", + ctx.accounts.vault_token0.amount, + ctx.accounts.vault_token1.amount + ); + msg!( + "Futarchy params - quote_to_futarchy: {}, base_to_futarchy: {}, min_liquidity: {}", + quote_to_futarchy, + base_to_futarchy, + min_futarchy_liquidity + ); + + let (liquidity_provider_base_info, liquidity_provider_quote_info) = if base_is_token0 { + ( + ctx.accounts.vault_token0.to_account_info(), + ctx.accounts.vault_token1.to_account_info(), + ) + } else { + ( + ctx.accounts.vault_token1.to_account_info(), + ctx.accounts.vault_token0.to_account_info(), + ) + }; + + futarchy::cpi::provide_liquidity( + CpiContext::new( + ctx.accounts.futarchy_program.to_account_info(), + futarchy::cpi::accounts::ProvideLiquidity { + dao: ctx.accounts.dao.to_account_info(), + liquidity_provider: ctx.accounts.vault_authority.to_account_info(), + liquidity_provider_base_account: liquidity_provider_base_info, + liquidity_provider_quote_account: liquidity_provider_quote_info, + payer: ctx.accounts.vault_authority.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + amm_base_vault: ctx.accounts.amm_base_vault.to_account_info(), + amm_quote_vault: ctx.accounts.amm_quote_vault.to_account_info(), + amm_position: ctx.accounts.amm_position.to_account_info(), + token_program: ctx.accounts.token_program.to_account_info(), + event_authority: ctx.accounts.event_authority.to_account_info(), + program: ctx.accounts.futarchy_program.to_account_info(), + }, + ), + ProvideLiquidityParams { + quote_amount: quote_to_futarchy, + max_base_amount: base_to_futarchy, + min_liquidity: min_futarchy_liquidity as u128, + position_authority: ctx.accounts.v6_vault_pda.key(), + }, + )?; + + msg!("Futarchy provide_liquidity CPI completed"); + + // 9. Transfer REMAINING balances to V6 vault treasury + ctx.accounts.vault_token0.reload()?; + ctx.accounts.vault_token1.reload()?; + + let remaining_token0 = ctx.accounts.vault_token0.amount; + let remaining_token1 = ctx.accounts.vault_token1.amount; + + // Transfer remaining token0 to appropriate V6 vault treasury ATA + if remaining_token0 > 0 { + let (destination_key, destination_account_info) = if base_is_token0 { + ( + ctx.accounts.v6_vault_base_ata.key(), + ctx.accounts.v6_vault_base_ata.to_account_info(), + ) + } else { + ( + ctx.accounts.v6_vault_quote_ata.key(), + ctx.accounts.v6_vault_quote_ata.to_account_info(), + ) + }; + + let transfer_ix = spl_token::instruction::transfer( + &ctx.accounts.token_program.key(), + &ctx.accounts.vault_token0.key(), + &destination_key, + &ctx.accounts.vault_authority.key(), + &[], + remaining_token0, + )?; + + invoke( + &transfer_ix, + &[ + ctx.accounts.vault_token0.to_account_info(), + destination_account_info, + ctx.accounts.vault_authority.to_account_info(), + ], + )?; + } + + // Transfer remaining token1 to appropriate V6 vault treasury ATA + if remaining_token1 > 0 { + let (destination_key, destination_account_info) = if base_is_token0 { + ( + ctx.accounts.v6_vault_quote_ata.key(), + ctx.accounts.v6_vault_quote_ata.to_account_info(), + ) + } else { + ( + ctx.accounts.v6_vault_base_ata.key(), + ctx.accounts.v6_vault_base_ata.to_account_info(), + ) + }; + + let transfer_ix = spl_token::instruction::transfer( + &ctx.accounts.token_program.key(), + &ctx.accounts.vault_token1.key(), + &destination_key, + &ctx.accounts.vault_authority.key(), + &[], + remaining_token1, + )?; + + invoke( + &transfer_ix, + &[ + ctx.accounts.vault_token1.to_account_info(), + destination_account_info, + ctx.accounts.vault_authority.to_account_info(), + ], + )?; + } + + // Map remaining token0/token1 to base/quote for event + let (treasury_base_transferred, treasury_quote_transferred) = if base_is_token0 { + (remaining_token0, remaining_token1) + } else { + (remaining_token1, remaining_token0) + }; + + // 10. Emit migration event for audit trail + emit!(MigrationExecuted { + vault_authority: ctx.accounts.vault_authority.key(), + lp_amount, + withdrawn_base, + withdrawn_quote, + base_to_meteora, + quote_to_meteora, + base_to_futarchy, + quote_to_futarchy, + meteora_pool: ctx.accounts.meteora_accounts.pool.key(), + treasury_base_transferred, + treasury_quote_transferred, + }); + + Ok(()) + } + + #[inline(never)] + fn create_meteora_pool( + &self, + base_to_meteora: u64, + quote_to_meteora: u64, + _base_is_token0: bool, + migration_signer_bump: u8, + position_nft_mint_bump: u8, + pool_creator_authority_bump: u8, + ) -> Result<()> { + let base_mint_key = self.base_mint.key(); + + // Migration signer seeds - this PDA will sign for token transfers to Meteora + let migration_signer_seeds = &[ + b"migration_signer".as_ref(), + base_mint_key.as_ref(), + &[migration_signer_bump], + ]; + + let position_nft_mint_signer_seeds = &[ + b"position_nft_mint".as_ref(), + base_mint_key.as_ref(), + &[position_nft_mint_bump], + ]; + + let pool_creator_authority_signer_seeds = &[ + b"damm_pool_creator_authority".as_ref(), + &[pool_creator_authority_bump], + ]; + + // Include migration_signer_seeds so it can sign for token transfers + let pool_init_signer = &[ + &migration_signer_seeds[..], + &position_nft_mint_signer_seeds[..], + &pool_creator_authority_signer_seeds[..], + ]; + + // Calculate price from the token amounts: price = quote / base + let float_price = quote_to_meteora as f64 / base_to_meteora as f64; + let sqrt_price_float = float_price.sqrt(); + // sqrt_price in Q64.64 format (scaled by 2^64) for the CPI + let sqrt_price = (sqrt_price_float * 2_f64.powf(64.0)) as u128; + + // Calculate liquidity for TWO-SIDED full-range position (MIN to MAX) + let liquidity = (base_to_meteora as u128) + .checked_mul(sqrt_price) + .ok_or(RaydiumMigrationError::MathOverflow)?; + + msg!( + "Meteora two-sided liquidity calc: base={}, quote={}, sqrt_price={}, liquidity={}", + base_to_meteora, + quote_to_meteora, + sqrt_price, + liquidity + ); + + msg!("Meteora liquidity: {}", liquidity); + msg!( + "Meteora pool: {}, token_a_vault: {}, token_b_vault: {}", + self.meteora_accounts.pool.key(), + self.meteora_accounts.token_a_vault.key(), + self.meteora_accounts.token_b_vault.key() + ); + + // Meteora requires token_b (quote) to be SOL or USDC + let payer_token_a = self.migration_signer_base_ata.to_account_info(); + let payer_token_b = self.migration_signer_quote_ata.to_account_info(); + + damm_v2_cpi::cpi::initialize_pool_with_dynamic_config( + CpiContext::new_with_signer( + self.meteora_accounts.damm_v2_program.to_account_info(), + damm_v2_cpi::cpi::accounts::InitializePoolWithDynamicConfigCtx { + creator: self.v6_vault_pda.to_account_info(), + position_nft_mint: self.meteora_accounts.position_nft_mint.to_account_info(), + position_nft_account: self + .meteora_accounts + .position_nft_account + .to_account_info(), + payer: self.migration_signer.to_account_info(), + pool_creator_authority: self + .meteora_accounts + .pool_creator_authority + .to_account_info(), + config: self.meteora_accounts.config.to_account_info(), + pool_authority: self.meteora_accounts.pool_authority.to_account_info(), + token_a_vault: self.meteora_accounts.token_a_vault.to_account_info(), + token_b_vault: self.meteora_accounts.token_b_vault.to_account_info(), + payer_token_a, + payer_token_b, + token_a_program: self.token_program.to_account_info(), + token_b_program: self.token_program.to_account_info(), + token_2022_program: self.meteora_accounts.token_2022_program.to_account_info(), + system_program: self.system_program.to_account_info(), + pool: self.meteora_accounts.pool.to_account_info(), + position: self.meteora_accounts.position.to_account_info(), + token_a_mint: self.base_mint.to_account_info(), + token_b_mint: self.quote_mint.to_account_info(), + event_authority: self + .meteora_accounts + .damm_v2_event_authority + .to_account_info(), + program: self.meteora_accounts.damm_v2_program.to_account_info(), + }, + pool_init_signer, + ), + damm_v2_cpi::InitializeCustomizablePoolParameters { + pool_fees: damm_v2_cpi::PoolFeeParameters { + base_fee: BaseFeeParameters { + cliff_fee_numerator: 5000000, // 0.5% + number_of_period: 0, + period_frequency: 0, + reduction_factor: 0, + fee_scheduler_mode: 0, + }, + padding: [0; 3], + dynamic_fee: None, + }, + activation_point: None, + activation_type: 0, + collect_fee_mode: 0, + sqrt_min_price: MIN_SQRT_PRICE, + sqrt_max_price: MAX_SQRT_PRICE, + has_alpha_vault: false, + liquidity, + sqrt_price, + }, + ) + } +} + +// ===== Helper Functions ===== + +pub fn max_key(left: &Pubkey, right: &Pubkey) -> [u8; 32] { + std::cmp::max(left, right).to_bytes() +} + +pub fn min_key(left: &Pubkey, right: &Pubkey) -> [u8; 32] { + std::cmp::min(left, right).to_bytes() +} diff --git a/programs/raydium_migration_helper/src/lib.rs b/programs/raydium_migration_helper/src/lib.rs new file mode 100644 index 000000000..b52bff4a6 --- /dev/null +++ b/programs/raydium_migration_helper/src/lib.rs @@ -0,0 +1,61 @@ +use anchor_lang::prelude::*; +use anchor_lang::solana_program::program::invoke; +use anchor_spl::token::{Mint, Token, TokenAccount}; +use anchor_spl::token_2022::Token2022; +use damm_v2_cpi::constants::seeds::{ + POOL_AUTHORITY_PREFIX, POOL_PREFIX, POSITION_NFT_ACCOUNT_PREFIX, POSITION_PREFIX, + TOKEN_VAULT_PREFIX, +}; +use damm_v2_cpi::constants::{MAX_SQRT_PRICE, MIN_SQRT_PRICE}; +use damm_v2_cpi::program::DammV2Cpi; +use damm_v2_cpi::BaseFeeParameters; +use futarchy::program::Futarchy; +use futarchy::ProvideLiquidityParams; +use raydium_cpmm_cpi::program::RaydiumCpmm; +use spl_token; + +pub mod error; +pub mod events; +pub mod instructions; + +pub use error::*; +pub use events::*; +pub use instructions::*; + +#[cfg(not(feature = "no-entrypoint"))] +use solana_security_txt::security_txt; + +#[cfg(not(feature = "no-entrypoint"))] +security_txt! { + name: "raydium_migration_helper", + project_url: "https://metadao.fi", + contacts: "telegram:metaproph3t,telegram:kollan_house", + source_code: "https://github.com/metaDAOproject/programs", + source_release: "v0.1.0", + policy: "The market will decide whether we pay a bug bounty.", + acknowledgements: "Helper program for atomically withdrawing Raydium LP and providing liquidity to futarchy V6 AMM" +} + +declare_id!("migR87BnBEkJbbDECLzRxhmNsQ44WMzhDCpCJhfPvR1"); + +#[program] +pub mod raydium_migration_helper { + use super::*; + + #[access_control(ctx.accounts.validate(lp_amount))] + pub fn withdraw_and_provide_liquidity( + ctx: Context, + lp_amount: u64, + min_raydium_amount_0: u64, + min_raydium_amount_1: u64, + min_futarchy_liquidity: u64, + ) -> Result<()> { + WithdrawAndProvideLiquidity::handle( + ctx, + lp_amount, + min_raydium_amount_0, + min_raydium_amount_1, + min_futarchy_liquidity, + ) + } +} diff --git a/scripts/v0.5/migrateToV6Raydium.ts b/scripts/v0.5/migrateToV6Raydium.ts new file mode 100644 index 000000000..59dc53afe --- /dev/null +++ b/scripts/v0.5/migrateToV6Raydium.ts @@ -0,0 +1,1464 @@ +import "dotenv/config"; +import { + PublicKey, + Transaction, + VersionedTransaction, + LAMPORTS_PER_SOL, + SystemProgram, + TransactionMessage, + ComputeBudgetProgram, + AddressLookupTableProgram, + AddressLookupTableAccount, + Keypair, +} from "@solana/web3.js"; +import * as anchor from "@coral-xyz/anchor"; +import { BN } from "bn.js"; +import * as multisig from "@sqds/multisig"; +import { + createSetAuthorityInstruction, + AuthorityType, + getAssociatedTokenAddressSync, + createAssociatedTokenAccountIdempotentInstruction, + getMint, + TOKEN_PROGRAM_ID, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; +import { + getMetadataAccountDataSerializer, + updateMetadataAccountV2, +} from "@metaplex-foundation/mpl-token-metadata"; +import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; +import { + publicKey as UmiPublicKey, + createNoopSigner, +} from "@metaplex-foundation/umi"; +import { toWeb3JsInstruction } from "@metaplex-foundation/umi-web3js-adapters"; +import { sha256 } from "@noble/hashes/sha256"; + +import { + AutocratClient, + AmmClient, + ConditionalVaultClient, + AUTOCRAT_PROGRAM_ID, + PERMISSIONLESS_ACCOUNT, + getProposalAddr, + getMetadataAddr, + InstructionUtils, + LAUNCHPAD_PROGRAM_ID, + RAYDIUM_CP_SWAP_PROGRAM_ID, + RAYDIUM_AUTHORITY, + getLiquidityPoolAddr, + getRaydiumCpmmLpMintAddr, + getRaydiumCpmmPoolVaultAddr, +} from "@metadaoproject/futarchy/v0.5"; + +import { + FutarchyClient as FutarchyClientV6, + DAMM_V2_PROGRAM_ID, +} from "@metadaoproject/futarchy/v0.6"; + +import { getSquadsPdasFromDao } from "../utils/squads.js"; +import { + sendBundle, + getTipAccounts, + getTipFloor, + getBundleStatuses, +} from "../utils/bundles.js"; +import { IDL as RaydiumMigrationHelperIDL } from "../../target/types/raydium_migration_helper.js"; + +// ===== CONFIGURATION ===== +// V5 DAO to migrate FROM +const V5_DAO_ADDRESS = new PublicKey( + "9NCPLEFgiu4XZdp9wtWMc1mXyY26VGeWsoKHCAPP3bAo", +); + +// V6 DAO to migrate TO (must already be initialized) +const V6_DAO_ADDRESS = new PublicKey( + "Cn2wML7SWX2x5mroSKp5eSd9QEkBRjccAXqQ9YWiwZNx", +); + +// Set to true to create full futarchy proposal with Jito bundle +// Set to false to only create Squads proposal (for testing/simulation) +const FULL_PROPOSAL = false; + +// Program IDs +const MEMO_PROGRAM_ID = new PublicKey( + "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", +); +const RAYDIUM_MIGRATION_HELPER_PROGRAM_ID = new PublicKey( + "migR87BnBEkJbbDECLzRxhmNsQ44WMzhDCpCJhfPvR1", +); +const MIGRATION_METEORA_CONFIG = new PublicKey( + "5FSCTMuJcrsahe8nB7P3LooAYv5U5GNgBPY8JYjWKfHr", +); +// ========================= + +// ===== UTILS ===== +function maxKey(left: PublicKey, right: PublicKey): Buffer { + const leftBuffer = left.toBuffer(); + const rightBuffer = right.toBuffer(); + for (let i = 0; i < 32; i++) { + if (leftBuffer[i] > rightBuffer[i]) return leftBuffer; + if (leftBuffer[i] < rightBuffer[i]) return rightBuffer; + } + return leftBuffer; +} + +function minKey(left: PublicKey, right: PublicKey): Buffer { + const leftBuffer = left.toBuffer(); + const rightBuffer = right.toBuffer(); + for (let i = 0; i < 32; i++) { + if (leftBuffer[i] < rightBuffer[i]) return leftBuffer; + if (leftBuffer[i] > rightBuffer[i]) return rightBuffer; + } + return leftBuffer; +} + +function getMeteoraPdas(baseMint: PublicKey, quoteMint: PublicKey) { + const [migrationSigner] = PublicKey.findProgramAddressSync( + [Buffer.from("migration_signer"), baseMint.toBuffer()], + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + ); + + const [positionNftMint] = PublicKey.findProgramAddressSync( + [Buffer.from("position_nft_mint"), baseMint.toBuffer()], + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + ); + + const [poolCreatorAuthority] = PublicKey.findProgramAddressSync( + [Buffer.from("damm_pool_creator_authority")], + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + ); + + const [pool] = PublicKey.findProgramAddressSync( + [ + Buffer.from("pool"), + MIGRATION_METEORA_CONFIG.toBuffer(), + maxKey(baseMint, quoteMint), + minKey(baseMint, quoteMint), + ], + DAMM_V2_PROGRAM_ID, + ); + + const [positionNftAccount] = PublicKey.findProgramAddressSync( + [Buffer.from("position_nft_account"), positionNftMint.toBuffer()], + DAMM_V2_PROGRAM_ID, + ); + + const [position] = PublicKey.findProgramAddressSync( + [Buffer.from("position"), positionNftMint.toBuffer()], + DAMM_V2_PROGRAM_ID, + ); + + const [tokenAVault] = PublicKey.findProgramAddressSync( + [Buffer.from("token_vault"), baseMint.toBuffer(), pool.toBuffer()], + DAMM_V2_PROGRAM_ID, + ); + + const [tokenBVault] = PublicKey.findProgramAddressSync( + [Buffer.from("token_vault"), quoteMint.toBuffer(), pool.toBuffer()], + DAMM_V2_PROGRAM_ID, + ); + + const [poolAuthority] = PublicKey.findProgramAddressSync( + [Buffer.from("pool_authority")], + DAMM_V2_PROGRAM_ID, + ); + + const [dammV2EventAuthority] = PublicKey.findProgramAddressSync( + [Buffer.from("__event_authority")], + DAMM_V2_PROGRAM_ID, + ); + + const migrationSignerBaseAta = getAssociatedTokenAddressSync( + baseMint, + migrationSigner, + true, + ); + const migrationSignerQuoteAta = getAssociatedTokenAddressSync( + quoteMint, + migrationSigner, + true, + ); + + return { + migrationSigner, + migrationSignerBaseAta, + migrationSignerQuoteAta, + positionNftMint, + poolCreatorAuthority, + pool, + positionNftAccount, + position, + tokenAVault, + tokenBVault, + poolAuthority, + dammV2EventAuthority, + }; +} +// ================= + +const provider = anchor.AnchorProvider.env(); +const payer = provider.wallet["payer"]; + +// V5 clients +const autocratClient = AutocratClient.createClient({ provider }); +const vaultClient = ConditionalVaultClient.createClient({ provider }); +const ammClient = AmmClient.createClient({ provider }); + +// V6 client +const futarchyV6 = FutarchyClientV6.createClient({ provider }); + +async function main() { + if (!process.env.JITO_AUTH_TOKEN) { + console.log( + "Warning: No Jito auth token provided, results may be unreliable", + ); + } + + console.log("=".repeat(60)); + console.log("MIGRATE V5 DAO TO V6 DAO (Raydium LP)"); + console.log("=".repeat(60)); + console.log( + `Mode: ${FULL_PROPOSAL ? "FULL PROPOSAL (Squads + Futarchy markets)" : "SQUADS ONLY (for simulation)"}`, + ); + console.log("=".repeat(60)); + + // Step 1: Fetch V5 DAO data + console.log("\n[1] Fetching V5 DAO data..."); + const v5Dao = await autocratClient.getDao(V5_DAO_ADDRESS); + const { multisigPda: v5MultisigPda, vaultPda: v5VaultPda } = + await getSquadsPdasFromDao(V5_DAO_ADDRESS); + + console.log(" V5 DAO Address:", V5_DAO_ADDRESS.toBase58()); + console.log(" Base Mint:", v5Dao.baseMint.toBase58()); + console.log(" Quote Mint:", v5Dao.quoteMint.toBase58()); + console.log(" V5 Squads Multisig:", v5MultisigPda.toBase58()); + console.log(" V5 Vault PDA:", v5VaultPda.toBase58()); + + // Step 2: Fetch and verify V6 DAO + console.log("\n[2] Fetching V6 DAO data..."); + const v6Dao = await futarchyV6.fetchDao(V6_DAO_ADDRESS); + if (!v6Dao) { + throw new Error( + `V6 DAO not found at ${V6_DAO_ADDRESS.toBase58()}. Make sure it's already initialized.`, + ); + } + + // Verify mints match + if (!v6Dao.baseMint.equals(v5Dao.baseMint)) { + throw new Error( + `Base mint mismatch! V5: ${v5Dao.baseMint.toBase58()}, V6: ${v6Dao.baseMint.toBase58()}`, + ); + } + if (!v6Dao.quoteMint.equals(v5Dao.quoteMint)) { + throw new Error( + `Quote mint mismatch! V5: ${v5Dao.quoteMint.toBase58()}, V6: ${v6Dao.quoteMint.toBase58()}`, + ); + } + + const v6MultisigPda = multisig.getMultisigPda({ + createKey: V6_DAO_ADDRESS, + })[0]; + const v6VaultPda = multisig.getVaultPda({ + multisigPda: v6MultisigPda, + index: 0, + })[0]; + + console.log(" V6 DAO Address:", V6_DAO_ADDRESS.toBase58()); + console.log(" V6 Squads Multisig:", v6MultisigPda.toBase58()); + console.log(" V6 Vault PDA:", v6VaultPda.toBase58()); + console.log(" ✓ Base mint matches V5 DAO"); + console.log(" ✓ Quote mint matches V5 DAO"); + + // Step 3: Fetch token decimals and liquidity requirements + console.log("\n[3] Fetching token decimals and liquidity requirements..."); + + // Get mint decimals + const baseMintInfo = await getMint(provider.connection, v5Dao.baseMint); + const quoteMintInfo = await getMint(provider.connection, v5Dao.quoteMint); + const baseDecimals = baseMintInfo.decimals; + const quoteDecimals = quoteMintInfo.decimals; + + console.log(" Base token decimals:", baseDecimals); + console.log(" Quote token decimals:", quoteDecimals); + + // Get min liquidity requirements from DAO + const minBaseLiquidity = v5Dao.minBaseFutarchicLiquidity; + const minQuoteLiquidity = v5Dao.minQuoteFutarchicLiquidity; + + const baseMultiplier = Math.pow(10, baseDecimals); + const quoteMultiplier = Math.pow(10, quoteDecimals); + + console.log( + " Min base liquidity required:", + (minBaseLiquidity.toNumber() / baseMultiplier).toLocaleString(), + ); + console.log( + " Min quote liquidity required:", + (minQuoteLiquidity.toNumber() / quoteMultiplier).toLocaleString(), + ); + + // Check payer's wallet balances (only needed for full proposal) + if (FULL_PROPOSAL) { + const payerBaseAta = getAssociatedTokenAddressSync( + v5Dao.baseMint, + payer.publicKey, + true, + ); + const payerQuoteAta = getAssociatedTokenAddressSync( + v5Dao.quoteMint, + payer.publicKey, + true, + ); + + let payerBaseBalance = BigInt(0); + let payerQuoteBalance = BigInt(0); + + try { + const baseInfo = + await provider.connection.getTokenAccountBalance(payerBaseAta); + payerBaseBalance = BigInt(baseInfo.value.amount); + } catch { + console.log(" ⚠ Base token account doesn't exist"); + } + + try { + const quoteInfo = + await provider.connection.getTokenAccountBalance(payerQuoteAta); + payerQuoteBalance = BigInt(quoteInfo.value.amount); + } catch { + console.log(" ⚠ Quote token account doesn't exist"); + } + + console.log( + " Your base token balance:", + (Number(payerBaseBalance) / baseMultiplier).toLocaleString(), + ); + console.log( + " Your quote token balance:", + (Number(payerQuoteBalance) / quoteMultiplier).toLocaleString(), + ); + + // Check if payer has enough tokens + if (payerBaseBalance < BigInt(minBaseLiquidity.toString())) { + const needed = ( + minBaseLiquidity.toNumber() / baseMultiplier + ).toLocaleString(); + const have = (Number(payerBaseBalance) / baseMultiplier).toLocaleString(); + throw new Error(`Insufficient base tokens! Need ${needed}, have ${have}`); + } + if (payerQuoteBalance < BigInt(minQuoteLiquidity.toString())) { + const needed = ( + minQuoteLiquidity.toNumber() / quoteMultiplier + ).toLocaleString(); + const have = ( + Number(payerQuoteBalance) / quoteMultiplier + ).toLocaleString(); + throw new Error( + `Insufficient quote tokens! Need ${needed}, have ${have}`, + ); + } + + console.log(" ✓ Wallet has sufficient tokens for proposal liquidity"); + } else { + console.log(" (Skipping wallet balance check - Squads only mode)"); + } + + // Step 4: Get vault token balances to transfer + console.log("\n[4] Fetching V5 vault token balances..."); + // Create token accounts for vaults and DAO AMM using idempotent instructions + const v5VaultBaseAta = getAssociatedTokenAddressSync( + v5Dao.baseMint, + v5VaultPda, + true, + ); + const v5VaultQuoteAta = getAssociatedTokenAddressSync( + v5Dao.quoteMint, + v5VaultPda, + true, + ); + const v6VaultBaseAta = getAssociatedTokenAddressSync( + v5Dao.baseMint, + v6VaultPda, + true, + ); + const v6VaultQuoteAta = getAssociatedTokenAddressSync( + v5Dao.quoteMint, + v6VaultPda, + true, + ); + const ammBaseVault = getAssociatedTokenAddressSync( + v5Dao.baseMint, + V6_DAO_ADDRESS, + true, + ); + const ammQuoteVault = getAssociatedTokenAddressSync( + v5Dao.quoteMint, + V6_DAO_ADDRESS, + true, + ); + + // Get migration_signer PDA and its ATAs (needed for Meteora CPI) + const meteoraPdasForAtas = getMeteoraPdas(v5Dao.baseMint, v5Dao.quoteMint); + const migrationSignerBaseAta = getAssociatedTokenAddressSync( + v5Dao.baseMint, + meteoraPdasForAtas.migrationSigner, + true, + ); + const migrationSignerQuoteAta = getAssociatedTokenAddressSync( + v5Dao.quoteMint, + meteoraPdasForAtas.migrationSigner, + true, + ); + + const createAtasIx = [ + createAssociatedTokenAccountIdempotentInstruction( + payer.publicKey, + v5VaultBaseAta, + v5VaultPda, + v5Dao.baseMint, + ), + createAssociatedTokenAccountIdempotentInstruction( + payer.publicKey, + v6VaultBaseAta, + v6VaultPda, + v5Dao.baseMint, + ), + createAssociatedTokenAccountIdempotentInstruction( + payer.publicKey, + v5VaultQuoteAta, + v5VaultPda, + v5Dao.quoteMint, + ), + createAssociatedTokenAccountIdempotentInstruction( + payer.publicKey, + v6VaultQuoteAta, + v6VaultPda, + v5Dao.quoteMint, + ), + createAssociatedTokenAccountIdempotentInstruction( + payer.publicKey, + ammBaseVault, + V6_DAO_ADDRESS, + v5Dao.baseMint, + ), + createAssociatedTokenAccountIdempotentInstruction( + payer.publicKey, + ammQuoteVault, + V6_DAO_ADDRESS, + v5Dao.quoteMint, + ), + // Migration signer ATAs (needed for Meteora CPI) + createAssociatedTokenAccountIdempotentInstruction( + payer.publicKey, + migrationSignerBaseAta, + meteoraPdasForAtas.migrationSigner, + v5Dao.baseMint, + ), + createAssociatedTokenAccountIdempotentInstruction( + payer.publicKey, + migrationSignerQuoteAta, + meteoraPdasForAtas.migrationSigner, + v5Dao.quoteMint, + ), + ]; + + const createAtasTx = new Transaction().add(...createAtasIx); + createAtasTx.recentBlockhash = ( + await provider.connection.getLatestBlockhash() + ).blockhash; + createAtasTx.feePayer = payer.publicKey; + const signedCreateAtasTx = + await provider.wallet.signTransaction(createAtasTx); + const createAtasSig = await provider.connection.sendRawTransaction( + signedCreateAtasTx.serialize(), + ); + await provider.connection.confirmTransaction(createAtasSig); + console.log(" ✓ Token accounts created:", createAtasSig); + + // Fund migration_signer PDA with SOL for Meteora pool creation rent + // Meteora creates multiple accounts: pool, vaults, position NFT, etc. (~8.63M lamports needed) + const migrationSignerRent = 0.02 * LAMPORTS_PER_SOL; // 0.02 SOL for rent + const fundMigrationSignerIx = SystemProgram.transfer({ + fromPubkey: payer.publicKey, + toPubkey: meteoraPdasForAtas.migrationSigner, + lamports: migrationSignerRent, + }); + const fundMigrationSignerTx = new Transaction().add(fundMigrationSignerIx); + fundMigrationSignerTx.recentBlockhash = ( + await provider.connection.getLatestBlockhash() + ).blockhash; + fundMigrationSignerTx.feePayer = payer.publicKey; + const signedFundMigrationSignerTx = await provider.wallet.signTransaction( + fundMigrationSignerTx, + ); + const fundMigrationSignerSig = await provider.connection.sendRawTransaction( + signedFundMigrationSignerTx.serialize(), + ); + await provider.connection.confirmTransaction(fundMigrationSignerSig); + console.log( + ` ✓ Migration signer funded with ${migrationSignerRent / LAMPORTS_PER_SOL} SOL:`, + fundMigrationSignerSig, + ); + + let baseBalance = BigInt(0); + let quoteBalance = BigInt(0); + + try { + const baseInfo = + await provider.connection.getTokenAccountBalance(v5VaultBaseAta); + baseBalance = BigInt(baseInfo.value.amount); + console.log( + " Base token balance:", + (Number(baseBalance) / baseMultiplier).toLocaleString(), + ); + } catch { + console.log(" Base token balance: 0 (no account)"); + } + + try { + const quoteInfo = + await provider.connection.getTokenAccountBalance(v5VaultQuoteAta); + quoteBalance = BigInt(quoteInfo.value.amount); + console.log( + " Quote token balance:", + (Number(quoteBalance) / quoteMultiplier).toLocaleString(), + ); + } catch { + console.log(" Quote token balance: 0 (no account)"); + } + + // Step 4.5: Fetch Raydium CPMM pool info and LP balance + console.log("\n[4.5] Fetching Raydium CPMM pool info..."); + + const [raydiumPoolState] = getLiquidityPoolAddr( + LAUNCHPAD_PROGRAM_ID, + V5_DAO_ADDRESS, + ); + const [raydiumLpMint] = getRaydiumCpmmLpMintAddr(raydiumPoolState, false); + const v5VaultLpAta = getAssociatedTokenAddressSync( + raydiumLpMint, + v5VaultPda, + true, + ); + + console.log(" Raydium Pool State:", raydiumPoolState.toBase58()); + console.log(" Raydium LP Mint:", raydiumLpMint.toBase58()); + + let lpBalance = BigInt(0); + try { + const lpInfo = + await provider.connection.getTokenAccountBalance(v5VaultLpAta); + lpBalance = BigInt(lpInfo.value.amount); + console.log(" Vault LP token balance:", lpInfo.value.uiAmountString); + } catch { + console.log( + " ⚠ Vault LP token balance: 0 (no account or pool doesn't exist)", + ); + } + + // Token ordering for Raydium: smaller pubkey is token0 + const isBaseToken0 = + v5Dao.baseMint.toBuffer().compare(v5Dao.quoteMint.toBuffer()) < 0; + const token0Mint = isBaseToken0 ? v5Dao.baseMint : v5Dao.quoteMint; + const token1Mint = isBaseToken0 ? v5Dao.quoteMint : v5Dao.baseMint; + + const [poolToken0Vault] = getRaydiumCpmmPoolVaultAddr( + raydiumPoolState, + token0Mint, + false, + ); + const [poolToken1Vault] = getRaydiumCpmmPoolVaultAddr( + raydiumPoolState, + token1Mint, + false, + ); + + console.log( + " Token ordering:", + isBaseToken0 ? "base=token0, quote=token1" : "quote=token0, base=token1", + ); + + // CRITICAL: Verify all pool addresses exist on mainnet + console.log("\n=== VERIFYING RAYDIUM POOL ON MAINNET ==="); + console.log("Pool Token0 Vault:", poolToken0Vault.toBase58()); + console.log("Pool Token1 Vault:", poolToken1Vault.toBase58()); + console.log("V5 Vault LP ATA:", v5VaultLpAta.toBase58()); + + const [ + poolStateInfo, + lpMintInfo, + v5VaultLpAtaInfo, + token0VaultInfo, + token1VaultInfo, + ] = await Promise.all([ + provider.connection.getAccountInfo(raydiumPoolState), + provider.connection.getAccountInfo(raydiumLpMint), + provider.connection.getAccountInfo(v5VaultLpAta), + provider.connection.getAccountInfo(poolToken0Vault), + provider.connection.getAccountInfo(poolToken1Vault), + ]); + + console.log("\nAccount existence check:"); + console.log(" ✓ Pool State exists:", poolStateInfo !== null); + console.log(" ✓ LP Mint exists:", lpMintInfo !== null); + console.log(" ✓ V5 Vault LP ATA exists:", v5VaultLpAtaInfo !== null); + console.log(" ✓ Pool Token0 Vault exists:", token0VaultInfo !== null); + console.log(" ✓ Pool Token1 Vault exists:", token1VaultInfo !== null); + + if (!poolStateInfo || !lpMintInfo) { + throw new Error( + "❌ CRITICAL: Raydium pool does not exist on mainnet!\n" + + `Pool State (${raydiumPoolState.toBase58()}): ${poolStateInfo ? "EXISTS" : "NOT FOUND"}\n` + + `LP Mint (${raydiumLpMint.toBase58()}): ${lpMintInfo ? "EXISTS" : "NOT FOUND"}\n` + + "The launchpad may not have created a Raydium pool, or this DAO uses a different liquidity mechanism.", + ); + } + + if (!token0VaultInfo || !token1VaultInfo) { + throw new Error( + "❌ CRITICAL: Pool vaults do not exist on mainnet!\n" + + `Token0 Vault (${poolToken0Vault.toBase58()}): ${token0VaultInfo ? "EXISTS" : "NOT FOUND"}\n` + + `Token1 Vault (${poolToken1Vault.toBase58()}): ${token1VaultInfo ? "EXISTS" : "NOT FOUND"}`, + ); + } + + console.log("\n✅ All Raydium pool accounts verified on mainnet!"); + + // Calculate expected withdrawal amounts from LP + let expectedBaseFromLp = BigInt(0); + let expectedQuoteFromLp = BigInt(0); + + if (lpBalance > 0n) { + try { + // Fetch pool vault balances and LP supply to calculate proportional withdrawal + const [token0VaultBalance, token1VaultBalance, lpMintInfo] = + await Promise.all([ + provider.connection.getTokenAccountBalance(poolToken0Vault), + provider.connection.getTokenAccountBalance(poolToken1Vault), + getMint(provider.connection, raydiumLpMint), + ]); + + const poolToken0Amount = BigInt(token0VaultBalance.value.amount); + const poolToken1Amount = BigInt(token1VaultBalance.value.amount); + const lpSupply = lpMintInfo.supply; + + // Calculate proportional share: (lpBalance / lpSupply) * poolAmount + const token0Share = (lpBalance * poolToken0Amount) / lpSupply; + const token1Share = (lpBalance * poolToken1Amount) / lpSupply; + + // Assign based on token ordering + if (isBaseToken0) { + expectedBaseFromLp = token0Share; + expectedQuoteFromLp = token1Share; + } else { + expectedBaseFromLp = token1Share; + expectedQuoteFromLp = token0Share; + } + + console.log( + " Expected base from LP withdrawal:", + (Number(expectedBaseFromLp) / baseMultiplier).toLocaleString(), + ); + console.log( + " Expected quote from LP withdrawal:", + (Number(expectedQuoteFromLp) / quoteMultiplier).toLocaleString(), + ); + } catch (e) { + console.log(" ⚠ Could not calculate LP withdrawal amounts:", e); + } + } + + // Step 5: Check mint authority + console.log("\n[5] Checking base mint authority..."); + const currentMintAuthority = baseMintInfo.mintAuthority; + + if (currentMintAuthority) { + console.log(" Current mint authority:", currentMintAuthority.toBase58()); + if (currentMintAuthority.equals(v5VaultPda)) { + console.log(" ✓ Mint authority is the V5 vault (will be transferred)"); + } else { + console.log( + " ⚠ Mint authority is NOT the V5 vault - cannot transfer via proposal", + ); + } + } else { + console.log(" ⚠ No mint authority (token is immutable)"); + } + + let canTransferMetadataAuthority = false; + + // Step 7: Build vault transaction instructions + console.log("\n[7] Building vault transaction instructions..."); + + const vaultInstructions: anchor.web3.TransactionInstruction[] = []; + + // Add compute budget instructions to vault transaction for Squads Explorer simulation + // These need to be included in the vault instructions for proper simulation + vaultInstructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 }), + ); + vaultInstructions.push( + ComputeBudgetProgram.requestHeapFrame({ bytes: 256 * 1024 }), + ); + + // 7a. Withdraw LP and provide liquidity to V6 AMM atomically (if any LP) + if (lpBalance > 0n) { + const helperProgram = new anchor.Program( + RaydiumMigrationHelperIDL, + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + provider, + ); + + // Get V6 futarchy AMM accounts + // Note: position_authority is v6VaultPda - the V6 vault will own the AMM position + const [ammPosition] = PublicKey.findProgramAddressSync( + [ + Buffer.from("amm_position"), + V6_DAO_ADDRESS.toBuffer(), + v6VaultPda.toBuffer(), // position_authority (the V6 vault owns the AMM position) + ], + futarchyV6.getProgramId(), + ); + + const [eventAuthority] = PublicKey.findProgramAddressSync( + [Buffer.from("__event_authority")], + futarchyV6.getProgramId(), + ); + + // Reuse Meteora DAMM v2 PDAs for the new pool creation (derived earlier for ATA creation) + const meteoraPdas = meteoraPdasForAtas; + console.log(" Meteora Pool PDA:", meteoraPdas.pool.toBase58()); + console.log( + " Meteora Position NFT Mint:", + meteoraPdas.positionNftMint.toBase58(), + ); + + const withdrawAndProvideLiquidityIx = await helperProgram.methods + .withdrawAndProvideLiquidity( + new BN(lpBalance.toString()), + new BN(0), // min_raydium_amount_0 - no slippage protection for governance + new BN(0), // min_raydium_amount_1 + new BN(0), // min_futarchy_liquidity + ) + .accounts({ + vaultAuthority: v5VaultPda, + // Raydium withdrawal accounts + poolState: raydiumPoolState, + raydiumAuthority: RAYDIUM_AUTHORITY, + lpMint: raydiumLpMint, + vaultLpToken: v5VaultLpAta, + vaultToken0: isBaseToken0 ? v5VaultBaseAta : v5VaultQuoteAta, + vaultToken1: isBaseToken0 ? v5VaultQuoteAta : v5VaultBaseAta, + poolToken0Vault: poolToken0Vault, + poolToken1Vault: poolToken1Vault, + // V6 Futarchy AMM accounts + dao: V6_DAO_ADDRESS, + baseMint: v5Dao.baseMint, + quoteMint: v5Dao.quoteMint, + ammPosition: ammPosition, + ammBaseVault: ammBaseVault, + ammQuoteVault: ammQuoteVault, + v6VaultBaseAta: v6VaultBaseAta, + v6VaultQuoteAta: v6VaultQuoteAta, + v6VaultPda: v6VaultPda, + eventAuthority: eventAuthority, + // Migration signer accounts (PDA that holds tokens during Meteora CPI) + migrationSigner: meteoraPdas.migrationSigner, + migrationSignerBaseAta: meteoraPdas.migrationSignerBaseAta, + migrationSignerQuoteAta: meteoraPdas.migrationSignerQuoteAta, + // Meteora DAMM v2 accounts + meteoraAccounts: { + dammV2Program: DAMM_V2_PROGRAM_ID, + config: MIGRATION_METEORA_CONFIG, + token2022Program: TOKEN_2022_PROGRAM_ID, + positionNftAccount: meteoraPdas.positionNftAccount, + pool: meteoraPdas.pool, + position: meteoraPdas.position, + positionNftMint: meteoraPdas.positionNftMint, + baseMint: v5Dao.baseMint, + quoteMint: v5Dao.quoteMint, + tokenAVault: meteoraPdas.tokenAVault, + tokenBVault: meteoraPdas.tokenBVault, + poolCreatorAuthority: meteoraPdas.poolCreatorAuthority, + poolAuthority: meteoraPdas.poolAuthority, + dammV2EventAuthority: meteoraPdas.dammV2EventAuthority, + }, + // Programs + raydiumProgram: RAYDIUM_CP_SWAP_PROGRAM_ID, + futarchyProgram: futarchyV6.getProgramId(), + tokenProgram: TOKEN_PROGRAM_ID, + tokenProgram2022: TOKEN_2022_PROGRAM_ID, + systemProgram: SystemProgram.programId, + memoProgram: MEMO_PROGRAM_ID, + }) + .instruction(); + + vaultInstructions.push(withdrawAndProvideLiquidityIx); + console.log( + " Added: Withdraw LP → 90% to Futarchy AMM, 10% to Meteora DAMM v2", + ); + console.log( + " Instruction accounts:", + withdrawAndProvideLiquidityIx.keys.length, + ); + console.log(" LP tokens to withdraw:", lpBalance.toString()); + console.log(" → Expected withdrawal from Raydium:"); + console.log( + " Base:", + (Number(expectedBaseFromLp) / baseMultiplier).toLocaleString(), + ); + console.log( + " Quote:", + (Number(expectedQuoteFromLp) / quoteMultiplier).toLocaleString(), + ); + console.log(" → 90% to Futarchy V6 AMM:"); + console.log( + " Base:", + ((Number(expectedBaseFromLp) * 0.9) / baseMultiplier).toLocaleString(), + ); + console.log( + " Quote:", + ((Number(expectedQuoteFromLp) * 0.9) / quoteMultiplier).toLocaleString(), + ); + console.log(" → 10% to Meteora DAMM v2 pool:"); + console.log( + " Base:", + ((Number(expectedBaseFromLp) * 0.1) / baseMultiplier).toLocaleString(), + ); + console.log( + " Quote:", + ((Number(expectedQuoteFromLp) * 0.1) / quoteMultiplier).toLocaleString(), + ); + console.log(" → Treasury (existing balance, transferred to V6):"); + console.log( + " Base:", + (Number(baseBalance) / baseMultiplier).toLocaleString(), + ); + console.log( + " Quote:", + (Number(quoteBalance) / quoteMultiplier).toLocaleString(), + ); + } + + // Calculate total amounts for logging (existing + LP withdrawal) + const totalBaseToTransfer = baseBalance + expectedBaseFromLp; + const totalQuoteToTransfer = quoteBalance + expectedQuoteFromLp; + + // 7d. Transfer mint authority from V5 vault to V6 vault + if (currentMintAuthority && currentMintAuthority.equals(v5VaultPda)) { + vaultInstructions.push( + createSetAuthorityInstruction( + v5Dao.baseMint, + v5VaultPda, + AuthorityType.MintTokens, + v6VaultPda, + ), + ); + console.log(" Added: Transfer mint authority to V6 vault"); + } + + // 7e. Transfer metadata update authority from V5 vault to V6 vault + const [metadataAddr] = getMetadataAddr(v5Dao.baseMint); + try { + const metadataAccountInfo = + await provider.connection.getAccountInfo(metadataAddr); + if (metadataAccountInfo) { + const metadataSerializer = getMetadataAccountDataSerializer(); + const [metadata] = metadataSerializer.deserialize( + metadataAccountInfo.data, + ); + const updateAuthority = new PublicKey(metadata.updateAuthority); + if (updateAuthority.equals(v5VaultPda)) { + // Use UMI to build the metadata update instruction + const umi = createUmi(provider.connection.rpcEndpoint); + // Create a noop signer for the vault - actual signing happens in Squads execution + const vaultSigner = createNoopSigner( + UmiPublicKey(v5VaultPda.toBase58()), + ); + const umiUpdateIxs = updateMetadataAccountV2(umi, { + metadata: UmiPublicKey(metadataAddr.toBase58()), + updateAuthority: vaultSigner, // Current authority (will be signer in vault tx) + newUpdateAuthority: UmiPublicKey(v6VaultPda.toBase58()), + }).getInstructions(); + + for (const umiIx of umiUpdateIxs) { + vaultInstructions.push(toWeb3JsInstruction(umiIx)); + } + canTransferMetadataAuthority = true; + console.log(" Added: Transfer metadata update authority to V6 vault"); + } + } + } catch (e: any) { + console.log( + " ⚠ Could not add metadata authority transfer:", + e.message || e, + ); + } + + console.log("Total vault instructions:", vaultInstructions.length); + + // Step 7.5: Detailed instruction debugging + console.log("\n[7.5] Detailed instruction analysis..."); + const uniqueProgramIds = new Set(); + for (let i = 0; i < vaultInstructions.length; i++) { + const ix = vaultInstructions[i]; + uniqueProgramIds.add(ix.programId.toBase58()); + console.log(`\n Instruction ${i + 1}/${vaultInstructions.length}:`); + console.log(` Program ID: ${ix.programId.toBase58()}`); + console.log(` Data length: ${ix.data.length} bytes`); + console.log(` Accounts (${ix.keys.length}):`); + ix.keys.forEach((key, idx) => { + console.log( + ` [${idx}] ${key.pubkey.toBase58()} ${key.isSigner ? "(signer)" : ""} ${key.isWritable ? "(writable)" : "(readonly)"}`, + ); + }); + } + + // Verify all program IDs exist on-chain + console.log("\n Verifying program IDs exist on-chain..."); + for (const programId of uniqueProgramIds) { + const programInfo = await provider.connection.getAccountInfo( + new PublicKey(programId), + ); + if (!programInfo) { + throw new Error(`❌ Program ID ${programId} does not exist on-chain!`); + } + if (!programInfo.executable) { + throw new Error(`❌ Program ID ${programId} is not executable!`); + } + console.log(` ✓ ${programId} (executable)`); + } + + // Create lookup table to compress transaction (mirrors test's createLookupTableForTransaction) + const tempTx = new Transaction().add(...vaultInstructions); + + // use a different authority for the lookup table to avoid conflicts + const lookupAuthority = Keypair.generate(); + const slot = await provider.connection.getSlot(); + + const [createTableIx, lookupTableAddress] = + AddressLookupTableProgram.createLookupTable({ + authority: lookupAuthority.publicKey, + payer: payer.publicKey, + recentSlot: slot - 1, + }); + + // Extract all unique accounts from the transaction (mirrors test exactly) + const accountsToAdd = tempTx.instructions.map((instruction) => + instruction.keys.map((key) => key.pubkey), + ); + // Deduplicate by base58 string, not object identity + const accountStrings = new Set(); + const uniqueAccounts: PublicKey[] = []; + for (const account of accountsToAdd.flat()) { + const accountStr = account.toBase58(); + if (!accountStrings.has(accountStr)) { + accountStrings.add(accountStr); + uniqueAccounts.push(account); + } + } + console.log("uniqueAccounts", uniqueAccounts.length); + + // Create the lookup table + const createLutTx = new Transaction().add(createTableIx); + createLutTx.recentBlockhash = ( + await provider.connection.getLatestBlockhash() + ).blockhash; + createLutTx.feePayer = payer.publicKey; + createLutTx.partialSign(lookupAuthority); + const signedCreateLutTx = await provider.wallet.signTransaction(createLutTx); + const createLutSig = await provider.connection.sendRawTransaction( + signedCreateLutTx.serialize(), + ); + await provider.connection.confirmTransaction(createLutSig); + console.log(" ✓ LUT created:", lookupTableAddress.toBase58()); + + // Wait for LUT to be available (increased wait time for proper activation) + await new Promise((resolve) => setTimeout(resolve, 5000)); + + // Extend the lookup table with all unique accounts + const addressesPerExtend = 20; + for (let i = 0; i < uniqueAccounts.length; i += addressesPerExtend) { + const batch = uniqueAccounts.slice(i, i + addressesPerExtend); + + const extendTableIx = AddressLookupTableProgram.extendLookupTable({ + authority: lookupAuthority.publicKey, + payer: payer.publicKey, + lookupTable: lookupTableAddress, + addresses: batch, + }); + + const extendLutTx = new Transaction().add(extendTableIx); + extendLutTx.recentBlockhash = ( + await provider.connection.getLatestBlockhash() + ).blockhash; + extendLutTx.feePayer = payer.publicKey; + extendLutTx.partialSign(lookupAuthority); + const signedExtendLutTx = + await provider.wallet.signTransaction(extendLutTx); + const extendLutSig = await provider.connection.sendRawTransaction( + signedExtendLutTx.serialize(), + ); + await provider.connection.confirmTransaction(extendLutSig); + console.log( + ` ✓ Extended LUT batch ${Math.floor(i / addressesPerExtend) + 1}/${Math.ceil(uniqueAccounts.length / addressesPerExtend)}`, + ); + + // Wait for extension to be available (increased wait time) + await new Promise((resolve) => setTimeout(resolve, 2000)); + } + + // Wait for final extension to be available + await new Promise((resolve) => setTimeout(resolve, 3000)); + + // Fetch the raw account data and deserialize it manually (like the test does) + // This ensures the AddressLookupTableAccount is constructed correctly for the Squads SDK + const rawLutAccount = + await provider.connection.getAccountInfo(lookupTableAddress); + if (!rawLutAccount) { + throw new Error("Failed to fetch lookup table account"); + } + + const migrationLut = new AddressLookupTableAccount({ + key: lookupTableAddress, + state: AddressLookupTableAccount.deserialize(rawLutAccount.data), + }); + + // Verify LUT is activated (not deactivating) + if ( + migrationLut.state.deactivationSlot !== undefined && + migrationLut.state.deactivationSlot < BigInt(2 ** 32 - 1) + ) { + throw new Error( + `LUT is deactivating at slot ${migrationLut.state.deactivationSlot}!`, + ); + } + + console.log( + "Migration LUT created with", + migrationLut.state.addresses.length, + "addresses", + ); + console.log("LUT last extended slot:", migrationLut.state.lastExtendedSlot); + console.log("LUT authority:", migrationLut.state.authority?.toBase58()); + + // Verify LUT contents + console.log("\n=== VERIFYING LUT CONTENTS ==="); + for (let i = 0; i < migrationLut.state.addresses.length; i++) { + console.log(` [${i}]:`, migrationLut.state.addresses[i].toBase58()); + } + + // Create transaction message (don't compile to V0 - pass plain message + LUT separately to Squads) + const transactionMessage = new TransactionMessage({ + payerKey: v5VaultPda, + recentBlockhash: "", + instructions: vaultInstructions, + }); + + // Verify all instruction accounts are in the LUT + console.log("\n=== VERIFYING ALL ACCOUNTS IN LUT ==="); + const lutAddresses = migrationLut.state.addresses.map((a) => a.toBase58()); + let missingAccounts = 0; + for (const ix of vaultInstructions) { + for (const key of ix.keys) { + const keyStr = key.pubkey.toBase58(); + if (!lutAddresses.includes(keyStr)) { + console.warn(` ⚠️ Account ${keyStr} NOT in LUT!`); + missingAccounts++; + } + } + } + if (missingAccounts === 0) { + console.log(" ✓ All instruction accounts are in the LUT"); + } else { + throw new Error(`${missingAccounts} accounts are missing from the LUT!`); + } + + // Get transaction index + const v5MultisigAccount = await multisig.accounts.Multisig.fromAccountAddress( + provider.connection, + v5MultisigPda, + ); + const transactionIndex = BigInt( + Number(v5MultisigAccount.transactionIndex) + 1, + ); + + // Create vault transaction with plain message + LUT accounts + const vaultTxCreateIx = multisig.instructions.vaultTransactionCreate({ + multisigPda: v5MultisigPda, + transactionIndex, + creator: PERMISSIONLESS_ACCOUNT.publicKey, + rentPayer: payer.publicKey, + vaultIndex: 0, + ephemeralSigners: 0, + transactionMessage: transactionMessage, + addressLookupTableAccounts: [migrationLut], + }); + + console.log("\n📊 VaultTransactionCreate instruction:"); + console.log(" Accounts:", vaultTxCreateIx.keys.length); + console.log(" Data size:", vaultTxCreateIx.data.length, "bytes"); + + // Create proposal (no approve yet - that happens through autocrat) + const proposalCreateIx = multisig.instructions.proposalCreate({ + multisigPda: v5MultisigPda, + transactionIndex, + creator: PERMISSIONLESS_ACCOUNT.publicKey, + rentPayer: payer.publicKey, + isDraft: false, + }); + + const [squadsProposalPda] = multisig.getProposalPda({ + multisigPda: v5MultisigPda, + transactionIndex, + }); + + // Create Squads proposal using V0 VersionedTransaction with LUT for compression + const { blockhash } = await provider.connection.getLatestBlockhash(); + + const squadsMessage = new TransactionMessage({ + payerKey: payer.publicKey, + recentBlockhash: blockhash, + instructions: [vaultTxCreateIx, proposalCreateIx], + }).compileToV0Message([migrationLut]); + + const squadsTx = new VersionedTransaction(squadsMessage); + + const squadsTxSize = squadsTx.serialize().length; + console.log("\n📊 Squads proposal transaction (create vault tx + proposal):"); + console.log(" Size:", squadsTxSize, "bytes (limit: 1232)"); + if (squadsTxSize > 1232) { + console.log(" ❌ OVER LIMIT by", squadsTxSize - 1232, "bytes"); + } + + // Sign with PERMISSIONLESS_ACCOUNT first + squadsTx.sign([PERMISSIONLESS_ACCOUNT]); + // Then sign with wallet + const signedSquadsTx = await provider.wallet.signTransaction(squadsTx); + const squadsSig = await provider.connection.sendRawTransaction( + signedSquadsTx.serialize(), + { + skipPreflight: true, + preflightCommitment: "confirmed", + }, + ); + console.log(" Squads tx signature:", squadsSig); + await provider.connection.confirmTransaction(squadsSig); + + console.log("Squads proposal created"); + + // Wait a bit for the transaction to be fully confirmed + await new Promise((resolve) => setTimeout(resolve, 3000)); + + const [metaDaoProposal] = getProposalAddr( + AUTOCRAT_PROGRAM_ID, + squadsProposalPda, + ); + + if (FULL_PROPOSAL) { + // Step 8: Build V5 futarchy proposal market transactions (5 txs max for Jito bundle) + console.log("\n[8] Building V5 futarchy proposal markets..."); + console.log(" MetaDAO Proposal PDA:", metaDaoProposal.toBase58()); + + const { + baseVault, + quoteVault, + passAmm, + failAmm, + passBaseMint, + passQuoteMint, + failBaseMint, + failQuoteMint, + question, + } = autocratClient.getProposalPdas( + metaDaoProposal, + v5Dao.baseMint, + v5Dao.quoteMint, + V5_DAO_ADDRESS, + ); + + // Build 5 transactions for Jito bundle + const txns: Transaction[] = []; + + // Transaction 1: Initialize question + const questionTx = await vaultClient + .initializeQuestionIx( + sha256(`Will ${metaDaoProposal} pass?/FAIL/PASS`), + metaDaoProposal, + 2, + ) + .preInstructions([ + ComputeBudgetProgram.setComputeUnitLimit({ units: 30_000 }), + ]) + .transaction(); + txns.push(questionTx); + + // Transaction 2: Initialize vaults and AMMs + const vaultsTx = await vaultClient + .initializeVaultIx(question, v5Dao.baseMint, 2) + .preInstructions([ + ComputeBudgetProgram.setComputeUnitLimit({ units: 420_000 }), + ]) + .postInstructions( + await InstructionUtils.getInstructions( + vaultClient.initializeVaultIx(question, v5Dao.quoteMint, 2), + ammClient.initializeAmmIx( + passBaseMint, + passQuoteMint, + v5Dao.twapStartDelaySlots, + v5Dao.twapInitialObservation, + v5Dao.twapMaxObservationChangePerUpdate, + ), + ammClient.initializeAmmIx( + failBaseMint, + failQuoteMint, + v5Dao.twapStartDelaySlots, + v5Dao.twapInitialObservation, + v5Dao.twapMaxObservationChangePerUpdate, + ), + ), + ) + .transaction(); + txns.push(vaultsTx); + + // Transaction 3: Split tokens + const splitTokensTx = await vaultClient + .splitTokensIx(question, baseVault, v5Dao.baseMint, minBaseLiquidity, 2) + .preInstructions([ + ComputeBudgetProgram.setComputeUnitLimit({ units: 220_000 }), + ]) + .postInstructions( + await InstructionUtils.getInstructions( + vaultClient.splitTokensIx( + question, + quoteVault, + v5Dao.quoteMint, + minQuoteLiquidity, + 2, + ), + ), + ) + .transaction(); + txns.push(splitTokensTx); + + // Transaction 4: Add liquidity to AMMs + const addLiquidityTx = await ammClient + .addLiquidityIx( + passAmm, + passBaseMint, + passQuoteMint, + minQuoteLiquidity, + minBaseLiquidity, + new BN(0), + ) + .preInstructions([ + ComputeBudgetProgram.setComputeUnitLimit({ units: 170_000 }), + ]) + .postInstructions( + await InstructionUtils.getInstructions( + ammClient.addLiquidityIx( + failAmm, + failBaseMint, + failQuoteMint, + minQuoteLiquidity, + minBaseLiquidity, + new BN(0), + ), + ), + ) + .transaction(); + txns.push(addLiquidityTx); + + // Transaction 5: Initialize proposal + const lpTokens = minQuoteLiquidity; + const proposalTx = await autocratClient + .initializeProposalIx( + "Migrate DAO from v5 to v6 (Raydium LP)", + squadsProposalPda, + V5_DAO_ADDRESS, + v5Dao.baseMint, + v5Dao.quoteMint, + lpTokens, + lpTokens, + question, + ) + .preInstructions([ + ComputeBudgetProgram.setComputeUnitLimit({ units: 200_000 }), + ]) + .transaction(); + txns.push(proposalTx); + + console.log(" Total transactions to bundle:", txns.length); + + // Step 9: Bundle and send futarchy txs with Jito + console.log("\n[9] Bundling and sending futarchy txs with Jito..."); + + const signedTxns = await prepareBundle(txns); + const bundle = await sendBundle(signedTxns); + + console.log("\n" + "=".repeat(60)); + console.log("BUNDLE SUBMITTED"); + console.log("=".repeat(60)); + console.log("Bundle ID:", bundle.result); + + // Wait a moment and check status + await new Promise((resolve) => setTimeout(resolve, 2000)); + const bundleStatus = await getBundleStatuses(bundle.result); + console.log("Bundle status:", JSON.stringify(bundleStatus, null, 2)); + } else { + console.log("\n[8] Skipping futarchy markets (Squads only mode)"); + } + + console.log("\n" + "=".repeat(60)); + console.log("COMPLETE"); + console.log("=".repeat(60)); + + console.log("\nSUMMARY:"); + console.log(" V5 DAO:", V5_DAO_ADDRESS.toBase58()); + console.log(" V6 DAO:", V6_DAO_ADDRESS.toBase58()); + console.log( + "\n *** SQUADS PROPOSAL PDA:", + squadsProposalPda.toBase58(), + "***", + ); + console.log(" Squads Multisig:", v5MultisigPda.toBase58()); + console.log(" Transaction Index:", transactionIndex); + console.log(" Address Lookup Table:", lookupTableAddress.toBase58()); + if (FULL_PROPOSAL) { + console.log(" MetaDAO Proposal PDA:", metaDaoProposal.toBase58()); + } + console.log("\nMIGRATION ACTIONS (when proposal passes):"); + if (lpBalance > 0n) { + console.log(" - Withdraw Raydium LP tokens:", lpBalance.toString()); + console.log( + " → Expected base:", + (Number(expectedBaseFromLp) / baseMultiplier).toLocaleString(), + ); + console.log( + " → Expected quote:", + (Number(expectedQuoteFromLp) / quoteMultiplier).toLocaleString(), + ); + console.log(" - Create Meteora DAMM v2 pool with 10% of withdrawn tokens"); + console.log( + " → Base to Meteora:", + ((Number(expectedBaseFromLp) * 0.1) / baseMultiplier).toLocaleString(), + ); + console.log( + " → Quote to Meteora:", + ((Number(expectedQuoteFromLp) * 0.1) / quoteMultiplier).toLocaleString(), + ); + console.log( + " - Provide 90% of withdrawn tokens as liquidity to Futarchy V6 AMM", + ); + console.log( + " → Base to Futarchy:", + ((Number(expectedBaseFromLp) * 0.9) / baseMultiplier).toLocaleString(), + ); + console.log( + " → Quote to Futarchy:", + ((Number(expectedQuoteFromLp) * 0.9) / quoteMultiplier).toLocaleString(), + ); + } + if (totalBaseToTransfer > 0n) { + console.log( + " - Transfer", + (Number(totalBaseToTransfer) / baseMultiplier).toLocaleString(), + "base tokens (treasury balance) to V6 vault", + ); + } + if (totalQuoteToTransfer > 0n) { + console.log( + " - Transfer", + (Number(totalQuoteToTransfer) / quoteMultiplier).toLocaleString(), + "quote tokens (treasury balance) to V6 vault", + ); + } + if (currentMintAuthority && currentMintAuthority.equals(v5VaultPda)) { + console.log(" - Transfer mint authority to V6 vault"); + } + if (canTransferMetadataAuthority) { + console.log(" - Transfer metadata update authority to V6 vault"); + } + console.log( + "\nNOTE: The V6 DAO must already be initialized before running this script.", + ); + console.log( + " The vault transaction only executes if the proposal passes.", + ); + console.log("\nIMPORTANT - EXECUTION:"); + console.log( + " When executing this proposal, you MUST use a V0 transaction with the", + ); + console.log( + " Address Lookup Table above to stay under the 1232 byte transaction limit.", + ); + console.log(" The execute transaction should:"); + console.log( + " 1. Add ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 })", + ); + console.log( + " 2. Add ComputeBudgetProgram.requestHeapFrame({ bytes: 256 * 1024 })", + ); + console.log(" 3. Add vaultTransactionExecute instruction"); + console.log( + " 4. Use TransactionMessage.compileToV0Message([lookupTableAccount])", + ); + console.log( + " 5. Create VersionedTransaction and sign with required signers", + ); + if (!FULL_PROPOSAL) { + console.log( + "\n ⚠ SQUADS ONLY MODE: Go simulate the proposal in Squads before running with FULL_PROPOSAL=true", + ); + } +} + +async function prepareBundle( + transactions: Transaction[], +): Promise { + console.log(" Preparing bundle with", transactions.length, "transactions"); + + const tipAccounts = await getTipAccounts(); + const tipFloor = await getTipFloor(); + const tipAccount = + tipAccounts[Math.floor(Math.random() * tipAccounts.length)]; + + console.log( + " Tip floor:", + Math.round(tipFloor * LAMPORTS_PER_SOL), + "lamports", + ); + console.log(" Tip account:", tipAccount); + + const transferInstruction = SystemProgram.transfer({ + fromPubkey: payer.publicKey, + toPubkey: new PublicKey(tipAccount), + lamports: Math.round(tipFloor * LAMPORTS_PER_SOL), + }); + + const { blockhash } = await provider.connection.getLatestBlockhash(); + + for (const transaction of transactions) { + transaction.recentBlockhash = blockhash; + transaction.feePayer = payer.publicKey; + } + + // Add tip to last transaction + const lastTransaction = transactions[transactions.length - 1]; + lastTransaction.add(transferInstruction); + + // Sign all transactions with payer + const signedTxns = await provider.wallet.signAllTransactions([ + ...transactions, + ]); + + console.log(" Transactions signed"); + return signedTxns; +} + +main().catch((error) => { + console.error("Error:", error); + process.exit(1); +}); diff --git a/scripts/v0.5/previewMigrationRaydium.ts b/scripts/v0.5/previewMigrationRaydium.ts new file mode 100644 index 000000000..45fd447a7 --- /dev/null +++ b/scripts/v0.5/previewMigrationRaydium.ts @@ -0,0 +1,844 @@ +import "dotenv/config"; +import { PublicKey } from "@solana/web3.js"; +import * as anchor from "@coral-xyz/anchor"; +import * as multisig from "@sqds/multisig"; +import { getAssociatedTokenAddressSync, getMint } from "@solana/spl-token"; +import { getMetadataAccountDataSerializer } from "@metaplex-foundation/mpl-token-metadata"; + +import { + AutocratClient, + AUTOCRAT_PROGRAM_ID, + getProposalAddr, + getMetadataAddr, + LAUNCHPAD_PROGRAM_ID, + getLiquidityPoolAddr, + getRaydiumCpmmLpMintAddr, + getRaydiumCpmmPoolVaultAddr, +} from "@metadaoproject/futarchy/v0.5"; + +import { + FutarchyClient as FutarchyClientV6, + DAMM_V2_PROGRAM_ID, + MAINNET_METEORA_CONFIG, +} from "@metadaoproject/futarchy/v0.6"; + +import { getSquadsPdasFromDao } from "../utils/squads.js"; + +// Raydium Migration Helper program ID +const RAYDIUM_MIGRATION_HELPER_PROGRAM_ID = new PublicKey( + "migR87BnBEkJbbDECLzRxhmNsQ44WMzhDCpCJhfPvR1", +); + +// Helper functions for Meteora PDA derivation +function maxKey(left: PublicKey, right: PublicKey): Buffer { + const leftBuffer = left.toBuffer(); + const rightBuffer = right.toBuffer(); + for (let i = 0; i < 32; i++) { + if (leftBuffer[i] > rightBuffer[i]) return leftBuffer; + if (leftBuffer[i] < rightBuffer[i]) return rightBuffer; + } + return leftBuffer; +} + +function minKey(left: PublicKey, right: PublicKey): Buffer { + const leftBuffer = left.toBuffer(); + const rightBuffer = right.toBuffer(); + for (let i = 0; i < 32; i++) { + if (leftBuffer[i] < rightBuffer[i]) return leftBuffer; + if (leftBuffer[i] > rightBuffer[i]) return rightBuffer; + } + return leftBuffer; +} + +function getMeteoraPdas(baseMint: PublicKey, quoteMint: PublicKey) { + // migration_signer PDA - used to sign for token transfers in Meteora CPI + const [migrationSigner] = PublicKey.findProgramAddressSync( + [Buffer.from("migration_signer"), baseMint.toBuffer()], + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + ); + + // position_nft_mint is seeded by our migration helper program + const [positionNftMint] = PublicKey.findProgramAddressSync( + [Buffer.from("position_nft_mint"), baseMint.toBuffer()], + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + ); + + // pool is seeded by DAMM v2 program + const [pool] = PublicKey.findProgramAddressSync( + [ + Buffer.from("pool"), + MAINNET_METEORA_CONFIG.toBuffer(), + maxKey(baseMint, quoteMint), + minKey(baseMint, quoteMint), + ], + DAMM_V2_PROGRAM_ID, + ); + + return { + migrationSigner, + positionNftMint, + pool, + }; +} + +// ===== CONFIGURATION ===== +// V5 DAO to migrate FROM +// v5 launch addy 7DzBXBYSKhrXHPWT6mAKq394vKupaKaqLn9bK1wscpBz +// test raydium v5 - 5j4BeewbwoepQCXGsvk8nnkbi4DCXaw5XEzT9XUnzQ6 +// new test-dao considering meteora split in lp +// 9NCPLEFgiu4XZdp9wtWMc1mXyY26VGeWsoKHCAPP3bAo +const V5_DAO_ADDRESS = new PublicKey( + "9NCPLEFgiu4XZdp9wtWMc1mXyY26VGeWsoKHCAPP3bAo", +); + +// V6 DAO to migrate TO (must already be initialized) +// test raydium v6 - F3APFzjG4ekCohguP7emX2pEwE3CoVQR9s8zwNYfZq4R +// New test-dao for meteora +// Cn2wML7SWX2x5mroSKp5eSd9QEkBRjccAXqQ9YWiwZNx +const V6_DAO_ADDRESS = new PublicKey( + "Cn2wML7SWX2x5mroSKp5eSd9QEkBRjccAXqQ9YWiwZNx", +); +// ========================= + +const provider = anchor.AnchorProvider.env(); +const payer = provider.wallet["payer"]; + +// V5 clients +const autocratClient = AutocratClient.createClient({ provider }); + +// V6 client +const futarchyV6 = FutarchyClientV6.createClient({ provider }); + +async function checkMigrationStatus( + v5VaultPda: PublicKey, + v6VaultPda: PublicKey, + baseMint: PublicKey, + quoteMint: PublicKey, + baseDecimals: number, + quoteDecimals: number, + raydiumLpMint: PublicKey | null, +): Promise<{ + migrationDetected: boolean; + migrationSuccessful: boolean; + details: string[]; +}> { + const details: string[] = []; + let migrationDetected = false; + let migrationSuccessful = true; // Assume success, set to false if any check fails + + const baseMultiplier = Math.pow(10, baseDecimals); + const quoteMultiplier = Math.pow(10, quoteDecimals); + + // Check 1: Mint authority - is it on V6 vault? + const baseMintInfo = await getMint(provider.connection, baseMint); + const currentMintAuthority = baseMintInfo.mintAuthority; + + if (currentMintAuthority?.equals(v6VaultPda)) { + details.push("✓ Mint authority is on V6 vault"); + migrationDetected = true; + } else if (currentMintAuthority?.equals(v5VaultPda)) { + details.push("• Mint authority is still on V5 vault (not migrated)"); + migrationSuccessful = false; + } else if (currentMintAuthority) { + details.push( + `⚠ Mint authority is on unknown address: ${currentMintAuthority.toBase58()}`, + ); + } else { + details.push("• No mint authority (immutable token)"); + } + + // Check 2: Metadata update authority - is it on V6 vault? + const [metadataAddr] = getMetadataAddr(baseMint); + try { + const metadataAccountInfo = + await provider.connection.getAccountInfo(metadataAddr); + if (metadataAccountInfo) { + const metadataSerializer = getMetadataAccountDataSerializer(); + const [metadata] = metadataSerializer.deserialize( + metadataAccountInfo.data, + ); + const updateAuthority = new PublicKey(metadata.updateAuthority); + + if (updateAuthority.equals(v6VaultPda)) { + details.push("✓ Metadata update authority is on V6 vault"); + migrationDetected = true; + } else if (updateAuthority.equals(v5VaultPda)) { + details.push( + "• Metadata update authority is still on V5 vault (not migrated)", + ); + migrationSuccessful = false; + } else { + details.push( + `⚠ Metadata update authority is on unknown address: ${updateAuthority.toBase58()}`, + ); + } + } + } catch { + details.push("• No metadata found"); + } + + // Check 3: V6 vault token balances (indicates successful transfer) + const v6VaultBaseAta = getAssociatedTokenAddressSync( + baseMint, + v6VaultPda, + true, + ); + const v6VaultQuoteAta = getAssociatedTokenAddressSync( + quoteMint, + v6VaultPda, + true, + ); + + try { + const baseInfo = + await provider.connection.getTokenAccountBalance(v6VaultBaseAta); + const balance = BigInt(baseInfo.value.amount); + if (balance > 0n) { + details.push( + `✓ V6 vault has ${(Number(balance) / baseMultiplier).toLocaleString()} base tokens`, + ); + migrationDetected = true; + } + } catch { + // No account means no tokens transferred yet + } + + try { + const quoteInfo = + await provider.connection.getTokenAccountBalance(v6VaultQuoteAta); + const balance = BigInt(quoteInfo.value.amount); + if (balance > 0n) { + details.push( + `✓ V6 vault has ${(Number(balance) / quoteMultiplier).toLocaleString()} quote tokens`, + ); + migrationDetected = true; + } + } catch { + // No account means no tokens transferred yet + } + + // Check 4: V5 vault is empty (indicates complete migration) + const v5VaultBaseAta = getAssociatedTokenAddressSync( + baseMint, + v5VaultPda, + true, + ); + const v5VaultQuoteAta = getAssociatedTokenAddressSync( + quoteMint, + v5VaultPda, + true, + ); + + let v5BaseBalance = 0n; + let v5QuoteBalance = 0n; + + try { + const baseInfo = + await provider.connection.getTokenAccountBalance(v5VaultBaseAta); + v5BaseBalance = BigInt(baseInfo.value.amount); + } catch { + // No account + } + + try { + const quoteInfo = + await provider.connection.getTokenAccountBalance(v5VaultQuoteAta); + v5QuoteBalance = BigInt(quoteInfo.value.amount); + } catch { + // No account + } + + // Check 5: LP tokens withdrawn (Raydium-specific) + if (raydiumLpMint) { + const v5VaultLpAta = getAssociatedTokenAddressSync( + raydiumLpMint, + v5VaultPda, + true, + ); + try { + const lpInfo = + await provider.connection.getTokenAccountBalance(v5VaultLpAta); + const lpBalance = BigInt(lpInfo.value.amount); + if (lpBalance === 0n) { + details.push("✓ LP tokens have been withdrawn from V5 vault"); + migrationDetected = true; + } else if (migrationDetected) { + details.push( + `⚠ V5 vault still has ${lpInfo.value.uiAmountString} LP tokens`, + ); + } + } catch { + // No LP account - might mean withdrawn or never had any + if (migrationDetected) { + details.push("✓ No LP token account in V5 vault"); + } + } + } + + if (migrationDetected) { + if (v5BaseBalance > 0n) { + details.push( + `⚠ V5 vault still has ${(Number(v5BaseBalance) / baseMultiplier).toLocaleString()} base tokens remaining`, + ); + } + if (v5QuoteBalance > 0n) { + details.push( + `⚠ V5 vault still has ${(Number(v5QuoteBalance) / quoteMultiplier).toLocaleString()} quote tokens remaining`, + ); + } + if (v5BaseBalance === 0n && v5QuoteBalance === 0n) { + details.push("✓ V5 vault is empty"); + } + } + + // If nothing detected as migrated, it hasn't been run + if (!migrationDetected) { + migrationSuccessful = false; + } + + return { migrationDetected, migrationSuccessful, details }; +} + +async function main() { + console.log("=".repeat(60)); + console.log("PREVIEW: MIGRATE V5 DAO TO V6 DAO (Raydium LP)"); + console.log("=".repeat(60)); + console.log("\nThis is a dry run - no transactions will be submitted.\n"); + + // Step 1: Fetch V5 DAO data + console.log("[1] Fetching V5 DAO data..."); + const v5Dao = await autocratClient.getDao(V5_DAO_ADDRESS); + const { multisigPda: v5MultisigPda, vaultPda: v5VaultPda } = + await getSquadsPdasFromDao(V5_DAO_ADDRESS); + + console.log(" V5 DAO Address:", V5_DAO_ADDRESS.toBase58()); + console.log(" Base Mint:", v5Dao.baseMint.toBase58()); + console.log(" Quote Mint:", v5Dao.quoteMint.toBase58()); + console.log(" V5 Squads Multisig:", v5MultisigPda.toBase58()); + console.log(" V5 Vault PDA:", v5VaultPda.toBase58()); + + // Step 2: Fetch and verify V6 DAO + console.log("\n[2] Fetching V6 DAO data..."); + const v6Dao = await futarchyV6.fetchDao(V6_DAO_ADDRESS); + if (!v6Dao) { + console.log(" ✗ V6 DAO not found at", V6_DAO_ADDRESS.toBase58()); + console.log( + " Make sure the V6 DAO is already initialized before running migration.", + ); + return; + } + + // Verify mints match + if (!v6Dao.baseMint.equals(v5Dao.baseMint)) { + console.log(" ✗ Base mint mismatch!"); + console.log(" V5:", v5Dao.baseMint.toBase58()); + console.log(" V6:", v6Dao.baseMint.toBase58()); + return; + } + if (!v6Dao.quoteMint.equals(v5Dao.quoteMint)) { + console.log(" ✗ Quote mint mismatch!"); + console.log(" V5:", v5Dao.quoteMint.toBase58()); + console.log(" V6:", v6Dao.quoteMint.toBase58()); + return; + } + + const v6MultisigPda = multisig.getMultisigPda({ + createKey: V6_DAO_ADDRESS, + })[0]; + const v6VaultPda = multisig.getVaultPda({ + multisigPda: v6MultisigPda, + index: 0, + })[0]; + + console.log(" V6 DAO Address:", V6_DAO_ADDRESS.toBase58()); + console.log(" V6 Squads Multisig:", v6MultisigPda.toBase58()); + console.log(" V6 Vault PDA:", v6VaultPda.toBase58()); + console.log(" ✓ Base mint matches V5 DAO"); + console.log(" ✓ Quote mint matches V5 DAO"); + + // Step 3: Fetch token decimals and liquidity requirements + console.log("\n[3] Fetching token decimals and liquidity requirements..."); + + const baseMintInfo = await getMint(provider.connection, v5Dao.baseMint); + const quoteMintInfo = await getMint(provider.connection, v5Dao.quoteMint); + const baseDecimals = baseMintInfo.decimals; + const quoteDecimals = quoteMintInfo.decimals; + + console.log(" Base token decimals:", baseDecimals); + console.log(" Quote token decimals:", quoteDecimals); + + const minBaseLiquidity = v5Dao.minBaseFutarchicLiquidity; + const minQuoteLiquidity = v5Dao.minQuoteFutarchicLiquidity; + + const baseMultiplier = Math.pow(10, baseDecimals); + const quoteMultiplier = Math.pow(10, quoteDecimals); + + console.log( + " Min base liquidity required:", + (minBaseLiquidity.toNumber() / baseMultiplier).toLocaleString(), + ); + console.log( + " Min quote liquidity required:", + (minQuoteLiquidity.toNumber() / quoteMultiplier).toLocaleString(), + ); + + // Step 4: Fetch Raydium CPMM pool info and LP balance + console.log("\n[4] Fetching Raydium CPMM pool info..."); + + const [raydiumPoolState] = getLiquidityPoolAddr( + LAUNCHPAD_PROGRAM_ID, + V5_DAO_ADDRESS, + ); + const [raydiumLpMint] = getRaydiumCpmmLpMintAddr(raydiumPoolState, false); + const v5VaultLpAta = getAssociatedTokenAddressSync( + raydiumLpMint, + v5VaultPda, + true, + ); + + console.log(" Raydium Pool State:", raydiumPoolState.toBase58()); + console.log(" Raydium LP Mint:", raydiumLpMint.toBase58()); + + let lpBalance = BigInt(0); + let poolExists = false; + try { + const lpInfo = + await provider.connection.getTokenAccountBalance(v5VaultLpAta); + lpBalance = BigInt(lpInfo.value.amount); + poolExists = true; + console.log(" Vault LP token balance:", lpInfo.value.uiAmountString); + } catch { + console.log( + " ⚠ Vault LP token balance: 0 (no account or pool doesn't exist)", + ); + } + + // Token ordering for Raydium: smaller pubkey is token0 + const isBaseToken0 = + v5Dao.baseMint.toBuffer().compare(v5Dao.quoteMint.toBuffer()) < 0; + const token0Mint = isBaseToken0 ? v5Dao.baseMint : v5Dao.quoteMint; + const token1Mint = isBaseToken0 ? v5Dao.quoteMint : v5Dao.baseMint; + + const [poolToken0Vault] = getRaydiumCpmmPoolVaultAddr( + raydiumPoolState, + token0Mint, + false, + ); + const [poolToken1Vault] = getRaydiumCpmmPoolVaultAddr( + raydiumPoolState, + token1Mint, + false, + ); + + console.log( + " Token ordering:", + isBaseToken0 ? "base=token0, quote=token1" : "quote=token0, base=token1", + ); + + // Calculate expected withdrawal amounts from LP + let expectedBaseFromLp = BigInt(0); + let expectedQuoteFromLp = BigInt(0); + + if (lpBalance > 0n) { + try { + // Fetch pool vault balances and LP supply to calculate proportional withdrawal + const [token0VaultBalance, token1VaultBalance, lpMintInfo] = + await Promise.all([ + provider.connection.getTokenAccountBalance(poolToken0Vault), + provider.connection.getTokenAccountBalance(poolToken1Vault), + getMint(provider.connection, raydiumLpMint), + ]); + + const poolToken0Amount = BigInt(token0VaultBalance.value.amount); + const poolToken1Amount = BigInt(token1VaultBalance.value.amount); + const lpSupply = lpMintInfo.supply; + + // Calculate proportional share: (lpBalance / lpSupply) * poolAmount + const token0Share = (lpBalance * poolToken0Amount) / lpSupply; + const token1Share = (lpBalance * poolToken1Amount) / lpSupply; + + // Assign based on token ordering + if (isBaseToken0) { + expectedBaseFromLp = token0Share; + expectedQuoteFromLp = token1Share; + } else { + expectedBaseFromLp = token1Share; + expectedQuoteFromLp = token0Share; + } + + console.log( + " Expected base from LP withdrawal:", + (Number(expectedBaseFromLp) / baseMultiplier).toLocaleString(), + ); + console.log( + " Expected quote from LP withdrawal:", + (Number(expectedQuoteFromLp) / quoteMultiplier).toLocaleString(), + ); + } catch (e) { + console.log(" ⚠ Could not calculate LP withdrawal amounts:", e); + } + } + + // Check if migration has already been run + console.log("\n[4.5] Checking migration status..."); + const migrationStatus = await checkMigrationStatus( + v5VaultPda, + v6VaultPda, + v5Dao.baseMint, + v5Dao.quoteMint, + baseDecimals, + quoteDecimals, + poolExists ? raydiumLpMint : null, + ); + + if (migrationStatus.migrationDetected) { + console.log("\n" + "=".repeat(60)); + if (migrationStatus.migrationSuccessful) { + console.log("✓ MIGRATION ALREADY COMPLETED SUCCESSFULLY"); + } else { + console.log("⚠ MIGRATION PARTIALLY COMPLETED"); + } + console.log("=".repeat(60)); + console.log("\nMigration status details:"); + for (const detail of migrationStatus.details) { + console.log(" " + detail); + } + console.log("\n" + "=".repeat(60)); + + if (migrationStatus.migrationSuccessful) { + console.log("No further action needed - migration is complete."); + return; + } else { + console.log("Migration may need manual intervention."); + console.log("Continuing with preview to show current state...\n"); + } + } else { + console.log(" Migration has not been run yet."); + } + + // Check payer's wallet balances + const payerBaseAta = getAssociatedTokenAddressSync( + v5Dao.baseMint, + payer.publicKey, + true, + ); + const payerQuoteAta = getAssociatedTokenAddressSync( + v5Dao.quoteMint, + payer.publicKey, + true, + ); + + let payerBaseBalance = BigInt(0); + let payerQuoteBalance = BigInt(0); + + try { + const baseInfo = + await provider.connection.getTokenAccountBalance(payerBaseAta); + payerBaseBalance = BigInt(baseInfo.value.amount); + } catch { + console.log(" ⚠ Your base token account doesn't exist"); + } + + try { + const quoteInfo = + await provider.connection.getTokenAccountBalance(payerQuoteAta); + payerQuoteBalance = BigInt(quoteInfo.value.amount); + } catch { + console.log(" ⚠ Your quote token account doesn't exist"); + } + + console.log( + " Your base token balance:", + (Number(payerBaseBalance) / baseMultiplier).toLocaleString(), + ); + console.log( + " Your quote token balance:", + (Number(payerQuoteBalance) / quoteMultiplier).toLocaleString(), + ); + + // Check if payer has enough tokens + const hasEnoughBase = payerBaseBalance >= BigInt(minBaseLiquidity.toString()); + const hasEnoughQuote = + payerQuoteBalance >= BigInt(minQuoteLiquidity.toString()); + + if (!hasEnoughBase) { + const needed = ( + minBaseLiquidity.toNumber() / baseMultiplier + ).toLocaleString(); + const have = (Number(payerBaseBalance) / baseMultiplier).toLocaleString(); + console.log(` ✗ Insufficient base tokens! Need ${needed}, have ${have}`); + } else { + console.log(" ✓ Sufficient base tokens for proposal liquidity"); + } + + if (!hasEnoughQuote) { + const needed = ( + minQuoteLiquidity.toNumber() / quoteMultiplier + ).toLocaleString(); + const have = (Number(payerQuoteBalance) / quoteMultiplier).toLocaleString(); + console.log(` ✗ Insufficient quote tokens! Need ${needed}, have ${have}`); + } else { + console.log(" ✓ Sufficient quote tokens for proposal liquidity"); + } + + // Step 5: Get vault token balances to transfer + console.log("\n[5] Fetching V5 vault token balances..."); + const v5VaultBaseAta = getAssociatedTokenAddressSync( + v5Dao.baseMint, + v5VaultPda, + true, + ); + const v5VaultQuoteAta = getAssociatedTokenAddressSync( + v5Dao.quoteMint, + v5VaultPda, + true, + ); + + let baseBalance = BigInt(0); + let quoteBalance = BigInt(0); + + try { + const baseInfo = + await provider.connection.getTokenAccountBalance(v5VaultBaseAta); + baseBalance = BigInt(baseInfo.value.amount); + console.log( + " Vault base token balance:", + (Number(baseBalance) / baseMultiplier).toLocaleString(), + ); + } catch { + console.log(" Vault base token balance: 0 (no account)"); + } + + try { + const quoteInfo = + await provider.connection.getTokenAccountBalance(v5VaultQuoteAta); + quoteBalance = BigInt(quoteInfo.value.amount); + console.log( + " Vault quote token balance:", + (Number(quoteBalance) / quoteMultiplier).toLocaleString(), + ); + } catch { + console.log(" Vault quote token balance: 0 (no account)"); + } + + // Calculate total amounts to transfer (existing + LP withdrawal) + const totalBaseToTransfer = baseBalance + expectedBaseFromLp; + const totalQuoteToTransfer = quoteBalance + expectedQuoteFromLp; + + if (lpBalance > 0n) { + console.log( + "\n Total base to transfer (vault + LP):", + (Number(totalBaseToTransfer) / baseMultiplier).toLocaleString(), + ); + console.log( + " Total quote to transfer (vault + LP):", + (Number(totalQuoteToTransfer) / quoteMultiplier).toLocaleString(), + ); + } + + // Step 6: Check mint authority + console.log("\n[6] Checking base mint authority..."); + const currentMintAuthority = baseMintInfo.mintAuthority; + let canTransferMintAuthority = false; + + if (currentMintAuthority) { + console.log(" Current mint authority:", currentMintAuthority.toBase58()); + if (currentMintAuthority.equals(v5VaultPda)) { + console.log(" ✓ Mint authority is the V5 vault (will be transferred)"); + canTransferMintAuthority = true; + } else { + console.log( + " ⚠ Mint authority is NOT the V5 vault - cannot transfer via proposal", + ); + } + } else { + console.log(" ⚠ No mint authority (token is immutable)"); + } + + // Step 7: Check metadata update authority + console.log("\n[7] Checking metadata update authority..."); + const [metadataAddr] = getMetadataAddr(v5Dao.baseMint); + let canTransferMetadataAuthority = false; + + try { + const metadataAccountInfo = + await provider.connection.getAccountInfo(metadataAddr); + if (metadataAccountInfo) { + const metadataSerializer = getMetadataAccountDataSerializer(); + const [metadata] = metadataSerializer.deserialize( + metadataAccountInfo.data, + ); + const updateAuthority = new PublicKey(metadata.updateAuthority); + console.log(" Metadata address:", metadataAddr.toBase58()); + console.log(" Current update authority:", updateAuthority.toBase58()); + if (updateAuthority.equals(v5VaultPda)) { + console.log( + " ✓ Metadata update authority is the V5 vault (will be transferred)", + ); + canTransferMetadataAuthority = true; + } else { + console.log( + " ⚠ Metadata update authority is NOT the V5 vault - cannot transfer via proposal", + ); + } + } else { + console.log(" ⚠ No metadata found for base mint"); + } + } catch (e: any) { + console.log(" ⚠ Could not fetch metadata:", e.message || e); + } + + // Preview what will happen + console.log("\n" + "=".repeat(60)); + console.log("MIGRATION PREVIEW"); + console.log("=".repeat(60)); + + // Get next transaction index + const v5MultisigAccountInfo = + await multisig.accounts.Multisig.fromAccountAddress( + provider.connection, + v5MultisigPda, + ); + const currentTransactionIndex = Number( + v5MultisigAccountInfo.transactionIndex, + ); + const transactionIndex = currentTransactionIndex + 1; + + const [squadsProposalPda] = multisig.getProposalPda({ + multisigPda: v5MultisigPda, + transactionIndex: BigInt(transactionIndex), + }); + + const [metaDaoProposal] = getProposalAddr( + AUTOCRAT_PROGRAM_ID, + squadsProposalPda, + ); + + // Get Meteora PDAs + const meteoraPdas = getMeteoraPdas(v5Dao.baseMint, v5Dao.quoteMint); + + console.log("\nAddresses:"); + console.log(" V5 DAO:", V5_DAO_ADDRESS.toBase58()); + console.log(" V6 DAO:", V6_DAO_ADDRESS.toBase58()); + console.log(" Next Squads Proposal PDA:", squadsProposalPda.toBase58()); + console.log(" MetaDAO Proposal PDA:", metaDaoProposal.toBase58()); + console.log(" Meteora DAMM v2 Pool:", meteoraPdas.pool.toBase58()); + console.log( + " Meteora Position NFT Mint:", + meteoraPdas.positionNftMint.toBase58(), + ); + + console.log("\nMigration actions (when proposal passes):"); + if (lpBalance > 0n) { + console.log(" 1. Withdraw Raydium LP tokens:", lpBalance.toString()); + console.log( + " → Expected base:", + (Number(expectedBaseFromLp) / baseMultiplier).toLocaleString(), + ); + console.log( + " → Expected quote:", + (Number(expectedQuoteFromLp) / quoteMultiplier).toLocaleString(), + ); + + // Calculate 90/10 split + const baseToMeteora = Number(expectedBaseFromLp) / 10; + const quoteToMeteora = Number(expectedQuoteFromLp) / 10; + const baseToFutarchy = Number(expectedBaseFromLp) - baseToMeteora; + const quoteToFutarchy = Number(expectedQuoteFromLp) - quoteToMeteora; + + console.log( + "\n 2. Create Meteora DAMM v2 pool (10% of withdrawn tokens):", + ); + console.log( + " → Base to Meteora:", + (baseToMeteora / baseMultiplier).toLocaleString(), + ); + console.log( + " → Quote to Meteora:", + (quoteToMeteora / quoteMultiplier).toLocaleString(), + ); + + console.log( + "\n 3. Provide liquidity to Futarchy V6 AMM (90% of withdrawn tokens):", + ); + console.log( + " → Base to Futarchy:", + (baseToFutarchy / baseMultiplier).toLocaleString(), + ); + console.log( + " → Quote to Futarchy:", + (quoteToFutarchy / quoteMultiplier).toLocaleString(), + ); + + console.log("\n 4. Transfer remaining vault balance to V6 treasury:"); + if (baseBalance > 0n) { + console.log( + " → Base:", + (Number(baseBalance) / baseMultiplier).toLocaleString(), + ); + } + if (quoteBalance > 0n) { + console.log( + " → Quote:", + (Number(quoteBalance) / quoteMultiplier).toLocaleString(), + ); + } + if (baseBalance === 0n && quoteBalance === 0n) { + console.log(" → No additional vault balance to transfer"); + } + } else { + console.log(" • No LP tokens to withdraw"); + if (totalBaseToTransfer > 0n) { + console.log( + " • Transfer", + (Number(totalBaseToTransfer) / baseMultiplier).toLocaleString(), + "base tokens to V6 vault", + ); + } else { + console.log(" • No base tokens to transfer"); + } + if (totalQuoteToTransfer > 0n) { + console.log( + " • Transfer", + (Number(totalQuoteToTransfer) / quoteMultiplier).toLocaleString(), + "quote tokens to V6 vault", + ); + } else { + console.log(" • No quote tokens to transfer"); + } + } + if (canTransferMintAuthority) { + console.log("\n 5. Transfer mint authority to V6 vault"); + } + if (canTransferMetadataAuthority) { + console.log(" 6. Transfer metadata update authority to V6 vault"); + } + + console.log("\nProposal liquidity (from your wallet):"); + console.log( + " • Base tokens:", + (minBaseLiquidity.toNumber() / baseMultiplier).toLocaleString(), + ); + console.log( + " • Quote tokens:", + (minQuoteLiquidity.toNumber() / quoteMultiplier).toLocaleString(), + ); + + // Ready check + console.log("\n" + "=".repeat(60)); + const isReady = hasEnoughBase && hasEnoughQuote; + if (isReady) { + console.log("✓ READY TO MIGRATE"); + console.log( + "Run the full migration script (migrateToV6Raydium.ts) when ready.", + ); + } else { + console.log("✗ NOT READY - Fix issues above before migrating"); + } + console.log("=".repeat(60)); +} + +main().catch((error) => { + console.error("Error:", error); + process.exit(1); +}); diff --git a/sdk/src/v0.7/types/raydium_migration_helper.ts b/sdk/src/v0.7/types/raydium_migration_helper.ts new file mode 100644 index 000000000..887ae7004 --- /dev/null +++ b/sdk/src/v0.7/types/raydium_migration_helper.ts @@ -0,0 +1,531 @@ +export type RaydiumMigrationHelper = { + version: "0.1.0"; + name: "raydium_migration_helper"; + instructions: [ + { + name: "withdrawAndProvideLiquidity"; + accounts: [ + { + name: "vaultAuthority"; + isMut: true; + isSigner: true; + docs: [ + "The vault/DAO that owns the LP tokens (must sign)", + "This will be the V5 vault PDA signing via Squads", + ]; + }, + { + name: "poolState"; + isMut: true; + isSigner: false; + docs: ["Raydium CPMM pool state"]; + }, + { + name: "lpMint"; + isMut: true; + isSigner: false; + docs: ["LP token mint"]; + }, + { + name: "vaultLpToken"; + isMut: true; + isSigner: false; + docs: ["Vault's LP token account (will be burned from)"]; + }, + { + name: "vaultToken0"; + isMut: true; + isSigner: false; + docs: [ + "Vault's token0 account (will receive tokens from pool)", + "Note: token0/token1 ordering is derived from base_mint/quote_mint pubkey comparison", + ]; + }, + { + name: "vaultToken1"; + isMut: true; + isSigner: false; + docs: [ + "Vault's token1 account (will receive tokens from pool)", + "Note: token0/token1 ordering is derived from base_mint/quote_mint pubkey comparison", + ]; + }, + { + name: "dao"; + isMut: true; + isSigner: false; + docs: ["V6 DAO account"]; + }, + { + name: "baseMint"; + isMut: false; + isSigner: false; + docs: [ + "Base token mint (used for determining token0/token1 -> base/quote mapping)", + ]; + }, + { + name: "quoteMint"; + isMut: false; + isSigner: false; + docs: [ + "Quote token mint (used for determining token0/token1 -> base/quote mapping)", + ]; + }, + { + name: "raydiumAuthority"; + isMut: false; + isSigner: false; + docs: ["Raydium authority PDA"]; + }, + { + name: "poolToken0Vault"; + isMut: true; + isSigner: false; + docs: ["Pool's token0 vault"]; + }, + { + name: "poolToken1Vault"; + isMut: true; + isSigner: false; + docs: ["Pool's token1 vault"]; + }, + { + name: "ammPosition"; + isMut: true; + isSigner: false; + docs: ["AMM position PDA (owned by futarchy program)"]; + }, + { + name: "ammBaseVault"; + isMut: true; + isSigner: false; + docs: ["AMM base vault (owned by DAO)"]; + }, + { + name: "ammQuoteVault"; + isMut: true; + isSigner: false; + docs: ["AMM quote vault (owned by DAO)"]; + }, + { + name: "v6VaultBaseAta"; + isMut: true; + isSigner: false; + docs: [ + "V6 vault base treasury ATA (receives remaining base tokens after liquidity provision)", + ]; + }, + { + name: "v6VaultQuoteAta"; + isMut: true; + isSigner: false; + docs: [ + "V6 vault quote treasury ATA (receives remaining quote tokens after liquidity provision)", + ]; + }, + { + name: "v6VaultPda"; + isMut: false; + isSigner: false; + docs: [ + "V6 vault PDA (will be the position authority for the AMM position)", + "This is separate from vault_authority (V5 vault) which signs the transaction", + ]; + }, + { + name: "eventAuthority"; + isMut: false; + isSigner: false; + docs: ["Event authority for futarchy CPI events"]; + }, + { + name: "raydiumProgram"; + isMut: false; + isSigner: false; + docs: ["Raydium CPMM program"]; + }, + { + name: "futarchyProgram"; + isMut: false; + isSigner: false; + docs: ["Futarchy v0.6 program"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["SPL Token program"]; + }, + { + name: "tokenProgram2022"; + isMut: false; + isSigner: false; + docs: [ + "SPL Token 2022 program (required by Raydium for Token-2022 support)", + ]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["System program"]; + }, + { + name: "memoProgram"; + isMut: false; + isSigner: false; + docs: ["Memo program (required by Raydium for withdrawal logs)"]; + }, + ]; + args: [ + { + name: "lpAmount"; + type: "u64"; + }, + { + name: "minRaydiumAmount0"; + type: "u64"; + }, + { + name: "minRaydiumAmount1"; + type: "u64"; + }, + { + name: "minFutarchyLiquidity"; + type: "u64"; + }, + ]; + }, + ]; + events: [ + { + name: "MigrationExecuted"; + fields: [ + { + name: "vaultAuthority"; + type: "publicKey"; + index: false; + }, + { + name: "lpAmount"; + type: "u64"; + index: false; + }, + { + name: "withdrawnBase"; + type: "u64"; + index: false; + }, + { + name: "withdrawnQuote"; + type: "u64"; + index: false; + }, + { + name: "treasuryBaseTransferred"; + type: "u64"; + index: false; + }, + { + name: "treasuryQuoteTransferred"; + type: "u64"; + index: false; + }, + ]; + }, + ]; + errors: [ + { + code: 6000; + name: "InsufficientLpBalance"; + msg: "Insufficient LP token balance"; + }, + { + code: 6001; + name: "TokenAccountOwnerMismatch"; + msg: "Token account owner mismatch"; + }, + { + code: 6002; + name: "InvalidTokenMint"; + msg: "Invalid token mint"; + }, + { + code: 6003; + name: "MathOverflow"; + msg: "Math overflow error"; + }, + { + code: 6004; + name: "DuplicateTokenMints"; + msg: "Base and quote mints must be different"; + }, + ]; +}; + +export const IDL: RaydiumMigrationHelper = { + version: "0.1.0", + name: "raydium_migration_helper", + instructions: [ + { + name: "withdrawAndProvideLiquidity", + accounts: [ + { + name: "vaultAuthority", + isMut: true, + isSigner: true, + docs: [ + "The vault/DAO that owns the LP tokens (must sign)", + "This will be the V5 vault PDA signing via Squads", + ], + }, + { + name: "poolState", + isMut: true, + isSigner: false, + docs: ["Raydium CPMM pool state"], + }, + { + name: "lpMint", + isMut: true, + isSigner: false, + docs: ["LP token mint"], + }, + { + name: "vaultLpToken", + isMut: true, + isSigner: false, + docs: ["Vault's LP token account (will be burned from)"], + }, + { + name: "vaultToken0", + isMut: true, + isSigner: false, + docs: [ + "Vault's token0 account (will receive tokens from pool)", + "Note: token0/token1 ordering is derived from base_mint/quote_mint pubkey comparison", + ], + }, + { + name: "vaultToken1", + isMut: true, + isSigner: false, + docs: [ + "Vault's token1 account (will receive tokens from pool)", + "Note: token0/token1 ordering is derived from base_mint/quote_mint pubkey comparison", + ], + }, + { + name: "dao", + isMut: true, + isSigner: false, + docs: ["V6 DAO account"], + }, + { + name: "baseMint", + isMut: false, + isSigner: false, + docs: [ + "Base token mint (used for determining token0/token1 -> base/quote mapping)", + ], + }, + { + name: "quoteMint", + isMut: false, + isSigner: false, + docs: [ + "Quote token mint (used for determining token0/token1 -> base/quote mapping)", + ], + }, + { + name: "raydiumAuthority", + isMut: false, + isSigner: false, + docs: ["Raydium authority PDA"], + }, + { + name: "poolToken0Vault", + isMut: true, + isSigner: false, + docs: ["Pool's token0 vault"], + }, + { + name: "poolToken1Vault", + isMut: true, + isSigner: false, + docs: ["Pool's token1 vault"], + }, + { + name: "ammPosition", + isMut: true, + isSigner: false, + docs: ["AMM position PDA (owned by futarchy program)"], + }, + { + name: "ammBaseVault", + isMut: true, + isSigner: false, + docs: ["AMM base vault (owned by DAO)"], + }, + { + name: "ammQuoteVault", + isMut: true, + isSigner: false, + docs: ["AMM quote vault (owned by DAO)"], + }, + { + name: "v6VaultBaseAta", + isMut: true, + isSigner: false, + docs: [ + "V6 vault base treasury ATA (receives remaining base tokens after liquidity provision)", + ], + }, + { + name: "v6VaultQuoteAta", + isMut: true, + isSigner: false, + docs: [ + "V6 vault quote treasury ATA (receives remaining quote tokens after liquidity provision)", + ], + }, + { + name: "v6VaultPda", + isMut: false, + isSigner: false, + docs: [ + "V6 vault PDA (will be the position authority for the AMM position)", + "This is separate from vault_authority (V5 vault) which signs the transaction", + ], + }, + { + name: "eventAuthority", + isMut: false, + isSigner: false, + docs: ["Event authority for futarchy CPI events"], + }, + { + name: "raydiumProgram", + isMut: false, + isSigner: false, + docs: ["Raydium CPMM program"], + }, + { + name: "futarchyProgram", + isMut: false, + isSigner: false, + docs: ["Futarchy v0.6 program"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["SPL Token program"], + }, + { + name: "tokenProgram2022", + isMut: false, + isSigner: false, + docs: [ + "SPL Token 2022 program (required by Raydium for Token-2022 support)", + ], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["System program"], + }, + { + name: "memoProgram", + isMut: false, + isSigner: false, + docs: ["Memo program (required by Raydium for withdrawal logs)"], + }, + ], + args: [ + { + name: "lpAmount", + type: "u64", + }, + { + name: "minRaydiumAmount0", + type: "u64", + }, + { + name: "minRaydiumAmount1", + type: "u64", + }, + { + name: "minFutarchyLiquidity", + type: "u64", + }, + ], + }, + ], + events: [ + { + name: "MigrationExecuted", + fields: [ + { + name: "vaultAuthority", + type: "publicKey", + index: false, + }, + { + name: "lpAmount", + type: "u64", + index: false, + }, + { + name: "withdrawnBase", + type: "u64", + index: false, + }, + { + name: "withdrawnQuote", + type: "u64", + index: false, + }, + { + name: "treasuryBaseTransferred", + type: "u64", + index: false, + }, + { + name: "treasuryQuoteTransferred", + type: "u64", + index: false, + }, + ], + }, + ], + errors: [ + { + code: 6000, + name: "InsufficientLpBalance", + msg: "Insufficient LP token balance", + }, + { + code: 6001, + name: "TokenAccountOwnerMismatch", + msg: "Token account owner mismatch", + }, + { + code: 6002, + name: "InvalidTokenMint", + msg: "Invalid token mint", + }, + { + code: 6003, + name: "MathOverflow", + msg: "Math overflow error", + }, + { + code: 6004, + name: "DuplicateTokenMints", + msg: "Base and quote mints must be different", + }, + ], +}; diff --git a/tests/conditionalVault/unit/initializeConditionalVault.test.ts b/tests/conditionalVault/unit/initializeConditionalVault.test.ts index 98cc0c9f8..9053ba0e7 100644 --- a/tests/conditionalVault/unit/initializeConditionalVault.test.ts +++ b/tests/conditionalVault/unit/initializeConditionalVault.test.ts @@ -121,32 +121,4 @@ export default function suite() { }); }); }); - - it("doesn't allow initializing vault for question with less than 2 outcomes", async function () { - const oracle = Keypair.generate(); - const questionId = sha256(new Uint8Array([1, 2, 3])); - const callbacks = expectError( - "InsufficientNumConditions", - "Vault initialized despite question having less than 2 outcomes", - ); - - await vaultClient - .initializeQuestionIx(questionId, oracle.publicKey, 1) - .rpc() - .then(callbacks[0], callbacks[1]); - }); - - it("doesn't allow initializing vault for question with more than 10 outcomes", async function () { - const oracle = Keypair.generate(); - const questionId = sha256(new Uint8Array([1, 2, 3])); - const callbacks = expectError( - "TooManyOutcomes", - "Vault initialized despite question having more than 10 outcomes", - ); - - await vaultClient - .initializeQuestionIx(questionId, oracle.publicKey, 11) - .rpc() - .then(callbacks[0], callbacks[1]); - }); } diff --git a/tests/fixtures/amm_v5.so b/tests/fixtures/amm_v5.so new file mode 100644 index 0000000000000000000000000000000000000000..b1460d06e1e3fc5d2e03989c6fba2285d702bf0f GIT binary patch literal 380856 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
M^^Iy@?T_KLr2%{Bciw6ad@WJ z7pq_NVb%^Wm-I)~>+6J1POqzebb4LtHF0`#rcxnO^S~x}9F%s{V0Iz)(!cMxTn{u!PADP17LFb$_oG@mC%<051v&Ti9NQ&T`mK2+$ENRL2W=$$)%vNq1n2H2 zbnn%)GT&$&gwK(={zc!ZvHmB!Z@FFJ$FZB}JM3x01obb|_^Ik&uKohMKAmV;e)-T| z{r34{l&g<`=)?N!L9B~+h#zom^b>rZ!sSwaPTs%(?tbdY>(np&@0={{qWeK<_vxK& z93Rmw+4zC=m1pIhl9`-s)qB|&p62zx1~<{*slfCl6GeZb{PR3`>ref4?0t|Uk8iD% z9_bF9P5kX;biDq$m*7zTgO`d9M9e^^!~_02)U>UCu>1Voy9P>+=^4O(^rzYVtd`F9 zgWG;q!-M*z?2n|4lHYLNBPdW3X7VWbi*-+OJnVu( zE}x~G&v!W9@%*9J=8GD+<)t-sFZ-?@5+f@zsV3Fx!?O%2~t z3O=90FC}*ax!n!F=X7gHY-xxVTuSa9gs)e8j(F&QrA)QUXz6-mD>&iqR+`;xA@T>@1vi#f86@D@jVjn+b^_?bj0Q@kPcPj z&K>A|wfT0PZ)bKsFl#50&v4q=+d%Iy+SyZQ4WXUo^nua&81b9_(Y`?JVyE*vW9qn{ zNBJ+O1IKXD@7q0XJB}CsT5?feX1AEW0Q`>sAb239uNXo~s>3bu@TXIxy`(D{JgY}f z|9pwcnQA}y9svsmq?@nUk24bYCBKWxF%tJB-_3Z?in8`%=isf~o7{qbZ)bR6;QxPL zve*T-5A1)^eaZhu8_cZz!2N~iH@ohC^SR57q*q4syzxgoeuMv?_WT1gMS<9QhCg2G znVs2fR!wEIB7xe=47oG<}MB0%%0o3vfaIO466W2MZ_)WFul%{X~wB>kHhE#`TTdUjq*5 z?B3cgqL+>j1abXzIZsLOuqXhB@F z_;Efe;?s!Yhdp8TAJRkfMqFBnhg}nKEr=g{uzNKCkMi5N1b$HB-&26{M|?U`(t{6! z-A@EQ*!yt6hw}U9dB6voKeT==nL&Z{B{MPNpngyH%_lRF8~oxXGf~U%i)-of;~JCW zQezXt$J#H0o;sul5pYixJa(VRK(B;D9uHA_g&qEBs!+(|c4D-P1 zmrKngH_o#2NM@%ccPL-XeuHq*xA3(mvpaAFJHhl0aba(w2#-;v!)>`j3IsnsTQ@8o zC*k&vZOi@Ymu4BH3v@i&Bk9I>i0hwkWV=ekZ5-7yS@3`ke6Xt#QXDJoFP$p&?#j1K z^0`K?sdaonJ&?L9JD+j$Q)HK+anM&BleMor+%!*50?&2Vb*<^tdsMJ)zjoD4JUQ1@ zSn*c7#{=Ov71pi+?(1*vD%d&(!msPNUf{1S+-!0IypU|j6KV+Zw4CVk&$s8}Pw?nU zmrK1`InxQkmsA|qJJ2fw5N`Ug{@>)yn;}1(NsNMT@VE$cZkQ@#3BZFc@CE7Sw`bu< z_m`gCTFd^l^+>?KpA>-Ii(~d4!rzB*9Y2q!{P7`Q{A@W{0^rAo`8I@r&X4Elgk*ru z4LLeDdUPhYX*-xp8PgZnK`T@K+t>-lQu+fVkifq*w@)4^rjoc!_3(p)C7vJU`Lvf` zdc%I^E9i%ur>eJ-vs9m<)1fa>JqG=P@}(yVeYPH*s6VcM=Jc-0(fc8v-bT$=&uw6y z3ST-`T(cA0_+8GFq>Xs{*gRXzONfgJ0a$51U%(q z?d3N=A$+ROipOW|IS;put_}iz)PvL4?*6hvTu<5kWe3%-@?!7win`=>1(EDNxsCp! z4Hei0-Kal%|86wqUB64^wR_@50)G?H>(57i75Gb9ZWsylp}xU4>rbD_y!YoAzscD% z$DgPFC`^qoz6XVli^{CN_{G5A&>)R3#j zGpp?fmIh?)18`?T-)X)B%X4(i7Qfjk(Cb?%$d~u`Q~C1e5Uasm?8&?7VZYr0FX;IU zwQZ!wXZ=!or|`}3s|sBk3ErpcZlcTYxAO64dh{4S(+Q#n-98-czfAtp2||b4XCY#f zwZ92%AUjAW6vXxJy+V3U}$}F<8YtmdPU3 z=XS1Zkr3+6eJzr5*t~bLNbtD*9g7MaVEc@cMNR4#J(MhJRlmq*vS_~gMQ(llx`E`< zm(x8er)`u1<++pUyEq1;6|Da+VYe8PP|}yIS;nqgFDor)Kja+zMEX~ueXUuYgIiYt zcNxJ!u8^*KisWPM0R0?HPP*Tm)0IkX>}GVdvp=Il())BQWIC4T;8wBUhnrtUM;pic zbS$C}pI_h~(gPCZT~7Q;^&Ov7&}Z_XfLD`fi`t zDFg?NW$!Wi_^`fZ@8O|dfz9?e0)P8unSJQrPYKdfeTUM=*AIU5Ay)bq@CW7p#|Dza z9sNvC(!WdGzTNDa9s?YK(|Oaka(cTL#^*P$Cs*P34{_el})+Rq}h2(9_G= zyLD-M*Rqn|8yFtphrjOE!)n3Pk>NqhHvR#=?KP+o`BHu7GreI8r%P{GSCJl?!}yJQ zLamtG`1}XIZ9Wlj=#uQ7S>$`rvlC5@0Ef@?nvXAEpWr|0>8@eb=gSy>6r97ZKMy43 z+9T!l+EuN3-kGcCuM;h`+m+NO%3a>Bq~82;O1l!i1HQanNqyQm?DU3JOfTS8RjEfG zFZ8ruZ_>UFOL=>l9V}=0dXxH<_K$qFj8MHT8CJcCOk4Z(?F=G`_2^wcK60eg(I)k( z{qR!ib|Kxk=LKIeyqM=ED?Z;Lw@$Co zI0E$A`>p9iQlH@K#%lU)903FVo@EvJv0PTsZ?nMHNA@v%vSYuv`u?D=mx!z*vCdCe zxb+);|MmvrYo&ZumS5y{@bXtH_m(Q<9!`134y(M{zH@rpFYn8#yip+g#!>FJle2yY z_9%STKlu7%k%r$#`X1>n&ZUF?vviQJ4)R-igujE*MS<-5Gy6ON5PflYnz~m@zpvr2 zb3~sX;(A8D<@#URt>pvwEriMRE#M0szWx_|K>H#^-a0s2ZXX3sCvpWnja0|dk1t!C z@zeUDOz&69d0y{ZKfag7%0utRS8_q3U6ps=T;z93as0Lr3i=I9#czd~+RrPtkA3j{x{tj^ZtUjc^^ZLxU ztE?Y>a9H(mHWO(3J}S$#w}L-XPg#AG^Huv%uO6iSvU(`5zuNUsV7_McaI}6^^xiVZ zw`1*B`$woAx`tH`NAFkPe-QoZ60R@X|1z9@bs6(h^e*(?YWV*L_NxoP*AeVjOT<^` z-*WldRndM$zWOV|`#rm2H2T#S539UVzk}Hkuc7iDOTT&r$qV|&9rS-F{VKY4(esz|fh^Eg^e>$bddev46xAs^JWxXm{fmY_{ zznuMk`k74UY7UR>e1hULe!)IiM-cWtRI*|!!>4*rk?p%nZ606W-A?tsu0*<5x8F1A zC~*49@(Lfb^0qRZPwxw~yc;RT?E35-mv)BF(l4nem!+;|SP=_>51+ALC2fDDeiL-;bHBA%yh#=k1nL`?m28 z^7}s7heikH%aLMWCnpPV?-q{-Hj5wSXr-S>cM|=u`OajG#HY=2KVRA)_x1Vx`!3}B zu)x`VDO*p)ItqyhI3{UzOE;c1KmUh z&9jRgkWLjjOzfQ(U7xjk8q=wQ*xuDh1w5O_o!W+MgLGIq7eKInth zTv?Z$dpwvl+BKj(d)_$IBouLuii|0d5rA<9x?fn zxkj-)P9*#_+avW^_^h8y8=BbuO}Zt*^<#^*AG=!nv3^O%=VttVtVhBJWVpln>S?qL1y2Bar5g-{2B z^}mP*Jrk+Dcj$eOgY~=L|KZTuIqpZz`rR$e@2ua|@v`f8H)^~n5O?q7(fVB~AM6La zH>a}S)p0cO9dMxMi$s5-?}lal?rP2-{5H7Hqny2zh(7dNs86JyMD4_HKU*mt;fuKa ztONLnoR2FI9=|{PJJ4O)K%papzlrep_;&(-ue6J_N9rN%;Ow$~jrQ{6J6b#P?ao%T zgC0o-KD~+l52u}c?hJxgJ98-QWDmh7rO|6AAEJ${Lun^}2Kf;-4%#1{`W$U1D=uG=(FAQ*-OKnTo4D?g;97!<>vjfRrlejfA%b0cS^KM{d`T~&kz2E@!uDGP4Qo!qhIjBYlJI|m z;p4h@1Yc3SE320C?-lNzV7KCH$njg+-QOtO-N6CHcSDX&+SW?>en{aq2A@}a&&!pc zmL~~rhr-^$fmzI9I>eITi(PXE?;q%jrqsTk7IpoQs!y*1Gs#=lCi0)9vE_B^N)7Vxr(C z7e6=07b)+JE`DY%Uih}s#Xp+k*F?tO>Ebu%;)T99x%m5X_$B|>yZGyJ^b7u_F8=Rx z^>8A^M8RuZ{DNHmA|J1I@juMvFZ5mR;y+q7|4Uu`f9LWS{cxd+PjdN7{P`|^T`qs= zCtl{_|By>B?RlPyzbco%w5Ky&{4aCzC;7kB#a~)gubl4U&&ib^FU8uqEy(X(x%@>w zXS(#Wa`X%Tr@Q#wx$;Z-fJNHRJ9GI<`yiuL$jeQar{XSCJk19w4D_0G$?n&OclHwr`?y{Tq%T z#J6)dVO-NMaF`!>1N^s&ANcpuK1s|+!%#`}o#bpCd^h8>_f-7x&>rCFQ@lifKm41; z&*w#Q=V5TZ#>Q9vdG50)NzAACD1MvbtEcrC!iROQpZIb|`9Pwvb#s@8ALm8(d481Z zZNy->gof;39mhAUBTTiETMu!LQE&(qaAgqJ>(vko*C`nqU8Gu!ucPZ-u=A_oYk!50PY%>| zg^gnGhc6d>Bg1G1tbM> z@hTZ7gu8j1P%T|k8NCxV-796h5dJ-n7pkS3TE^!SG~Fv?+z@`0#|_oe%`f9`y{5Zd z#t-4&^7x@zx{YP|{SL*W@-3EeM7WE`5!KT5m*w{>O?R1$C+NK|j3=t4+fv4t|I~Et zGOh?e#N&!;>2{aZ-;X$596rk9i)!%wW#xKO;XlaZjB4Y6^W%PeR;UD2~NHzFzW%N9*@DKBNq#FF;GWbs^{B|Cf zRD+*d#-GO&ejATZs===+qyKLdzK_Q#)!;Xl;eS-&dwIN44Sro2{SPbrRvx!hgWpod z{|_*HHMsV&_Wn>!xcOyp(j!&Fx2lZJO*Qc?D}#GSZMZVN-dPi_y$r6WCfvF*zQ3&| z+^RCTwKd`Pm*u;rCfwmNd~dD^cd(2vt7^iHE5p}W6K-l*y}hv}-2Ae9Usn^ZsjR$L z)r4y=qff?f)#PPM8NS6e@$D|dcX3U){<3nk)r8wy);?tXR*k;hW%Qj>6W{(a`sUPx z+gnE8OKQR$ETeCBO}N8l^v$RVH?=HZ%pO(muf~<(!|1a*TvJ(jW&Bo+f9uNdVOFR* zzAa_=$f&9Tx3R1ovY=Wm-+qsO{(kdy-nn}Jd=T=pb42d^&o+e8dS1QmZ)z03-M5W# z!kv4E@8j^01Kj-` zC8cXc2G@29#@i0o{*5hyC=(6$iMjAh2T>>L7;Ju8dJnVi^J2zwZzPa}bm2Wnl z&hUdU%1_UirJA3;%MSW5f@^s%MuU{kP8ol@`)P;{#81DUqiMgEj7z6)7XQF|#a%du z1{d`C^8mcR?LLV|Ij*9DCp-4&_*U{UKH0m{vyLCfC&s|1d6aaz3>$fz%lL20@PRM( z-n7Y$;jw*!-Hif2mdXjf+r4k;dZ7dR0PrQ-Wc-bE3&?Nx7}$Q_g)5O7awhY^17em0 zW2xAvukjaibWplNT)Tg6K)N;JtBj{hDj+K<9ThPc9}B$Q+cJ-`LH;)HGMj$GKb_$5 zbxU`}`w&49=2tM^5RWtZpOh5xg&lTtAC|h4!~j6gLiqPYYLy0GRyPdOGHlwtDsi zZDArs>$K%oE(15hi?@AnBIci?#{vgvk%`P@V=aH%)x*DDDca2@L#9?5aoc}Bz+}% z0VhBgQX>8Z6mR85d?6Qqyw9ik6iJ`$b27e-#Qmhdd6M*w-Xr1PcZdA!UM{=GE?I<7 zqT@DoZx$Ej`4!_4KG}V~gWXU16vI-#fBJ?~@otKG+D z?KjbL*U*2OCD3k|Hutwor++WZVrpB+2ki&$>pZ{7^Z(|1Om7=y{x^912LDg<{HAYB zfBWOfgWmYlA9t;%g=r@TgbN?+7|4O?U$bXS-ivhaDdN#@w>60lM>^;~%7*WsTb=8t zcazOza&t8NOH~ew^W;lDLZ{Qo*k_%9C={tLr|e|(tm z@~+*``SaK?@yok*L&yKyzhap1mk$&E;$gy{&+us@w7=Jn==(y}55ca0y#N?;-rh3v zdH7kjf5gTy-MMif>}~8H8RzvU7{_e%{ODKC^7j0+%cMTZ_Uv?&7(V+P$;KohR|pCJcAFk{U_t&g*twkA?eURql9)o+~xrywq~VY z2SzJ5`fJogXGQ&KzLUfqjr!Z2T|4pBSG`QF@6jWqi6y z>~CK#0BQ3!=>?L`LDc2 z`O0D_<7kW@I6u8l67#|+R}vNIFU@0~ja`Z4*ZS|6DDS!0y2W(02W=c;^Y1NlQ7dHc zNipdhiueZ<55h4;2Kfq`Xq=_*GIycWx=vXeL7+L!arTwOJWc-x2 z78rrupSe)WWA|~}J?*YMS8D!L51`nUgZ%hVpZF}j$;0YLv|`fug1`}zi!F?cYWGHIos7$<`z>D4m7Z}SvxU*H;n2cDmNkH(!3 zD;!gU`2f*R)!^^*@*h|&c+wN3T>0|aJa@WS_+fIFJ|y#Hw%#(ZNbuOW+V1-vuX1er z0J|qOGoYQ*@1CUd1Uj$TJ&A;tzI1Lu+*?)dRuIwjrE5?NBEpT!1f1Vz!p~wj zlSABm{~RX6&EKc@NWO8nFaRL~r%F85A0R4_GayKB5IS2{NCwtEmTG*lei}!#oFws4 zFoS;#v!(rAKoH9|Ew_%8Xgf)XSDYf+v)^^lYWV}_Lppxc9d+F_7Vl}m-LMS zZ~DpV+4Zl=hpc{o$_diNdn7%SI(akht zQT2xDrBb87nVi&Yw+&kuKl+^lB|$%dmIQfNK>D}Hv)mM}@phih;p@IQgzQTTccLRD2@P@agM>2#TUp`%W!Y1LL z@n?;|*}X2~RsNE5B)oHlxF|;x{RCd*2YyT?ewck!M8ikC!bQQ;?00l%?ycWy%M?R16Gulm^Rrzo)Zqc=)>J6qw1 zzh(9Rnp*Y$=bXU!I)1LCPiBfcaHY5w?)3I7#Rp|hU#9O<_8Z^QMN+P0`$48JU8LpP zen9q{Q~!O9aXDW~i6Lrga{mu}Ax)3xT(eQb#7+H>jt zc8KYg=h8ho#B}R&>9!9s-KJc+zZ_z^{#?2ThnQ|pF5SC_m~MYA-NqrNJCsY;GsJZB zb8@|Yi0PK((sg_3{Qmrlv?bKqA^I`2@KoP9%g;aBcqY;Jdu$wS^LqAfr0qLMn?b9MXSFNwYZy+5S;$bjeI-x1OJ*?1vczl-%5;+wqo zoi>OaWc`1tcAq=f*DHw7-(#O(+93S{;PJWpe*44^^JfF->JUHZ!g)J;eW}EC+pnKMlZxqOUmC+Fe?^d`E@w}YPH&vV0*-3IzWG(>D z+ga!{xjZC%w0WL;g#NBElL(gVukAu#*O)gdU-jOCF;56zVcgO;i{=}FI0~8=|M=A$ z%=SG@)lT9MK8!b+k8VGjO%XcMY@h8Nch9-)7fB-r5M>^qEgTLE9;v9;A6JhBv)5n0|Z&bZis84qrcB&m&BKAKlUP z@s?+lU#I2=E|dJvEU@d-4L;P;>&3cn9Rb5&N7NdhSyTs zY!S+R6n)mY9M~({eO}H?&NF>{C)amgALR9!>4Qpq*8azGe>)WUo$Z%L+YRRLp;2nl zVdo%BzZyMJaDvFI&QlxFQ_iM6`2W}?h^ksVYDaK=bJr=(GC+-2RA(yru zekgpWD0I4ad&6kAwxnI~siZ>L~H;^TXsDG}g%T?cP!2+oOZ=4aN_B$0BcA z2jQF5KkR~b!e7l^Le|Dd-(G5>@XB^96SgB~FBK>kYJZnVgPs-s>yY(j56bQAm@hFN z8yAd(z4TU}uPz_y*Yo--_4F6)In!VHeqo`mLqx%+q2?;|pv`OA`Wo~U&Pm#NIh)UR z_;-r^Z1c`eUl0+kD|d)T|xC*xx41_C>*ve+d`M35S-!4a z>G;Zx>ng_Ua(__1eGS<@Y%g%Wncf?^o%nsfd|E#hbPQP^LF#JDov(+!RwZB9GmzwT zvCN<3>2UL1w{bRX_dha|Yb4+I62r&02IruHKA*hf)rr8lp~ z^5q?BKVav$v;IKtkImz&#=k!&{u$qlU-^E<(R(U-Bbv9ObDKleFAt);wdATp_-g$S z+6{7Wbf~^}^+%B*#plaayB~T(dHwZBe$S*IdK=f@Zti!iTu~tXP@b-1ufOjyp?Q4O z>hF?cs=uM@hc{M{*F0TA)>FEVX*lxpsz0jyoHXL{bJig8Gu-iPam*B^&)RF!C-Zl4 zo!n25Y~L$#dZF0E>AB)27fMH!o-1y0p|tDtTyc{NrJbbbikobg^@1$CAoA(bHL2h5 zwz5A>+QmJsP27{`vuo=vW>?kLtKVVz2eV^B!sw5~#}R)k$Kn4Xd^l6eZ|~~4b^UtL zD=m${M&l;(<15ym%K9b>{`&XuCubJm1Vc}MyrzFx(+i)5o_?IB|4UA9{g7K9F}f$^ z>0a}DghauE!%S!U1m7*`CUJ53933RX*3l~YWa&0?I$MX#*Bko3=TrS)*A3`1y>Idx zhhO_0aP6pKk;8RBzNSP;Zz=u5};7 zDsR1>&*6A}@bz(;z;|-hBY2Gu2>%)_3|YLLgSPn&+YfJYZ1NtDqlEOO3uK+FYg`@6 zE%5C2@D1E4`RyQk6>`0nT$X>MV}-;c-AUi1`r9V>iags#^;ZS%Q$BvehtJm0ZC|!u zKQEg>`cC&7rL@M5FWC&KBl@R^n_%-j`^8N*O9Qq2hY1N6;*&;$YlWBmhNnsW>=51p z|43K1iF=py7wKK??6-a+IYsla{Z)Ei#_g{_}46SC5^32 zuj#8)_ubpRsyLi0@l-4#f!9qx^Z4VBBaoc>r30~KZ%Of~{DQxwg9M8{@cSUe z!9{;#dcf{^noaiC41$ZtQYS*6wO^ZGM!E~XLGAqn;Zw}ip#DV1RfB)Z%P)OM(t(eR ze}%ZyrfB_dlX%-VU%I`(0O{g>=2z*CM)oHg*a@8df0ye2yNN*hk~_8E=v4Q92~WEP z&c+cbwL^T}uTi|)C7>mfZ6xo$Ie}WprF$ClTKVT)hgu;_;%Os=62|6I9;-RmADVDX4mA_>>tPxYB=fJ$nl-pF714#y*F$7 z*OC6M48NPiFUQm@LR%PC+*t{hlobOYXL%do*&TmYjP*ECXDNvdEZ`4{S!{c`uK2zTok;T z{sKOh{a^$S)PSd^UIq`*ih|4NFW^t&eJsF_q5vLUiH|=fe-vCue-VGW?8l>WK_Y!P zf4U2)wR-2eG-$S304^AO*{`wHW_m-2ouA5Qk$oCS1@2Xw@Bt=xn7aMG{5 zl;Qkvw9AeYrQO8!r*pjRzqEeZhX-Gy;M58{=!v3WW<@yoDz_4r^MRT+g-@%12VZU9 zrJpbM&)B{`KOB@tTs!6Xp@Acoj`DD5AnP}MJdh(hZ|sLd^V_|QemLaV^t>Mq&29HT z`QaE!(7sKUQ`@)f+E4DjG_^}RTCvARY{2U3j^FV6}u0TO6sgmKo zTI0KDmms&pa0<~%@*SQc?Jd;%ktrSIA`Vxm8*+RUh@3$mpnXQc8|g37$I=eNMrnuP z+0qWfbGRMie4@yQ*o|0^f?Pmfu}jF1AIkkYDt9rs9B8Y?*L!-rD?C}+ad^74<51c$ z@)P;`6Tw6Dioc!xU33l|@)UbHQ;?Y1HAZ! zk1_F;+jlsN+c)5SIRm`-&sO|1q@9N|Wj`^&`*H?&@k=|7!vekKf^sx+dym5z0pzUn zRB6wE$7k)>{GI1WytQM5iyk?J;o+BdKEwG%Zxx(h+I7ZX(N`~a@qRl7K9CY|??m-V z9%;8?=fDp>Sv!Vb+NpFL@QXf1sHB&6DfTbo!3VqV4t{BeVzIG{LHd8Q59}UgTQ^SEA7=Z&)~C|-2h}h3Ox|ws@3%Za`U!SCCGJRE!+71l2l>nJH)=j})s^aT<+l4BftUUf|0RFS z*KPIY;cQ+H;brqB4az51AN!bIpZ}l>a>(;2 z+A}_zH$uMGy(q(L^Kb5)DVR-PhJQNylV0H`(k~@dX7`Hw_VHsBZs%-l-rmL+Hb0K^ z=M@MJN|8Q`NBCKk{>|%z0DJe>;!#gj9InG7M}Br8;O{_wO7CNY3-Mjl4=~;h>^Qvx z`KYyDcyF%$_jvV>bj!VSQ7A_vp@v;?AeZiAUOGFMW%Ii>e>(Jfoy`TX@suyOwd(cs zVb$vl!SB`Ui&3v7(cgZ(z72e~`YH)u{rapcP`o5_<9^i7Z^&e|`2@%@zBl*C4;zn~ z9x4lz2s2!lm-Pn2o`)_P5uxolJ zU9g(Voi13V?s9dPvFqmPb)F`%dHTg$HD2jito@siNp`>{!PBr&-1QsS?Y4Qe6GUHu z-^6M+|7`t;e~xh(@zw8#*TKJ?i{b8@O?svNP!AJmebVXe*9n}h>!b?=&h9-<8`_yJ z&~Y7s`t|EyWDzH$bSgKxj*?DRxmjd*Rc>@0WNAh>_cTRx=Sni0|H=ZN%m`+A(BEC{K6dc@m z=e6R8hrU$jSMB}8v_a*wLF6+&UOMu$xrzDNb$qrScZpXo_P#~MdbH{*e_gN-^)AJx z`6t0!97oE8KGSbL{9->JEw|09a``D8g)y}hd zThN6T;kWZ^sb2hf$9((?z4}dhlz)0}jcX5jubpcz6GVWL9-+hD=S2Rjk0%s30)Bi) zlXIKTO&d0Ic@xtM4R@(|DATi-VRYx_3-XZ4|a(e&E{ z)r+RzCa7L?^{xFW>Wlv0I6?H+vDRm*{UOrV5lYuitbU$hJMru148MMkp?w6o`pLJC z5Bl}v_$BS+*=ir)BU*stqw+U3evY8LALsEinW*KQsd{07v@2V`wS6MVOl_aKUXqCT zxpih6=cTI0-8@30=y}^0X!n5HJ^5)P6`DS4e;t^tqOXf47cuYBRj>1+v=0t)7S}IC zG`a2E-`Y4I_WhHmW5!QD^jlD!QE)d0bk$FmdC~frGA~+xvCNCsU&ixmnCC$W-TKdV z!Grza#4b0VfPDVYT%Hf+>#(2Vus2?d0%?C;^)F()as48h7p=dD=UIKa*XQWQOiC22 zVFJ49PnP-7`U_-!wEhyFANA9(%h3atM!^l7KBjV_AB(A+R1~+59Od|wmv0m-QTTS5 zC#}Dn=l%SAKH=pP1+x_Xa+xQse-+P@`tawM;a{rouabGv`YXA9eE9uk_~$S@>IHNU zrC!eU@7cvJC|POK^HL{KHMoexR@ZK;JgaBsW~{A z*A)fk<9pPDvwbRl{QX`$%7vC11!q*`_dbt*fSbW^GC=h4osh#P>j9@!;A_d@o5c90 zSHOMA!)NP7ettjk@YuYtAOCqT9&}ISe2`nYyk1w94*}-luk_-9N7f6}?nR@Z4|0EH zF27SL-1b}ebe*4rgKC2O>?VepzOs3>%5~KO;UxV<>x7ggtphHmzi>N6Z;5y_J->fx zCZC`iJ$V%LGkjOwbkSS1?udGd>z0e&s=HR!RSEfgPrmJ*7PC)me~#@3^6gc;b7J?g z03Ki3yqoPU@M%@Q@L0md{`J#CFWP>ry#9;=X*XSU(?tK(y+-t3-BQtiUirUzMtS+K zqzt2ABeEs_y;$^LT~XJ2Unly{OYhIif`1ot`VB}<{8}dZukH<^|GaeTb9{d}!AC)& z>0U2-u8fKflNIuH!DY{|J-4ziIQ`cJC_it@HN@>iPu2xA^j*^WlCz zEFU_r?#so1(1RXf?<4=}qpZx7qJ)4wNeKeZpX{!x;A3@_xriGon>zo#W&oBxKN zlF>YYl*`6frnmj}$@o1y_YfZ2Ur~`x*ueRHhwj&~d9d_Oq07o`<$%7KOHtiAK7=0e zzBb#h3%D)BH#eW!D^Q@<-sh6?h`hLUOq+Mqbq6=^sP{P8yd&_#j_TC;72B6(<@47k zK27Cve0^M0q$KS z;C3#tTKqK}PZddDwfKLcvRk?AzCPexL}jZMe$kXH-0U7pXZxW2cd{1y?GDP3zG{5f zT7wV0L*&Cp$#rQzJTqBuKEJ&gSZ~rS@uH@dEA(j7of)Y zWVhE}TmRNoKZeRg`ltTfigDYAa(EgDE()Zdi0h~6IJ1#ky0!12jGykx;T@y&Ei0o> z6mv}DS~Pv%Uf!QekMh|*lHt%XaSlo@AM_dW0iX7l(NSOkKmTpH{Gl1D+4b+t!9fK; z?iZ50*?w=(ixxN(zCD%0XZ5Akl5|x{`=45ZqdI zvA+!TbkY7Y@B{nH&~tW$XLI=;qu==A@Bwx09NlL2BOZK+f=%r2qTAnK?{q13{;u$) z(vHH#giGMj9-`na91nQ$znT4jM>~weO9IT_0Kc@$RU8j^@vme*;Hl~e?gANS5Ip=* zu!7?OFa8ep$Km-hjttvmJVWrP$0&G%gBSnn6@DR)BjWJoyx$7+$h^U89lZF93jea8 zK)>Sfyr7ZYQ0EVpa6IUlLH}*vZXBK~qFQZ?;JCAp&#^HR{ zRDg$_67g(0&8O3E@m~mVf8n!1H&@|+MYn^&f<3yfnUaD z^BuhS=dnK~`J2e_b9LWg$nC`D?Ld#{FVT1KQ#V5NV$>k{LvEv>#re^~BYtgJ;%Bn| zG#3xKGd&G_kSm)@dX3_##9!%Lh1Vdd}V@&i3shH-aOkAO-Yd{ns+P&Ftg6eO)Wu@6WtOBQO#>kblz!4;Hj|_+G_S8tSJ5Sb zt|9%m*}8<}rA_j0n>cBbrcHw1_j}Ggzxin-*`~|O>uWE_ckXuXx#ymH&bjNaf3V=b z>%jP2m*30yTz~h7-P2@zrayO_@q@We#PgTdOBxeD_8{x~1K=0k&n!(JiQrWjbo~za zY^QyH!}iOFH^;5n^E_9z@PP6hqNTpSVY;J-?Q2s{^FAN(!vFa0mi9-gQu{N=Y60WJ zAggD`-i^G>A9QLu?-7!I!79Zw{jg}h&tRZizCee&7pRy6K8k1H-YH;vfI^tx<}=~BGlwthUk13-&1aTN zJdlGs-+bmV;9~M&y7@{@(uocFYe>BC{b|;JWvYm0*ggsoxRCDi9KQezF=DwN2VE_H zk#0zUi_T|Wh|ul7?JPV0evig1UElA`F5*eL?!iRZ<};iZ(JtXTHa>i#3-euv`r8mkJ2LOSzZP9@COs^_tv}L^ zT0W;(AKxP&-h?-ddZX*fY@d~9xxolMnEw#K*g1QKKaQ}?VN8-=*l~VjZj0D3^*88LNp&TtetB2(uDrw)7 zk@CcADe~C4+=&hphBN-Q{^`8ukJuevv>&2$jJCfviVx~yKeL`6VnP}{XZ%Oeen6%l zMEE7z{ufH{e_kd`pvmWt*A3?Gm zyGrCpY5KR2k@}M%pWUm}Nn~-0O|H|dX zc)~@M7;C>S>BV(HU-SUi_fkkn#qN~;WckWflgsNm-T!dqXS;R523g@q#oA8dSFJ@16l51q#m|U*FS#Fm9zE010r9T z|HYDes3()&Plx$AALTkFS74a`PfOs_LP&a#g!xI&RIF9>6!T}Mh0hro^X-*!PWV7o z;Qz0Z{M2_z?;XsJ{QKN`;C``82>;t9_-KEebop=fd?|NO>=)+mEy<7R7~mIN{sV43 z@V4+=%5VujN>3Szz$fF@18*0(LikN3@HPK{gRkdC$WP>F$-iJSKPf-5@>)0a$}uIsLZ|EUuA+Rhze`L9h|eoL5sxTL(cOV?cqKel=@-Iec~ z!}8xMDX)CEE==#3M3>cJ{J9dmxN>Ogt*rN_O41dt8^ZD@O47AnYAxlL2TSl${#qKQ zpD0OJxltRY?=FF_{lZmEg}<#Nom8@U0P+9j68MTgN0FBQNJ+Z3pRLgJPn5vd^29>Z ze{I@yC{~xgwFJKM1*M0UUt5yS_50{KhR*>Zvr|mpmWD0fe9nK^12g5L9-bfNC(vmn z^0WLuI=yy{^G(m;dX(rphHV}a&Iht6?8^T+@SScw>eCXBis8<;9`!ZgaK81ZGm@_K zGyB%;GUESxAh5MNy8iZNba`ofVE3aIP`ZKcr^J)@wrFn<-hMD-s$Bcq?tz!)i`v~h ze?@z{BQk#>9NHb6|BwQ1j@T8Y@R#J`f>xjnR-e6-V)tf@AA$gY;p{$1?ZXoEHfB|Z zh5hzkjgP|T_%D{%ezET`*t>Mm{B^*;rbpov9@TnF=@RZ6IQy(-jpnD_%l=4j;lFAJ z({FR};XUjuV?iex4{+VCAJaRvoZSzt!-SU@)2^mJk!NmvlMD0)Sb6=r$u)U{3eCfjd@lzV+JX`wrX%`0Xh`l_lVfHgMiQQ|r_lq)d zAOu%9CLZqnDL&S}c3*(}?5bwQ@x`mYFMMm?Jtq8iB+zF&>Gwy%Mt|OuCLE)C`2BhZ z{G#c;Obgh3%>SF|PEGP3N%w{bok@4{m-U0u$LOCbqxJAL-lulJ}*A@Ki)_tP;TKD1M2a8XM6-xPyK?!GY>^xY(-Vp&%!nJcBcJGvOiSahC zXFCd$;4_uwsD;V5Zu~fSR!_Jes@X+O@@J}Iviym*jcS(cna*0UA)Sj!WOvpUX_}ci>=#auY zYILS&Y81VYkHd0~Ps8upBTU!k;xlfXnO+Rbv2);3?p|=N^2$(No^f&$-qd%p-TSGA zugT4%_y3C=CLhxkmMI+zT)1O+fp~b&MeprK*R`nUZQPpu6txSQQ8vndFCzaGyTIu; z^4Bt`w2Z6*6!eQp{oDXufArpYd(<9>3UEpkrTT9I@PLz~Q^6 z&qc-u*MnY;gbD8*C>z3ErudnBGKPS1Dp(b2ne#Se<~2g%d!J$Bo7 zFnDc%L%F;YKH=mS{ZPtr-I12SPWUe}{vHPpVOEh8E3G&_f-EB8?wYR*XY12!&!wQ3 zjU#)j$`=Gx|pRV1MDCzkyp5fYnm$U=^IKugRbpPGn!5stA zY)>0}$p>HZt$0n^8_h=vJ~f}C3+Tjo66uDjgl=cy=NA>}lR((?z*M}ZuWu*td6jTn zzp;M>U-*JA{Bfqc{-GU5N(V5_>!+=758K_Tp^ru4Ne_x-Yj<=WhiXGPXX&N-lI7osKRf52ap%Kq{$PAbJN=bNy+%*Q`%!u| zzbfOA_|g^J{o_LOD;f`6$rpupI{EyRWRrfP9YTD1K%kUJDaem;O*i~G&t=b>TrvH^ za&`E#cQWjqZCV2xzkN<>`K{x>zs}$Uj?Si^?Ohq_q1PhqWIH%Re>eUp7cQoJ)tVyz zuskJuX?f!NF2vJkKiPLEg6j|o7c5i$4o1|TF?me%ZZn>)YubJHRE(?F zoTRK`gH8`h(6e_gg87bKPJWOs#E*Eryy$x$V(vA) zrysm)uAZYTJYJ;7SO1gIBO&zg*(9{zwVTQfj{2DUYK0YQpOJ6A_vuJ~uXtJd)$WIy z{$x3@B+9*@e1h=4C|%t9(ig)QV14wrtveL?W8X#a$Hnl&m(d*4D-#c)GB_Kb9Cu{7 zyvd&x%CAvAePS9s$S0HJoV!;U<^RuuKV|$vvD)}8uCshr$IH`#j_jw3{NJPUkMesG zeD`j(%})w@luqII7*-hl6#pn5w43dnIO6d|hZj8Dp+ZAn3DIF&DqumFNwDY0!wST|TgYAA-r2VDi z$LxiId#AL}to<8)ufW}FH#>uNBwhH|NP5&<+24!P7q>{gbD#W%$&%goDde9tZCG6{epHcRwWQ89Cvt^BzV7 zPd}#d6?+8E#0SLl(!00FkHEfH@QB9Sx^V6LG)z7QNxgInTMM}u=@0Uw(SdYtM4N(B z%J23)iiu-VEL_DQ@hm0_0S<5V1a8- z_TdJULO;6sTN}ES(y8FyCobHn<1J(F=`WG&a(-Z2#4b+7fB+oZvn3Kwc|lI$eIh!B znbW>Y6}->c-P?5hTDuK@Ygh1;8?WxW1Y!C2y7KOOQZ|1L;W)Y&yo`IVV5aiK|E3cB ziLb#6o>F>P{~LZq`1Nci?g2Ra@Vye0@}z_1xBC+Io;kn6Kxc6B_e|(Ga^>xv(CB%z z3CjIF%AbYi=On+$>)^eVPQb&xKN`Hx*YNw7i=TZ+H_nEBdcB16kAF|fcUJ4T>$H8V zJHM)M!|#3Q__lXZsL$r!R-Au@`<15ztn9z4K6_E%SpQgmQa-LkJHmVQCFN%750+bo za{5|-k*@jcl)v+CKcVz|;Q9J}V@bcWzpUS_U#$N!-nXPZHhz-c%Mvzu6gt7y^+rU*a=t2Ck zfXTg#NDmD&-SV5fG5M2;sR9oUF&EDMEol&+`k8Vg6H~<i(29s7<}seByDDgjasKbsE+S;aH|0Zp#}P{OtMRHyJymupwI%AM?x zw%_J+ZRi}4pU#fT#NE92ovJU`pEpO^kxH;Pr;(drW8y)1N#EYDO(hu8c$Tz%`Cw#v zIcn?i8Sj5N{!}??{Av7X^M2#YaGrNks)HW;3n_1UA>-_ku>Rr6a+vMh6KSW({ct>4 z`?NV22l@`X(bM`T|G1Nb!-|J}$LONv;IQ^HV#agBjqNoG1U@Qo_GcxGC=+1WpmIj*sx&QzwUQ{7$vYbOJNf zr5$r2dn{At^ht}-!S+EzedgW~w|)!OXnwY%)E=YU2c-4k0}JN}EG}FnyT|4sw99^u@~cDJY5ZdL!;rgAn~A$|tmedd z_5Qx|;AQXw731<94UVkz_8$rY+&4aV?!^HHzV-H{Uiwy!V$REsh|hG-`|U8@?4C{g zB-txetNmN=!nIo5o7k@DoKNdIoa&9j0gac@xA`6sI{$bl^!Ead-{kto!&}3F5`%VTZr^Y^m5MO$&@XdQ=LP959EG#~C`*1ZJFN+H5dLw#?aS4=cCtB4 z5BYaD0&x6Z@AoiXd0rq&N25zO@MOG=3;X_V($o2B9p?4tUj0tez87fwkG7uB#7PeL zV`4391AlY8AzbU$rzTPo?R6vG$Imh6+xI$*j%~n$jC?_QwkbTLr;Ic5ksBXIw~!v7 zJ6#j%6?*P-VR%AM=TF?O@wJYB*$$znwWE}tjvqt1f`~pqj5&WM`W7D7@oMW-c5bT1 ztwSzEe?|G2@+%sy$tj*a8TF4kc~o<)hPmG`DL?xMu4lFSN7v|iiz)f;)AV9KJ-<;C zxOj)((KYV8*3;UK;3<`hGxc*_GUjotCFQn~_JfQA*AMI`hC{w}{LgNte6ap3rHkE* zGyYwOexB6sZijctxUWDyIlr-7)9u{G(IYPG=m?Z1jVJ48+O4FZt(*2dtmTeg=FYK< zXn4Z-#_@j}`jPFaOV08-k;TTFwUg_;MWt`y%=`c2`#OC9`1 z^^dxCy^z6rJIv3fSUrV3N2DEv z<__`0^Bp7<+!G~RVV4?YwnlrgP_kE@-|EDkP`3shLV_nU$X!*Y=DgPqNA7V~jPoRIk`v1R@^0L1+P5GJX z|3j3w^@iZ7=ahbHSS!ZMW$Fj+yYx0csB!&FI+B!Z5B>DDLfG)TX~C1aes%_FlD^fY zD_E~)zy1iGQG2__(KUGL1;yi_rib?lz&8SCyMu!;oqZRv=6VgM-{;cR^MYqTCh%(3 zX?l&D2aZ8*^W46jvmn2NMZH#M_l!ZmF+IFb^PrYzIkGqnz}!uRlOzhb)cZMa4|>3dAHAIP8Y zfk3eDc65`C)p1=Y0R3lYutL8hMS4;W)w=OhSfTGD*n0@U zDV1ZvlPbq3C!^;i?0f|KV>M`P@{e+nuCrP7zu70xGk&p`=1^ig_^ z?h~G`97kSyO)W}KcdnFL68yc2|Dry$lPuo`e-nJ33mu1_w{xnId_1=`HJ>}D3cN|G zHuzvQZzue-gyY)Dc5}$seF!^u%6O0m@v6wJU4$d}z#kVlt{#Uk@qCf-cJ3JY5Cu5I zaymSn{ZP^#!g&?>4bB+g2t8(~pZMbcN$*S0-eEugF!D}sxR3KJGQ(8>=qu#ktcD4P ze93bC;M?f<;(2tgCp;9%eC)2lt^AC~wEuQtz{Wrhqcq2XjU*Wgsr|Iw4 z!*{i>lkYgPjPEFq$XfZ9^<*!xd*lcH@$pw^A$LO_bI`*TT6}u&!Kn1zy_>=k2~LIU z?*FNN(L6rO?a_JB844MO?|D_^nSH0%zCU5#53qYOg=V!YGL?FND_FN&%BRYE#Sczt zda%%!u)(i@%*FqrPuY~<3dNuEe#YDPCNpK^D#{;959)ulr^0hJ@BNk%#ay zULUjLJfus%PlA)=3++tiC%rRXw`AZvi!~BIVnlqzNA+isKUIFK|Pkc0u6;Gw-R>8;GT^#QUpLQeZZu6GVZr-l= zkruD)bxe!jcO^-6weN{f&>}&+%cp+$-E4R6FgWSv?e~9G@Jl6%1($07gzsIJjxRUwDUK^z1L!v`4m`9zo8Oomo7k)wCT#w6 zhuV3mxZ_7DHV<~P_G@-$gA}my{B1~Q7CYaSiYcD7LvKL5l?&gMMSMCEAHw^9fE79t zUT~}0p>|)=<`>a=NiRDWl$6(GP~YR)-*&Gx6I1#IyBz&?Xgy|!Ot^WQ&4Yudw4D=? zdGl!$p}Zho8TbBhQeI02p1V0>Fn9O>R|{ZwAs=f>abf~z@5vXcRUQsGePQ=Eh(AY& zt%uk4NHMPsKp0ldfGtthtK#upA~qv z&YF%X{^5F|k|}(zm3GxHfEM=d@xO(RKaTo~bi{yx3+{LIXC;Vpd8*IsyZ6S=whu`9 zvVFE58}czD;f&vno*_SKa(KVczL%GD_Y`ZCt>qj(L9zQVjL&7<{rs8^1rR)=a@W=e zC&pd;(@NK*_q@<|=vs~M29vJG&zGEU@-CP7=D7*LH+i4*z9HqZEo-D;^t>}s>%2_k zjepF}F?!}lSW8hpTR+=gR^!szu<#+o#}#3 zUwm6fuzoJ$qvtq7d>lU+{;Ami03P#--|0Oh;6geDPb;3mGdi9*K9(X&#`}4}Kj>Om zQvdY)objHO{A>qZ@SLN^NewSP?%I2S_Lv?@VHbua874hUP8yxk3m=Cb{Ld+$n|+sG==k82;@`PY`84Uyx7j|7oqwLVUfXBm)8r2Iv5%xN=j%DE zd7hm+wDT-BZx7`H^3$1K<9QJa)3i(2j}f zqi%qsr8W`ZAGp>B)eoG!qaHhpsB~q~j*)sA2nG5Oe^QU*bM~{Wldut3VQ*bPAMo9J zC+ml(4C_l(kiX{PEimT7I`1L%Q&ns61LL$)!=#JIfuyb%E#BHF3GR4Z`0gL;C&ZVW zpM!lM<0Vo*DKyk12!{8Z?cKmOMAstS_M5vQ582*UN1r;#%`YIF^znR0 zVf<$Lg#9Au>H$EQ?2h3Bz8 zEddb1aqn5!JyCn#(ezys zt5M8Hxj|?3q$+j%SbQjVhBe>C+6x;ybbd4RFu6_j6@8w&lJVvE-oD@PueBFuI+qj5 zwfk5r>GV-)Z!J3$t_|ancogndd7i3Jdq0H%h_3J^x|s{|82K3HxTMd02KrVmYS$wg z_P)Zi@`ZP5f0~{$y_~&58QJ#D?EYJz?BH=9Lh42RGOh^#&iE*})R%DBKkt=b#O_f2 zmh}Ef``N*>`ctv@BEHC%woYO2O8LdcX$H5TSQGK13r@TCI{sWtfxvjj?-#<;=$dkP zGA!~aD_}x8q!;|yq zS44V4^n~&+aPLvsyJFFIiDg~+q{5>;-GHBz4^LsK#_S;5ud(|*On>hWi{Bl{&Sfdp zS4i^4@JCT*@;939yYwi2;XbY#*Y@s)wJUJ_Y4*#+Rseysb{hTj3$&l|G;HCfypwR7 zM0=q<<;F{RpW4p{AYm)V{Da6p7BnJdA(bd7~+KR1zD| zL(K{7FKIv9eeURf&sWJ;PQRKxM?U!^`Q%yUQ#&`7is?Fwjc3ync26QWt$f0B=fq&> zl-A4dh|<~pfHowOe^U598{PTtA)NPoxYGkBS7(A_cwYEi_}4`~wowlNuW%fcJ9-MX zMY%Mi+%Y+j)dH-yHFEyb)*-Avt^Y10f9yNfwyqa6Dg40pGo1bp^`6s<8Sg4-sNoYlr*>kha+bu~Jjw3M)ZB~0Ebs1{8^788GCK!l`!GYmgU-$! zO|_qws{U2BkaaZ{8FKVzzieXprGx@GghtfDkIrMs5_W!}E*|r~fUv!%-;G434zZRiEpkXYn&#r|+7D@SQ!>hH3=zswhUpz<1e3zVfp8;G-Zhp6p zE*1M#{Z2RL#k4%_yIaiHFJZM0Q?Xx>cXaqYiEE@>lYDW{?iriBqP+MbM3&iiHm|nt zSTVf?w3?cJ3Q!S$sd%z)FYQ{T;W5yU;nt-ZHo44r{68h0^ges8R?ZcWe$$nsWG#(n zIgI!dgbP%|^wa1ku?I`=Vg3wUt>L9)_1Zwc)o^1dN097ihHG59o#SCW#Lvzlv0M$@ zGWapLG5DNGGoJi&8a^#>(_5+7J)jHh=VxA#eok+H5UJ?bq_aP7Cv@1I59qui={+D} z>n~e>3!GlJ^HoExJyYyY;4Aj$svi?Lwy%`lH6r1~_p_JCN5{o4EP6rkDurLz^D&7x z`>WR3!Qs1{PHvjrX!0@RY5Ta|0XD+lEm9B1rH@}@&d*_76O&X@*M;o;X_f!;L?6Bd z>2@E_=#fh5_a*IK0ObM^%_SF0KeArBGoZuU;M=-Fv3!%OSHBBu=fGI6jBCf=q^pk@ z@&|pBqow#{%F;*$zR1V+m>i~D9%uMzrDO1<(mB0E1qt($??iqB=k$`*2qBDk{IBtV zn09s?N$*N5+&EdfKr zg?3(6>t(x_;pfbD-dW*?jQ2h%!2Jo@4OtbhUard73joh?nyT6;`BGII)Ly{8`XqY+ z`P5z@7cu`jwHK-y1&>r!gW3xZOR}{8FHvU(oJwcoi0$17R?+$lTDLgbO- z8^fy&aKuh9{2X7mp)#=(P>xl#!52HhrQ3Xc4DrObCQ?r91e6y$0lwG?@HZjfY4~C% zJcx{fbIykC6XFzwRbf(9PkUN;XM5r|MUI zxiFOXC@=ce&1;I~>!qJl$x8)Js9)Jw)NB1Sqkb*HCnMjlN4YG^tG-wUf2zFD@iL=+ z1ijclN%_i6kuNDXq+jvRe~5lWf69oT-_H5kI?eNr zkL*4m&$FLRX`U_MPh6zHAa-FJnx&UheLFZ9FK3Yk2?1?sM>*`PmY^ zc0J0QUZeb`v-#oTgV$(yvv^+ZKJ{yy-A}ngXZBdl+ci9NSbe((+s1YvYVom@Bv?IM z7X?Yf`qJZikJHZW)jB>&yLUH?FH+vGOS{!R2j2s}z*(#H+C99XjE3z!63T7C;{k1` z?H|~ArF4hxci1_Ung_Ie2;Z$U6tddzg5v|@Z_<%?7(H!Wr4V_?uad^Jb9T;@b{EIB zol6P#flg^g+RLwk5u)c>m}2v^=z1XEKeP2E-cz~Qcl@4^a<2+qqwropyxGNU*GIoo ze8=x%+PnNed3)dYI@`PJKY4qPMcNz6S!XAa55Eb1Fgeb3K}30Jw;yingc%#JI^4Zf znaXe5=i=z&pUM4N9|1TU&y-gRS$cUuYzB(8H};6x_L7${9NQ zZXe~t*CO{e?Yykjo5FijKo#qa%hkSc^4jc{OzZ)*M__-@+5RK>gjH>9JSp)T8*uduw;ldCxHO`w00?uCWYdZPIWabqK`Vfx3#H~DXN_>iI{ z=Qg7JkgBMc_25*+ChyxQ$!&9LcGF+cdWc_LMNZpaf-m*Oi@>*Uff@iwuLHTYJ@jY7 ze`DjDnGC$M;$J-8wce{Jk*Zkg{R8|7ZMK~6Cx@HfBR#pon0}Dh7v~A3?aIaW2)(0t zirwk@d1K=aDZjDtX7Nk=mGGE<#{LByVvwuY==yb~z#-oZ;upsq2Sh1eq-z7>(+jXU z4QJn7V1DYy()_8|SI$wd+4mnx(+Q91eGBxR$E2LPo?34X{Qn;0o0%Th3O*YfSBO6& zJ)FHzI-Wy5$9IG#O6n22KBT)2oQ;i(XRL?$FHHAKq#hfmc7DB7?xwe9L@p)05%D<= zXcU*yF#|#L^=aaZ`%gEyY2lUdsjA9rgXA%TU?Kj z_PBP`)DcP%pQLCN^nZ`W^Ei#jH|MiISWm7BYn`AA!*ogao>q-(7u6T@RiM4db}mz< zHtQIOLjJOM4oc@+NpB~?c|*=l=6;&g@BA}JllsfQrS(g0*01yQROK}i6Fi^^cK&q? zo!$!T%!b=e)>A(YqG@m5iGSHxRnfZqnb@F^x}b|H0myX+wWYzB;X+?-!jDiK>3P zquUtpA)mK9I@tO>*FW{dt@`!*6%O-L{u-a8s!$Oe`;{(Lwpx6fk5bMN53?gVzF$N* z-J<7AIer+nd%b2KhU@iC4x|#QN3FcQ1CVYZH=%x@@gjU%XQV#(0po!$ozt)3uJzPl9MF-L#AoQRt`V2Y zsT|HLOd#F%S<~@brQBkNe-e_Ku28*8>a+V{g%uhuEZQ96!F(Kl(fj>{>f06HyZ4Eo zUV06);a!a->WA|hwXaD37b1Gk-p%KD0Lj4Lk14!Gy1!I9f4B7q=BFzx8khXheEZN| zyD!H2rhE5(x^;=oQtp*0@YYNGixN+Glh+|$cKCj5O1TE1yV^JDrHZias}!0CLwMse z(1WbEss^GpsnvsZ2(%Q#0~8RsbfBJk*Q=Yxv<+@Wx;MMk)dOP7crT{p(|+Bvho&HxTM zCEcL>!Z2ON;JS84%QNT3&6?5d`U$5mXlHJ|z1S|&=|xm%^a|;}L#px2eztwy+AfW! zeqj5;{OdH{>?+D@Bts5qd};snb$n0g!2HB_VvXht&u?teb(O`}YP)Tov-sMjk}+II zaPrU2{gv*E=Hh9^!+m$J4RqMV`Z~2f+P$?5H)yyU9x2!AYq$<{{sMj`y*h~?e5Mc0 zRf4wRH{rE9`r3X+Hv}=~qo(&;2N8gyU3wONy8B8Ahw$bB5jg61fj3`*UN@rolX%Lx ztW_FsaP>Qn^MIe)(;UxHc}#uJ`?j`E&VF7R9dAxQ+J65`=e%=euZX@fKDK>g!n+>* z9P&?x;zxPRp6jgcJ;xa0F%CZ+r-nipi6oiWBN&?LxH2;1*;I)KgtXI3jAxF*9+i{U z|Aj@z1wPw-b_TggZvXd_n`guNChHO9XFIPrRc^i-mOC4{M?an3QMp-^&&NNgv_Uh_ zj;V6F7xcIF_Nn@4s$A|s{-k%a;A7`Zf?M@mx2>-Sx4HY?WjgOCAA-cib;w3yLwvN| z!R^A<-ozssFZ_xc#!!xum-2$HVDJ6A@5Y&3m9}~RKFw!#_Tu?!PY*3)?Wo_0t{OKl z8d{?HX@`-Y7Q6M@B-TBdlHRBGb^3ufN=B1osfx+=J=eoPmhhdaHdIFdL%XDy*q_AU zu7%oOj(dj9-kUJIpVod3p8KlQUu*|+Q;z(t#FHM3vGX0NnETHAA?7N^+dBl7pYtDD zc4tH$5FVuwWY});JkE=K{CvszeUIq(Ur!^B^)0?m@v?OTn-33lAra2>1?M-S&z#?P zDXEKeH~&pywVdI*>U2EMBzLH9221qKBi|~@3(g--01oF5`F|&p-}uzdYfwJ>sDI4)q&vgurOWWI@-;DL zJlm08dM%^Fb0E`|XHTS;s=U^Ij3cb=PI_t|@|?%kn~Hkc-r1sD{2gR1tkChw@b95M zd!NhR;bQq^&BgMphZ>dd#+-=6+dVVp|K9py{%C#mCH3*m%<1ZTu&G#{^(}YxeJ&DD zJu!rF7LFV1XW&(P*$>Z=4}6pxb3WmqIys+K3x&$|GMu*e^AM)9`?%!iFC_s7zK{4Z z=d)kGgx|EQq`aN)LzvFix5&+(*oE@&ef*6%pLQ2V+8Mx*^3MKZm@ZoWt&P){r^T7J za%dNw$<@}iF6{7Y-QvP%ADh@(r(xsIO!6}_{)|s4|NiIS|KQwo{6-Y5TzaYMm1wzr ze>r`*eScLQDW~`Kty~-GdlmgSr9MRy_jP{v+^f&V!*Rg;eAjd4{J(kb>W{^xKGL@W z|IB^uoAQ3JkMJ16^y^|DJ6H3X=0gy2LDyexJ=Sb}GqXu4SbHhpP)Zu;&&g3nJ}6y5dQR*}#3edZqppP&AJgzo!Z zC*76be{^&|J`LRiWpA1Ht31~Qj@QfYQ9g%A^Xd{8lHXi~fjmEt{Ju6y--D7pJf}HT zj=S$LhH_l_{YSyyZ~9M0=YRT_h@N~MbXI=;(b4(p2%YVIXLc2}I_&;ym0#MxjF{SZ znS{=VY47?7>-rq^y^DvQr{QjTns&oaBW&l|8Ba(1L&r&4!&Bl}+j;bbFUekL523u+ zLv9?lfq#jIz1KkdTE-K;xIw$c&ViY|QM8Aa2;lHtVnt)By_5KRnV(P(X#eRt#Ej$J z7qI^deBJn0v}E2e4p2pWFKoX(9p%dz+cSgx=IXtm{Z@kC6#LEDcg7dzv)}#*NBZ8c zN~Lic04b{hZojE2cmrVI^-kUXy@f^-2R{B$9p3D$Z@v}_>jK* zzDhdfBc$VzzOBt?=LNth;IDL{G=^kNaudwr0={SOxM#P9=_95CqKCF z#dpu^l3zN~91GRb<0-s6n9sU=DpV11A-l~3dJ{-lv~!H8Jq|m^VCQmKkB4)>VLJ>jCvVP&-_ZzuHtuX(RDj6D*w(Ypw_e^- zGVZap7>+y2T{>GIFC8}%&uTjN@xb=yqTg43mEo+WvtRa<)I-ai`s0;Maom$0fA@{a zaAf^G0w+@fhxiiCb0zEXUjm%}YVVDiz9HW)0bQc{iu5+UH3s48BTRdR`RskmRJooA z6nhNuner=i9_h}daQ`EQcsp-m_iXJwnsgmg2~X|yG2p=%dv7p$4u|8Cc2`HFKkZyt zwgZW9-S`u{;rsX-bH1GiziYGBXXnAWzXG;9mrm$DynWBfzVFU`1D3FJ`E~IP0@v<6 z@LZ4J1^PtsB7a50c0Pf0{tODR-de!T?!!ND#52V|oQLt@o1IE})7g0CxFNpTJSv1E zy|kQ$Y1a~;nl4H9+~?rrU6XU?YQy*1Pa_lI7@bpPdT^@tRxQVU;V(z&tl*{pnWNMW zVSDK8T$#PUTNj_>eHwMyyRi-BU~FmEI=D!}C1u-D$fAJO&}^18z6q(r4)trsoxfdu zdw0FYckymK6k>{SsOQ`{lY%?{Y;wfTA=`et>5nlqn=Q9H3(J0Q$M-}tC~8Dmr~A&b|( zRDxbjllrI82*GEohE3kvx%}ES8gJu*>1?-^xBDOM%UyXSN<9v*nq98^eJaM8!!Df4SYY6|1{Et{*n5HA6OW!*2;HC5bw`x`|P{K zA>ENr=w7G!YHnA5;sN!?kWTz9K6pmyW%MqkC+`7mMt;gk(l=ACfP>TPm5!r`gd<#` zW1EI2BJo1UY2t;B)5HrMr->IjP808=%2pSD8h8pFBlQa%Q;Juu%V+I2d)~&qjg$5z zn&0GaG@sCKfuWO+MFKeB=Fnh%GebW02He2o`iI4Hch%@+yzSSE%t?xWW0 zl78(dZ}hWv**hY%zkH;dzPA08O<6?3***38ts1UftG=C2vvnrQJs(MS4s7BM&9|vX zeLGh>1r7!Q%bC13xOQI5?C?#U4vv$z^<5gS-R|N)puV-ERn5cjJZY=($$rgee3A5i zI>wknwM+xTd2H=T%~wiK_PdXy^rcb^biGqD+IlYgbu(gW-!9Q|&-Da;M%VwwsoxH0 zy1nPgdEw)L9nHsc)WLI3p4{v5=ckr?1m%KLgCci=4~>hz=?a(cl=>AwcOT#x-`TxY z<70bg$ml|RK8E#*C_Wv;dsyL}uiP)8TyUyG@pY8GGj$ zVY=Y7!mZt@;le!{Hhq_I@7{9%fUdAd$9wR!E9dyOut&qeQ`%0mXM!g@!6Sr&aUpP4 zX#WRKx^hn|T)XF6SfTM|FWLCE^inwzJf-<-oPAmA#;Mt-Nv}x=N4e7h1Zsx_4cO^( zwI7|`X7lXAo`n+6^IxXN_)lp1gG2k$;I8*2Seh z<3Bt98$7jK;!D3TJ(FDAxbUw8A$w1&v_2aTW{=m!z9V|5u*a8r3e8#{<@aVls(nzv zh2M*7gB&=4s3<*N1wG9EH+yV4IdBE(S;nvQQ9+*7pSIZ}x~A zx4~1&KPGqVeJJ)zHS0a~gtTvyf}4c@LmdB34jKI?MqImd>Jv^Q#y|U${S};gNZ^Iz z+v)Z65*3gJC+XcU0D@E6zgB;6O8KtV$ur&`D5dKw)8X~LB0gWj&nR79oF>1Go8TFx z58JV@ME<=%dOrE0v?qA#W$}$qnE%h&-ltyCc&BfIQ_3$j4*xS4*Q5)_7ya}j{8z*D zgQs3l_-CU)w5i~oEJssb7rS= zJg{BuE`N>7Z+y#iw#VW*FPt>LGWdv}G_P{;HlMO}qfBy8`#VA}q5HLpXRDL@cJGYz zB!1Jy3!SIQUpYg5q4PBP{Yd_q=C2&yljsb*=)(EzE)CB}XCTXVw7dHMwewiQpG0R) zrr?auHqT0WTXkGK`I!1nU)p>nz2A)w5)p2(Tc}!ks&~ToC7j$f{Xb!P$l1S1Z=(R9oMnwBcdT8d^Bc260%vEW4>~*@e=Odv z;nMj|CZ>YJ^p)xBuwL{FOQx@I@LWHceo8N!Tu*RX<#4T=uiCt$#?iy(NugYD^3}c@ zXL8Q+ZL)Flu+r1+U)s8#*}aBuh^K3J?G{&Vo%-RuL&t~qzDw||_WMMS%kTOl4Z?`^zagWf5p?(C3T_{>^t&);96ZYVqC2}OJzob_ zN&MFI{Bp_0avZlz*PdbY*%Rsc?mU#_D()}Yx^6e(Nzuu0z42CG3yc96S(5GN%}(pj zHiSvn6F&ZdGddXlsn{DN-sa_Fj-MvxOZ2pQmrb5df3qv6ix+)k`quRq>mg@Nm*0=X zn_j0}kLnj2k7KBmbTqwT1>b1lkSuBx@(8@ zBNPr{Q18@7+DFwh;MR|LuZ{gSq|>gSs4BatFPUSPwqDs9r(0U$G_3P{h+3n!cBK6;%1kG z{FYEe!~SsX%axVuxBxiAhmiZ0@N^jX8h<46;w3uKw)4ZK_4dtYuSN4q*I->meZzy} z$;aPI&Nuo{4lt*MZQs%6ZO=P=OUI%0i|vn1rfZF7=NQ_Z9J769qo1w!a9xvp(gyz= z{_I_C+Ak6hU*aD?Cb$aMe|5<^?}y0G`6HdJ3m4OuNILfyMUE&rG_wae;>P>r{+{c# zc4?NVyyQHbdX3KX9O?FBIOu2ZC)Yfx>4Cf77xs6ji+B5JDK`(X^LxaPs2Lv`-^lYA2P(R=CtBV3NP4>@dLig!d?tLK(%kK?5~>D!c90j*m|P9 zKSKIN+<3ZC1)9m-;`;~~NN~g}2ES%lf}z}~FuwFP-sHpLu>W=7O`%)zUqseUq1zIL z6TU|t^5?fDzwvb{`7H^j%Jh8!TVJtpKAGREOEg$)a?J&J&_hao{G^UHbcjd@8lk|Nge$xEX#S^df_+!7&lB;!c z80;i^ybb;){0*pjLjSN8lvlTC|De9j2&dw%f0i;;`Cs~HiH7Yv7E$>q{o}?*G+z2= znt17-Y2xRiis|6{k@(X+@EY$_VdE?G^PD>skX=ZgLaJc&#fA7>&Z4R zWV-Z^D@VSc)IX8TR zBH_Cr%Yer}gB~@Go^`Q>de0g0bkvWecX}4W-?{o5K9zOBRBzQ{zKmaB37WAEhW4;JAOPT!^9llIzonCu)0^*a08@O-}( zE6$@Xnl5@D#M)n1Hd}6hy{%CPN-5s?YfJI_zQd2yN56qt7;!;7UHjWWFXkuTOyUnm z7sKlefy0?SX8lm$0EP?ckKaQ7gv$5u{yLcoj&f7@#L;;f_(u4|(W@@8SouV=%lfiOCX5=|B!l9lOAJKy6cKyC*H^Rj0ZEJL3SbtZz zd~aJrDS-AneQxU`As=m*WY74>-ZNW#oAP1pZJKWUV(;--yE^y$K>9Iy?v?jLjL))9 zXnHrm`1pIt`61uA`q`hGk(P1a(Mu)V{(mHW6VgxY$3JjW))^W!eqgiuHjh4WK*P2k zTe{wGVyjDc^5TrLee41iAAg^}RiZhO@&#eYUrE zptC+d+*yAt2Y)cv*?xFgS7%m3=TU;O&$d;WUimb-rA%e{a6 z`CnP|gIn(V)j7*v`^|q|{@GLS`az4I@972#e&;}ceq=b?(?8;mW%K^Ao&lhf>#}Cd zG$~XHXM{<5|uHWy;`z@WFh#c8FFw&CG z4|Mhr=Ys=BbNw!1-|#^9aJFyz@bCcIm>tdMy8J_dpVeZ`{y~81?l}fvE{Z_=2S)t9 z(UI(--W=)M1$+lc%){B9UX&jh@DKO&_WEN-26}V;q0z&K(S`rk?#z#L34MA7>U;VI zd-JF+>u>AHgDV1`F}c26|44SEXQ1C7&W(%?_XCq`zn_zqjrQk`g9Fg`-r(PiN|Cd` z5k39gK&9CI*^!Z4-{1&|(A9ISrwarK{Cjf411?J>J=@jgkM)ck30c1rkb!ka>mZxa z+&tPpHk=(?etn0JMrHkuy#xKZ4*yuTcQp6!*oe*n)Y{1!^Yw>DhI6_4{_L@yZg2`3 z_U~8^hoSOGChQF~X1FJdF(rK5?5pmgXyxk9AHYQL;SN9)%t4qlIIb##ONae8Z1nNd z`#AFa8dT;{K+5TW%V9u_v}Z?0jtmSV;ruWHN`oj=Z!<|P0D>jUZz$4zVhLvkqHh6;r5V(OyIoFpRKAI!7AiKJ9ogBMk zM{*FR!~R&#AB3FALYj4pm<2a@+0LW=17jGm-6DJP-nOkf{Ehzdtvee1dVhJNe}g}K z{aYKahmW{bk+@ZiTe)&2!+g2R#Qv78UpivivT1*hdZ`m)E{ zIZVOgQjKNrUp9h9p+xrpn7H3R1OodVy@Tx|R9NkOJ^dZG2PQL+)it=WF+Fbd#sbn7T-Kz3A?r^L;Hr_ks;7(wdQ(H5;%8$i_? zf*~V`d^(ct0&Vipem$K%q`;vpShy2JfMyr~DSGlPnp0>sZR1gY&#>PC^*%TXc_ZW! zI@|~y2YZQpaL2$X*nq{^%Og29w&j*vq$5ZNAv+XJ_=Ab)rz(RnD=J#fYyK_D)Hc*V*cB67D zNb4*;^a8LJMjSaZJTTgQ#PN@G1#KEddN>ERJ(er&6D{725u5c7wzcd7tD`dT8?=Q# zaEN6D&%83#p&Z(uA3=_;7HHEv(xnw@w3zDMpUaQ-j+Cn2e!l~Ba;kTV02OT@21#EZ zc#t$E2aq3~(Ii1-c{Qvg!i_bJIhIAe?b(s642@z)GL`5X9S;r<=TS4c%B3P=p%w5K zn(K@|H<+vu0qo$ub{B$L^!(+Af)UXAJ>PkG-kwkY-aEGCvRyEwkHUi7fzjG^u%|EA z)jB$|aL1vE=7$PD+tSzf&Tsto`!{{3^RmT1_vzU?zWCB#&93c!?bVlW`)>QZJDdOJ zegFJHt1DEoFnXy=`#YgNn|r!?cNbM|v%kBmcdIb6vrtPD(L+7=YX}9tV-)h!EN>`GMZ{F3f~_`emS~rH=j> z89*mE3YQL)X1}8Y@(Uayvw-YK=MltAKe>ov(yXoYf2{hV^X~3~B@J~1k%d`CPmxK$ zJo|FPeLZ=~r)|0Zo?O@Newf8QUHjCU+ufzL6(OwjRnYAn?K_kkZuYNN6~WmSbwmfK zJq#9aIff|==QUfy>E5nvzO_G>?FAon1BfkM-tOn1Ic`g>K2^^Vx1jI5yBOr*0Xeo#Ho7iXZ3{;m~Ep71+(W!z0c6 zd%BN|G|Nw4fBP*WtrX%k^W+7E7p$j-ZX7uV0+(6xYzf+i2l~4ww+moy znUoa~+xuw_yeSu0BewNmwl;DghuI=bO%v7{yN&iiNqoL@7!8G78z^lb)(nbifGJwd zAvr0nMTb0O_Wm4ZfWx_+Be~n$vQHRO5Ufx@3YMPjEj3p-F-Xwh!yXul`N^?6uyBBWG0itQk;SG-5=_V# z!^P|p$Na^pJ25{ghA62q(2EhGy^FyjiO8|j#TVlaa8_Fk7MZpfcYuSY7~BtSglt&h zDaMtwV1IV3m3 z#kR}DW0%ZHit|zMJ7!ZNGQ|vv7L3MY3Mmp)aKEMH_V#_-_usPn;KA+N+PAeFY-!)U zckBM`EeEz^E(j4zD7tVuIC=aChsiBWzA+#oL5SX*Xk` zB0*^=8#$QW=w!>HG9R@JfXg0o#oJ*hWAw901zUR#TqPEpE(1t7Rwrj72gYJIngyC0_dl_ z>p75t&FLu)wjJRLcc^kCi=##{8D_QVq-ciqAQ7hMT~Qr`kdi}`IqcG`ZZQ;b^rtOG zrasIm8P_U^r$d4yvEG?n5ldL7<}q)Ua-f&X-GX5timtsIIHG#WSx)q$8y?Y27tTXs zVzXuF!Z|N0lYqMzXcv)ZMwDc6z|EE?k24oCPU;Nj2qhHigZjGIyd$zMWBsL}3sw*c z4J*f07P3GDCG;y*IX1AU!lNmZyHk+mawm2A1+pC$CGUq5$O~i_&=-+eTg_2B<33x9 zqo;t3v@+V3?QV-lwp)y;BV!FV2>MpdhnX?&~5j&WKzgwEi4*B7w3AhTEP`fGqGpH!OzornK@YmBjCUQ;W(cGOAPt! z*vyGsho%mlu{5>{XG)~3GHz#AVlp@=dx&f@R{%R?=_}ni*wX>pWU;T8+r91PuybW8 z8>)&ez&0S3!H2uRL_#|*6W!>K350E>JZ?z?sWfrFXb+HSw&&g`MiuH517BRzK??du;H90E^_ z9veFz+{4v~TtBy!BC8P>u^?-L`h!vk*l1D!D(3=TkJ zxQIw!xfmFbP<#mNQ|ove*y$K%;VQ{8{amji%OA$l6Kv>XJrZHV$^_n_(Y`^I2S9`a z9{}B0Xi+ng^Zm&&GPBt-+Jk;JLoLs(kgd>sqkWh;^ncSH){Kro0`_#ay6po8 z4JKT1QnqDaIDcgKfGpFvrnuz~7n125P@z8=zpZH3K%WB&I9N1Na}E{ga)e8J6KonZ zdCGE#OLof!oP4_F5;vjR?<{>T2&y0huVHn%)7D#dV-2OaU$lc~IUGz9?BKw_0jTI+ z*N_OYqy0AAjehCJDzo&N2|2gtM+uE&k+SGFf0P~Ps=x$ErU=Dufr8VB59A-Z$0ScHf5T!Ad;x_@}iAnI_;PR_NJMI-S$(vPGkv^};n zFl=5I^<5uo7fzb9QmOW+#@pShMnlWCG}PlkjBN8A|B7;NdAIa+atS*%Aw1! z?d~>vi6VIiE44UP06b~o^yWYSLWz*E$loX}Lvd2ksmU13vNa+ta9xaC5s(IGx}4HD zCoJ-z5g>##p%Ddz0}$9*b+xFZ4725U!m8QVjV+T>n&$vS9yF?KpYOuXzK*Q}FwA5b zI=XP%A3)9?Fq!X!+`(-3b}D2TZ!Tu*k?e3u)D~>$mqcYo4zCZRR2%f^=0Gb%cc@tu zNx?tU&z19T9Otp8lixt-}M@bk1+f9m5H~{Pxg#XWlKN`2d!N9Bkol#t|a7 z(D_?eRBpxLjI3!(k}H=xN?m^dtK8W5*fHAMD_fFWFm;GTbc5{FW5u&Kw>LM!6O{zK z3#)j&kt%K;7#M`c>}u`r6(qFcZCL&8L?!GaU9HTwMB|EqHX6NKxMA${;C7z7$Zr{z zmFk{Bt9u)SIt`fJ{h53YP+?K@ixhD`AVyjsa6n{-Y^EP_t@8+*yK5jn5(ySdfPy)L z1OWSUhq)Fh#z3==Bb8`?=r6T9{KK-CbEBP})C_hYld4OPk7DxEjokyYGAbOWAyV37x_WeTjjny~8^WWybZF%+b8>`=ZmmwUUPzApA z{i8ex)^Hprff^fDHLPw})3CN-T|-mD`i2dS4ULVBs~T4~u4!D`xUR9Oaed>4RSl~e zSFKvLdexd$YgesX)wF8;stv0fRyVF*g}XazR*rZwx=Y*^c{wsGyMwX4^zS-W=ay0uMf*RS2Mu3=r{x>f5|uUoTj?YedAn%1pf zx1p(_sj+EQ)9R)*O>3LhH8nM@Z`!cFVSVHJRqI!;U$cJg`gQA@)~{c`VFOUyfa*5@ z^ad2$fGDi2PC5?K?62VFp#Mg{al^C(P@8`F^}6qiE!kmrhS4{6(iASt$dO(-B&3>M z!@5r_C9wiG;!6)<16cx7>cpAEdNEVfWCrnhnc+w2O6-__MKFF|S61Q@bdg%#jPrAM z$!e-nl03~7gYX9==ZD-NrExK)l-}mzscvorJ=;LUN{@T zlGAp9cKehh7}A_J)(_%1upEm<|9G*oWU{ zzqIP|*n-5u*cD}qDz1!O6|cSAFT0^EJ!@sGp{y~!Dt0>lq4}Q-~YkN`b}@StNly&zx$^ie(#5V>DPY!^JXw;9XBY`&$zqf9aE-|BGFZ{pKHk;!i%gdv9yo9dB)a@TcDMOTThv;ynMmzeTl7Qxa6CdS6(x_IkC8|-S11>T{r%6^4=H97M0)o!?HUnF0Wcx zb=mC8X5U?2UB0ONj*1(SJF0I?%udA08fV>@SX4f%Z2aeuRNr_@+4$3yZz!uNdqc(g z${UjRo}0I@vVLB=Y)Q?Mn(?1Z-23Pivr<3tzGQv!ri%C_3#-O|>za|-HcCE6S1j?!@?Sm0ej@Gsi2B#n8BTvZ5kh zSy>gYPR@#7l9(Ht7oVTJblzpLRD41FiaA#$7gyHCu8rNDI2wPx?3d!d5&vZTQ}I8W z{pVGmj(;Zp`Pi$;FUG%;_-g#?{@KL$;{Q_i{n+efH@$Ih>wA9oXMe8nu17xb3cIDpkD`&2} zs-m)b)@2LUZD@Y(L!bRzRntQcKUYzG(;E->yyw012HGdS{*5~ieftOJ4jg>^XI9oP zTb}vg6Q`bf`t)d|HiqGeh;aL_T0ShK;|~`UPou{@X`G7x1D(B(;t5Rg%@A>#pnA6e(RC9UQv~@;@YaKlQ$%{B`#Sp{^9a#6W1n|SFV}0ck9Wfs>`b@7v8jeLs@5K zRm0`UC1qD8W1H6}-ju9QR9940Z1$HWW>>8%YfdhzNX)L-x4UWeoYfU8E2~dlxBpEy zRIa#u(REi{wxDV+D%dvXii+y;U6sqKMrUn#WcAqoZMOVz?PcS{rhUm%g6uxhU6QU#0Jx4ixTmZ zn``GaCu1jHS#j^*j{np3Hz%qS@%!d&yLsdI@4TTrmdGTpToXTe$&HDw*|$}X|Kj?^ zb8bvjVMLUVKYrh56Z6XEl#M0Y%Q3!cW+&F8amy>O*?aQf?8U%kUF9XnT2(RrhjrEW zm(M7mouF>#1Pd}6XKrY1!K4=>N&X2-d&eI z;mu#**Ut7kYQJ&g6F01A@NXP=_SGBX&vm4){(i?w?=^qj&z|d8_rus1*Tt%rG+jIA zi%lQ7B)g%0;i(M`S7mqoDZfzY{vj2m>acaN!$?SpLr%oO4KELFk z_v#ljzxbtW+uwhA$sMnJ_0%1{_w_r@#!lSn4dM!A8p=P8|6;plHKgXoau8bacr39r zcJ-BSp4D7c6hAfY?NFM@PJyDge0km&l0Fa36;hf zzAC-}_*pHBW4mGrto6oXm9bl6@rv1%hhp)nSrxnER{~xv)^te>H6~}puC0n4PQ=QA zRQ!r~qHJzr4t|!$YGR;$+2Z)s_-}JOR#6#?&#H<+M8`(s*TjyMCE``F^0L1G5rAz4 zA;v4qtK+eT+Qvi!!pYe3s@ZWLjf|D8M+rqup17BYRr~RMaVT@(enmVPdo;di{+!r#l~>GKS=NBI#pBCjTS57Fd^XxuA6pHm z@puyLUJZaXAyt-=`2ZJAaqUSLwp*o&RIiNl#z7!1v6w zi2VB~;@!1h?^}rBoh7=N@Yv@vKjiMdKi8u9H=|wVV)g_6uFq(@u9;P==WDpw#5+-R zEN65upYdOHc;D{)|J~ZXKs{2{cN`xsi?J$>N+Iy=Uv3}&-BtNjx$=#B`(9Fl;J0(-r=I9gP*n`SUwHEEUc_}|IDAe zeBWJW^8Nm7-z)yTnJ+&hSH9KkcYa^6Q^;=@yIy_$ckJVPFA9QZ&fliz3ZJvryug`*B|dUn$83Kc_n|m zxApvf;m2$3xb_=vemZWvYC3Usxj)=trsMZlyC3@F;eDpuAJc7FX>B4wkS~9NDf8!v ze7Sv&ciD5O`7IH1zVUT!6aQe^_2(|@{mk|a?F%>jTW)@A(VoAi``-p*dz|;fGZ6n} z+uz@`caU$~jQ_9mce<&+SFZj!#*fQ6HO?Que%blG!L;YP?^v74|M&WMt7-qh-2DGv z*T-oG_+Dg}jofCOKVN*=_yxK4A8&q?#dX`WR{A32{Q0PDe0(ndv&P5f{O`v3^VLBm zJwIG(?7C%Ht983^{`@#F-k59eD~SKVIDdXQ8~gWB8`rN#Y%`Y{=ePIG#`*T&Z=9c> zucH3$2kQDb!T6Be{MC#P&iPj3{Q35NQ!)p;Z~s2y{Pn_j5r5*L+TM}IkzW`ye%s^qcz2$O`|CuTb~fS-6VLAtZ%6+9#`*o@ z+s66*Z{uOQJ<9Q|`|d z`SQ9c_ve#*`72GiKX2sAuQuiWTo4U*eSQo|%kx&g-gnG;E!mZ8hE??zXD{mwp1nM; zFSE_(4Kp3T{qpD2?988^&N-%%zg~HZSug%PWch_DAN|d%pb073I%aQGV=-@_0r02`kD^Tv2}Vit;l|xj&cZ z=iip^YPrr_QEu)*>@q*UU*_B2V)FgxseJiWrrhrx`Et9z`tq9DU;KXJ$7Zty;U|~- z>!;0j^ViRxG4=d=>xZU1|Gs?0*e~O^OkT-0Vuk~c*s#`*iG6*#`Dd@O?7(t+jb#VB zzx(;{V_V+2XE{Hs;v*M-`ceMZO>M0p*jm=>iRs2YciDcyl-prdyzJhmtK#whQh)xx z)X!YJefXZg@Opn$oY(t{bC+9qV%oFA+>QP9{?K{m#{FmSx$|?8*?c>Pe!Q%2Zaom~6A+>dR1;^M(cyRP3g<#s5z zapcCU@;fIk^DjAi{di^TC&u>kgdO(Uef|Ao+wntwz4^~QJyXvw_vNNu$tRn7emVTu zhN_8cZ$&(I@t>M@O>;YkA3R>q)B7E>{=T(I6O*4G4ma`q{L;rEe!TJe8O+>|J8Rd= zJ$2_LPS581<@94aKiM~y?J)lYGrj!s+4_Dx=IggFT-G05w;cCxSdLdsukG$Xo@3hg z$INYJKK5}dCtv{IK zx|tV$O}X8)4xTKVm+kF}er~kY+&6w*{y_3`8O!^2Pc=uI`Ay4rbm;Q!^`a^ZIVS{qouU!N1N=#(sX=Rk{6~u&eTuR+OK)qWq#2<=3w$fBlN` z&WiGTR+K-uqCD8T_C5d2Yu|ng%$JAV(-*D>hvlZ8ncCZGFXN^DRu%QNzwc`{j0DHgNmH&f~h<54?T< zO58Mp^9}i-U7vTu*!ZX<4!1L{g?uMTC%pOq8;5|88J%dM8jn`kMuGtfU z8GL({ZR+Go_4GRR0*>v0$_&1}I^2RsaQPOk--QQo+|vB!8`M2`2KR5({P2zH2(H5u zcm|hl)AnMx0vCQu^P6q;3=ZF<@f2>qMdPtOF_^(`pVGV36}SUe->vygcm$8Tnm>o* z_i8--fO^qWhj*&Wa0RZzEw~2{;o2YQ^yc@f3-_rj_p1l+7!DrL{30B|Gr04IT0i=z zdI+~auJPLE)s?Y&0FUABpKE^SFVu6m@Q}tU@Bkjeg)eLU2Hb{6a0bud{=?dSaiX5W zg|BG53irOM@%mq?t6x_S|6ZMbN8Nxsa33DSQ#hJw`yIFsPvHez_(yH8^gVSO?!l9P z*8Ix%)!`4+O}GQs=9)kJp?dryb^J5+)ZMu#EQ^D}Zo93$@~* z!3N~p513}~(;vfAc;J3d+vk^`r1iV-0PgRt`91Ts!u<4O_W{edKZbix)%-b}y5Dp6 z^&4;>9>Ej1vyV=%v#+`jkKrjC?5FjMa12-B#{ODAgXeH`faWJ~6>dFK^Jj2S()b7- zZq#_`Ky?hy;L!eo#SDJ?Rp7zF8qeVH5RLZ_RY!-ZJ8&PaN19(hT)lw9BQ#!yD{vid z!Hc7{z2q2m3fJMT{ex0&eP(cYoW?6~3m(EVxOlv_m%w$n0}tUTT(Ex#%PmhCPT>~Z zhez<>ByE2TXYlAe&ClQ&+&W+Li<{J)3)KA!;Z&Vnq@KP^UA#n{{f4@Csk%^8H!f56 zwyKMltAi`lO?Y7c5S`n8@ype{SE$EVs~6kV(W}+nYt;Q~)!7bpaJ@Qgst0g#qsAw2 z?Iw-S;O1*I9=}%IbvGpa@o(JHc;PqIJvg{kklO0G`3ghc$l&S3aWg>3!;gyFuu;XZlf% zmp`E%eNsIfs)J9d6SxUy4{Cn)8TI6|>dHvn|D1a9r|S3%>ctn;<1eY_55W(sXOF0B z6ZPmT>c!X8@z>RhN7a+Z)PuiKPybdOeoNh$s%P-%+ZwO^oq7(p|6b#je^Afh`FAv4 zo~bMUsIGla-T5bV<)77^e^Cc>brYV$^?%d+?tiFw9Q?4!8Eycyoh#0f+Vv>}K%q_X=Et8*pTQ@HAJy1BV5TPoJz#o}#Wk zT|Ie*y0lTR0D;Qnyz z>lfh(Tzr{MuM8(}8=k{SP220hqsuiOZc``bAx&9+IC#0nCvf={8gFk`m#$Gy;rX>1 zZ@9n5`}MiFN#p5j)UBJJ>>X1c&<8po;re?aCV~R&*3D|c<&VT5Drh(czA|7bI;)U z?U%V{<-EfyHNOm3;0&I_ab4T1!ZmmX2UltR5N^PuhURB*;nf1z^TQuH<cmQW`@GfmXf~#-??!W_h0?*;_-8%g;T!kBO2Ohu^cn*i}!SvxO z+<-gq0G_~eIP7Bja20OA9e4mw;5i(=7t@EUaOrn7zYe$H4jkX1_1o|SF1}CmQ@9If zaPj?GzY4eE5xjuQAJF#da1YMlLQm_*a2@W#V|W2acWV17+=hqn3@-k@wwJ(lxC0O2 zDO~uVwqJ%*xCQs&3A}(ycj@#ha0BkbBX|afcWe7GT!Y*20M6jxL)v}>SK%hygU9e3 zF5aWlE5nU@HQu{lJ%q>b0*)Tg`YGIor|<$U4A9;u)eX4+pvFh=1g?Er^P6xRu75`J zP5+AWd8h-2U)Fd8SKu1lhWqdcp27>b_^{4T8Lq;0xDEH<5uCvbID7>216SZW+=6@X z5YFH^98Pq8BDezA;1=A4A z%dS&ipI_Wd^UH7*uET|b)-S;coWfn#H|L-2v^|_Jcbu=^sCx_3U}cFoWa4q z+Fk@#;Rf7=NAL^|_tWW>;VRsOyYL8}!PTNpuLIBE>aQUm9>c-YH9v+Ma1WltraNId zp4Z_HJcOrk;ThUq8BXCA+=nOd0xr3}!2J860yp3;Jcbu=cz`ZX!99!brxzcn@haSc zGk6Xc57PE(a1-vrBRD)*+l$~j+=53(YW?}q>f$l#GTef@aN$_3pTHe>3{TpzWt{8y>(d8?gtFFN_xOAT8H{b;vo{xMu+@$e3JcOeQG`|lA7izo=hZk#n3{Ta4hT-}Eo+cZADLY-Wx?!x7|#^bBh z6}a|tjW^-sYK>Rn7Tkx^S84qwJlL-BsG&~b2Hd?)^Jh1xYd66+tAktA<&L@zH*VMX z2#(*O@!$@1^geZPm%4SgdJZ=}r12?SyGP>_IQ#>RkM37DKcODN(I++DgvW6FN1ES& zt3!=PpHdh8SRFj5ZoqvwgA1S5`mN8ZyYK>zMw&l?!_R3vf)ls}cj4&s+Fl2a{!HUd zxc&u=hhJ1@aBHmb>Yu9@@c2s_Z~TQidPtqYoiA%Vc~~7y)Dw8{RgKrarjGtnU4!Gl z(s&n+zOM1wqv|PK&NSYI%iqv=3yvPsc>34s5uCw=ztQ{>+=DavZ?%5oo9Y&vd`shn zsXB&7$p*P!FoFGV4fyM+;3Um2z$G|>%Ww=Qa0RZyDO`h_a0l+g19%9J;0&I^3pjj{ zuD>E&f+IMAQ@8=Q;VwLY$M6(hz~RZdJQ1A0DcpeDa1S2B6LuEHr?gX?euZo)0N3-{nYJb=gW1fIb`Mb}RO z4&fqPhGV!2*Wni2h5PUj9>WWr*Iu^!fm(<_u(NthBJ5uFW|!ISbjKyW4HpRa2;;KZMX~f;UPSRGk69s z;KCVLemH_-xB{ne9d5#HxC{5;Av}gNcm^-v!kJipID%ui0;g~tZo+N23-{q6JccuP z1~1^kSy+BJf@8P>r*H#q!##KiPv99mhYM%x@|55Rj^Qet!VS0$_uwHsfoE_~)%h>N zWw-*@;3nLG`|t?P;5l44N9VT$$8Z&{!!5WC_uv6MhNtiX4qe~x{(7+pm*E($z$x5- zn{Ws2!UK2+Pv8um!wWb(Pq$wYF2gaLz!kU(r*I9f!wt9%ci=uefXDCzp22gtaK5gu z5RTw7T!E`_3fJH!+=4rBA0EMDcnUAzV3RI?5iY@HIDxBh4Q{|KxC8g#Av}U7@C=^A z!3DbfAsoSFIEE8Ag==sV?!bL`01x32oWXOraG@@L5su&(uD~f=hg)z5?!g0i1W({8 zJcol+mp6ncWqyd*J1y|6h6OD)cnNtC+*{r>p$AN3Af;m`vEVX--U-K==4VL z5snkhPvD@c@#-dZn5s)~=OT^w;Nry^FTufO8ZW?$ zZ5j`*P`9p8FW~C+8qeU`Z5nUAUEPMGJ2hT|yYK{V-KF*0@UXA((tYa0^=It2cl$w& zci`clXgqNJ_4@kL$22~J+phmxpFe^ZaLM&&>+`$+qV4zK^6tB>CHVZ=)6}DV)eE@1 zpT_I7>;KcYA046jHMk3>M{9n|^*`y`E1anDx$8gC#|JOcc=1$q=X7=JTy^03Q{36! zMH;W&tggeuH)*`>`eX9#MXtXk@0sgA$-8ji?y`NVN2m+WQpa%Pc#SvV>d6`(!m}4^ zynKo}hUcz-AV2@Lvo$|){rmWM6Rw`C`D53Aj?Ztn{&Bqfa5>fbsq2r%=eJ$|Fy7Uh zkq@_S(|8*$yhG#t52*+6%=JIvr{8w{OL+HP{|nyT|I+r-y_U~&_;?-89;fjc+}c~? z{f+AG!RkI79;)#Y+&N6+J$M06j@JChAN^$qDL0qOP5!F1$!RIYk|v3cLO! z{Q9n3qVYc5-mLL1T-c)VBAi^I@eHnAsqupAKf=#n6OLSe5k4NiTCy{=?_@ z;8O1MsjV5o30#4ja2xKQtn)L3OE1xQ87`fQIGn(hD{P`Evb@zQ$Uw`Vp zuj-w+@1uJ6-S<(w6Zd^n@3H&7sdveJztOu2N5`yRf7&}^^W5hH>(KT0Y3o}j@DyI; zuIFujW0SVu%U!SAcv{nVcDXur{XzQa_qJ<%?D}K$@$A*>$79=m|5|nJI`!~+b^iwS z0xmZ--n&s-qN9V*8ov-rG1h z%KuQ~QTB%#kJ_=#{(t$6uex@}HD|N@b`OtslDxK=iS#|xckI@JaCEb_V3RA zX8nBFY3HZ!?<@PU&vVV}tnYoad13d5<-61D2k!Sv{n-6%Ltv+Gr{m|}FV?S`GCS|S zzW-fTKc1Laez0xiha(K^{_5-d-;LclZY;C?_Vv^E%k^Rt_Umq$x%_|n&~iIokS{c^ HIsN|u0(*}2 literal 0 HcmV?d00001 diff --git a/tests/fixtures/autocrat_v5.so b/tests/fixtures/autocrat_v5.so new file mode 100644 index 0000000000000000000000000000000000000000..fe6c36bcf89ebb82b14257e2a30ad902f921ebbc GIT binary patch literal 586720 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

    @fiQOp965`}b7yn=)^nR+?*<+> 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%0DA`3o56bA`f@hyvSvv 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
    EE*h*V4 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 V<(;;v|N0hcn^!vx;kOL`{{wQ2-Ut8y literal 0 HcmV?d00001 diff --git a/tests/futarchy/integration/futarchyAmm.test.ts b/tests/futarchy/integration/futarchyAmm.test.ts index 2325f8469..4ab0c5777 100644 --- a/tests/futarchy/integration/futarchyAmm.test.ts +++ b/tests/futarchy/integration/futarchyAmm.test.ts @@ -211,16 +211,8 @@ export default function suite() { dao, ); - const proposalAccount = await this.futarchy.getProposal(proposal); - await this.futarchy - .launchProposalIx({ - proposal, - dao, - baseMint: META, - quoteMint: USDC, - squadsProposal: proposalAccount.squadsProposal, - }) + .launchProposalIx({ proposal, dao, baseMint: META, quoteMint: USDC }) .rpc(); await this.futarchy diff --git a/tests/futarchy/main.test.ts b/tests/futarchy/main.test.ts index 1b654bcb6..37478c3ac 100644 --- a/tests/futarchy/main.test.ts +++ b/tests/futarchy/main.test.ts @@ -10,8 +10,6 @@ import conditionalSwap from "./unit/conditionalSwap.test.js"; import executeSpendingLimitChange from "./unit/executeSpendingLimitChange.test.js"; import collectMeteoraDammFees from "./unit/collectMeteoraDammFees.test.js"; -import adminApproveProposal from "./unit/adminApproveExecuteMultisigProposal.test.js"; - import { PublicKey } from "@solana/web3.js"; import { LAUNCHPAD_PROGRAM_ID, @@ -52,7 +50,6 @@ export default function suite() { describe("#collect_meteora_damm_fees", collectMeteoraDammFees); - describe("#admin_approve_proposal", adminApproveProposal); // describe("full proposal", fullProposal); // describe("proposal with a squads batch tx", proposalBatchTx); describe("futarchy amm", futarchyAmm); diff --git a/tests/futarchy/unit/finalizeProposal.test.ts b/tests/futarchy/unit/finalizeProposal.test.ts index e0686dbb5..75b28a6d0 100644 --- a/tests/futarchy/unit/finalizeProposal.test.ts +++ b/tests/futarchy/unit/finalizeProposal.test.ts @@ -70,9 +70,6 @@ export default function suite() { twapMaxObservationChangePerUpdate: null, minQuoteFutarchicLiquidity: null, minBaseFutarchicLiquidity: null, - twapStartDelaySeconds: null, - teamSponsoredPassThresholdBps: null, - teamAddress: null, }, }) .instruction(); @@ -123,7 +120,6 @@ export default function suite() { dao, baseMint: META, quoteMint: USDC, - squadsProposal: squadsProposalPda, }) .rpc(); }); @@ -351,9 +347,6 @@ export default function suite() { twapMaxObservationChangePerUpdate: null, minQuoteFutarchicLiquidity: null, minBaseFutarchicLiquidity: null, - twapStartDelaySeconds: null, - teamSponsoredPassThresholdBps: null, - teamAddress: null, }, }) .instruction(); @@ -418,7 +411,6 @@ export default function suite() { dao: daoWithTeamSponsorship, baseMint: META, quoteMint: USDC, - squadsProposal: squadsProposalPda, }) .rpc(); diff --git a/tests/integration/fullLaunch.test.ts b/tests/integration/fullLaunch.test.ts index 398f923c8..5e44ba320 100644 --- a/tests/integration/fullLaunch.test.ts +++ b/tests/integration/fullLaunch.test.ts @@ -462,7 +462,6 @@ export default async function suite() { dao, baseMint: META, quoteMint: MAINNET_USDC, - squadsProposal: squadsProposalPda, }) .rpc(); diff --git a/tests/integration/fullLaunch_v7.test.ts b/tests/integration/fullLaunch_v7.test.ts index 4cf37a9a7..af8af6e0c 100644 --- a/tests/integration/fullLaunch_v7.test.ts +++ b/tests/integration/fullLaunch_v7.test.ts @@ -506,7 +506,6 @@ export default async function suite() { dao, baseMint: META, quoteMint: MAINNET_USDC, - squadsProposal: squadsProposalPda, }) .rpc(); diff --git a/tests/integration/migrateToV6Raydium.test.ts b/tests/integration/migrateToV6Raydium.test.ts new file mode 100644 index 000000000..3d7238ab9 --- /dev/null +++ b/tests/integration/migrateToV6Raydium.test.ts @@ -0,0 +1,1391 @@ +import "dotenv/config"; +import { + Keypair, + PublicKey, + Transaction, + TransactionMessage, + TransactionInstruction, + VersionedTransaction, + SystemProgram, + ComputeBudgetProgram, +} from "@solana/web3.js"; +import { assert } from "chai"; +import { getAccount } from "spl-token-bankrun"; +import { + PERMISSIONLESS_ACCOUNT as PERMISSIONLESS_ACCOUNT_V6, + MAINNET_USDC, + getDaoAddr, + DAMM_V2_PROGRAM_ID, +} from "@metadaoproject/futarchy/v0.6"; +import { + AutocratClient, + AmmClient, + getMetadataAddr, + getLiquidityPoolAddr, + RAYDIUM_CP_SWAP_PROGRAM_ID, + RAYDIUM_AUTHORITY, + PERMISSIONLESS_ACCOUNT, + LaunchpadClient, + getLaunchAddr, + getLaunchSignerAddr, +} from "@metadaoproject/futarchy/v0.5"; +import { FutarchyClient as FutarchyClientV6 } from "@metadaoproject/futarchy/v0.6"; +import * as token from "@solana/spl-token"; +import * as multisig from "@sqds/multisig"; +import * as anchor from "@coral-xyz/anchor"; +import { BN } from "bn.js"; +import { IDL as RaydiumMigrationHelperIDL } from "../../target/types/raydium_migration_helper.js"; +import { getMetadataAccountDataSerializer } from "@metaplex-foundation/mpl-token-metadata"; +import { createLookupTableForTransaction } from "../utils.js"; +import { getSquadsPdasFromDao } from "../../scripts/utils/squads.js"; + +// Memo program ID for Raydium withdraw +const MEMO_PROGRAM_ID = new PublicKey( + "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", +); + +// Raydium Migration Helper program ID +const RAYDIUM_MIGRATION_HELPER_PROGRAM_ID = new PublicKey( + "migR87BnBEkJbbDECLzRxhmNsQ44WMzhDCpCJhfPvR1", +); + +const MIGRATION_METEORIA_CONFIG = new PublicKey( + "5FSCTMuJcrsahe8nB7P3LooAYv5U5GNgBPY8JYjWKfHr", +); + +// Helper functions for Meteora PDA derivation +function maxKey(left: PublicKey, right: PublicKey): Buffer { + const leftBuffer = left.toBuffer(); + const rightBuffer = right.toBuffer(); + for (let i = 0; i < 32; i++) { + if (leftBuffer[i] > rightBuffer[i]) return leftBuffer; + if (leftBuffer[i] < rightBuffer[i]) return rightBuffer; + } + return leftBuffer; +} + +function minKey(left: PublicKey, right: PublicKey): Buffer { + const leftBuffer = left.toBuffer(); + const rightBuffer = right.toBuffer(); + for (let i = 0; i < 32; i++) { + if (leftBuffer[i] < rightBuffer[i]) return leftBuffer; + if (leftBuffer[i] > rightBuffer[i]) return rightBuffer; + } + return leftBuffer; +} + +function getMeteoraPdas(baseMint: PublicKey, quoteMint: PublicKey) { + // migration_signer PDA - used to sign for token transfers in Meteora CPI + const [migrationSigner] = PublicKey.findProgramAddressSync( + [Buffer.from("migration_signer"), baseMint.toBuffer()], + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + ); + + // position_nft_mint is seeded by our migration helper program + const [positionNftMint] = PublicKey.findProgramAddressSync( + [Buffer.from("position_nft_mint"), baseMint.toBuffer()], + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + ); + + // pool_creator_authority is seeded by our migration helper program + const [poolCreatorAuthority] = PublicKey.findProgramAddressSync( + [Buffer.from("damm_pool_creator_authority")], + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + ); + + // pool is seeded by DAMM v2 program + const [pool] = PublicKey.findProgramAddressSync( + [ + Buffer.from("pool"), + MIGRATION_METEORIA_CONFIG.toBuffer(), + maxKey(baseMint, quoteMint), + minKey(baseMint, quoteMint), + ], + DAMM_V2_PROGRAM_ID, + ); + + // position_nft_account is seeded by DAMM v2 program + const [positionNftAccount] = PublicKey.findProgramAddressSync( + [Buffer.from("position_nft_account"), positionNftMint.toBuffer()], + DAMM_V2_PROGRAM_ID, + ); + + // position is seeded by DAMM v2 program + const [position] = PublicKey.findProgramAddressSync( + [Buffer.from("position"), positionNftMint.toBuffer()], + DAMM_V2_PROGRAM_ID, + ); + + // token_a_vault (base) is seeded by DAMM v2 program + const [tokenAVault] = PublicKey.findProgramAddressSync( + [Buffer.from("token_vault"), baseMint.toBuffer(), pool.toBuffer()], + DAMM_V2_PROGRAM_ID, + ); + + // token_b_vault (quote) is seeded by DAMM v2 program + const [tokenBVault] = PublicKey.findProgramAddressSync( + [Buffer.from("token_vault"), quoteMint.toBuffer(), pool.toBuffer()], + DAMM_V2_PROGRAM_ID, + ); + + // pool_authority is seeded by DAMM v2 program + const [poolAuthority] = PublicKey.findProgramAddressSync( + [Buffer.from("pool_authority")], + DAMM_V2_PROGRAM_ID, + ); + + // damm_v2_event_authority is seeded by DAMM v2 program + const [dammV2EventAuthority] = PublicKey.findProgramAddressSync( + [Buffer.from("__event_authority")], + DAMM_V2_PROGRAM_ID, + ); + + return { + migrationSigner, + positionNftMint, + poolCreatorAuthority, + pool, + positionNftAccount, + position, + tokenAVault, + tokenBVault, + poolAuthority, + dammV2EventAuthority, + }; +} + +/** + * Test suite for V5 to V6 DAO migration with Raydium LP + * + * This tests the complete migration flow: + * 1. Initialize V5 DAO and V6 DAO + * 2. Create Raydium pool with DAO tokens + * 3. Execute migration via Squads vault transaction including: + * - Withdraw Raydium LP tokens + * - Transfer all tokens from V5 vault to V6 vault + * - Transfer mint authority + * - Transfer metadata update authority + */ +export default async function suite() { + let baseMint: PublicKey; + let v5DaoAddress: PublicKey; + let v6DaoAddress: PublicKey; + let v5MultisigPda: PublicKey; + let v5VaultPda: PublicKey; + let v6MultisigPda: PublicKey; + let v6VaultPda: PublicKey; + let ammBaseVault: PublicKey; + let ammQuoteVault: PublicKey; + let futarchyV6: FutarchyClientV6; + + it("should perform complete V5 to V6 migration including Raydium LP withdrawal", async function () { + // Initialize V6 futarchy client + futarchyV6 = FutarchyClientV6.createClient({ provider: this.provider }); + + // Setup Meteora config to accept our migration helper's pool_creator_authority + const dynamicConfig = await this.banksClient.getAccount( + new PublicKey("4mPQ4VuvvtYL3CeMPt14Uj1CLpBWcVdJoLoTH9ea4Kod"), + ); + + // discriminator + vault config authority + const poolCreatorAuthorityOffset = 8 + 32; + // discriminator + vault config authority + pool creator authority + pool fees config + activation type + collect fee mode + const configTypeOffset = 8 + 32 + 32 + 128 + 1 + 1; + + const [migrationPoolCreatorAuthority] = PublicKey.findProgramAddressSync( + [Buffer.from("damm_pool_creator_authority")], + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + ); + + dynamicConfig.data.set( + migrationPoolCreatorAuthority.toBuffer(), + poolCreatorAuthorityOffset, + ); + dynamicConfig.data.set([1], configTypeOffset); + + this.context.setAccount(MIGRATION_METEORIA_CONFIG, dynamicConfig); + console.log( + "✓ Set up Meteora config with migration helper's pool_creator_authority:", + migrationPoolCreatorAuthority.toBase58(), + ); + + console.log("\n=== SETUP: Creating funders ==="); + // Create multiple funders + const funder1 = Keypair.generate(); + const funder2 = Keypair.generate(); + const funder3 = Keypair.generate(); + + let META: PublicKey; + let launch: PublicKey; + let dao: PublicKey; + + const minRaise = new BN(600_000_000); // 600 USDC + const launchPeriod = 60 * 60 * 24 * 2; // 2 days + + console.log("=== STEP 1: Initializing launch mint ==="); + + // Create v0.5 launchpad client + const launchpadClient = LaunchpadClient.createClient({ + provider: this.provider, + }); + + // Load the pre-ground keypair that ends in "meta" from environment variable + if (!process.env.META_KEYPAIR) { + throw new Error("META_KEYPAIR environment variable is required"); + } + const metaMintKeypair = Keypair.fromSecretKey( + new Uint8Array(JSON.parse(process.env.META_KEYPAIR)), + ); + META = metaMintKeypair.publicKey; + + [launch] = getLaunchAddr(launchpadClient.getProgramId(), META); + const [launchSigner] = getLaunchSignerAddr( + launchpadClient.getProgramId(), + launch, + ); + + console.log("✓ Using META mint:", META.toBase58()); + console.log("✓ Launch:", launch.toBase58()); + + // Create and initialize the mint + const rent = await this.banksClient.getRent(); + const lamports = Number(rent.minimumBalance(BigInt(token.MINT_SIZE))); + + const tx = new Transaction().add( + SystemProgram.createAccount({ + fromPubkey: this.payer.publicKey, + newAccountPubkey: META, + lamports, + space: token.MINT_SIZE, + programId: token.TOKEN_PROGRAM_ID, + }), + token.createInitializeMint2Instruction(META, 6, launchSigner, null), + ); + tx.recentBlockhash = (await this.banksClient.getLatestBlockhash())[0]; + tx.feePayer = this.payer.publicKey; + tx.sign(this.payer, metaMintKeypair); + + await this.banksClient.processTransaction(tx); + console.log("✓ Mint initialized"); + + console.log("\n=== STEP 2: Setting up funder token accounts ==="); + // Setup token accounts for funders + await this.createTokenAccount(MAINNET_USDC, funder1.publicKey); + await this.createTokenAccount(MAINNET_USDC, funder2.publicKey); + await this.createTokenAccount(MAINNET_USDC, funder3.publicKey); + console.log("✓ Funder token accounts created"); + + console.log("\n=== STEP 3: Minting USDC to funders ==="); + // Mint USDC to funders + await this.transfer( + MAINNET_USDC, + this.payer, + funder1.publicKey, + 5000_000_000, + ); + await this.transfer( + MAINNET_USDC, + this.payer, + funder2.publicKey, + 3000_000_000, + ); + await this.transfer( + MAINNET_USDC, + this.payer, + funder3.publicKey, + 4000_000_000, + ); + console.log("✓ USDC transferred to funders"); + + console.log("\n=== STEP 4: Initializing launch ==="); + // Initialize launch + try { + await launchpadClient + .initializeLaunchIx( + "META", + "META", + "https://example.com", + minRaise, + launchPeriod, + META, + MAINNET_USDC, + new BN(100_000_000), // monthlySpendingLimitAmount - 100 USDC + [this.payer.publicKey], // monthlySpendingLimitMembers + ) + .rpc(); + console.log("✓ Launch initialized"); + } catch (e: any) { + console.error("Failed to initialize launch:", e.message); + console.error("Full error:", e); + throw e; + } + + console.log("\n=== STEP 5: Starting launch ==="); + // Start launch + await launchpadClient.startLaunchIx(launch).rpc(); + console.log("✓ Launch started"); + + console.log("\n=== STEP 6: Funding launch ==="); + // Fund from multiple sources + await launchpadClient + .fundIx(launch, new BN(5000_000000), funder1.publicKey, MAINNET_USDC) + .signers([funder1]) + .rpc(); + console.log("✓ Funder1 contributed 5000 USDC"); + + await launchpadClient + .fundIx(launch, new BN(1500_000000), this.payer.publicKey, MAINNET_USDC) + .rpc(); + console.log("✓ Payer contributed 1500 USDC"); + + await launchpadClient + .fundIx(launch, new BN(3500_000000), funder3.publicKey, MAINNET_USDC) + .signers([funder3]) + .rpc(); + console.log("✓ Funder3 contributed 3500 USDC"); + + console.log("\n=== STEP 7: Advancing time and completing launch ==="); + // Advance time and complete launch + await this.advanceBySeconds(launchPeriod + 3600); + console.log("✓ Time advanced"); + + const completeLaunchTx = await launchpadClient + .completeLaunchIx(launch, MAINNET_USDC, META) + .preInstructions([ + ComputeBudgetProgram.setComputeUnitLimit({ units: 800_000 }), + ]) + .transaction(); + + const completeLaunchLut = await createLookupTableForTransaction( + completeLaunchTx, + this, + ); + + const completeLaunchMessage = new TransactionMessage({ + payerKey: this.payer.publicKey, + recentBlockhash: (await this.banksClient.getLatestBlockhash())[0], + instructions: completeLaunchTx.instructions, + }).compileToV0Message([completeLaunchLut]); + + const completeLaunchVersionedTx = new VersionedTransaction( + completeLaunchMessage, + ); + completeLaunchVersionedTx.sign([this.payer]); + + await this.banksClient.processTransaction(completeLaunchVersionedTx); + console.log("✓ Launch completed"); + + // Verify launch completion and DAO creation + const launchAccount = await launchpadClient.fetchLaunch(launch); + assert.exists(launchAccount.state.complete); + assert.exists(launchAccount.dao); + dao = launchAccount.dao; + + // this is where our script begins + + // Set V5 DAO addresses using same utility function as the script + v5DaoAddress = dao; + baseMint = META; + const v5SquadsPdas = await getSquadsPdasFromDao(v5DaoAddress); + v5MultisigPda = v5SquadsPdas.multisigPda; + v5VaultPda = v5SquadsPdas.vaultPda; + + console.log("V5 DAO launched:", v5DaoAddress.toBase58()); + console.log("V5 Multisig:", v5MultisigPda.toBase58()); + console.log("V5 Vault:", v5VaultPda.toBase58()); + + // Derive the Raydium pool created by completeLaunch + const [raydiumPoolState] = getLiquidityPoolAddr( + launchpadClient.getProgramId(), + v5DaoAddress, + ); + + // Token ordering: smaller pubkey is token0 + const isBaseToken0 = + baseMint.toBuffer().compare(MAINNET_USDC.toBuffer()) < 0; + const token0Mint = isBaseToken0 ? baseMint : MAINNET_USDC; + const token1Mint = isBaseToken0 ? MAINNET_USDC : baseMint; + + // Derive Raydium CPMM PDAs from the launchpad-created pool + const [lpMint] = PublicKey.findProgramAddressSync( + [Buffer.from("pool_lp_mint"), raydiumPoolState.toBuffer()], + RAYDIUM_CP_SWAP_PROGRAM_ID, + ); + + const [token0Vault] = PublicKey.findProgramAddressSync( + [ + Buffer.from("pool_vault"), + raydiumPoolState.toBuffer(), + token0Mint.toBuffer(), + ], + RAYDIUM_CP_SWAP_PROGRAM_ID, + ); + + const [token1Vault] = PublicKey.findProgramAddressSync( + [ + Buffer.from("pool_vault"), + raydiumPoolState.toBuffer(), + token1Mint.toBuffer(), + ], + RAYDIUM_CP_SWAP_PROGRAM_ID, + ); + + const vaultLpAta = token.getAssociatedTokenAddressSync( + lpMint, + v5VaultPda, + true, + ); + + console.log( + "Raydium Pool State (from launchpad):", + raydiumPoolState.toBase58(), + ); + console.log("Raydium LP Mint:", lpMint.toBase58()); + + // Get LP balance from the vault (created by completeLaunch) + const vaultLpBalance = await this.getTokenBalance(lpMint, v5VaultPda); + console.log( + "V5 Vault LP balance from launchpad:", + vaultLpBalance.toString(), + ); + + // Claim tokens for all funders + await launchpadClient.claimIx(launch, META, funder1.publicKey).rpc(); + + await launchpadClient.claimIx(launch, META).rpc(); + + await launchpadClient.claimIx(launch, META, funder3.publicKey).rpc(); + + // Verify token distributions + const funder1Balance = await this.getTokenBalance(META, funder1.publicKey); + const payerBalance = await this.getTokenBalance(META, this.payer.publicKey); + const funder3Balance = await this.getTokenBalance(META, funder3.publicKey); + + assert.equal(funder1Balance.toString(), "5000000000000"); // 5M tokens + assert.equal(payerBalance.toString(), "1500000000000"); // 1.5M tokens + assert.equal(funder3Balance.toString(), "3500000000000"); // 3.5M tokens + + console.log("\n=== INITIALIZING V6 DAO ==="); + + const v6Nonce = new BN(Math.floor(Math.random() * 1000000)); + + try { + const txSig = await futarchyV6 + .initializeDaoIx({ + baseMint, // Shared mint between V5 launch and V6 DAO + quoteMint: MAINNET_USDC, + params: { + nonce: v6Nonce, + twapInitialObservation: new BN(1_000_000), + twapMaxObservationChangePerUpdate: new BN(100_000), + minBaseFutarchicLiquidity: new BN(10_000_000000), + minQuoteFutarchicLiquidity: new BN(10_000_000000), + twapStartDelaySeconds: 100, + passThresholdBps: 300, + secondsPerProposal: 60 * 60 * 24 * 3, // 3 days + initialSpendingLimit: null, + baseToStake: new BN(0), + teamSponsoredPassThresholdBps: 300, + teamAddress: this.payer.publicKey, + }, + provideLiquidity: false, + }) + .preInstructions([ + ComputeBudgetProgram.setComputeUnitLimit({ units: 300_000 }), + ]) + .rpc(); + console.log("DAO initialization tx:", txSig); + } catch (e: any) { + console.error("DAO initialization failed:", e); + throw e; + } + + // from here is where the script starts + + // Derive V6 addresses + [v6DaoAddress] = getDaoAddr({ + nonce: v6Nonce, + daoCreator: this.payer.publicKey, + }); + const v6MultisigPda = multisig.getMultisigPda({ + createKey: v6DaoAddress, + })[0]; + const v6VaultPda = multisig.getVaultPda({ + multisigPda: v6MultisigPda, + index: 0, + })[0]; + + console.log("V6 DAO initialized:", v6DaoAddress.toBase58()); + console.log("V6 Multisig:", v6MultisigPda.toBase58()); + console.log("V6 Vault:", v6VaultPda.toBase58()); + + // Create token accounts for vaults and DAO AMM using idempotent instructions + const v5VaultBaseAta = token.getAssociatedTokenAddressSync( + baseMint, + v5VaultPda, + true, + ); + const v5VaultQuoteAta = token.getAssociatedTokenAddressSync( + MAINNET_USDC, + v5VaultPda, + true, + ); + const v6VaultBaseAta = token.getAssociatedTokenAddressSync( + baseMint, + v6VaultPda, + true, + ); + const v6VaultQuoteAta = token.getAssociatedTokenAddressSync( + MAINNET_USDC, + v6VaultPda, + true, + ); + const ammBaseVault = token.getAssociatedTokenAddressSync( + baseMint, + v6DaoAddress, + true, + ); + const ammQuoteVault = token.getAssociatedTokenAddressSync( + MAINNET_USDC, + v6DaoAddress, + true, + ); + + // Get migration_signer PDA and its ATAs (needed for Meteora CPI) + const meteoraPdasForAtas = getMeteoraPdas(baseMint, MAINNET_USDC); + const migrationSignerBaseAta = token.getAssociatedTokenAddressSync( + baseMint, + meteoraPdasForAtas.migrationSigner, + true, + ); + const migrationSignerQuoteAta = token.getAssociatedTokenAddressSync( + MAINNET_USDC, + meteoraPdasForAtas.migrationSigner, + true, + ); + + const createAtasIx = [ + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + v5VaultBaseAta, + v5VaultPda, + baseMint, + ), + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + v6VaultBaseAta, + v6VaultPda, + baseMint, + ), + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + v5VaultQuoteAta, + v5VaultPda, + MAINNET_USDC, + ), + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + v6VaultQuoteAta, + v6VaultPda, + MAINNET_USDC, + ), + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + ammBaseVault, + v6DaoAddress, + baseMint, + ), + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + ammQuoteVault, + v6DaoAddress, + MAINNET_USDC, + ), + // Migration signer ATAs (needed for Meteora CPI) + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + migrationSignerBaseAta, + meteoraPdasForAtas.migrationSigner, + baseMint, + ), + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + migrationSignerQuoteAta, + meteoraPdasForAtas.migrationSigner, + MAINNET_USDC, + ), + ]; + + const createAtasTx = new Transaction().add(...createAtasIx); + createAtasTx.recentBlockhash = ( + await this.banksClient.getLatestBlockhash() + )[0]; + createAtasTx.feePayer = this.payer.publicKey; + createAtasTx.sign(this.payer); + await this.banksClient.processTransaction(createAtasTx); + + // Transfer tokens to V5 vault (simulating existing treasury) + const transferToV5Ix = token.createTransferInstruction( + token.getAssociatedTokenAddressSync(baseMint, this.payer.publicKey, true), + v5VaultBaseAta, + this.payer.publicKey, + 100_000_000000, // 100k tokens + ); + + const transferToV5Tx = new Transaction().add(transferToV5Ix); + transferToV5Tx.recentBlockhash = ( + await this.banksClient.getLatestBlockhash() + )[0]; + transferToV5Tx.feePayer = this.payer.publicKey; + transferToV5Tx.sign(this.payer); + await this.banksClient.processTransaction(transferToV5Tx); + + console.log("V5 vault funded with 100k base tokens"); + console.log("=== SETUP COMPLETE ===\n"); + + console.log("\n=== PHASE 1: Using Launchpad-Created Raydium Pool ==="); + console.log( + "Pool already created by completeLaunch - using launchpad pool addresses", + ); + + // Add initial treasury funds to V5 vault (distinct from LP tokens) + // These should be transferred to V6 vault ATAs after migration + const initialTreasuryBase = 5_000_000_000; // 5k base tokens + const initialTreasuryQuote = 10_000_000_000; // 10k USDC + + console.log("\n=== Adding initial treasury funds to V5 vault ==="); + + // Create V5 vault ATAs if needed and transfer initial treasury + // (v5VaultBaseAta and v5VaultQuoteAta already declared earlier) + const payerBaseAta = token.getAssociatedTokenAddressSync( + baseMint, + this.payer.publicKey, + true, + ); + const payerQuoteAta = token.getAssociatedTokenAddressSync( + MAINNET_USDC, + this.payer.publicKey, + true, + ); + + const createV5BaseAtaIx = + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + v5VaultBaseAta, + v5VaultPda, + baseMint, + ); + const createV5QuoteAtaIx = + token.createAssociatedTokenAccountIdempotentInstruction( + this.payer.publicKey, + v5VaultQuoteAta, + v5VaultPda, + MAINNET_USDC, + ); + + const transferBaseToVaultIx = token.createTransferInstruction( + payerBaseAta, + v5VaultBaseAta, + this.payer.publicKey, + initialTreasuryBase, + ); + + const transferQuoteToVaultIx = token.createTransferInstruction( + payerQuoteAta, + v5VaultQuoteAta, + this.payer.publicKey, + initialTreasuryQuote, + ); + + const seedTreasuryTx = new Transaction().add( + createV5BaseAtaIx, + createV5QuoteAtaIx, + transferBaseToVaultIx, + transferQuoteToVaultIx, + ); + seedTreasuryTx.recentBlockhash = ( + await this.banksClient.getLatestBlockhash() + )[0]; + seedTreasuryTx.feePayer = this.payer.publicKey; + seedTreasuryTx.sign(this.payer); + await this.banksClient.processTransaction(seedTreasuryTx); + + const v5BaseAfterSeed = await this.getTokenBalance(baseMint, v5VaultPda); + const v5QuoteAfterSeed = await this.getTokenBalance( + MAINNET_USDC, + v5VaultPda, + ); + console.log( + "V5 vault treasury seeded - Base:", + v5BaseAfterSeed.toString(), + "Quote:", + v5QuoteAfterSeed.toString(), + ); + + console.log("\n=== PHASE 2: Building Migration Vault Transaction ==="); + + // Fund vault PDA with SOL for rent (futarchy provideLiquidity needs to create AMM position) + const ammPositionRent = 1 * anchor.web3.LAMPORTS_PER_SOL; // 1 SOL should be enough for rent + const fundVaultIx = SystemProgram.transfer({ + fromPubkey: this.payer.publicKey, + toPubkey: v5VaultPda, + lamports: ammPositionRent, + }); + const fundVaultTx = new Transaction().add(fundVaultIx); + fundVaultTx.recentBlockhash = ( + await this.banksClient.getLatestBlockhash() + )[0]; + fundVaultTx.feePayer = this.payer.publicKey; + fundVaultTx.sign(this.payer); + await this.banksClient.processTransaction(fundVaultTx); + console.log( + `Funded vault with ${ammPositionRent / anchor.web3.LAMPORTS_PER_SOL} SOL for rent`, + ); + + // Fund migration_signer PDA with SOL for Meteora pool creation rent + const migrationSignerRent = 0.1 * anchor.web3.LAMPORTS_PER_SOL; // 0.1 SOL for rent + const fundMigrationSignerIx = SystemProgram.transfer({ + fromPubkey: this.payer.publicKey, + toPubkey: meteoraPdasForAtas.migrationSigner, + lamports: migrationSignerRent, + }); + const fundMigrationSignerTx = new Transaction().add(fundMigrationSignerIx); + fundMigrationSignerTx.recentBlockhash = ( + await this.banksClient.getLatestBlockhash() + )[0]; + fundMigrationSignerTx.feePayer = this.payer.publicKey; + fundMigrationSignerTx.sign(this.payer); + await this.banksClient.processTransaction(fundMigrationSignerTx); + console.log( + `Funded migration_signer with ${migrationSignerRent / anchor.web3.LAMPORTS_PER_SOL} SOL for Meteora rent`, + ); + + // Get current balances + const v5BaseBalanceBefore = await this.getTokenBalance( + baseMint, + v5VaultPda, + ); + const v5QuoteBalanceBefore = await this.getTokenBalance( + MAINNET_USDC, + v5VaultPda, + ); + + console.log("V5 base balance before:", v5BaseBalanceBefore.toString()); + console.log("V5 quote balance before:", v5QuoteBalanceBefore.toString()); + console.log("V5 LP balance:", vaultLpBalance.toString()); + + // Build vault transaction instructions + const vaultInstructions: anchor.web3.TransactionInstruction[] = []; + + // Add compute budget instructions to vault transaction for Squads simulation + // Need high compute: Raydium withdraw + futarchy provideLiquidity (creates AMM position) + Meteora pool creation + vaultInstructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 }), + ); + vaultInstructions.push( + ComputeBudgetProgram.requestHeapFrame({ bytes: 256 * 1024 }), + ); + + // 1. Withdraw LP and transfer all tokens using helper program + const helperProgram = new anchor.Program( + RaydiumMigrationHelperIDL, + RAYDIUM_MIGRATION_HELPER_PROGRAM_ID, + this.provider, + ); + + // Get V6 futarchy AMM accounts + // Note: position_authority is v6VaultPda - the V6 vault will own the AMM position + const [ammPosition] = PublicKey.findProgramAddressSync( + [ + Buffer.from("amm_position"), + v6DaoAddress.toBuffer(), + v6VaultPda.toBuffer(), // position_authority (the V6 vault owns the AMM position) + ], + futarchyV6.getProgramId(), + ); + + const [eventAuthority] = PublicKey.findProgramAddressSync( + [Buffer.from("__event_authority")], + futarchyV6.getProgramId(), + ); + + // Get Meteora DAMM v2 PDAs for the new pool creation + const meteoraPdas = getMeteoraPdas(baseMint, MAINNET_USDC); + console.log(" Meteora Pool PDA:", meteoraPdas.pool.toBase58()); + console.log( + " Meteora Position NFT Mint:", + meteoraPdas.positionNftMint.toBase58(), + ); + + const withdrawAndProvideLiquidityIx = await helperProgram.methods + .withdrawAndProvideLiquidity( + new BN(vaultLpBalance.toString()), + new BN(0), // min_raydium_amount_0 - no slippage protection for governance + new BN(0), // min_raydium_amount_1 + new BN(0), // min_futarchy_liquidity + ) + .accounts({ + vaultAuthority: v5VaultPda, + // Migration signer accounts (needed for Meteora CPI) + migrationSigner: meteoraPdas.migrationSigner, + migrationSignerBaseAta: migrationSignerBaseAta, + migrationSignerQuoteAta: migrationSignerQuoteAta, + // Raydium accounts - from launchpad pool + poolState: raydiumPoolState, + raydiumAuthority: RAYDIUM_AUTHORITY, + lpMint: lpMint, + vaultLpToken: vaultLpAta, + vaultToken0: isBaseToken0 ? v5VaultBaseAta : v5VaultQuoteAta, + vaultToken1: isBaseToken0 ? v5VaultQuoteAta : v5VaultBaseAta, + poolToken0Vault: token0Vault, + poolToken1Vault: token1Vault, + // V6 Futarchy accounts + dao: v6DaoAddress, + baseMint: baseMint, + quoteMint: MAINNET_USDC, + ammPosition: ammPosition, + ammBaseVault: ammBaseVault, + ammQuoteVault: ammQuoteVault, + v6VaultBaseAta: v6VaultBaseAta, + v6VaultQuoteAta: v6VaultQuoteAta, + v6VaultPda: v6VaultPda, + eventAuthority: eventAuthority, + // Meteora DAMM v2 accounts + meteoraAccounts: { + dammV2Program: DAMM_V2_PROGRAM_ID, + config: MIGRATION_METEORIA_CONFIG, + token2022Program: token.TOKEN_2022_PROGRAM_ID, + positionNftAccount: meteoraPdas.positionNftAccount, + pool: meteoraPdas.pool, + position: meteoraPdas.position, + positionNftMint: meteoraPdas.positionNftMint, + baseMint: baseMint, + quoteMint: MAINNET_USDC, + tokenAVault: meteoraPdas.tokenAVault, + tokenBVault: meteoraPdas.tokenBVault, + poolCreatorAuthority: meteoraPdas.poolCreatorAuthority, + poolAuthority: meteoraPdas.poolAuthority, + dammV2EventAuthority: meteoraPdas.dammV2EventAuthority, + }, + // Programs + raydiumProgram: RAYDIUM_CP_SWAP_PROGRAM_ID, + futarchyProgram: futarchyV6.getProgramId(), + tokenProgram: token.TOKEN_PROGRAM_ID, + tokenProgram2022: token.TOKEN_2022_PROGRAM_ID, + systemProgram: SystemProgram.programId, + memoProgram: MEMO_PROGRAM_ID, + }) + .instruction(); + + console.log( + "Instruction accounts:", + withdrawAndProvideLiquidityIx.keys.map( + (k) => + `${k.pubkey.toBase58()}: ${k.isSigner ? "signer" : ""} ${k.isWritable ? "writable" : "readonly"}`, + ), + ); + + vaultInstructions.push(withdrawAndProvideLiquidityIx); + console.log( + "Added: Withdraw LP, provide liquidity to V6 AMM, transfer treasury", + ); + + // 4. Transfer mint authority + vaultInstructions.push( + token.createSetAuthorityInstruction( + baseMint, + v5VaultPda, + token.AuthorityType.MintTokens, + v6VaultPda, + ), + ); + console.log("Added: Transfer mint authority"); + + // 5. Transfer metadata authority + const [metadataAddr] = getMetadataAddr(baseMint); + try { + const metadataAccountInfo = + await this.provider.connection.getAccountInfo(metadataAddr); + if (metadataAccountInfo) { + const metadataSerializer = getMetadataAccountDataSerializer(); + const [metadata] = metadataSerializer.deserialize( + metadataAccountInfo.data, + ); + const updateAuthority = new PublicKey(metadata.updateAuthority); + + if (updateAuthority.equals(v5VaultPda)) { + // Manually construct metadata update instruction for bankrun + // This is equivalent to updateMetadataAccountV2 but without UMI + const MPL_TOKEN_METADATA_PROGRAM_ID = new PublicKey( + "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s", + ); + + const updateMetadataIx = new TransactionInstruction({ + programId: MPL_TOKEN_METADATA_PROGRAM_ID, + keys: [ + { pubkey: metadataAddr, isSigner: false, isWritable: true }, + { pubkey: v5VaultPda, isSigner: true, isWritable: false }, + ], + data: Buffer.from([ + // Discriminator for UpdateMetadataAccountV2 instruction + 15, + // Data update (null = no change) + 0, + // Update authority (Some(new_authority)) + 1, + ...v6VaultPda.toBytes(), + // Primary sale happened (null = no change) + 0, + // Is mutable (null = no change) + 0, + ]), + }); + + vaultInstructions.push(updateMetadataIx); + console.log("Added: Transfer metadata authority"); + } + } + } catch (e: any) { + console.log(" ⚠ Could not check metadata authority:", e.message || e); + } + + console.log("Total vault instructions:", vaultInstructions.length); + + // Step: Detailed instruction debugging + console.log("\n=== DETAILED INSTRUCTION ANALYSIS ==="); + const uniqueProgramIds = new Set(); + for (let i = 0; i < vaultInstructions.length; i++) { + const ix = vaultInstructions[i]; + uniqueProgramIds.add(ix.programId.toBase58()); + console.log(`\n Instruction ${i + 1}/${vaultInstructions.length}:`); + console.log(` Program ID: ${ix.programId.toBase58()}`); + console.log(` Data length: ${ix.data.length} bytes`); + console.log(` Accounts (${ix.keys.length}):`); + ix.keys.forEach((key, idx) => { + console.log( + ` [${idx}] ${key.pubkey.toBase58()} ${key.isSigner ? "(signer)" : ""} ${key.isWritable ? "(writable)" : "(readonly)"}`, + ); + }); + } + + // Verify all program IDs exist on-chain + console.log("\n Verifying program IDs exist on-chain..."); + for (const programId of uniqueProgramIds) { + const programInfo = await this.provider.connection.getAccountInfo( + new PublicKey(programId), + ); + if (!programInfo) { + throw new Error(`❌ Program ID ${programId} does not exist on-chain!`); + } + if (!programInfo.executable) { + throw new Error(`❌ Program ID ${programId} is not executable!`); + } + console.log(` ✓ ${programId} (executable)`); + } + + // ==== TRANSACTION SIZE CHECK ==== + const tempTxForSize = new Transaction().add(...vaultInstructions); + tempTxForSize.recentBlockhash = "11111111111111111111111111111111"; + tempTxForSize.feePayer = v5VaultPda; + const uncompressedSize = tempTxForSize.serializeMessage().length; + + console.log("\n" + "=".repeat(70)); + console.log("📊 TRANSACTION SIZE ANALYSIS (Vault Transaction Message)"); + console.log("=".repeat(70)); + console.log(`Uncompressed size: ${uncompressedSize} bytes`); + console.log(`Size limit: 1232 bytes`); + if (uncompressedSize > 1232) { + console.log(`❌ OVER LIMIT by ${uncompressedSize - 1232} bytes`); + } else { + console.log(`✅ UNDER LIMIT by ${1232 - uncompressedSize} bytes`); + } + + // Break down by instruction + console.log("\n📋 Instruction breakdown:"); + vaultInstructions.forEach((ix, idx) => { + const singleIxTx = new Transaction().add(ix); + singleIxTx.recentBlockhash = "11111111111111111111111111111111"; + singleIxTx.feePayer = v5VaultPda; + const ixSize = singleIxTx.serializeMessage().length; + console.log(` [${idx}] ${ixSize} bytes - ${ix.keys.length} accounts`); + }); + console.log("=".repeat(70)); + + console.log("\n=== PHASE 3: Executing Migration via Squads ==="); + + // Create lookup table to compress transaction + const tempTx = new Transaction().add(...vaultInstructions); + const migrationLut = await createLookupTableForTransaction(tempTx, this); + console.log( + "Migration LUT created with", + migrationLut.state.addresses.length, + "addresses", + ); + + // Debug: Check which accounts are in the LUT vs instruction + const lutAddressSet = new Set( + migrationLut.state.addresses.map((a) => a.toBase58()), + ); + let missingFromLut = 0; + for (const ix of vaultInstructions) { + for (const key of ix.keys) { + if (!lutAddressSet.has(key.pubkey.toBase58())) { + console.log(" ⚠️ Account NOT in LUT:", key.pubkey.toBase58()); + missingFromLut++; + } + } + } + console.log( + ` Total accounts in instructions: ${vaultInstructions.reduce((sum, ix) => sum + ix.keys.length, 0)}`, + ); + console.log(` Accounts missing from LUT: ${missingFromLut}`); + + // Create transaction message (don't compile to V0 - pass plain message + LUT separately to Squads) + const transactionMessage = new TransactionMessage({ + payerKey: v5VaultPda, + recentBlockhash: "", + instructions: vaultInstructions, + }); + + // Get transaction index + const v5MultisigAccount = + await multisig.accounts.Multisig.fromAccountAddress( + this.squadsConnection, + v5MultisigPda, + ); + const transactionIndex = BigInt( + Number(v5MultisigAccount.transactionIndex) + 1, + ); + + // Create vault transaction with plain message + LUT accounts + const vaultTxCreateIx = multisig.instructions.vaultTransactionCreate({ + multisigPda: v5MultisigPda, + transactionIndex, + creator: PERMISSIONLESS_ACCOUNT.publicKey, + rentPayer: this.payer.publicKey, + vaultIndex: 0, + ephemeralSigners: 0, + transactionMessage: transactionMessage, + addressLookupTableAccounts: [migrationLut], + }); + + console.log("\n📊 VaultTransactionCreate instruction:"); + console.log(" Accounts:", vaultTxCreateIx.keys.length); + console.log(" Data size:", vaultTxCreateIx.data.length, "bytes"); + + const vaultCreateTx = new Transaction().add(vaultTxCreateIx); + vaultCreateTx.recentBlockhash = "11111111111111111111111111111111"; + vaultCreateTx.feePayer = this.payer.publicKey; + const vaultCreateSize = vaultCreateTx.serializeMessage().length; + console.log(" Total transaction size:", vaultCreateSize, "bytes"); + + // Create proposal (no approve yet - that happens through autocrat) + const proposalCreateIx = multisig.instructions.proposalCreate({ + multisigPda: v5MultisigPda, + transactionIndex, + creator: PERMISSIONLESS_ACCOUNT.publicKey, + rentPayer: this.payer.publicKey, + isDraft: false, + }); + + const [squadsProposalPda] = multisig.getProposalPda({ + multisigPda: v5MultisigPda, + transactionIndex, + }); + + // Create Squads proposal + const squadsTx = new Transaction().add(vaultTxCreateIx, proposalCreateIx); + squadsTx.recentBlockhash = (await this.banksClient.getLatestBlockhash())[0]; + squadsTx.feePayer = this.payer.publicKey; + + const squadsTxSize = squadsTx.serializeMessage().length; + console.log( + "\n📊 Squads proposal transaction (create vault tx + proposal):", + ); + console.log(" Size:", squadsTxSize, "bytes (limit: 1232)"); + if (squadsTxSize > 1232) { + console.log(" ❌ OVER LIMIT by", squadsTxSize - 1232, "bytes"); + } + + squadsTx.sign(this.payer, PERMISSIONLESS_ACCOUNT); + await this.banksClient.processTransaction(squadsTx); + + console.log("Squads proposal created"); + + // Create V5 autocrat and AMM clients + const autocratV5Client = AutocratClient.createClient({ + provider: this.provider, + }); + const ammV5Client = AmmClient.createClient({ + provider: this.provider, + }); + + // Initialize autocrat proposal + // DAO requires min 100 tokens liquidity (100_000_000000 for base with 9 decimals, 100_000000 for quote with 6 decimals) + console.log("\n📊 Creating autocrat proposal..."); + const proposal = await autocratV5Client.initializeProposal( + v5DaoAddress, + "Migration to V6", + squadsProposalPda, + new BN(100_000_000000), // baseAmount - 100 tokens + new BN(100_000000), // quoteAmount - 100 USDC + ); + console.log("Autocrat proposal created:", proposal.toBase58()); + + // Get proposal PDAs + const { + passAmm, + failAmm, + passBaseMint, + passQuoteMint, + question, + baseVault, + quoteVault, + } = autocratV5Client.getProposalPdas( + proposal, + baseMint, + MAINNET_USDC, + v5DaoAddress, + ); + + // Split tokens for the proposal markets (matching the liquidity requirements) + await this.conditionalVault + .splitTokensIx(question, baseVault, baseMint, new BN(100_000_000000), 2) + .rpc(); + await this.conditionalVault + .splitTokensIx(question, quoteVault, MAINNET_USDC, new BN(100_000000), 2) + .rpc(); + + console.log("Tokens split for conditional markets"); + + // Trade in pass market to make proposal pass + await ammV5Client + .swapIx( + passAmm, + passBaseMint, + passQuoteMint, + { buy: {} }, + new BN(100_000000), // Buy 100 USDC worth + new BN(0), + ) + .rpc(); + + console.log("Voted in favor of proposal"); + + // Crank TWAP updates until proposal passes + for (let i = 0; i < 100; i++) { + await this.advanceBySlots(20_000n); + + await ammV5Client + .crankThatTwapIx(passAmm) + .preInstructions([ + ComputeBudgetProgram.setComputeUnitPrice({ microLamports: i }), + await ammV5Client.crankThatTwapIx(failAmm).instruction(), + ]) + .rpc(); + } + + console.log("Market resolved"); + + // Finalize proposal (this approves the Squads proposal) + await autocratV5Client.finalizeProposal(proposal); + console.log("Autocrat proposal finalized - Squads proposal approved"); + + // Execute vault transaction with high compute budget + const executeIx = await multisig.instructions.vaultTransactionExecute({ + connection: this.squadsConnection, + multisigPda: v5MultisigPda, + transactionIndex, + member: PERMISSIONLESS_ACCOUNT.publicKey, + }); + + console.log( + "\n📊 Execute instruction has", + executeIx.instruction.keys.length, + "accounts", + ); + + // Build as V0 transaction with LUT to compress accounts + const executeMessage = new TransactionMessage({ + payerKey: this.payer.publicKey, + recentBlockhash: (await this.banksClient.getLatestBlockhash())[0], + instructions: [ + ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 }), + ComputeBudgetProgram.requestHeapFrame({ bytes: 256 * 1024 }), + executeIx.instruction, + ], + }).compileToV0Message([migrationLut]); + + const executeV0Tx = new VersionedTransaction(executeMessage); + const executeTxSize = executeV0Tx.message.serialize().length; + console.log( + "📊 Execute V0 transaction size (with LUT, before signing):", + executeTxSize, + "bytes", + ); + console.log( + "📊 After signing (~+128 bytes):", + executeTxSize + 128, + "bytes (limit: 1232)", + ); + if (executeTxSize + 128 > 1232) { + console.log( + "❌ Execute transaction will be", + executeTxSize + 128 - 1232, + "bytes over limit after signing", + ); + } else { + console.log( + "✅ Execute transaction under limit by", + 1232 - (executeTxSize + 128), + "bytes after signing", + ); + } + + executeV0Tx.sign([this.payer, PERMISSIONLESS_ACCOUNT]); + await this.banksClient.processTransaction(executeV0Tx); + + console.log("Migration executed via Squads"); + + console.log("\n=== PHASE 4: Verifying Migration Success ==="); + + // Verify LP tokens burned + const vaultLpBalanceAfter = await this.getTokenBalance(lpMint, v5VaultPda); + assert.equal(vaultLpBalanceAfter, 0n, "LP tokens should be burned"); + console.log("✓ LP tokens burned"); + + // Verify V5 vault empty + const v5BaseBalanceAfter = await this.getTokenBalance(baseMint, v5VaultPda); + const v5QuoteBalanceAfter = await this.getTokenBalance( + MAINNET_USDC, + v5VaultPda, + ); + assert.equal(v5BaseBalanceAfter, 0n, "V5 vault should have no base tokens"); + assert.equal( + v5QuoteBalanceAfter, + 0n, + "V5 vault should have no quote tokens", + ); + console.log("✓ V5 vault emptied"); + + // Verify V6 vault has tokens + const v6BaseBalanceAfter = await this.getTokenBalance(baseMint, v6VaultPda); + const v6QuoteBalanceAfter = await this.getTokenBalance( + MAINNET_USDC, + v6VaultPda, + ); + assert.ok(v6BaseBalanceAfter > 0n, "V6 vault should have base tokens"); + assert.ok(v6QuoteBalanceAfter > 0n, "V6 vault should have quote tokens"); + console.log("✓ V6 vault received tokens"); + console.log(" Base:", v6BaseBalanceAfter.toString()); + console.log(" Quote:", v6QuoteBalanceAfter.toString()); + + // Verify mint authority transferred + const mintInfo = await this.getMint(baseMint); + assert.ok( + mintInfo.mintAuthority && mintInfo.mintAuthority.equals(v6VaultPda), + "Mint authority should be V6 vault", + ); + console.log("✓ Mint authority transferred"); + + // Verify Meteora pool was created with 10% of tokens + const meteoraPdasVerify = getMeteoraPdas(baseMint, MAINNET_USDC); + console.log(" Test derived pool:", meteoraPdasVerify.pool.toBase58()); + console.log( + " Test derived tokenAVault:", + meteoraPdasVerify.tokenAVault.toBase58(), + ); + console.log( + " Test derived tokenBVault:", + meteoraPdasVerify.tokenBVault.toBase58(), + ); + console.log(" baseMint:", baseMint.toBase58()); + console.log(" quoteMint (MAINNET_USDC):", MAINNET_USDC.toBase58()); + + const meteoraPoolAccount = await this.banksClient.getAccount( + meteoraPdasVerify.pool, + ); + assert.ok(meteoraPoolAccount, "Meteora pool should exist"); + console.log( + "✓ Meteora DAMM v2 pool created:", + meteoraPdasVerify.pool.toBase58(), + ); + + // Check Meteora pool vaults have tokens (10% of withdrawn) + // Note: Meteora vaults are PDAs (not ATAs), so we read them directly + const meteoraBaseVaultAccount = await getAccount( + this.banksClient, + meteoraPdasVerify.tokenAVault, + ); + const meteoraQuoteVaultAccount = await getAccount( + this.banksClient, + meteoraPdasVerify.tokenBVault, + ); + const meteoraBaseVaultBalance = meteoraBaseVaultAccount.amount; + const meteoraQuoteVaultBalance = meteoraQuoteVaultAccount.amount; + console.log(" Meteora base vault:", meteoraBaseVaultBalance.toString()); + console.log(" Meteora quote vault:", meteoraQuoteVaultBalance.toString()); + + // Calculate expected amounts (10% of what was withdrawn from Raydium) + // Two-sided liquidity: both base and quote tokens should be in the pool + assert.ok( + meteoraBaseVaultBalance > 0n, + "Meteora pool should have base tokens", + ); + assert.ok( + meteoraQuoteVaultBalance > 0n, + "Meteora pool should have quote tokens", + ); + console.log("✓ Meteora pool received 10% of both base and quote tokens"); + + // Verify Futarchy AMM position was created with 90% of tokens + const ammPositionAccount = await this.banksClient.getAccount(ammPosition); + assert.ok(ammPositionAccount, "Futarchy AMM position should exist"); + console.log("✓ Futarchy AMM position created"); + + // Check Futarchy AMM vaults have tokens (90% of withdrawn) + // Note: AMM vaults are token accounts (not ATAs), so we read them directly + const futarchyBaseVaultAccount = await getAccount( + this.banksClient, + ammBaseVault, + ); + const futarchyQuoteVaultAccount = await getAccount( + this.banksClient, + ammQuoteVault, + ); + const futarchyBaseVaultBalance = futarchyBaseVaultAccount.amount; + const futarchyQuoteVaultBalance = futarchyQuoteVaultAccount.amount; + console.log(" Futarchy base vault:", futarchyBaseVaultBalance.toString()); + console.log( + " Futarchy quote vault:", + futarchyQuoteVaultBalance.toString(), + ); + assert.ok( + futarchyBaseVaultBalance > 0n, + "Futarchy AMM should have base tokens", + ); + assert.ok( + futarchyQuoteVaultBalance > 0n, + "Futarchy AMM should have quote tokens", + ); + console.log("✓ Futarchy AMM received 90% of tokens"); + + // Verify approximate 90/10 split (Meteora should have ~1/9th of Futarchy) + // Allow some tolerance for rounding + const meteoraTotal = meteoraBaseVaultBalance + meteoraQuoteVaultBalance; + const futarchyTotal = futarchyBaseVaultBalance + futarchyQuoteVaultBalance; + const ratio = Number(futarchyTotal) / Number(meteoraTotal); + console.log( + ` Split ratio (Futarchy/Meteora): ${ratio.toFixed(2)}x (expected ~9x)`, + ); + assert.ok( + ratio > 7 && ratio < 11, + `Split ratio should be approximately 9:1, got ${ratio.toFixed(2)}`, + ); + console.log("✓ 90/10 split verified"); + + console.log( + "\n✓✓✓ COMPLETE V5 TO V6 MIGRATION WITH RAYDIUM LP WITHDRAWAL + METEORA POOL CREATION SUCCESSFUL ✓✓✓", + ); + }); +} diff --git a/tests/main.test.ts b/tests/main.test.ts index a6a6cbc2b..74c52c7da 100644 --- a/tests/main.test.ts +++ b/tests/main.test.ts @@ -36,6 +36,11 @@ import { BidWallClient, } from "@metadaoproject/futarchy/v0.7"; import { LaunchpadClient as LaunchpadClientV6 } from "@metadaoproject/futarchy/v0.6"; +import { + LAUNCHPAD_PROGRAM_ID as LAUNCHPAD_V5_PROGRAM_ID, + AUTOCRAT_PROGRAM_ID as AUTOCRAT_V5_PROGRAM_ID, + AMM_PROGRAM_ID as AMM_V5_PROGRAM_ID, +} from "@metadaoproject/futarchy/v0.5"; import { PublicKey, @@ -45,6 +50,7 @@ import { Transaction, ComputeBudgetProgram, TransactionInstruction, + AddressLookupTableAccount, } from "@solana/web3.js"; import { @@ -74,6 +80,7 @@ const RAYDIUM_CP_SWAP_PROGRAM_ID = new PublicKey( import mintAndSwap from "./integration/mintAndSwap.test.js"; import fullLaunch from "./integration/fullLaunch.test.js"; import fullLaunch_v7 from "./integration/fullLaunch_v7.test.js"; +import migrateToV6Raydium from "./integration/migrateToV6Raydium.test.js"; import { BN } from "bn.js"; import { sha256 } from "@metadaoproject/futarchy"; @@ -186,6 +193,26 @@ before(async function () { name: "cp_amm", programId: DAMM_V2_PROGRAM_ID, }, + { + name: "raydium_cp_swap", + programId: RAYDIUM_CP_SWAP_PROGRAM_ID, + }, + { + name: "launchpad_v5", + programId: LAUNCHPAD_V5_PROGRAM_ID, + }, + { + name: "autocrat_v5", + programId: AUTOCRAT_V5_PROGRAM_ID, + }, + { + name: "amm_v5", + programId: AMM_V5_PROGRAM_ID, + }, + { + name: "raydium_migration_helper", + programId: new PublicKey("migR87BnBEkJbbDECLzRxhmNsQ44WMzhDCpCJhfPvR1"), + }, ], [ { @@ -312,6 +339,19 @@ before(async function () { }; return accountInfo; }, + getAddressLookupTable: async (address: PublicKey) => { + try { + const rawAccount = await this.banksClient.getAccount(address); + return { + value: { + key: address, + state: AddressLookupTableAccount.deserialize(rawAccount.data), + }, + }; + } catch (e) { + return { value: null }; + } + }, } as Connection; const assignIx = SystemProgram.assign({ @@ -639,7 +679,6 @@ before(async function () { dao, baseMint: storedDao.baseMint, quoteMint: storedDao.quoteMint, - squadsProposal, }) .rpc(); @@ -741,4 +780,5 @@ describe("project-wide integration tests", function () { it.skip("mint and swap in a single transaction", mintAndSwap); describe("full launch v6", fullLaunch); describe("full launch v7", fullLaunch_v7); + describe("migrate to v6 raydium", migrateToV6Raydium); }); diff --git a/tests/priceBasedPerformancePackage/main.test.ts b/tests/priceBasedPerformancePackage/main.test.ts index a590ae64d..890a38939 100644 --- a/tests/priceBasedPerformancePackage/main.test.ts +++ b/tests/priceBasedPerformancePackage/main.test.ts @@ -4,7 +4,6 @@ import completeUnlock from "./unit/completeUnlock.test.js"; import proposeChange from "./unit/proposeChange.test.js"; import changePerformancePackageAuthority from "./unit/changePerformancePackageAuthority.test.js"; import executeChange from "./unit/executeChange.test.js"; -import burnPerformancePackage from "./unit/burnPerformancePackage.test.js"; export default function suite() { describe("#initialize_performance_package", initializePerformancePackage); @@ -16,5 +15,4 @@ export default function suite() { changePerformancePackageAuthority, ); describe("#execute_change", executeChange); - describe("#burn_performance_package", burnPerformancePackage); }