Contract
0xfed67cc40e9c5934f157221169d772b328cb138e
6
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Latest 25 Deposits
[ Download CSV Export ]
Contract Name:
VeloFarmer
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Optimistic.Etherscan.io on 2022-10-11 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the decimal points used by the token. */ function decimals() external view returns (uint8); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Burns `amount` of token, shringking total supply */ function burn(uint amount) external; /** * @dev Mints `amount` of token to address `to` increasing total supply */ function mint(address to, uint amount) external; //For testing function addMinter(address minter_) external; } interface IRouter { struct route { address from; address to; bool stable; } function pairFor(address tokenA, address tokenB, bool stable) external view returns (address pair); function getAmountOut(uint amountIn, address tokenIn, address tokenOut) external view returns (uint amount, bool stable); function getAmountsOut(uint amountIn, route[] memory routes) external view returns (uint[] memory amounts); function quoteAddLiquidity( address tokenA, address tokenB, bool stable, uint amountADesired, uint amountBDesired ) external view returns (uint amountA, uint amountB, uint liquidity); function quoteRemoveLiquidity( address tokenA, address tokenB, bool stable, uint liquidity ) external view returns (uint amountA, uint amountB); function addLiquidity( address tokenA, address tokenB, bool stable, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function removeLiquidity( address tokenA, address tokenB, bool stable, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function swapExactTokensForTokensSimple( uint amountIn, uint amountOutMin, address tokenFrom, address tokenTo, bool stable, address to, uint deadline ) external returns (uint[] memory amounts); } interface IGauge { function deposit(uint amount, uint tokenId) external; function getReward(address account, address[] memory tokens) external; function withdraw(uint shares) external; function balanceOf(address account) external returns (uint); } /** * @title IL2ERC20Bridge */ interface IL2ERC20Bridge { /********** * Events * **********/ event WithdrawalInitiated( address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data ); event DepositFinalized( address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data ); event DepositFailed( address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data ); /******************** * Public Functions * ********************/ /** * @dev get the address of the corresponding L1 bridge contract. * @return Address of the corresponding L1 bridge contract. */ function l1TokenBridge() external returns (address); /** * @dev initiate a withdraw of some tokens to the caller's account on L1 * @param _l2Token Address of L2 token where withdrawal was initiated. * @param _amount Amount of the token to withdraw. * param _l1Gas Unused, but included for potential forward compatibility considerations. * @param _data Optional data to forward to L1. This data is provided * solely as a convenience for external contracts. Aside from enforcing a maximum * length, these contracts provide no guarantees about its content. */ function withdraw( address _l2Token, uint256 _amount, uint32 _l1Gas, bytes calldata _data ) external; /** * @dev initiate a withdraw of some token to a recipient's account on L1. * @param _l2Token Address of L2 token where withdrawal is initiated. * @param _to L1 adress to credit the withdrawal to. * @param _amount Amount of the token to withdraw. * param _l1Gas Unused, but included for potential forward compatibility considerations. * @param _data Optional data to forward to L1. This data is provided * solely as a convenience for external contracts. Aside from enforcing a maximum * length, these contracts provide no guarantees about its content. */ function withdrawTo( address _l2Token, address _to, uint256 _amount, uint32 _l1Gas, bytes calldata _data ) external; /************************* * Cross-chain Functions * *************************/ /** * @dev Complete a deposit from L1 to L2, and credits funds to the recipient's balance of this * L2 token. This call will fail if it did not originate from a corresponding deposit in * L1StandardTokenBridge. * @param _l1Token Address for the l1 token this is called with * @param _l2Token Address for the l2 token this is called with * @param _from Account to pull the deposit from on L2. * @param _to Address to receive the withdrawal at * @param _amount Amount of the token to withdraw * @param _data Data provider by the sender on L1. This data is provided * solely as a convenience for external contracts. Aside from enforcing a maximum * length, these contracts provide no guarantees about its content. */ function finalizeDeposit( address _l1Token, address _l2Token, address _from, address _to, uint256 _amount, bytes calldata _data ) external; } /** * @title ICrossDomainMessenger */ interface ICrossDomainMessenger { /********** * Events * **********/ event SentMessage( address indexed target, address sender, bytes message, uint256 messageNonce, uint256 gasLimit ); event RelayedMessage(bytes32 indexed msgHash); event FailedRelayedMessage(bytes32 indexed msgHash); /************* * Variables * *************/ function xDomainMessageSender() external view returns (address); /******************** * Public Functions * ********************/ /** * Sends a cross domain message to the target messenger. * @param _target Target contract address. * @param _message Message to send to the target. * @param _gasLimit Gas limit for the provided message. */ function sendMessage( address _target, bytes calldata _message, uint32 _gasLimit ) external; } contract VeloFarmer { address public chair; address public l2chair; address public pendingGov; address public gov; address public treasury; address public guardian; uint public maxSlippageBpsDolaToUsdc; uint public maxSlippageBpsUsdcToDola; uint public maxSlippageBpsLiquidity; uint public constant DOLA_USDC_CONVERSION_MULTI= 1e12; uint public constant PRECISION = 10_000; IGauge public constant dolaGauge = IGauge(0xAFD2c84b9d1cd50E7E18a55e419749A6c9055E1F); IERC20 public constant LP_TOKEN = IERC20(0x6C5019D345Ec05004A7E7B0623A91a0D9B8D590d); address public constant veloTokenAddr = 0x3c8B650257cFb5f272f799F5e2b4e65093a11a05; ICrossDomainMessenger public constant ovmL2CrossDomainMessenger = ICrossDomainMessenger(0x4200000000000000000000000000000000000007); IRouter public constant router = IRouter(0xa132DAB612dB5cB9fC9Ac426A0Cc215A3423F9c9); IERC20 public constant DOLA = IERC20(0x8aE125E8653821E851F12A49F7765db9a9ce7384); IERC20 public constant USDC = IERC20(0x7F5c764cBc14f9669B88837ca1490cCa17c31607); IL2ERC20Bridge public bridge; address public optiFed; error OnlyChair(); error OnlyGov(); error OnlyPendingGov(); error OnlyGovOrGuardian(); error MaxSlippageTooHigh(); error NotEnoughTokens(); error LiquiditySlippageTooHigh(); constructor( address gov_, address chair_, address l2chair_, address treasury_, address guardian_, address bridge_, address optiFed_, uint maxSlippageBpsDolaToUsdc_, uint maxSlippageBpsUsdcToDola_, uint maxSlippageBpsLiquidity_ ) { gov = gov_; chair = chair_; l2chair = l2chair_; treasury = treasury_; guardian = guardian_; bridge = IL2ERC20Bridge(bridge_); optiFed = optiFed_; maxSlippageBpsDolaToUsdc = maxSlippageBpsDolaToUsdc_; maxSlippageBpsUsdcToDola = maxSlippageBpsUsdcToDola_; maxSlippageBpsLiquidity = maxSlippageBpsLiquidity_; } modifier onlyGov() { if (msg.sender != address(ovmL2CrossDomainMessenger) || ovmL2CrossDomainMessenger.xDomainMessageSender() != gov ) revert OnlyGov(); _; } modifier onlyPendingGov() { if (msg.sender != address(ovmL2CrossDomainMessenger) || ovmL2CrossDomainMessenger.xDomainMessageSender() != pendingGov ) revert OnlyPendingGov(); _; } modifier onlyChair() { if ((msg.sender != address(ovmL2CrossDomainMessenger) || ovmL2CrossDomainMessenger.xDomainMessageSender() != chair) && msg.sender != l2chair ) revert OnlyChair(); _; } modifier onlyGovOrGuardian() { if ((msg.sender != address(ovmL2CrossDomainMessenger) || (ovmL2CrossDomainMessenger.xDomainMessageSender() != gov) && ovmL2CrossDomainMessenger.xDomainMessageSender() != guardian) ) revert OnlyGovOrGuardian(); _; } /** @notice Claims all VELO token rewards accrued by this contract & transfer all VELO owned by this contract to `treasury` */ function claimVeloRewards() external { address[] memory addr = new address[](1); addr[0] = veloTokenAddr; dolaGauge.getReward(address(this), addr); IERC20(addr[0]).transfer(treasury, IERC20(addr[0]).balanceOf(address(this))); } /** @notice Attempts to claim token rewards & transfer all reward tokens owned by this contract to `treasury` @param addrs Array of token addresses to claim rewards of. */ function claimRewards(address[] calldata addrs) external onlyChair { dolaGauge.getReward(address(this), addrs); for (uint i = 0; i < addrs.length; i++) { IERC20(addrs[i]).transfer(treasury, IERC20(addrs[i]).balanceOf(address(this))); } } /** @notice Attempts to deposit `dolaAmount` of DOLA & `usdcAmount` of USDC into Velodrome DOLA/USDC stable pool. Then, deposits LP tokens into gauge. @param dolaAmount Amount of DOLA to be added as liquidity in Velodrome DOLA/USDC pool @param usdcAmount Amount of USDC to be added as liquidity in Velodrome DOLA/USDC pool */ function deposit(uint dolaAmount, uint usdcAmount) public onlyChair { uint lpTokenPrice = getLpTokenPrice(false); DOLA.approve(address(router), dolaAmount); USDC.approve(address(router), usdcAmount); (uint dolaSpent, uint usdcSpent, uint lpTokensReceived) = router.addLiquidity(address(DOLA), address(USDC), true, dolaAmount, usdcAmount, 0, 0, address(this), block.timestamp); uint totalDolaValue = dolaSpent + (usdcSpent * DOLA_USDC_CONVERSION_MULTI); uint expectedLpTokens = totalDolaValue * 1e18 / lpTokenPrice * (PRECISION - maxSlippageBpsLiquidity) / PRECISION; if (lpTokensReceived < expectedLpTokens) revert LiquiditySlippageTooHigh(); LP_TOKEN.approve(address(dolaGauge), LP_TOKEN.balanceOf(address(this))); dolaGauge.deposit(LP_TOKEN.balanceOf(address(this)), 0); } /** @notice Calls `deposit()` with entire DOLA & USDC token balance of this contract. */ function depositAll() external { deposit(DOLA.balanceOf(address(this)), USDC.balanceOf(address(this))); } /** @notice Withdraws `dolaAmount` worth of LP tokens from gauge. Then, redeems LP tokens for DOLA/USDC. @dev If attempting to remove more DOLA than total LP tokens are worth, will remove all LP tokens. @param dolaAmount Desired dola value to remove from DOLA/USDC pool. Will attempt to remove 50/50 while allowing for `maxSlippageBpsLiquidity` bps of variance. @return Amount of USDC received from liquidity removal. Used by withdrawLiquidityAndSwap wrapper. */ function withdrawLiquidity(uint dolaAmount) public onlyChair returns (uint) { uint lpTokenPrice = getLpTokenPrice(true); uint liquidityToWithdraw = dolaAmount * 1e18 / lpTokenPrice; uint ownedLiquidity = dolaGauge.balanceOf(address(this)); if (liquidityToWithdraw > ownedLiquidity) liquidityToWithdraw = ownedLiquidity; dolaGauge.withdraw(liquidityToWithdraw); LP_TOKEN.approve(address(router), liquidityToWithdraw); (uint amountDola, uint amountUSDC) = router.removeLiquidity(address(DOLA), address(USDC), true, liquidityToWithdraw, 0, 0, address(this), block.timestamp); uint totalDolaReceived = amountDola + (amountUSDC * DOLA_USDC_CONVERSION_MULTI); if ((dolaAmount * (PRECISION - maxSlippageBpsLiquidity) / PRECISION) > totalDolaReceived) { revert LiquiditySlippageTooHigh(); } return amountUSDC; } /** @notice Withdraws `dolaAmount` worth of LP tokens from gauge. Then, redeems LP tokens for DOLA/USDC and swaps redeemed USDC to DOLA. @param dolaAmount Desired dola value to remove from DOLA/USDC pool. Will attempt to remove 50/50 while allowing for `maxSlippageBpsLiquidity` bps of variance. */ function withdrawLiquidityAndSwapToDOLA(uint dolaAmount) external { uint usdcAmount = withdrawLiquidity(dolaAmount); swapUSDCtoDOLA(usdcAmount); } /** @notice Withdraws `dolaAmount` of DOLA to optiFed on L1. Will take 7 days before withdraw is claimable on L1. @param dolaAmount Amount of DOLA to withdraw and send to L1 OptiFed */ function withdrawToL1OptiFed(uint dolaAmount) external onlyChair { if (dolaAmount > DOLA.balanceOf(address(this))) revert NotEnoughTokens(); bridge.withdrawTo(address(DOLA), optiFed, dolaAmount, 0, ""); } /** @notice Withdraws `dolaAmount` of DOLA & `usdcAmount` of USDC to optiFed on L1. Will take 7 days before withdraw is claimable on L1. @param dolaAmount Amount of DOLA to withdraw and send to L1 OptiFed @param usdcAmount Amount of USDC to withdraw and send to L1 OptiFed */ function withdrawToL1OptiFed(uint dolaAmount, uint usdcAmount) external onlyChair { if (dolaAmount > DOLA.balanceOf(address(this))) revert NotEnoughTokens(); if (usdcAmount > USDC.balanceOf(address(this))) revert NotEnoughTokens(); bridge.withdrawTo(address(DOLA), optiFed, dolaAmount, 0, ""); bridge.withdrawTo(address(USDC), optiFed, usdcAmount, 0, ""); } /** @notice Withdraws `amount` of `l2Token` to address `to` on L1. Will take 7 days before withdraw is claimable. @param l2Token Address of the L2 token to be withdrawn @param to L1 Address that tokens will be sent to @param amount Amount of the L2 token to be withdrawn */ function withdrawTokensToL1(address l2Token, address to, uint amount) external onlyChair { if (amount > IERC20(l2Token).balanceOf(address(this))) revert NotEnoughTokens(); IERC20(l2Token).approve(address(bridge), amount); bridge.withdrawTo(address(l2Token), to, amount, 0, ""); } /** @notice Swap `usdcAmount` of USDC to DOLA through velodrome. @param usdcAmount Amount of USDC to swap to DOLA */ function swapUSDCtoDOLA(uint usdcAmount) public onlyChair { uint minOut = usdcAmount * (PRECISION - maxSlippageBpsUsdcToDola) / PRECISION * DOLA_USDC_CONVERSION_MULTI; USDC.approve(address(router), usdcAmount); router.swapExactTokensForTokensSimple(usdcAmount, minOut, address(USDC), address(DOLA), true, address(this), block.timestamp); } /** @notice Swap `dolaAmount` of DOLA to USDC through velodrome. @param dolaAmount Amount of DOLA to swap to USDC */ function swapDOLAtoUSDC(uint dolaAmount) public onlyChair { uint minOut = dolaAmount * (PRECISION - maxSlippageBpsDolaToUsdc) / PRECISION / DOLA_USDC_CONVERSION_MULTI; DOLA.approve(address(router), dolaAmount); router.swapExactTokensForTokensSimple(dolaAmount, minOut, address(DOLA), address(USDC), true, address(this), block.timestamp); } /** @notice Calculates approximate price of 1 Velodrome DOLA/USDC stable pool LP token */ function getLpTokenPrice(bool withdraw_) internal view returns (uint) { (uint dolaAmountOneLP, uint usdcAmountOneLP) = router.quoteRemoveLiquidity(address(DOLA), address(USDC), true, 0.001 ether); (uint dolaForRemovedUsdc,) = router.getAmountOut(usdcAmountOneLP, address(USDC), address(DOLA)); (uint usdcForRemovedDola,) = router.getAmountOut(dolaAmountOneLP, address(DOLA), address(USDC)); usdcForRemovedDola *= DOLA_USDC_CONVERSION_MULTI; usdcAmountOneLP *= DOLA_USDC_CONVERSION_MULTI; if (dolaAmountOneLP + dolaForRemovedUsdc > usdcAmountOneLP + usdcForRemovedDola && withdraw_) { return (dolaAmountOneLP + dolaForRemovedUsdc) * 1000; } else { return (usdcAmountOneLP + usdcForRemovedDola) * 1000; } } /** @notice Method for current chair of the fed to resign */ function resign() external onlyChair { if (msg.sender == l2chair) { l2chair = address(0); } else { chair = address(0); } } /** @notice Governance only function for setting acceptable slippage when swapping DOLA -> USDC @param newMaxSlippageBps The new maximum allowed loss for DOLA -> USDC swaps. 1 = 0.01% */ function setMaxSlippageDolaToUsdc(uint newMaxSlippageBps) onlyGovOrGuardian external { if (newMaxSlippageBps > 10000) revert MaxSlippageTooHigh(); maxSlippageBpsDolaToUsdc = newMaxSlippageBps; } /** @notice Governance only function for setting acceptable slippage when swapping USDC -> DOLA @param newMaxSlippageBps The new maximum allowed loss for USDC -> DOLA swaps. 1 = 0.01% */ function setMaxSlippageUsdcToDola(uint newMaxSlippageBps) onlyGovOrGuardian external { if (newMaxSlippageBps > 10000) revert MaxSlippageTooHigh(); maxSlippageBpsUsdcToDola = newMaxSlippageBps; } /** @notice Governance only function for setting acceptable slippage when adding or removing liquidty from DOLA/USDC pool @param newMaxSlippageBps The new maximum allowed loss for adding/removing liquidity from DOLA/USDC pool. 1 = 0.01% */ function setMaxSlippageLiquidity(uint newMaxSlippageBps) onlyGovOrGuardian external { if (newMaxSlippageBps > 10000) revert MaxSlippageTooHigh(); maxSlippageBpsLiquidity = newMaxSlippageBps; } /** @notice Method for `gov` to change `pendingGov` address @dev `pendingGov` will have to call `claimGov` to complete `gov` transfer @dev `pendingGov` should be an L1 address @param newPendingGov_ L1 address to be set as `pendingGov` */ function setPendingGov(address newPendingGov_) onlyGov external { pendingGov = newPendingGov_; } /** @notice Method for `pendingGov` to claim `gov` role. */ function claimGov() external onlyPendingGov { gov = pendingGov; pendingGov = address(0); } /** @notice Method for gov to change treasury address, the address that receives all rewards @param newTreasury_ L2 address to be set as treasury */ function changeTreasury(address newTreasury_) external onlyGov { treasury = newTreasury_; } /** @notice Method for gov to change the chair @dev chair address should be set to the address of L1 VeloFarmerMessenger if it is being used @param newChair_ L1 address to be set as chair */ function changeChair(address newChair_) external onlyGov { chair = newChair_; } /** @notice Method for gov to change the L2 chair @param newL2Chair_ L2 address to be set as l2chair */ function changeL2Chair(address newL2Chair_) external onlyGov { l2chair = newL2Chair_; } /** @notice Method for gov to change the guardian @param guardian_ L1 address to be set as guardian */ function changeGuardian(address guardian_) external onlyGov { guardian = guardian_; } /** @notice Method for gov to change the L1 optiFed address @dev optiFed is the L1 address that receives all bridged DOLA/USDC from both withdrawToL1OptiFed functions @param newOptiFed_ L1 address to be set as optiFed */ function changeOptiFed(address newOptiFed_) external onlyGov { optiFed = newOptiFed_; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"gov_","type":"address"},{"internalType":"address","name":"chair_","type":"address"},{"internalType":"address","name":"l2chair_","type":"address"},{"internalType":"address","name":"treasury_","type":"address"},{"internalType":"address","name":"guardian_","type":"address"},{"internalType":"address","name":"bridge_","type":"address"},{"internalType":"address","name":"optiFed_","type":"address"},{"internalType":"uint256","name":"maxSlippageBpsDolaToUsdc_","type":"uint256"},{"internalType":"uint256","name":"maxSlippageBpsUsdcToDola_","type":"uint256"},{"internalType":"uint256","name":"maxSlippageBpsLiquidity_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"LiquiditySlippageTooHigh","type":"error"},{"inputs":[],"name":"MaxSlippageTooHigh","type":"error"},{"inputs":[],"name":"NotEnoughTokens","type":"error"},{"inputs":[],"name":"OnlyChair","type":"error"},{"inputs":[],"name":"OnlyGov","type":"error"},{"inputs":[],"name":"OnlyGovOrGuardian","type":"error"},{"inputs":[],"name":"OnlyPendingGov","type":"error"},{"inputs":[],"name":"DOLA","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOLA_USDC_CONVERSION_MULTI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LP_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"contract IL2ERC20Bridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newChair_","type":"address"}],"name":"changeChair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"guardian_","type":"address"}],"name":"changeGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newL2Chair_","type":"address"}],"name":"changeL2Chair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOptiFed_","type":"address"}],"name":"changeOptiFed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasury_","type":"address"}],"name":"changeTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimVeloRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dolaAmount","type":"uint256"},{"internalType":"uint256","name":"usdcAmount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dolaGauge","outputs":[{"internalType":"contract IGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2chair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSlippageBpsDolaToUsdc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSlippageBpsLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSlippageBpsUsdcToDola","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"optiFed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ovmL2CrossDomainMessenger","outputs":[{"internalType":"contract ICrossDomainMessenger","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resign","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSlippageBps","type":"uint256"}],"name":"setMaxSlippageDolaToUsdc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSlippageBps","type":"uint256"}],"name":"setMaxSlippageLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSlippageBps","type":"uint256"}],"name":"setMaxSlippageUsdcToDola","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingGov_","type":"address"}],"name":"setPendingGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dolaAmount","type":"uint256"}],"name":"swapDOLAtoUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"usdcAmount","type":"uint256"}],"name":"swapUSDCtoDOLA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"veloTokenAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dolaAmount","type":"uint256"}],"name":"withdrawLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dolaAmount","type":"uint256"}],"name":"withdrawLiquidityAndSwapToDOLA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dolaAmount","type":"uint256"}],"name":"withdrawToL1OptiFed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dolaAmount","type":"uint256"},{"internalType":"uint256","name":"usdcAmount","type":"uint256"}],"name":"withdrawToL1OptiFed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"l2Token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokensToL1","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620032f1380380620032f18339810160408190526200003491620000e2565b600380546001600160a01b03199081166001600160a01b039c8d16179091556000805482169a8c169a909a17909955600180548a16988b1698909817909755600480548916968a16969096179095556005805488169489169490941790935560098054871692881692909217909155600a805490951695169490941790925560069290925560075560085562000196565b80516001600160a01b0381168114620000dd57600080fd5b919050565b6000806000806000806000806000806101408b8d0312156200010357600080fd5b6200010e8b620000c5565b99506200011e60208c01620000c5565b98506200012e60408c01620000c5565b97506200013e60608c01620000c5565b96506200014e60808c01620000c5565b95506200015e60a08c01620000c5565b94506200016e60c08c01620000c5565b935060e08b015192506101008b015191506101208b015190509295989b9194979a5092959850565b61314b80620001a66000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c8063aaf5eb6811610146578063df399616116100c3578063eb52d09911610087578063eb52d099146104f8578063efdf0bb01461050b578063f887ea401461051e578063f9f031df14610533578063fa2459d214610546578063fdf893f51461055957600080fd5b8063df399616146104a4578063e2bbb158146104b7578063e78cea92146104ca578063e80aff84146104dd578063e8c4b699146104e557600080fd5b8063c565f7b71161010a578063c565f7b714610448578063c611551114610463578063cdb2fc5f14610476578063de5f626814610489578063de5feb281461049157600080fd5b8063aaf5eb68146103eb578063b14f2a39146103f4578063bcb03ef614610407578063bfd9041b1461041a578063c002e56e1461043557600080fd5b806344139778116101df57806369652fcf116101a357806369652fcf1461038a57806389a302711461039257806389d47495146103a757806392c592d0146103ba578063a97eb55c146103cf578063a9cd0258146103d857600080fd5b8063441397781461033b578063452a932014610349578063544835411461035c57806361d027b31461036f57806364371ae21461038257600080fd5b8063272d5db711610226578063272d5db7146102e5578063289a6581146103005780632a0902ba146103095780632fcb4f041461031c5780633c635ee51461032f57600080fd5b80630a861f2a1461026357806312d43a511461028957806319a19e0f146102b457806325240810146102c957806326f4bb51146102dc575b600080fd5b610276610271366004612bfb565b61056c565b6040519081526020015b60405180910390f35b60035461029c906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b6102c76102c2366004612bfb565b610910565b005b60025461029c906001600160a01b031681565b61027660065481565b61029c733c8b650257cfb5f272f799f5e2b4e65093a11a0581565b61027660085481565b6102c7610317366004612bfb565b610a71565b6102c761032a366004612c2c565b610ca0565b61027664e8d4a5100081565b61029c6007602160991b0181565b60055461029c906001600160a01b031681565b6102c761036a366004612bfb565b610d73565b60045461029c906001600160a01b031681565b6102c7610f56565b6102c761102e565b61029c6000805160206130b683398151915281565b6102c76103b5366004612bfb565b61112d565b61029c6000805160206130f683398151915281565b61027660075481565b6102c76103e6366004612bfb565b611301565b61027661271081565b6102c7610402366004612c2c565b611462565b6102c7610415366004612bfb565b611535565b61029c736c5019d345ec05004a7e7b0623a91a0d9b8d590d81565b6102c7610443366004612c2c565b611696565b61029c73afd2c84b9d1cd50e7e18a55e419749a6c9055e1f81565b600a5461029c906001600160a01b031681565b6102c7610484366004612bfb565b611769565b6102c7611783565b6102c761049f366004612c50565b611861565b60015461029c906001600160a01b031681565b6102c76104c5366004612c50565b611b3d565b60095461029c906001600160a01b031681565b6102c7612066565b6102c76104f3366004612c2c565b612268565b6102c7610506366004612c72565b61233b565b6102c7610519366004612c2c565b612571565b61029c6000805160206130d683398151915281565b6102c7610541366004612cb3565b612644565b6102c7610554366004612c2c565b6128d4565b60005461029c906001600160a01b031681565b6000336007602160991b01141580610601575060005460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa1580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f59190612d28565b6001600160a01b031614155b801561061857506001546001600160a01b03163314155b156106365760405163d0f6c81f60e01b815260040160405180910390fd5b600061064260016129a7565b905060008161065985670de0b6b3a7640000612d5b565b6106639190612d78565b6040516370a0823160e01b815230600482015290915060009073afd2c84b9d1cd50e7e18a55e419749a6c9055e1f906370a08231906024016020604051808303816000875af11580156106ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106de9190612d9a565b9050808211156106ec578091505b604051632e1a7d4d60e01b81526004810183905273afd2c84b9d1cd50e7e18a55e419749a6c9055e1f90632e1a7d4d90602401600060405180830381600087803b15801561073957600080fd5b505af115801561074d573d6000803e3d6000fd5b505060405163095ea7b360e01b81526000805160206130d6833981519152600482015260248101859052736c5019d345ec05004a7e7b0623a91a0d9b8d590d925063095ea7b391506044016020604051808303816000875af11580156107b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107db9190612dc3565b5060405163037b79b160e21b81526000805160206130f683398151915260048201526000805160206130b68339815191526024820152600160448201526064810183905260006084820181905260a482018190523060c48301524260e48301529081906000805160206130d683398151915290630dede6c4906101040160408051808303816000875af1158015610876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089a9190612dde565b909250905060006108b064e8d4a5100083612d5b565b6108ba9084612e02565b9050806127106008546127106108d09190612e15565b6108da908b612d5b565b6108e49190612d78565b111561090357604051634798348560e01b815260040160405180910390fd5b509450505050505b919050565b336007602160991b01141580610a2b575060035460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015610973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109979190612d28565b6001600160a01b031614158015610a2b575060055460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa1580156109fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1f9190612d28565b6001600160a01b031614155b15610a4957604051630f8d4d1160e41b815260040160405180910390fd5b612710811115610a6c57604051636dabd5db60e01b815260040160405180910390fd5b600755565b336007602160991b01141580610b04575060005460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190612d28565b6001600160a01b031614155b8015610b1b57506001546001600160a01b03163314155b15610b395760405163d0f6c81f60e01b815260040160405180910390fd5b600064e8d4a51000612710600654612710610b549190612e15565b610b5e9085612d5b565b610b689190612d78565b610b729190612d78565b60405163095ea7b360e01b81526000805160206130d68339815191526004820152602481018490529091506000805160206130f68339815191529063095ea7b3906044016020604051808303816000875af1158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf99190612dc3565b506040516313dcfc5960e01b81526000805160206130d6833981519152906313dcfc5990610c5490859085906000805160206130f6833981519152906000805160206130b68339815191529060019030904290600401612e28565b6000604051808303816000875af1158015610c73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c9b9190810190612e79565b505050565b336007602160991b01141580610d33575060035460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190612d28565b6001600160a01b031614155b15610d5157604051639097750360e01b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336007602160991b01141580610e06575060005460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015610dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfa9190612d28565b6001600160a01b031614155b8015610e1d57506001546001600160a01b03163314155b15610e3b5760405163d0f6c81f60e01b815260040160405180910390fd5b600064e8d4a51000612710600754612710610e569190612e15565b610e609085612d5b565b610e6a9190612d78565b610e749190612d5b565b60405163095ea7b360e01b81526000805160206130d68339815191526004820152602481018490529091506000805160206130b68339815191529063095ea7b3906044016020604051808303816000875af1158015610ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efb9190612dc3565b506040516313dcfc5960e01b81526000805160206130d6833981519152906313dcfc5990610c5490859085906000805160206130b6833981519152906000805160206130f68339815191529060019030904290600401612e28565b336007602160991b01141580610fe9575060025460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015610fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdd9190612d28565b6001600160a01b031614155b15611007576040516307b70d3960e11b815260040160405180910390fd5b60028054600380546001600160a01b03199081166001600160a01b03841617909155169055565b336007602160991b011415806110c1575060005460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015611091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b59190612d28565b6001600160a01b031614155b80156110d857506001546001600160a01b03163314155b156110f65760405163d0f6c81f60e01b815260040160405180910390fd5b6001546001600160a01b0316330361111a57600180546001600160a01b0319169055565b600080546001600160a01b03191690555b565b336007602160991b011415806111c0575060005460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015611190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b49190612d28565b6001600160a01b031614155b80156111d757506001546001600160a01b03163314155b156111f55760405163d0f6c81f60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000805160206130f6833981519152906370a0823190602401602060405180830381865afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190612d9a565b811115611282576040516308aeed0f60e21b815260040160405180910390fd5b600954600a54604051631474f2a960e31b81526001600160a01b039283169263a3a79548926112cc926000805160206130f683398151915292909116908690600090600401612f37565b600060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b5050505050565b336007602160991b0114158061141c575060035460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015611364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113889190612d28565b6001600160a01b03161415801561141c575060055460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114109190612d28565b6001600160a01b031614155b1561143a57604051630f8d4d1160e41b815260040160405180910390fd5b61271081111561145d57604051636dabd5db60e01b815260040160405180910390fd5b600855565b336007602160991b011415806114f5575060035460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa1580156114c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e99190612d28565b6001600160a01b031614155b1561151357604051639097750360e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b336007602160991b01141580611650575060035460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015611598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bc9190612d28565b6001600160a01b031614158015611650575060055460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015611620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116449190612d28565b6001600160a01b031614155b1561166e57604051630f8d4d1160e41b815260040160405180910390fd5b61271081111561169157604051636dabd5db60e01b815260040160405180910390fd5b600655565b336007602160991b01141580611729575060035460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190612d28565b6001600160a01b031614155b1561174757604051639097750360e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006117748261056c565b905061177f81610d73565b5050565b6040516370a0823160e01b815230600482015261112b906000805160206130f6833981519152906370a0823190602401602060405180830381865afa1580156117d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f49190612d9a565b6040516370a0823160e01b81523060048201526000805160206130b6833981519152906370a0823190602401602060405180830381865afa15801561183d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c59190612d9a565b336007602160991b011415806118f4575060005460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa1580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e89190612d28565b6001600160a01b031614155b801561190b57506001546001600160a01b03163314155b156119295760405163d0f6c81f60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000805160206130f6833981519152906370a0823190602401602060405180830381865afa158015611972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119969190612d9a565b8211156119b6576040516308aeed0f60e21b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000805160206130b6833981519152906370a0823190602401602060405180830381865afa1580156119ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a239190612d9a565b811115611a43576040516308aeed0f60e21b815260040160405180910390fd5b600954600a54604051631474f2a960e31b81526001600160a01b039283169263a3a7954892611a8d926000805160206130f683398151915292909116908790600090600401612f37565b600060405180830381600087803b158015611aa757600080fd5b505af1158015611abb573d6000803e3d6000fd5b5050600954600a54604051631474f2a960e31b81526001600160a01b03928316945063a3a795489350611b07926000805160206130b68339815191529216908690600090600401612f37565b600060405180830381600087803b158015611b2157600080fd5b505af1158015611b35573d6000803e3d6000fd5b505050505050565b336007602160991b01141580611bd0575060005460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015611ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc49190612d28565b6001600160a01b031614155b8015611be757506001546001600160a01b03163314155b15611c055760405163d0f6c81f60e01b815260040160405180910390fd5b6000611c1160006129a7565b60405163095ea7b360e01b81526000805160206130d68339815191526004820152602481018590529091506000805160206130f68339815191529063095ea7b3906044016020604051808303816000875af1158015611c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c989190612dc3565b5060405163095ea7b360e01b81526000805160206130d68339815191526004820152602481018390526000805160206130b68339815191529063095ea7b3906044016020604051808303816000875af1158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d9190612dc3565b50604051635a47ddc360e01b81526000805160206130f683398151915260048201526000805160206130b68339815191526024820152600160448201526064810184905260848101839052600060a4820181905260c482018190523060e48301524261010483015290819081906000805160206130d683398151915290635a47ddc390610124016060604051808303816000875af1158015611dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de79190612f74565b919450925090506000611dff64e8d4a5100084612d5b565b611e099085612e02565b90506000612710600854612710611e209190612e15565b87611e3385670de0b6b3a7640000612d5b565b611e3d9190612d78565b611e479190612d5b565b611e519190612d78565b905080831015611e7457604051634798348560e01b815260040160405180910390fd5b6040516370a0823160e01b8152306004820152736c5019d345ec05004a7e7b0623a91a0d9b8d590d9063095ea7b39073afd2c84b9d1cd50e7e18a55e419749a6c9055e1f9083906370a0823190602401602060405180830381865afa158015611ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f059190612d9a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f749190612dc3565b506040516370a0823160e01b815230600482015273afd2c84b9d1cd50e7e18a55e419749a6c9055e1f9063e2bbb15890736c5019d345ec05004a7e7b0623a91a0d9b8d590d906370a0823190602401602060405180830381865afa158015611fe0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120049190612d9a565b6040516001600160e01b031960e084901b168152600481019190915260006024820152604401600060405180830381600087803b15801561204457600080fd5b505af1158015612058573d6000803e3d6000fd5b505050505050505050505050565b60408051600180825281830190925260009160208083019080368337019050509050733c8b650257cfb5f272f799f5e2b4e65093a11a05816000815181106120b0576120b0612fa2565b6001600160a01b03909216602092830291909101909101526040516331279d3d60e01b815273afd2c84b9d1cd50e7e18a55e419749a6c9055e1f906331279d3d906121019030908590600401612fb8565b600060405180830381600087803b15801561211b57600080fd5b505af115801561212f573d6000803e3d6000fd5b505050508060008151811061214657612146612fa2565b60200260200101516001600160a01b031663a9059cbb600460009054906101000a90046001600160a01b03168360008151811061218557612185612fa2565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156121d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f99190612d9a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612244573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f9190612dc3565b336007602160991b011415806122fb575060035460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa1580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef9190612d28565b6001600160a01b031614155b1561231957604051639097750360e01b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b336007602160991b011415806123ce575060005460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa15801561239e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c29190612d28565b6001600160a01b031614155b80156123e557506001546001600160a01b03163314155b156124035760405163d0f6c81f60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015612447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246b9190612d9a565b81111561248b576040516308aeed0f60e21b815260040160405180910390fd5b60095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529084169063095ea7b3906044016020604051808303816000875af11580156124de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125029190612dc3565b50600954604051631474f2a960e31b81526001600160a01b039091169063a3a795489061253a90869086908690600090600401612f37565b600060405180830381600087803b15801561255457600080fd5b505af1158015612568573d6000803e3d6000fd5b50505050505050565b336007602160991b01141580612604575060035460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa1580156125d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f89190612d28565b6001600160a01b031614155b1561262257604051639097750360e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b336007602160991b011415806126d7575060005460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa1580156126a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cb9190612d28565b6001600160a01b031614155b80156126ee57506001546001600160a01b03163314155b1561270c5760405163d0f6c81f60e01b815260040160405180910390fd5b6040516331279d3d60e01b815273afd2c84b9d1cd50e7e18a55e419749a6c9055e1f906331279d3d9061274790309086908690600401613014565b600060405180830381600087803b15801561276157600080fd5b505af1158015612775573d6000803e3d6000fd5b5050505060005b81811015610c9b5782828281811061279657612796612fa2565b90506020020160208101906127ab9190612c2c565b6004546001600160a01b039182169163a9059cbb91168585858181106127d3576127d3612fa2565b90506020020160208101906127e89190612c2c565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561282e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128529190612d9a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561289d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c19190612dc3565b50806128cc81613070565b91505061277c565b336007602160991b01141580612967575060035460408051636e296e4560e01b815290516001600160a01b03909216916007602160991b0191636e296e459160048083019260209291908290030181865afa158015612937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295b9190612d28565b6001600160a01b031614155b1561298557604051639097750360e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6040516310e1b98f60e21b81526000805160206130f683398151915260048201526000805160206130b683398151915260248201526001604482015266038d7ea4c680006064820152600090819081906000805160206130d683398151915290634386e63c906084016040805180830381865afa158015612a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a509190612dde565b604051635e1e632560e01b8152600481018290526000805160206130b683398151915260248201526000805160206130f6833981519152604482015291935091506000906000805160206130d683398151915290635e1e6325906064016040805180830381865afa158015612ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aed9190613089565b50604051635e1e632560e01b8152600481018590526000805160206130f683398151915260248201526000805160206130b683398151915260448201529091506000906000805160206130d683398151915290635e1e6325906064016040805180830381865afa158015612b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b899190613089565b509050612b9b64e8d4a5100082612d5b565b9050612bac64e8d4a5100084612d5b565b9250612bb88184612e02565b612bc28386612e02565b118015612bcc5750855b15612bf157612bdb8285612e02565b612be7906103e8612d5b565b9695505050505050565b612bdb8184612e02565b600060208284031215612c0d57600080fd5b5035919050565b6001600160a01b0381168114612c2957600080fd5b50565b600060208284031215612c3e57600080fd5b8135612c4981612c14565b9392505050565b60008060408385031215612c6357600080fd5b50508035926020909101359150565b600080600060608486031215612c8757600080fd5b8335612c9281612c14565b92506020840135612ca281612c14565b929592945050506040919091013590565b60008060208385031215612cc657600080fd5b823567ffffffffffffffff80821115612cde57600080fd5b818501915085601f830112612cf257600080fd5b813581811115612d0157600080fd5b8660208260051b8501011115612d1657600080fd5b60209290920196919550909350505050565b600060208284031215612d3a57600080fd5b8151612c4981612c14565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417612d7257612d72612d45565b92915050565b600082612d9557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612dac57600080fd5b5051919050565b8051801515811461090b57600080fd5b600060208284031215612dd557600080fd5b612c4982612db3565b60008060408385031215612df157600080fd5b505080516020909101519092909150565b80820180821115612d7257612d72612d45565b81810381811115612d7257612d72612d45565b96875260208701959095526001600160a01b0393841660408701529183166060860152151560808501521660a083015260c082015260e00190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215612e8c57600080fd5b825167ffffffffffffffff80821115612ea457600080fd5b818501915085601f830112612eb857600080fd5b815181811115612eca57612eca612e63565b8060051b604051601f19603f83011681018181108582111715612eef57612eef612e63565b604052918252848201925083810185019188831115612f0d57600080fd5b938501935b82851015612f2b57845184529385019392850192612f12565b98975050505050505050565b6001600160a01b039485168152929093166020830152604082015263ffffffff909116606082015260a06080820181905260009082015260c00190565b600080600060608486031215612f8957600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015613006578551851683529483019491830191600101612fe8565b509098975050505050505050565b6001600160a01b03848116825260406020808401829052908301849052600091859160608501845b8781101561306357843561304f81612c14565b84168252938201939082019060010161303c565b5098975050505050505050565b60006001820161308257613082612d45565b5060010190565b6000806040838503121561309c57600080fd5b825191506130ac60208401612db3565b9050925092905056fe0000000000000000000000007f5c764cbc14f9669b88837ca1490cca17c31607000000000000000000000000a132dab612db5cb9fc9ac426a0cc215a3423f9c90000000000000000000000008ae125e8653821e851f12a49f7765db9a9ce7384a2646970667358221220f2a33283cd1cb41509d9cf67109cee950e7a0c218f9d32dcbd2013372d1d280564736f6c63430008110033000000000000000000000000fed673a89c1b661d9dca1401fbf3b279dffeabae000000000000000000000000fed673a89c1b661d9dca1401fbf3b279dffeabae0000000000000000000000009f9fa2c6b432689dcd4e3ad55f86fde6c03694ee000000000000000000000000a283139017a2f5bade8d8e25412c600055d318f8000000000000000000000000fed673a89c1b661d9dca1401fbf3b279dffeabae0000000000000000000000004200000000000000000000000000000000000010000000000000000000000000fed533e0ec584d6ff40281a7850c4621d258b43d000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001e
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fed673a89c1b661d9dca1401fbf3b279dffeabae000000000000000000000000fed673a89c1b661d9dca1401fbf3b279dffeabae0000000000000000000000009f9fa2c6b432689dcd4e3ad55f86fde6c03694ee000000000000000000000000a283139017a2f5bade8d8e25412c600055d318f8000000000000000000000000fed673a89c1b661d9dca1401fbf3b279dffeabae0000000000000000000000004200000000000000000000000000000000000010000000000000000000000000fed533e0ec584d6ff40281a7850c4621d258b43d000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001e
-----Decoded View---------------
Arg [0] : gov_ (address): 0xFed673A89c1B661D9DCA1401FBf3B279DffEaBAe
Arg [1] : chair_ (address): 0xFed673A89c1B661D9DCA1401FBf3B279DffEaBAe
Arg [2] : l2chair_ (address): 0x9f9Fa2C6b432689Dcd4E3ad55f86FdE6c03694EE
Arg [3] : treasury_ (address): 0xa283139017a2f5BAdE8d8e25412C600055D318F8
Arg [4] : guardian_ (address): 0xFed673A89c1B661D9DCA1401FBf3B279DffEaBAe
Arg [5] : bridge_ (address): 0x4200000000000000000000000000000000000010
Arg [6] : optiFed_ (address): 0xfEd533e0Ec584D6FF40281a7850c4621D258b43d
Arg [7] : maxSlippageBpsDolaToUsdc_ (uint256): 30
Arg [8] : maxSlippageBpsUsdcToDola_ (uint256): 30
Arg [9] : maxSlippageBpsLiquidity_ (uint256): 30
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 000000000000000000000000fed673a89c1b661d9dca1401fbf3b279dffeabae
Arg [1] : 000000000000000000000000fed673a89c1b661d9dca1401fbf3b279dffeabae
Arg [2] : 0000000000000000000000009f9fa2c6b432689dcd4e3ad55f86fde6c03694ee
Arg [3] : 000000000000000000000000a283139017a2f5bade8d8e25412c600055d318f8
Arg [4] : 000000000000000000000000fed673a89c1b661d9dca1401fbf3b279dffeabae
Arg [5] : 0000000000000000000000004200000000000000000000000000000000000010
Arg [6] : 000000000000000000000000fed533e0ec584d6ff40281a7850c4621d258b43d
Arg [7] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [8] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [9] : 000000000000000000000000000000000000000000000000000000000000001e
Deployed ByteCode Sourcemap
10094:14838:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16146:932;;;;;;:::i;:::-;;:::i;:::-;;;345:25:1;;;333:2;318:18;16146:932:0;;;;;;;;10209:18;;;;;-1:-1:-1;;;;;10209:18:0;;;;;;-1:-1:-1;;;;;545:32:1;;;527:51;;515:2;500:18;10209::0;381:203:1;22230:217:0;;;;;;:::i;:::-;;:::i;:::-;;10177:25;;;;;-1:-1:-1;;;;;10177:25:0;;;10294:36;;;;;;10715:82;;10755:42;10715:82;;10380:35;;;;;;20015:382;;;;;;:::i;:::-;;:::i;24475:99::-;;;;;;:::i;:::-;;:::i;10424:53::-;;10473:4;10424:53;;10804:131;;-1:-1:-1;;;;;10804:131:0;;10264:23;;;;;-1:-1:-1;;;;;10264:23:0;;;19497:373;;;;;;:::i;:::-;;:::i;10234:23::-;;;;;-1:-1:-1;;;;;10234:23:0;;;23399:113;;;:::i;21403:180::-;;;:::i;11120:80::-;;-1:-1:-1;;;;;;;;;;;11120:80:0;;17789:229;;;;;;:::i;:::-;;:::i;11033:80::-;;-1:-1:-1;;;;;;;;;;;11033:80:0;;10337:36;;;;;;22715:215;;;;;;:::i;:::-;;:::i;10484:39::-;;10517:6;10484:39;;23689:105;;;;;;:::i;:::-;;:::i;21798:217::-;;;;;;:::i;:::-;;:::i;10624:84::-;;10665:42;10624:84;;24018:93;;;;;;:::i;:::-;;:::i;10532:85::-;;10574:42;10532:85;;11242:22;;;;;-1:-1:-1;;;;;11242:22:0;;;17405:171;;;;;;:::i;:::-;;:::i;15526:119::-;;;:::i;18327:400::-;;;;;;:::i;:::-;;:::i;10148:22::-;;;;;-1:-1:-1;;;;;10148:22:0;;;14538:876;;;;;;:::i;:::-;;:::i;11207:28::-;;;;;-1:-1:-1;;;;;11207:28:0;;;13425:270;;;:::i;24828:101::-;;;;;;:::i;:::-;;:::i;19039:313::-;;;;;;:::i;:::-;;:::i;23206:110::-;;;;;;:::i;:::-;;:::i;10942:84::-;;-1:-1:-1;;;;;;;;;;;10942:84:0;;13895:284;;;;;;:::i;:::-;;:::i;24243:101::-;;;;;;:::i;:::-;;:::i;10121:20::-;;;;;-1:-1:-1;;;;;10121:20:0;;;16146:932;16216:4;12752:10;-1:-1:-1;;;;;12752:48:0;;;:122;;-1:-1:-1;12869:5:0;;12817:48;;;-1:-1:-1;;;12817:48:0;;;;-1:-1:-1;;;;;12869:5:0;;;;-1:-1:-1;;;;;10892:42:0;12817:46;;:48;;;;;;;;;;;;;;10892:42;12817:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12817:57:0;;;12752:122;12751:162;;;;-1:-1:-1;12906:7:0;;-1:-1:-1;;;;;12906:7:0;12892:10;:21;;12751:162;12747:196;;;12932:11;;-1:-1:-1;;;12932:11:0;;;;;;;;;;;12747:196;16233:17:::1;16253:21;16269:4;16253:15;:21::i;:::-;16233:41:::0;-1:-1:-1;16285:24:0::1;16233:41:::0;16312:17:::1;:10:::0;16325:4:::1;16312:17;:::i;:::-;:32;;;;:::i;:::-;16377:34;::::0;-1:-1:-1;;;16377:34:0;;16405:4:::1;16377:34;::::0;::::1;527:51:1::0;16285:59:0;;-1:-1:-1;16355:19:0::1;::::0;10574:42:::1;::::0;16377:19:::1;::::0;500:18:1;;16377:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16355:56;;16450:14;16428:19;:36;16424:78;;;16488:14;16466:36;;16424:78;16515:39;::::0;-1:-1:-1;;;16515:39:0;;::::1;::::0;::::1;345:25:1::0;;;10574:42:0::1;::::0;16515:18:::1;::::0;318::1;;16515:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16567:54:0::1;::::0;-1:-1:-1;;;16567:54:0;;-1:-1:-1;;;;;;;;;;;16567:54:0::1;::::0;::::1;4591:51:1::0;4658:18;;;4651:34;;;10665:42:0::1;::::0;-1:-1:-1;16567:16:0::1;::::0;-1:-1:-1;4564:18:1;;16567:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16669:117:0::1;::::0;-1:-1:-1;;;16669:117:0;;-1:-1:-1;;;;;;;;;;;16669:117:0::1;::::0;::::1;5463:34:1::0;-1:-1:-1;;;;;;;;;;;5513:18:1;;;5506:43;16722:4:0::1;5565:18:1::0;;;5558:50;5624:18;;;5617:34;;;16633:15:0::1;5667:19:1::0;;;5660:35;;;5711:19;;;5704:35;;;16763:4:0::1;5755:19:1::0;;;5748:44;16770:15:0::1;5808:19:1::0;;;5801:35;16633:15:0;;;-1:-1:-1;;;;;;;;;;;10983:42:0;16669:22:::1;::::0;5397:19:1;;16669:117:0::1;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16632:154:::0;;-1:-1:-1;16632:154:0;-1:-1:-1;16799:22:0::1;16838:39;10473:4;16632:154:::0;16838:39:::1;:::i;:::-;16824:54;::::0;:10;:54:::1;:::i;:::-;16799:79;;16962:17;10517:6;16922:23;;10517:6;16910:35;;;;:::i;:::-;16896:50;::::0;:10;:50:::1;:::i;:::-;:62;;;;:::i;:::-;16895:84;16891:150;;;17003:26;;-1:-1:-1::0;;;17003:26:0::1;;;;;;;;;;;16891:150;-1:-1:-1::0;17060:10:0;-1:-1:-1;;;;;12954:1:0::1;16146:932:::0;;;:::o;22230:217::-;13016:10;-1:-1:-1;;;;;13016:48:0;;;:200;;-1:-1:-1;13134:3:0;;13082:48;;;-1:-1:-1;;;13082:48:0;;;;-1:-1:-1;;;;;13134:3:0;;;;-1:-1:-1;;;;;10892:42:0;13082:46;;:48;;;;;;;;;;;;;;10892:42;13082:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13082:55:0;;;13081:135;;;;-1:-1:-1;13208:8:0;;13156:48;;;-1:-1:-1;;;13156:48:0;;;;-1:-1:-1;;;;;13208:8:0;;;;-1:-1:-1;;;;;10892:42:0;13156:46;;:48;;;;;;;;;;;;;;10892:42;13156:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13156:60:0;;;13081:135;13011:244;;;13236:19;;-1:-1:-1;;;13236:19:0;;;;;;;;;;;13011:244;22350:5:::1;22330:17;:25;22326:58;;;22364:20;;-1:-1:-1::0;;;22364:20:0::1;;;;;;;;;;;22326:58;22395:24;:44:::0;22230:217::o;20015:382::-;12752:10;-1:-1:-1;;;;;12752:48:0;;;:122;;-1:-1:-1;12869:5:0;;12817:48;;;-1:-1:-1;;;12817:48:0;;;;-1:-1:-1;;;;;12869:5:0;;;;-1:-1:-1;;;;;10892:42:0;12817:46;;:48;;;;;;;;;;;;;;10892:42;12817:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12817:57:0;;;12752:122;12751:162;;;;-1:-1:-1;12906:7:0;;-1:-1:-1;;;;;12906:7:0;12892:10;:21;;12751:162;12747:196;;;12932:11;;-1:-1:-1;;;12932:11:0;;;;;;;;;;;12747:196;20085:11:::1;10473:4;10517:6;20125:24;;10517:6;20113:36;;;;:::i;:::-;20099:51;::::0;:10;:51:::1;:::i;:::-;:63;;;;:::i;:::-;:92;;;;:::i;:::-;20212:41;::::0;-1:-1:-1;;;20212:41:0;;-1:-1:-1;;;;;;;;;;;20212:41:0::1;::::0;::::1;4591:51:1::0;4658:18;;;4651:34;;;20085:106:0;;-1:-1:-1;;;;;;;;;;;;11070:42:0;20212:12:::1;::::0;4564:18:1;;20212:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;20264:125:0::1;::::0;-1:-1:-1;;;20264:125:0;;-1:-1:-1;;;;;;;;;;;10983:42:0;20264:37:::1;::::0;:125:::1;::::0;20302:10;;20314:6;;-1:-1:-1;;;;;;;;;;;11070:42:0;-1:-1:-1;;;;;;;;;;;11157:42:0;20352:4:::1;::::0;20366::::1;::::0;20373:15:::1;::::0;20264:125:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;20264:125:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;20073:324;20015:382:::0;:::o;24475:99::-;12308:10;-1:-1:-1;;;;;12308:48:0;;;:120;;-1:-1:-1;12425:3:0;;12373:48;;;-1:-1:-1;;;12373:48:0;;;;-1:-1:-1;;;;;12425:3:0;;;;-1:-1:-1;;;;;10892:42:0;12373:46;;:48;;;;;;;;;;;;;;10892:42;12373:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12373:55:0;;;12308:120;12304:152;;;12447:9;;-1:-1:-1;;;12447:9:0;;;;;;;;;;;12304:152;24546:8:::1;:20:::0;;-1:-1:-1;;;;;;24546:20:0::1;-1:-1:-1::0;;;;;24546:20:0;;;::::1;::::0;;;::::1;::::0;;24475:99::o;19497:373::-;12752:10;-1:-1:-1;;;;;12752:48:0;;;:122;;-1:-1:-1;12869:5:0;;12817:48;;;-1:-1:-1;;;12817:48:0;;;;-1:-1:-1;;;;;12869:5:0;;;;-1:-1:-1;;;;;10892:42:0;12817:46;;:48;;;;;;;;;;;;;;10892:42;12817:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12817:57:0;;;12752:122;12751:162;;;;-1:-1:-1;12906:7:0;;-1:-1:-1;;;;;12906:7:0;12892:10;:21;;12751:162;12747:196;;;12932:11;;-1:-1:-1;;;12932:11:0;;;;;;;;;;;12747:196;19566:11:::1;10473:4;10517:6;19606:24;;10517:6;19594:36;;;;:::i;:::-;19580:51;::::0;:10;:51:::1;:::i;:::-;:63;;;;:::i;:::-;:92;;;;:::i;:::-;19685:41;::::0;-1:-1:-1;;;19685:41:0;;-1:-1:-1;;;;;;;;;;;19685:41:0::1;::::0;::::1;4591:51:1::0;4658:18;;;4651:34;;;19566:106:0;;-1:-1:-1;;;;;;;;;;;;11157:42:0;19685:12:::1;::::0;4564:18:1;;19685:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19737:125:0::1;::::0;-1:-1:-1;;;19737:125:0;;-1:-1:-1;;;;;;;;;;;10983:42:0;19737:37:::1;::::0;:125:::1;::::0;19775:10;;19787:6;;-1:-1:-1;;;;;;;;;;;11157:42:0;-1:-1:-1;;;;;;;;;;;11070:42:0;19825:4:::1;::::0;19839::::1;::::0;19846:15:::1;::::0;19737:125:::1;;;:::i;23399:113::-:0;12525:10;-1:-1:-1;;;;;12525:48:0;;;:127;;-1:-1:-1;12642:10:0;;12590:48;;;-1:-1:-1;;;12590:48:0;;;;-1:-1:-1;;;;;12642:10:0;;;;-1:-1:-1;;;;;10892:42:0;12590:46;;:48;;;;;;;;;;;;;;10892:42;12590:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12590:62:0;;;12525:127;12521:166;;;12671:16;;-1:-1:-1;;;12671:16:0;;;;;;;;;;;12521:166;23460:10:::1;::::0;;23454:3:::1;:16:::0;;-1:-1:-1;;;;;;23454:16:0;;::::1;-1:-1:-1::0;;;;;23460:10:0;::::1;23454:16;::::0;;;23481:23:::1;::::0;;23399:113::o;21403:180::-;12752:10;-1:-1:-1;;;;;12752:48:0;;;:122;;-1:-1:-1;12869:5:0;;12817:48;;;-1:-1:-1;;;12817:48:0;;;;-1:-1:-1;;;;;12869:5:0;;;;-1:-1:-1;;;;;10892:42:0;12817:46;;:48;;;;;;;;;;;;;;10892:42;12817:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12817:57:0;;;12752:122;12751:162;;;;-1:-1:-1;12906:7:0;;-1:-1:-1;;;;;12906:7:0;12892:10;:21;;12751:162;12747:196;;;12932:11;;-1:-1:-1;;;12932:11:0;;;;;;;;;;;12747:196;21469:7:::1;::::0;-1:-1:-1;;;;;21469:7:0::1;21455:10;:21:::0;21451:125:::1;;21493:7;:20:::0;;-1:-1:-1;;;;;;21493:20:0::1;::::0;;21403:180::o;21451:125::-:1;21562:1;21546:18:::0;;-1:-1:-1;;;;;;21546:18:0::1;::::0;;21451:125:::1;21403:180::o:0;17789:229::-;12752:10;-1:-1:-1;;;;;12752:48:0;;;:122;;-1:-1:-1;12869:5:0;;12817:48;;;-1:-1:-1;;;12817:48:0;;;;-1:-1:-1;;;;;12869:5:0;;;;-1:-1:-1;;;;;10892:42:0;12817:46;;:48;;;;;;;;;;;;;;10892:42;12817:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12817:57:0;;;12752:122;12751:162;;;;-1:-1:-1;12906:7:0;;-1:-1:-1;;;;;12906:7:0;12892:10;:21;;12751:162;12747:196;;;12932:11;;-1:-1:-1;;;12932:11:0;;;;;;;;;;;12747:196;17882:29:::1;::::0;-1:-1:-1;;;17882:29:0;;17905:4:::1;17882:29;::::0;::::1;527:51:1::0;-1:-1:-1;;;;;;;;;;;11070:42:0;17882:14:::1;::::0;500:18:1;;17882:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17869:10;:42;17865:72;;;17920:17;;-1:-1:-1::0;;;17920:17:0::1;;;;;;;;;;;17865:72;17950:6;::::0;17983:7:::1;::::0;17950:60:::1;::::0;-1:-1:-1;;;17950:60:0;;-1:-1:-1;;;;;17950:6:0;;::::1;::::0;:17:::1;::::0;:60:::1;::::0;-1:-1:-1;;;;;;;;;;;11070:42:0;17983:7;;::::1;::::0;17992:10;;17950:6:::1;::::0;:60:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17789:229:::0;:::o;22715:215::-;13016:10;-1:-1:-1;;;;;13016:48:0;;;:200;;-1:-1:-1;13134:3:0;;13082:48;;;-1:-1:-1;;;13082:48:0;;;;-1:-1:-1;;;;;13134:3:0;;;;-1:-1:-1;;;;;10892:42:0;13082:46;;:48;;;;;;;;;;;;;;10892:42;13082:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13082:55:0;;;13081:135;;;;-1:-1:-1;13208:8:0;;13156:48;;;-1:-1:-1;;;13156:48:0;;;;-1:-1:-1;;;;;13208:8:0;;;;-1:-1:-1;;;;;10892:42:0;13156:46;;:48;;;;;;;;;;;;;;10892:42;13156:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13156:60:0;;;13081:135;13011:244;;;13236:19;;-1:-1:-1;;;13236:19:0;;;;;;;;;;;13011:244;22834:5:::1;22814:17;:25;22810:58;;;22848:20;;-1:-1:-1::0;;;22848:20:0::1;;;;;;;;;;;22810:58;22879:23;:43:::0;22715:215::o;23689:105::-;12308:10;-1:-1:-1;;;;;12308:48:0;;;:120;;-1:-1:-1;12425:3:0;;12373:48;;;-1:-1:-1;;;12373:48:0;;;;-1:-1:-1;;;;;12425:3:0;;;;-1:-1:-1;;;;;10892:42:0;12373:46;;:48;;;;;;;;;;;;;;10892:42;12373:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12373:55:0;;;12308:120;12304:152;;;12447:9;;-1:-1:-1;;;12447:9:0;;;;;;;;;;;12304:152;23763:8:::1;:23:::0;;-1:-1:-1;;;;;;23763:23:0::1;-1:-1:-1::0;;;;;23763:23:0;;;::::1;::::0;;;::::1;::::0;;23689:105::o;21798:217::-;13016:10;-1:-1:-1;;;;;13016:48:0;;;:200;;-1:-1:-1;13134:3:0;;13082:48;;;-1:-1:-1;;;13082:48:0;;;;-1:-1:-1;;;;;13134:3:0;;;;-1:-1:-1;;;;;10892:42:0;13082:46;;:48;;;;;;;;;;;;;;10892:42;13082:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13082:55:0;;;13081:135;;;;-1:-1:-1;13208:8:0;;13156:48;;;-1:-1:-1;;;13156:48:0;;;;-1:-1:-1;;;;;13208:8:0;;;;-1:-1:-1;;;;;10892:42:0;13156:46;;:48;;;;;;;;;;;;;;10892:42;13156:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13156:60:0;;;13081:135;13011:244;;;13236:19;;-1:-1:-1;;;13236:19:0;;;;;;;;;;;13011:244;21918:5:::1;21898:17;:25;21894:58;;;21932:20;;-1:-1:-1::0;;;21932:20:0::1;;;;;;;;;;;21894:58;21963:24;:44:::0;21798:217::o;24018:93::-;12308:10;-1:-1:-1;;;;;12308:48:0;;;:120;;-1:-1:-1;12425:3:0;;12373:48;;;-1:-1:-1;;;12373:48:0;;;;-1:-1:-1;;;;;12425:3:0;;;;-1:-1:-1;;;;;10892:42:0;12373:46;;:48;;;;;;;;;;;;;;10892:42;12373:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12373:55:0;;;12308:120;12304:152;;;12447:9;;-1:-1:-1;;;12447:9:0;;;;;;;;;;;12304:152;24086:5:::1;:17:::0;;-1:-1:-1;;;;;;24086:17:0::1;-1:-1:-1::0;;;;;24086:17:0;;;::::1;::::0;;;::::1;::::0;;24018:93::o;17405:171::-;17482:15;17500:29;17518:10;17500:17;:29::i;:::-;17482:47;;17542:26;17557:10;17542:14;:26::i;:::-;17471:105;17405:171;:::o;15526:119::-;15576:29;;-1:-1:-1;;;15576:29:0;;15599:4;15576:29;;;527:51:1;15568:69:0;;-1:-1:-1;;;;;;;;;;;11070:42:0;15576:14;;500:18:1;;15576:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15607;;-1:-1:-1;;;15607:29:0;;15630:4;15607:29;;;527:51:1;-1:-1:-1;;;;;;;;;;;11157:42:0;15607:14;;500:18:1;;15607:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18327:400::-;12752:10;-1:-1:-1;;;;;12752:48:0;;;:122;;-1:-1:-1;12869:5:0;;12817:48;;;-1:-1:-1;;;12817:48:0;;;;-1:-1:-1;;;;;12869:5:0;;;;-1:-1:-1;;;;;10892:42:0;12817:46;;:48;;;;;;;;;;;;;;10892:42;12817:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12817:57:0;;;12752:122;12751:162;;;;-1:-1:-1;12906:7:0;;-1:-1:-1;;;;;12906:7:0;12892:10;:21;;12751:162;12747:196;;;12932:11;;-1:-1:-1;;;12932:11:0;;;;;;;;;;;12747:196;18437:29:::1;::::0;-1:-1:-1;;;18437:29:0;;18460:4:::1;18437:29;::::0;::::1;527:51:1::0;-1:-1:-1;;;;;;;;;;;11070:42:0;18437:14:::1;::::0;500:18:1;;18437:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18424:10;:42;18420:72;;;18475:17;;-1:-1:-1::0;;;18475:17:0::1;;;;;;;;;;;18420:72;18520:29;::::0;-1:-1:-1;;;18520:29:0;;18543:4:::1;18520:29;::::0;::::1;527:51:1::0;-1:-1:-1;;;;;;;;;;;11157:42:0;18520:14:::1;::::0;500:18:1;;18520:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18507:10;:42;18503:72;;;18558:17;;-1:-1:-1::0;;;18558:17:0::1;;;;;;;;;;;18503:72;18588:6;::::0;18621:7:::1;::::0;18588:60:::1;::::0;-1:-1:-1;;;18588:60:0;;-1:-1:-1;;;;;18588:6:0;;::::1;::::0;:17:::1;::::0;:60:::1;::::0;-1:-1:-1;;;;;;;;;;;11070:42:0;18621:7;;::::1;::::0;18630:10;;18588:6:::1;::::0;:60:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18659:6:0::1;::::0;18692:7:::1;::::0;18659:60:::1;::::0;-1:-1:-1;;;18659:60:0;;-1:-1:-1;;;;;18659:6:0;;::::1;::::0;-1:-1:-1;18659:17:0::1;::::0;-1:-1:-1;18659:60:0::1;::::0;-1:-1:-1;;;;;;;;;;;11157:42:0;18692:7:::1;::::0;18701:10;;18659:6:::1;::::0;:60:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18327:400:::0;;:::o;14538:876::-;12752:10;-1:-1:-1;;;;;12752:48:0;;;:122;;-1:-1:-1;12869:5:0;;12817:48;;;-1:-1:-1;;;12817:48:0;;;;-1:-1:-1;;;;;12869:5:0;;;;-1:-1:-1;;;;;10892:42:0;12817:46;;:48;;;;;;;;;;;;;;10892:42;12817:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12817:57:0;;;12752:122;12751:162;;;;-1:-1:-1;12906:7:0;;-1:-1:-1;;;;;12906:7:0;12892:10;:21;;12751:162;12747:196;;;12932:11;;-1:-1:-1;;;12932:11:0;;;;;;;;;;;12747:196;14617:17:::1;14637:22;14653:5;14637:15;:22::i;:::-;14672:41;::::0;-1:-1:-1;;;14672:41:0;;-1:-1:-1;;;;;;;;;;;14672:41:0::1;::::0;::::1;4591:51:1::0;4658:18;;;4651:34;;;14617:42:0;;-1:-1:-1;;;;;;;;;;;;11070:42:0;14672:12:::1;::::0;4564:18:1;;14672:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14724:41:0::1;::::0;-1:-1:-1;;;14724:41:0;;-1:-1:-1;;;;;;;;;;;14724:41:0::1;::::0;::::1;4591:51:1::0;4658:18;;;4651:34;;;-1:-1:-1;;;;;;;;;;;11157:42:0;14724:12:::1;::::0;4564:18:1;;14724:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14834:117:0::1;::::0;-1:-1:-1;;;14834:117:0;;-1:-1:-1;;;;;;;;;;;14834:117:0::1;::::0;::::1;9364:34:1::0;-1:-1:-1;;;;;;;;;;;9414:18:1;;;9407:43;14884:4:0::1;9466:18:1::0;;;9459:50;9525:18;;;9518:34;;;9568:19;;;9561:35;;;14777:14:0::1;9612:19:1::0;;;9605:35;;;9656:19;;;9649:35;;;14928:4:0::1;9700:19:1::0;;;9693:44;14935:15:0::1;9753:19:1::0;;;9746:35;14777:14:0;;;;;-1:-1:-1;;;;;;;;;;;10983:42:0;14834:19:::1;::::0;9298::1;;14834:117:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14776:175:::0;;-1:-1:-1;14776:175:0;-1:-1:-1;14776:175:0;-1:-1:-1;14964:19:0::1;14999:38;10473:4;14776:175:::0;14999:38:::1;:::i;:::-;14986:52;::::0;:9;:52:::1;:::i;:::-;14964:74;;15051:21;10517:6;15127:23;;10517:6;15115:35;;;;:::i;:::-;15099:12:::0;15075:21:::1;:14:::0;15092:4:::1;15075:21;:::i;:::-;:36;;;;:::i;:::-;:76;;;;:::i;:::-;:88;;;;:::i;:::-;15051:112;;15197:16;15178;:35;15174:74;;;15222:26;;-1:-1:-1::0;;;15222:26:0::1;;;;;;;;;;;15174:74;15306:33;::::0;-1:-1:-1;;;15306:33:0;;15333:4:::1;15306:33;::::0;::::1;527:51:1::0;10665:42:0::1;::::0;15269:16:::1;::::0;10574:42:::1;::::0;10665;;15306:18:::1;::::0;500::1;;15306:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15269:71;::::0;-1:-1:-1;;;;;;15269:71:0::1;::::0;;;;;;-1:-1:-1;;;;;4609:32:1;;;15269:71:0::1;::::0;::::1;4591:51:1::0;4658:18;;;4651:34;4564:18;;15269:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;15369:33:0::1;::::0;-1:-1:-1;;;15369:33:0;;15396:4:::1;15369:33;::::0;::::1;527:51:1::0;10574:42:0::1;::::0;15351:17:::1;::::0;10665:42:::1;::::0;15369:18:::1;::::0;500::1;;15369:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15351:55;::::0;-1:-1:-1;;;;;;15351:55:0::1;::::0;;;;;;::::1;::::0;::::1;10285:25:1::0;;;;15404:1:0::1;10326:18:1::0;;;10319:34;10258:18;;15351:55:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14606:808;;;;;;14538:876:::0;;:::o;13425:270::-;13497:16;;;13511:1;13497:16;;;;;;;;;13473:21;;13497:16;;;;;;;;;;;-1:-1:-1;13497:16:0;13473:40;;10755:42;13524:4;13529:1;13524:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13524:23:0;;;:7;;;;;;;;;;;:23;13558:40;;-1:-1:-1;;;13558:40:0;;10574:42;;13558:19;;:40;;13586:4;;13593;;13558:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13618:4;13623:1;13618:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13611:24:0;;13636:8;;;;;;;;;-1:-1:-1;;;;;13636:8:0;13653:4;13658:1;13653:7;;;;;;;;:::i;:::-;;;;;;;;;;;13646:40;;-1:-1:-1;;;13646:40:0;;13680:4;13646:40;;;527:51:1;-1:-1:-1;;;;;13646:25:0;;;;;;500:18:1;;13646:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13611:76;;-1:-1:-1;;;;;;13611:76:0;;;;;;;-1:-1:-1;;;;;4609:32:1;;;13611:76:0;;;4591:51:1;4658:18;;;4651:34;4564:18;;13611:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24828:101::-;12308:10;-1:-1:-1;;;;;12308:48:0;;;:120;;-1:-1:-1;12425:3:0;;12373:48;;;-1:-1:-1;;;12373:48:0;;;;-1:-1:-1;;;;;12425:3:0;;;;-1:-1:-1;;;;;10892:42:0;12373:46;;:48;;;;;;;;;;;;;;10892:42;12373:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12373:55:0;;;12308:120;12304:152;;;12447:9;;-1:-1:-1;;;12447:9:0;;;;;;;;;;;12304:152;24900:7:::1;:21:::0;;-1:-1:-1;;;;;;24900:21:0::1;-1:-1:-1::0;;;;;24900:21:0;;;::::1;::::0;;;::::1;::::0;;24828:101::o;19039:313::-;12752:10;-1:-1:-1;;;;;12752:48:0;;;:122;;-1:-1:-1;12869:5:0;;12817:48;;;-1:-1:-1;;;12817:48:0;;;;-1:-1:-1;;;;;12869:5:0;;;;-1:-1:-1;;;;;10892:42:0;12817:46;;:48;;;;;;;;;;;;;;10892:42;12817:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12817:57:0;;;12752:122;12751:162;;;;-1:-1:-1;12906:7:0;;-1:-1:-1;;;;;12906:7:0;12892:10;:21;;12751:162;12747:196;;;12932:11;;-1:-1:-1;;;12932:11:0;;;;;;;;;;;12747:196;19152:40:::1;::::0;-1:-1:-1;;;19152:40:0;;19186:4:::1;19152:40;::::0;::::1;527:51:1::0;-1:-1:-1;;;;;19152:25:0;::::1;::::0;::::1;::::0;500:18:1;;19152:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19143:6;:49;19139:79;;;19201:17;;-1:-1:-1::0;;;19201:17:0::1;;;;;;;;;;;19139:79;19263:6;::::0;19231:48:::1;::::0;-1:-1:-1;;;19231:48:0;;-1:-1:-1;;;;;19263:6:0;;::::1;19231:48;::::0;::::1;4591:51:1::0;4658:18;;;4651:34;;;19231:23:0;;::::1;::::0;::::1;::::0;4564:18:1;;19231:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19290:6:0::1;::::0;:54:::1;::::0;-1:-1:-1;;;19290:54:0;;-1:-1:-1;;;;;19290:6:0;;::::1;::::0;:17:::1;::::0;:54:::1;::::0;19316:7;;19326:2;;19330:6;;19290::::1;::::0;:54:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19039:313:::0;;;:::o;23206:110::-;12308:10;-1:-1:-1;;;;;12308:48:0;;;:120;;-1:-1:-1;12425:3:0;;12373:48;;;-1:-1:-1;;;12373:48:0;;;;-1:-1:-1;;;;;12425:3:0;;;;-1:-1:-1;;;;;10892:42:0;12373:46;;:48;;;;;;;;;;;;;;10892:42;12373:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12373:55:0;;;12308:120;12304:152;;;12447:9;;-1:-1:-1;;;12447:9:0;;;;;;;;;;;12304:152;23281:10:::1;:27:::0;;-1:-1:-1;;;;;;23281:27:0::1;-1:-1:-1::0;;;;;23281:27:0;;;::::1;::::0;;;::::1;::::0;;23206:110::o;13895:284::-;12752:10;-1:-1:-1;;;;;12752:48:0;;;:122;;-1:-1:-1;12869:5:0;;12817:48;;;-1:-1:-1;;;12817:48:0;;;;-1:-1:-1;;;;;12869:5:0;;;;-1:-1:-1;;;;;10892:42:0;12817:46;;:48;;;;;;;;;;;;;;10892:42;12817:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12817:57:0;;;12752:122;12751:162;;;;-1:-1:-1;12906:7:0;;-1:-1:-1;;;;;12906:7:0;12892:10;:21;;12751:162;12747:196;;;12932:11;;-1:-1:-1;;;12932:11:0;;;;;;;;;;;12747:196;13973:41:::1;::::0;-1:-1:-1;;;13973:41:0;;10574:42:::1;::::0;13973:19:::1;::::0;:41:::1;::::0;14001:4:::1;::::0;14008:5;;;;13973:41:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14032:6;14027:145;14044:16:::0;;::::1;14027:145;;;14089:5;;14095:1;14089:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14108;::::0;-1:-1:-1;;;;;14082:25:0;;::::1;::::0;::::1;::::0;14108:8:::1;14125:5:::0;;14131:1;14125:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14118:41;::::0;-1:-1:-1;;;14118:41:0;;14153:4:::1;14118:41;::::0;::::1;527:51:1::0;-1:-1:-1;;;;;14118:26:0;;;::::1;::::0;::::1;::::0;500:18:1;;14118:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14082:78;::::0;-1:-1:-1;;;;;;14082:78:0::1;::::0;;;;;;-1:-1:-1;;;;;4609:32:1;;;14082:78:0::1;::::0;::::1;4591:51:1::0;4658:18;;;4651:34;4564:18;;14082:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14062:3:0;::::1;::::0;::::1;:::i;:::-;;;;14027:145;;24243:101:::0;12308:10;-1:-1:-1;;;;;12308:48:0;;;:120;;-1:-1:-1;12425:3:0;;12373:48;;;-1:-1:-1;;;12373:48:0;;;;-1:-1:-1;;;;;12425:3:0;;;;-1:-1:-1;;;;;10892:42:0;12373:46;;:48;;;;;;;;;;;;;;10892:42;12373:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12373:55:0;;;12308:120;12304:152;;;12447:9;;-1:-1:-1;;;12447:9:0;;;;;;;;;;;12304:152;24315:7:::1;:21:::0;;-1:-1:-1;;;;;;24315:21:0::1;-1:-1:-1::0;;;;;24315:21:0;;;::::1;::::0;;;::::1;::::0;;24243:101::o;20510:809::-;20638:76;;-1:-1:-1;;;20638:76:0;;-1:-1:-1;;;;;;;;;;;20638:76:0;;;12497:34:1;-1:-1:-1;;;;;;;;;;;12547:18:1;;;12540:43;20696:4:0;12599:18:1;;;12592:50;20702:11:0;12658:18:1;;;12651:34;20574:4:0;;;;;;-1:-1:-1;;;;;;;;;;;10983:42:0;20638:27;;12431:19:1;;20638:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20754:66;;-1:-1:-1;;;20754:66:0;;;;;12898:25:1;;;-1:-1:-1;;;;;;;;;;;12977:18:1;;;12970:43;-1:-1:-1;;;;;;;;;;;13029:18:1;;;13022:43;20591:123:0;;-1:-1:-1;20591:123:0;-1:-1:-1;20726:23:0;;-1:-1:-1;;;;;;;;;;;10983:42:0;20754:19;;12871:18:1;;20754:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20860:66:0;;-1:-1:-1;;;20860:66:0;;;;;12898:25:1;;;-1:-1:-1;;;;;;;;;;;12977:18:1;;;12970:43;-1:-1:-1;;;;;;;;;;;13029:18:1;;;13022:43;20725:95:0;;-1:-1:-1;20832:23:0;;-1:-1:-1;;;;;;;;;;;10983:42:0;20860:19;;12871:18:1;;20860:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20831:95:0;-1:-1:-1;20937:48:0;10473:4;20831:95;20937:48;:::i;:::-;;-1:-1:-1;20996:45:0;10473:4;20996:45;;:::i;:::-;;-1:-1:-1;21097:36:0;21115:18;20996:45;21097:36;:::i;:::-;21058;21076:18;21058:15;:36;:::i;:::-;:75;:88;;;;;21137:9;21058:88;21054:258;;;21171:36;21189:18;21171:15;:36;:::i;:::-;21170:45;;21211:4;21170:45;:::i;:::-;21163:52;20510:809;-1:-1:-1;;;;;;20510:809:0:o;21054:258::-;21256:36;21274:18;21256:15;:36;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;589:131::-;-1:-1:-1;;;;;664:31:1;;654:42;;644:70;;710:1;707;700:12;644:70;589:131;:::o;725:247::-;784:6;837:2;825:9;816:7;812:23;808:32;805:52;;;853:1;850;843:12;805:52;892:9;879:23;911:31;936:5;911:31;:::i;:::-;961:5;725:247;-1:-1:-1;;;725:247:1:o;1658:248::-;1726:6;1734;1787:2;1775:9;1766:7;1762:23;1758:32;1755:52;;;1803:1;1800;1793:12;1755:52;-1:-1:-1;;1826:23:1;;;1896:2;1881:18;;;1868:32;;-1:-1:-1;1658:248:1:o;2141:456::-;2218:6;2226;2234;2287:2;2275:9;2266:7;2262:23;2258:32;2255:52;;;2303:1;2300;2293:12;2255:52;2342:9;2329:23;2361:31;2386:5;2361:31;:::i;:::-;2411:5;-1:-1:-1;2468:2:1;2453:18;;2440:32;2481:33;2440:32;2481:33;:::i;:::-;2141:456;;2533:7;;-1:-1:-1;;;2587:2:1;2572:18;;;;2559:32;;2141:456::o;2825:615::-;2911:6;2919;2972:2;2960:9;2951:7;2947:23;2943:32;2940:52;;;2988:1;2985;2978:12;2940:52;3028:9;3015:23;3057:18;3098:2;3090:6;3087:14;3084:34;;;3114:1;3111;3104:12;3084:34;3152:6;3141:9;3137:22;3127:32;;3197:7;3190:4;3186:2;3182:13;3178:27;3168:55;;3219:1;3216;3209:12;3168:55;3259:2;3246:16;3285:2;3277:6;3274:14;3271:34;;;3301:1;3298;3291:12;3271:34;3354:7;3349:2;3339:6;3336:1;3332:14;3328:2;3324:23;3320:32;3317:45;3314:65;;;3375:1;3372;3365:12;3314:65;3406:2;3398:11;;;;;3428:6;;-1:-1:-1;2825:615:1;;-1:-1:-1;;;;2825:615:1:o;3445:251::-;3515:6;3568:2;3556:9;3547:7;3543:23;3539:32;3536:52;;;3584:1;3581;3574:12;3536:52;3616:9;3610:16;3635:31;3660:5;3635:31;:::i;3701:127::-;3762:10;3757:3;3753:20;3750:1;3743:31;3793:4;3790:1;3783:15;3817:4;3814:1;3807:15;3833:168;3906:9;;;3937;;3954:15;;;3948:22;;3934:37;3924:71;;3975:18;;:::i;:::-;3833:168;;;;:::o;4006:217::-;4046:1;4072;4062:132;;4116:10;4111:3;4107:20;4104:1;4097:31;4151:4;4148:1;4141:15;4179:4;4176:1;4169:15;4062:132;-1:-1:-1;4208:9:1;;4006:217::o;4228:184::-;4298:6;4351:2;4339:9;4330:7;4326:23;4322:32;4319:52;;;4367:1;4364;4357:12;4319:52;-1:-1:-1;4390:16:1;;4228:184;-1:-1:-1;4228:184:1:o;4696:164::-;4772:13;;4821;;4814:21;4804:32;;4794:60;;4850:1;4847;4840:12;4865:202;4932:6;4985:2;4973:9;4964:7;4960:23;4956:32;4953:52;;;5001:1;4998;4991:12;4953:52;5024:37;5051:9;5024:37;:::i;5847:245::-;5926:6;5934;5987:2;5975:9;5966:7;5962:23;5958:32;5955:52;;;6003:1;6000;5993:12;5955:52;-1:-1:-1;;6026:16:1;;6082:2;6067:18;;;6061:25;6026:16;;6061:25;;-1:-1:-1;5847:245:1:o;6097:125::-;6162:9;;;6183:10;;;6180:36;;;6196:18;;:::i;6227:128::-;6294:9;;;6315:11;;;6312:37;;;6329:18;;:::i;6360:682::-;6669:25;;;6725:2;6710:18;;6703:34;;;;-1:-1:-1;;;;;6811:15:1;;;6806:2;6791:18;;6784:43;6863:15;;;6858:2;6843:18;;6836:43;6923:14;6916:22;6910:3;6895:19;;6888:51;6976:15;6764:3;6955:19;;6948:44;7023:3;7008:19;;7001:35;6656:3;6641:19;;6360:682::o;7047:127::-;7108:10;7103:3;7099:20;7096:1;7089:31;7139:4;7136:1;7129:15;7163:4;7160:1;7153:15;7179:1105;7274:6;7305:2;7348;7336:9;7327:7;7323:23;7319:32;7316:52;;;7364:1;7361;7354:12;7316:52;7397:9;7391:16;7426:18;7467:2;7459:6;7456:14;7453:34;;;7483:1;7480;7473:12;7453:34;7521:6;7510:9;7506:22;7496:32;;7566:7;7559:4;7555:2;7551:13;7547:27;7537:55;;7588:1;7585;7578:12;7537:55;7617:2;7611:9;7639:2;7635;7632:10;7629:36;;;7645:18;;:::i;:::-;7691:2;7688:1;7684:10;7723:2;7717:9;7786:2;7782:7;7777:2;7773;7769:11;7765:25;7757:6;7753:38;7841:6;7829:10;7826:22;7821:2;7809:10;7806:18;7803:46;7800:72;;;7852:18;;:::i;:::-;7888:2;7881:22;7938:18;;;7972:15;;;;-1:-1:-1;8014:11:1;;;8010:20;;;8042:19;;;8039:39;;;8074:1;8071;8064:12;8039:39;8098:11;;;;8118:135;8134:6;8129:3;8126:15;8118:135;;;8200:10;;8188:23;;8151:12;;;;8231;;;;8118:135;;;8272:6;7179:1105;-1:-1:-1;;;;;;;;7179:1105:1:o;8289:651::-;-1:-1:-1;;;;;8647:15:1;;;8629:34;;8699:15;;;;8694:2;8679:18;;8672:43;8746:2;8731:18;;8724:34;8806:10;8794:23;;;8789:2;8774:18;;8767:51;8609:3;8849;8834:19;;8827:32;;;-1:-1:-1;8875:19:1;;;8868:30;8930:3;8915:19;;8289:651::o;9792:306::-;9880:6;9888;9896;9949:2;9937:9;9928:7;9924:23;9920:32;9917:52;;;9965:1;9962;9955:12;9917:52;9994:9;9988:16;9978:26;;10044:2;10033:9;10029:18;10023:25;10013:35;;10088:2;10077:9;10073:18;10067:25;10057:35;;9792:306;;;;;:::o;10364:127::-;10425:10;10420:3;10416:20;10413:1;10406:31;10456:4;10453:1;10446:15;10480:4;10477:1;10470:15;10496:759;-1:-1:-1;;;;;10782:15:1;;;10764:34;;10714:2;10817;10835:18;;;10828:30;;;10907:13;;10699:18;;;10929:22;;;10666:4;;11008:15;;;;10736:19;;10817:2;10982;10967:18;;;10666:4;11051:178;11065:6;11062:1;11059:13;11051:178;;;11130:13;;11126:22;;11114:35;;11204:15;;;;11169:12;;;;11087:1;11080:9;11051:178;;;-1:-1:-1;11246:3:1;;10496:759;-1:-1:-1;;;;;;;;10496:759:1:o;11260:806::-;-1:-1:-1;;;;;11556:15:1;;;11538:34;;11488:2;11591;11609:18;;;11602:30;;;11473:18;;;11667:22;;;11440:4;;11746:6;;11720:2;11705:18;;11440:4;11780:260;11794:6;11791:1;11788:13;11780:260;;;11869:6;11856:20;11889:31;11914:5;11889:31;:::i;:::-;11945:14;;11933:27;;12015:15;;;;11980:12;;;;11816:1;11809:9;11780:260;;;-1:-1:-1;12057:3:1;11260:806;-1:-1:-1;;;;;;;;11260:806:1:o;12071:135::-;12110:3;12131:17;;;12128:43;;12151:18;;:::i;:::-;-1:-1:-1;12198:1:1;12187:13;;12071:135::o;13076:263::-;13152:6;13160;13213:2;13201:9;13192:7;13188:23;13184:32;13181:52;;;13229:1;13226;13219:12;13181:52;13258:9;13252:16;13242:26;;13287:46;13329:2;13318:9;13314:18;13287:46;:::i;:::-;13277:56;;13076:263;;;;;:::o
Swarm Source
ipfs://f2a33283cd1cb41509d9cf67109cee950e7a0c218f9d32dcbd2013372d1d2805
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.