ETH Price: $2,215.91 (-0.94%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Set Rates444289762026-04-08 11:21:393 days ago1775647299IN
0x5798A5E3...60E008044
0 ETH0.000000180.006
Set Rates444288972026-04-08 11:19:013 days ago1775647141IN
0x5798A5E3...60E008044
0 ETH0.000000180.006
Set Rates444286172026-04-08 11:09:413 days ago1775646581IN
0x5798A5E3...60E008044
0 ETH0.000000170.00555
Set Rates444285492026-04-08 11:07:253 days ago1775646445IN
0x5798A5E3...60E008044
0 ETH0.000000170.00555
Set Rates438264362026-03-25 12:36:5917 days ago1774442219IN
0x5798A5E3...60E008044
0 ETH0.000000180.006
Set Rates436527372026-03-21 12:07:0121 days ago1774094821IN
0x5798A5E3...60E008044
0 ETH0.000000210.00697794
Set Bounds436527252026-03-21 12:06:3721 days ago1774094797IN
0x5798A5E3...60E008044
0 ETH0.000000320.01012555
Set Rates436526932026-03-21 12:05:3321 days ago1774094733IN
0x5798A5E3...60E008044
0 ETH0.000000260.01
Set Rates436201162026-03-20 17:59:3922 days ago1774029579IN
0x5798A5E3...60E008044
0 ETH0.000000310.01
Set Bounds436201022026-03-20 17:59:1122 days ago1774029551IN
0x5798A5E3...60E008044
0 ETH0.000000340.011004
Set Rates436200682026-03-20 17:58:0322 days ago1774029483IN
0x5798A5E3...60E008044
0 ETH0.000000310.01201813
Set Rates436200382026-03-20 17:57:0322 days ago1774029423IN
0x5798A5E3...60E008044
0 ETH0.000000240.009284
Set Rates427120972026-02-27 17:32:2143 days ago1772213541IN
0x5798A5E3...60E008044
0 ETH0.000000630.02019152
Set Rates427093082026-02-27 15:59:2343 days ago1772207963IN
0x5798A5E3...60E008044
0 ETH0.000000350.01134346
Set Vault427090352026-02-27 15:50:1743 days ago1772207417IN
0x5798A5E3...60E008044
0 ETH0.000000370.01217001

Latest 1 internal transaction

Parent Transaction Hash Block From To
427081962026-02-27 15:22:1943 days ago1772205739  Contract Creation0 ETH

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AdaptiveBurnHookV4

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2026-02-27
*/

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.24;

// ============================================================================
// Uniswap V4 Dependencies (Flattened)
// ============================================================================

// Currency Type
type Currency is address;

library CurrencyLibrary {
    Currency public constant ADDRESS_ZERO = Currency.wrap(address(0));

    function unwrap(Currency currency) internal pure returns (address) {
        return Currency.unwrap(currency);
    }

    function isAddressZero(Currency currency) internal pure returns (bool) {
        return Currency.unwrap(currency) == address(0);
    }
}

// BalanceDelta Type
type BalanceDelta is int256;

library BalanceDeltaLibrary {
    function amount0(BalanceDelta balanceDelta) internal pure returns (int128) {
        return int128(int256(BalanceDelta.unwrap(balanceDelta)) >> 128);
    }

    function amount1(BalanceDelta balanceDelta) internal pure returns (int128) {
        return int128(int256(BalanceDelta.unwrap(balanceDelta)));
    }
}

// PoolKey Struct
struct PoolKey {
    Currency currency0;
    Currency currency1;
    uint24 fee;
    int24 tickSpacing;
    address hooks;
}

// PoolId Type
type PoolId is bytes32;

library PoolIdLibrary {
    function toId(PoolKey memory poolKey) internal pure returns (PoolId poolId) {
        assembly {
            poolId := keccak256(poolKey, 0xa0)
        }
    }
}

// IPoolManager Interface
interface IPoolManager {
    struct SwapParams {
        bool zeroForOne;
        int256 amountSpecified;
        uint160 sqrtPriceLimitX96;
    }

    struct ModifyLiquidityParams {
        int24 tickLower;
        int24 tickUpper;
        int256 liquidityDelta;
        bytes32 salt;
    }

    function take(Currency currency, address to, uint256 amount) external;
    function settle() external payable returns (uint256);
    function mint(address to, uint256 id, uint256 amount) external;
    function burn(address from, uint256 id, uint256 amount) external;
}

// Hooks Library
library Hooks {
    struct Permissions {
        bool beforeInitialize;
        bool afterInitialize;
        bool beforeAddLiquidity;
        bool afterAddLiquidity;
        bool beforeRemoveLiquidity;
        bool afterRemoveLiquidity;
        bool beforeSwap;
        bool afterSwap;
        bool beforeDonate;
        bool afterDonate;
        bool beforeSwapReturnDelta;
        bool afterSwapReturnDelta;
        bool afterAddLiquidityReturnDelta;
        bool afterRemoveLiquidityReturnDelta;
    }

    uint160 internal constant ALL_HOOK_MASK = uint160((1 << 14) - 1);

    uint160 internal constant BEFORE_INITIALIZE_FLAG = 1 << 13;
    uint160 internal constant AFTER_INITIALIZE_FLAG = 1 << 12;
    uint160 internal constant BEFORE_ADD_LIQUIDITY_FLAG = 1 << 11;
    uint160 internal constant AFTER_ADD_LIQUIDITY_FLAG = 1 << 10;
    uint160 internal constant BEFORE_REMOVE_LIQUIDITY_FLAG = 1 << 9;
    uint160 internal constant AFTER_REMOVE_LIQUIDITY_FLAG = 1 << 8;
    uint160 internal constant BEFORE_SWAP_FLAG = 1 << 7;
    uint160 internal constant AFTER_SWAP_FLAG = 1 << 6;
    uint160 internal constant BEFORE_DONATE_FLAG = 1 << 5;
    uint160 internal constant AFTER_DONATE_FLAG = 1 << 4;
    uint160 internal constant BEFORE_SWAP_RETURNS_DELTA_FLAG = 1 << 3;
    uint160 internal constant AFTER_SWAP_RETURNS_DELTA_FLAG = 1 << 2;
    uint160 internal constant AFTER_ADD_LIQUIDITY_RETURNS_DELTA_FLAG = 1 << 1;
    uint160 internal constant AFTER_REMOVE_LIQUIDITY_RETURNS_DELTA_FLAG = 1 << 0;

    function validateHookPermissions(address hookAddress, Permissions memory permissions) internal pure {
        uint160 addressFlags = uint160(hookAddress) & ALL_HOOK_MASK;
        uint160 expectedFlags = permissionsToFlags(permissions);
        require(addressFlags == expectedFlags, "Hook address flags mismatch");
    }

    function permissionsToFlags(Permissions memory permissions) internal pure returns (uint160) {
        uint160 flags = 0;
        if (permissions.beforeInitialize) flags |= BEFORE_INITIALIZE_FLAG;
        if (permissions.afterInitialize) flags |= AFTER_INITIALIZE_FLAG;
        if (permissions.beforeAddLiquidity) flags |= BEFORE_ADD_LIQUIDITY_FLAG;
        if (permissions.afterAddLiquidity) flags |= AFTER_ADD_LIQUIDITY_FLAG;
        if (permissions.beforeRemoveLiquidity) flags |= BEFORE_REMOVE_LIQUIDITY_FLAG;
        if (permissions.afterRemoveLiquidity) flags |= AFTER_REMOVE_LIQUIDITY_FLAG;
        if (permissions.beforeSwap) flags |= BEFORE_SWAP_FLAG;
        if (permissions.afterSwap) flags |= AFTER_SWAP_FLAG;
        if (permissions.beforeDonate) flags |= BEFORE_DONATE_FLAG;
        if (permissions.afterDonate) flags |= AFTER_DONATE_FLAG;
        if (permissions.beforeSwapReturnDelta) flags |= BEFORE_SWAP_RETURNS_DELTA_FLAG;
        if (permissions.afterSwapReturnDelta) flags |= AFTER_SWAP_RETURNS_DELTA_FLAG;
        if (permissions.afterAddLiquidityReturnDelta) flags |= AFTER_ADD_LIQUIDITY_RETURNS_DELTA_FLAG;
        if (permissions.afterRemoveLiquidityReturnDelta) flags |= AFTER_REMOVE_LIQUIDITY_RETURNS_DELTA_FLAG;
        return flags;
    }
}

// BeforeSwapDelta Type
type BeforeSwapDelta is int256;

library BeforeSwapDeltaLibrary {
    BeforeSwapDelta public constant ZERO_DELTA = BeforeSwapDelta.wrap(0);
}

// IHooks Interface
interface IHooks {
    function beforeInitialize(address sender, PoolKey calldata key, uint160 sqrtPriceX96)
        external returns (bytes4);

    function afterInitialize(address sender, PoolKey calldata key, uint160 sqrtPriceX96, int24 tick)
        external returns (bytes4);

    function beforeAddLiquidity(
        address sender,
        PoolKey calldata key,
        IPoolManager.ModifyLiquidityParams calldata params,
        bytes calldata hookData
    ) external returns (bytes4);

    function afterAddLiquidity(
        address sender,
        PoolKey calldata key,
        IPoolManager.ModifyLiquidityParams calldata params,
        BalanceDelta delta,
        BalanceDelta feesAccrued,
        bytes calldata hookData
    ) external returns (bytes4, BalanceDelta);

    function beforeRemoveLiquidity(
        address sender,
        PoolKey calldata key,
        IPoolManager.ModifyLiquidityParams calldata params,
        bytes calldata hookData
    ) external returns (bytes4);

    function afterRemoveLiquidity(
        address sender,
        PoolKey calldata key,
        IPoolManager.ModifyLiquidityParams calldata params,
        BalanceDelta delta,
        BalanceDelta feesAccrued,
        bytes calldata hookData
    ) external returns (bytes4, BalanceDelta);

    function beforeSwap(
        address sender,
        PoolKey calldata key,
        IPoolManager.SwapParams calldata params,
        bytes calldata hookData
    ) external returns (bytes4, BeforeSwapDelta, uint24);

    function afterSwap(
        address sender,
        PoolKey calldata key,
        IPoolManager.SwapParams calldata params,
        BalanceDelta delta,
        bytes calldata hookData
    ) external returns (bytes4, int128);

    function beforeDonate(
        address sender,
        PoolKey calldata key,
        uint256 amount0,
        uint256 amount1,
        bytes calldata hookData
    ) external returns (bytes4);

    function afterDonate(
        address sender,
        PoolKey calldata key,
        uint256 amount0,
        uint256 amount1,
        bytes calldata hookData
    ) external returns (bytes4);
}

// BaseHook Abstract Contract
abstract contract BaseHook is IHooks {
    IPoolManager public immutable poolManager;

    error NotPoolManager();
    error HookNotImplemented();

    modifier onlyPoolManager() {
        if (msg.sender != address(poolManager)) revert NotPoolManager();
        _;
    }

    constructor(IPoolManager _poolManager) {
        poolManager = _poolManager;
        Hooks.validateHookPermissions(address(this), getHookPermissions());
    }

    function getHookPermissions() public pure virtual returns (Hooks.Permissions memory);

    // Default implementations - override as needed
    function beforeInitialize(address, PoolKey calldata, uint160) external virtual returns (bytes4) {
        revert HookNotImplemented();
    }

    function afterInitialize(address, PoolKey calldata, uint160, int24) external virtual returns (bytes4) {
        revert HookNotImplemented();
    }

    function beforeAddLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, bytes calldata)
        external virtual returns (bytes4) {
        revert HookNotImplemented();
    }

    function afterAddLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, BalanceDelta, BalanceDelta, bytes calldata)
        external virtual returns (bytes4, BalanceDelta) {
        revert HookNotImplemented();
    }

    function beforeRemoveLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, bytes calldata)
        external virtual returns (bytes4) {
        revert HookNotImplemented();
    }

    function afterRemoveLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, BalanceDelta, BalanceDelta, bytes calldata)
        external virtual returns (bytes4, BalanceDelta) {
        revert HookNotImplemented();
    }

    function beforeSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, bytes calldata)
        external virtual onlyPoolManager returns (bytes4, BeforeSwapDelta, uint24) {
        revert HookNotImplemented();
    }

    function afterSwap(address sender, PoolKey calldata key, IPoolManager.SwapParams calldata params, BalanceDelta delta, bytes calldata hookData)
        external virtual onlyPoolManager returns (bytes4, int128) {
        return _afterSwap(sender, key, params, delta, hookData);
    }

    function beforeDonate(address, PoolKey calldata, uint256, uint256, bytes calldata)
        external virtual returns (bytes4) {
        revert HookNotImplemented();
    }

    function afterDonate(address, PoolKey calldata, uint256, uint256, bytes calldata)
        external virtual returns (bytes4) {
        revert HookNotImplemented();
    }

    function _afterSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, BalanceDelta, bytes calldata)
        internal virtual returns (bytes4, int128) {
        revert HookNotImplemented();
    }
}

// ============================================================================
// AdaptiveBurnHook V4
// Uniswap V4 hook implementing automatic token burns on swaps.
// Hook address must end in 0x44 (afterSwap + afterSwapReturnDelta flags)
// ============================================================================

interface IPrimerToken {
    function burn(uint256 amount) external;
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
}

interface IBuybackVault {
    function deposit() external payable;
}

/// @title AdaptiveBurnHookV4
/// @notice Uniswap V4 hook that burns PR on buys and captures ETH on sells
/// @dev Requires hook address ending in 0x44
contract AdaptiveBurnHookV4 is BaseHook {
    using CurrencyLibrary for Currency;
    using BalanceDeltaLibrary for BalanceDelta;

    uint256 private constant BPS_DENOMINATOR = 10000;
    uint256 public constant ABSOLUTE_MAX_BPS = 500;

    IPrimerToken public immutable prToken;
    Currency public immutable prCurrency;
    Currency public immutable ethCurrency;

    address public owner;
    address public operator;
    address public vault;

    uint16 public buyBurnBps;
    uint16 public sellBurnBps;

    uint16 public minBuyBps;
    uint16 public maxBuyBps;
    uint16 public minSellBps;
    uint16 public maxSellBps;

    bool public paused;
    uint256 public totalBurned;
    uint256 public totalCapturedEth;

    event RatesUpdated(uint16 buyBps, uint16 sellBps, uint256 timestamp);
    event BoundsUpdated(uint16 minBuy, uint16 maxBuy, uint16 minSell, uint16 maxSell);
    event TokensBurned(address indexed swapper, uint256 amount, bool isBuy);
    event EthCaptured(address indexed swapper, uint256 amount);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event OperatorUpdated(address indexed previousOperator, address indexed newOperator);
    event VaultUpdated(address indexed previousVault, address indexed newVault);
    event PauseStateChanged(bool isPaused);

    error Unauthorized();
    error BuyMustNotExceedSell();
    error RateOutOfBounds();
    error ExceedsAbsoluteMax();
    error ZeroAddress();
    error InvalidBounds();
    error VaultNotSet();

    modifier onlyOwner() {
        if (msg.sender != owner) revert Unauthorized();
        _;
    }

    modifier onlyOwnerOrOperator() {
        if (msg.sender != owner && msg.sender != operator) revert Unauthorized();
        _;
    }

    constructor(
        IPoolManager _poolManager,
        address _prToken,
        address _ethCurrency,
        address _vault,
        address _owner,
        uint16 _initialBuyBps,
        uint16 _initialSellBps
    ) BaseHook(_poolManager) {
        if (_prToken == address(0) || _owner == address(0)) revert ZeroAddress();
        if (_initialBuyBps > _initialSellBps) revert BuyMustNotExceedSell();
        if (_initialBuyBps > ABSOLUTE_MAX_BPS || _initialSellBps > ABSOLUTE_MAX_BPS) {
            revert ExceedsAbsoluteMax();
        }

        prToken = IPrimerToken(_prToken);
        prCurrency = Currency.wrap(_prToken);
        ethCurrency = Currency.wrap(_ethCurrency);
        vault = _vault;
        owner = _owner;

        buyBurnBps = _initialBuyBps;
        sellBurnBps = _initialSellBps;

        minBuyBps = 50;
        maxBuyBps = 300;
        minSellBps = 100;
        maxSellBps = 400;

        emit RatesUpdated(_initialBuyBps, _initialSellBps, block.timestamp);
    }

    function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
        return Hooks.Permissions({
            beforeInitialize: false,
            afterInitialize: false,
            beforeAddLiquidity: false,
            afterAddLiquidity: false,
            beforeRemoveLiquidity: false,
            afterRemoveLiquidity: false,
            beforeSwap: false,
            afterSwap: true,
            beforeDonate: false,
            afterDonate: false,
            beforeSwapReturnDelta: false,
            afterSwapReturnDelta: true,
            afterAddLiquidityReturnDelta: false,
            afterRemoveLiquidityReturnDelta: false
        });
    }

    // =========================================================================
    // CORE SWAP LOGIC
    // =========================================================================

    function _afterSwap(
        address sender,
        PoolKey calldata key,
        IPoolManager.SwapParams calldata params,
        BalanceDelta delta,
        bytes calldata
    ) internal override returns (bytes4, int128) {
        if (paused) {
            return (this.afterSwap.selector, 0);
        }

        bool prIsToken0 = Currency.unwrap(key.currency0) == Currency.unwrap(prCurrency);
        bool prInPool = prIsToken0 || Currency.unwrap(key.currency1) == Currency.unwrap(prCurrency);

        if (!prInPool) {
            return (this.afterSwap.selector, 0);
        }

        bool isSell = (prIsToken0 && params.zeroForOne) || (!prIsToken0 && !params.zeroForOne);

        int128 prDelta = prIsToken0 ? delta.amount0() : delta.amount1();
        int128 ethDelta = prIsToken0 ? delta.amount1() : delta.amount0();

        if (isSell) {
            // SELL: User receives ETH (ethDelta > 0), capture portion for vault
            if (ethDelta <= 0 || vault == address(0)) {
                return (this.afterSwap.selector, 0);
            }

            uint256 ethOutput = uint256(uint128(ethDelta));
            uint256 captureAmount = (ethOutput * sellBurnBps) / BPS_DENOMINATOR;

            if (captureAmount == 0) {
                return (this.afterSwap.selector, 0);
            }

            require(captureAmount <= uint128(type(int128).max), "capture too large");

            Currency otherCurrency = prIsToken0 ? key.currency1 : key.currency0;
            poolManager.take(otherCurrency, vault, captureAmount);

            unchecked {
                totalCapturedEth += captureAmount;
            }

            emit EthCaptured(sender, captureAmount);
            return (this.afterSwap.selector, int128(int256(captureAmount)));

        } else {
            // BUY: User receives PR (prDelta > 0), burn portion
            if (prDelta <= 0) {
                return (this.afterSwap.selector, 0);
            }

            uint256 prOutput = uint256(uint128(prDelta));
            uint256 burnAmount = (prOutput * buyBurnBps) / BPS_DENOMINATOR;

            if (burnAmount == 0) {
                return (this.afterSwap.selector, 0);
            }

            require(burnAmount <= uint128(type(int128).max), "burn too large");

            poolManager.take(prCurrency, address(this), burnAmount);
            prToken.burn(burnAmount);

            unchecked {
                totalBurned += burnAmount;
            }

            emit TokensBurned(sender, burnAmount, true);
            return (this.afterSwap.selector, int128(int256(burnAmount)));
        }
    }

    // =========================================================================
    // ADMIN FUNCTIONS
    // =========================================================================

    function setRates(uint16 _buyBps, uint16 _sellBps) external onlyOwnerOrOperator {
        if (_buyBps > _sellBps) revert BuyMustNotExceedSell();
        if (_buyBps < minBuyBps || _buyBps > maxBuyBps) revert RateOutOfBounds();
        if (_sellBps < minSellBps || _sellBps > maxSellBps) revert RateOutOfBounds();

        buyBurnBps = _buyBps;
        sellBurnBps = _sellBps;
        emit RatesUpdated(_buyBps, _sellBps, block.timestamp);
    }

    function setOperator(address _operator) external onlyOwner {
        emit OperatorUpdated(operator, _operator);
        operator = _operator;
    }

    function setVault(address _vault) external onlyOwner {
        emit VaultUpdated(vault, _vault);
        vault = _vault;
    }

    function setBounds(uint16 _minBuy, uint16 _maxBuy, uint16 _minSell, uint16 _maxSell) external onlyOwner {
        if (_maxBuy > ABSOLUTE_MAX_BPS || _maxSell > ABSOLUTE_MAX_BPS) revert ExceedsAbsoluteMax();
        if (_minBuy > _maxBuy || _minSell > _maxSell) revert InvalidBounds();

        minBuyBps = _minBuy;
        maxBuyBps = _maxBuy;
        minSellBps = _minSell;
        maxSellBps = _maxSell;
        emit BoundsUpdated(_minBuy, _maxBuy, _minSell, _maxSell);
    }

    function setPaused(bool _paused) external onlyOwner {
        paused = _paused;
        emit PauseStateChanged(_paused);
    }

    function transferOwnership(address _newOwner) external onlyOwner {
        if (_newOwner == address(0)) revert ZeroAddress();
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }

    // =========================================================================
    // VIEW FUNCTIONS
    // =========================================================================

    function getRates() external view returns (uint16, uint16) {
        return (buyBurnBps, sellBurnBps);
    }

    function getBounds() external view returns (uint16, uint16, uint16, uint16) {
        return (minBuyBps, maxBuyBps, minSellBps, maxSellBps);
    }

    function previewBurn(uint256 amount, bool isBuy) external view returns (uint256) {
        return (amount * (isBuy ? buyBurnBps : sellBurnBps)) / BPS_DENOMINATOR;
    }

    function canUpdateRates(address account) external view returns (bool) {
        return account == owner || account == operator;
    }

    function getStats() external view returns (uint256 burned, uint256 captured) {
        return (totalBurned, totalCapturedEth);
    }

    // =========================================================================
    // RESCUE FUNCTIONS
    // =========================================================================

    function rescueTokens(address token, uint256 amount, address to) external onlyOwner {
        if (token == address(prToken)) {
            prToken.burn(amount);
        } else {
            if (to == address(0)) revert ZeroAddress();
            IPrimerToken(token).transfer(to, amount);
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract IPoolManager","name":"_poolManager","type":"address"},{"internalType":"address","name":"_prToken","type":"address"},{"internalType":"address","name":"_ethCurrency","type":"address"},{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint16","name":"_initialBuyBps","type":"uint16"},{"internalType":"uint16","name":"_initialSellBps","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BuyMustNotExceedSell","type":"error"},{"inputs":[],"name":"ExceedsAbsoluteMax","type":"error"},{"inputs":[],"name":"HookNotImplemented","type":"error"},{"inputs":[],"name":"InvalidBounds","type":"error"},{"inputs":[],"name":"NotPoolManager","type":"error"},{"inputs":[],"name":"RateOutOfBounds","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"VaultNotSet","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"minBuy","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"maxBuy","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"minSell","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"maxSell","type":"uint16"}],"name":"BoundsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"swapper","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthCaptured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"PauseStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"buyBps","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"sellBps","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"RatesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"swapper","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isBuy","type":"bool"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"}],"name":"VaultUpdated","type":"event"},{"inputs":[],"name":"ABSOLUTE_MAX_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct IPoolManager.ModifyLiquidityParams","name":"","type":"tuple"},{"internalType":"BalanceDelta","name":"","type":"int256"},{"internalType":"BalanceDelta","name":"","type":"int256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"afterAddLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BalanceDelta","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"afterDonate","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"},{"internalType":"uint160","name":"","type":"uint160"},{"internalType":"int24","name":"","type":"int24"}],"name":"afterInitialize","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct IPoolManager.ModifyLiquidityParams","name":"","type":"tuple"},{"internalType":"BalanceDelta","name":"","type":"int256"},{"internalType":"BalanceDelta","name":"","type":"int256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"afterRemoveLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BalanceDelta","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct IPoolManager.SwapParams","name":"params","type":"tuple"},{"internalType":"BalanceDelta","name":"delta","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"afterSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct IPoolManager.ModifyLiquidityParams","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"beforeAddLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"beforeDonate","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"},{"internalType":"uint160","name":"","type":"uint160"}],"name":"beforeInitialize","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct IPoolManager.ModifyLiquidityParams","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"beforeRemoveLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"address","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"","type":"tuple"},{"components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct IPoolManager.SwapParams","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"beforeSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BeforeSwapDelta","name":"","type":"int256"},{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBurnBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"canUpdateRates","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethCurrency","outputs":[{"internalType":"Currency","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBounds","outputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHookPermissions","outputs":[{"components":[{"internalType":"bool","name":"beforeInitialize","type":"bool"},{"internalType":"bool","name":"afterInitialize","type":"bool"},{"internalType":"bool","name":"beforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"afterAddLiquidity","type":"bool"},{"internalType":"bool","name":"beforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"beforeSwap","type":"bool"},{"internalType":"bool","name":"afterSwap","type":"bool"},{"internalType":"bool","name":"beforeDonate","type":"bool"},{"internalType":"bool","name":"afterDonate","type":"bool"},{"internalType":"bool","name":"beforeSwapReturnDelta","type":"bool"},{"internalType":"bool","name":"afterSwapReturnDelta","type":"bool"},{"internalType":"bool","name":"afterAddLiquidityReturnDelta","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidityReturnDelta","type":"bool"}],"internalType":"struct Hooks.Permissions","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getRates","outputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStats","outputs":[{"internalType":"uint256","name":"burned","type":"uint256"},{"internalType":"uint256","name":"captured","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBuyBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSellBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prCurrency","outputs":[{"internalType":"Currency","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prToken","outputs":[{"internalType":"contract IPrimerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"name":"previewBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_minBuy","type":"uint16"},{"internalType":"uint16","name":"_maxBuy","type":"uint16"},{"internalType":"uint16","name":"_minSell","type":"uint16"},{"internalType":"uint16","name":"_maxSell","type":"uint16"}],"name":"setBounds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_buyBps","type":"uint16"},{"internalType":"uint16","name":"_sellBps","type":"uint16"}],"name":"setRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCapturedEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

61010060405234801562000011575f80fd5b506040516200203938038062002039833981016040819052620000349162000446565b6001600160a01b0387166080528662000135306200012f604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c08101829052600160e0820181905261010082018390526101208201839052610140820183905261016082015261018081018290526101a081019190915290565b620002b3565b506001600160a01b03861615806200015457506001600160a01b038316155b15620001735760405163d92e233d60e01b815260040160405180910390fd5b8061ffff168261ffff1611156200019d576040516378c5623560e01b815260040160405180910390fd5b6101f48261ffff161180620001b757506101f48161ffff16115b15620001d65760405163f2c8ebdb60e01b815260040160405180910390fd5b6001600160a01b0386811660a081905260c05285811660e052600280545f80546001600160a01b0319168785161790559186166001600160b01b031990921691909117600160a01b61ffff8581169182029290921763ffffffff60b01b1916600160b01b92851692830261ffff60c01b191617601960c11b176001600160d01b031664640019004b60d21b1790925560408051928352602083019190915242908201527f59f5b5d0be96f1a5b9b82414d4babf5c04060413a6b968fa5d5df1f2524ddeea9060600160405180910390a150505050505050620004e4565b613fff82165f620002c48362000332565b9050806001600160a01b0316826001600160a01b0316146200032c5760405162461bcd60e51b815260206004820152601b60248201527f486f6f6b206164647265737320666c616773206d69736d617463680000000000604482015260640160405180910390fd5b50505050565b80515f908190156200034357612000175b8260200151156200035357611000175b8260400151156200036357610800175b8260600151156200037357610400175b8260800151156200038357610200175b8260a00151156200039357610100175b8260c0015115620003a2576080175b8260e0015115620003b1576040175b82610100015115620003c1576020175b82610120015115620003d1576010175b82610140015115620003e1576008175b82610160015115620003f1576004175b8261018001511562000401576002175b826101a001511562000411576001175b92915050565b6001600160a01b03811681146200042c575f80fd5b50565b805161ffff8116811462000441575f80fd5b919050565b5f805f805f805f60e0888a0312156200045d575f80fd5b87516200046a8162000417565b60208901519097506200047d8162000417565b6040890151909650620004908162000417565b6060890151909550620004a38162000417565b6080890151909450620004b68162000417565b9250620004c660a089016200042f565b9150620004d660c089016200042f565b905092959891949750929550565b60805160a05160c05160e051611adb6200055e5f395f61029f01525f818161030a01528181610f4801528181610f93015261133201525f818161048401528181610bc101528181610c0e01526113d201525f81816106920152818161095101528181610da00152818161119901526113670152611adb5ff3fe608060405234801561000f575f80fd5b506004361061023f575f3560e01c80638da5cb5b11610135578063d89135cd116100b4578063f2fde38b11610079578063f2fde38b146106d7578063f57dbbb5146106ea578063f84b2d8f146106fd578063fa7fa19814610710578063fbfa77cf14610725575f80fd5b8063d89135cd14610684578063dc4c90d31461068d578063dc98354e146106b4578063dfb3f51a146106c2578063e1b4af6914610552575f80fd5b8063b47b2fb1116100fa578063b47b2fb11461051c578063b6a8b0fa14610552578063bf1be3ac14610560578063c4e833ce14610575578063c59d484714610669575f80fd5b80638da5cb5b146104b95780639accab55146104cb5780639f063efc1461043e578063b37fd190146104f6578063b3ab15fb14610509575f80fd5b806356c4854b116101c15780636817031b116101865780636817031b1461042b5780636c2bbe7e1461043e5780636fe7e6eb14610471578063891ca6a61461047f578063893f3b47146104a6575f80fd5b806356c4854b146103a1578063570ca735146103b4578063575e24b4146103c75780635c975abb1461040557806365f5f1a214610422575f80fd5b8063259982e511610207578063259982e5146102d957806327fa9ceb1461030557806339d7dda21461032c5780633b8f954b146103435780633cc87a2014610358575f80fd5b80630a971dbf146102435780630e1c5d5c1461027057806316c38b3c146102855780631f34dab91461029a57806321d0ee70146102d9575b5f80fd5b60025461025890600160f01b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b60025461025890600160e01b900461ffff1681565b6102986102933660046114b9565b610738565b005b6102c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610267565b6102ec6102e736600461155a565b6107a8565b6040516001600160e01b03199091168152602001610267565b6102c17f000000000000000000000000000000000000000000000000000000000000000081565b61033560055481565b604051908152602001610267565b60025461025890600160c01b900461ffff1681565b6002546040805161ffff600160c01b840481168252600160d01b840481166020830152600160e01b8404811692820192909252600160f01b909204166060820152608001610267565b6102986103af3660046115e7565b6107c2565b6001546102c1906001600160a01b031681565b6103da6103d5366004611628565b610943565b604080516001600160e01b03199094168452602084019290925262ffffff1690820152606001610267565b6003546104129060ff1681565b6040519015158152602001610267565b6103356101f481565b610298610439366004611682565b6109a8565b61045161044c36600461169d565b610a2c565b604080516001600160e01b03199093168352602083019190915201610267565b6102ec6102e7366004611728565b6102c17f000000000000000000000000000000000000000000000000000000000000000081565b6102986104b4366004611787565b610a47565b5f546102c1906001600160a01b031681565b6002546040805161ffff600160a01b840481168252600160b01b909304909216602083015201610267565b6102986105043660046117d8565b610b96565b610298610517366004611682565b610d0f565b61052f61052a366004611817565b610d93565b604080516001600160e01b03199093168352600f9190910b602083015201610267565b6102ec6102e7366004611898565b60025461025890600160b01b900461ffff1681565b61065c604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c08101829052600160e0820181905261010082018390526101208201839052610140820183905261016082015261018081018290526101a081019190915290565b60405161026791906118f2565b60045460055460408051928352602083019190915201610267565b61033560045481565b6102c17f000000000000000000000000000000000000000000000000000000000000000081565b6102ec6102e73660046119de565b60025461025890600160d01b900461ffff1681565b6102986106e5366004611682565b610dfc565b6103356106f8366004611a1a565b610ea5565b61041261070b366004611682565b610ef1565b60025461025890600160a01b900461ffff1681565b6002546102c1906001600160a01b031681565b5f546001600160a01b03163314610761576040516282b42960e81b815260040160405180910390fd5b6003805460ff19168215159081179091556040519081527f4543baa938cb97f5073ec206ad35638cdb1f4db8f677d31579b2f6fe7d18c14a9060200160405180910390a150565b5f604051630a85dc2960e01b815260040160405180910390fd5b5f546001600160a01b031633148015906107e757506001546001600160a01b03163314155b15610804576040516282b42960e81b815260040160405180910390fd5b8061ffff168261ffff16111561082d576040516378c5623560e01b815260040160405180910390fd5b60025461ffff600160c01b9091048116908316108061085c575060025461ffff600160d01b9091048116908316115b1561087a57604051632e2039ab60e21b815260040160405180910390fd5b60025461ffff600160e01b909104811690821610806108a9575060025461ffff600160f01b9091048116908216115b156108c757604051632e2039ab60e21b815260040160405180910390fd5b6002805463ffffffff60a01b1916600160a01b61ffff85811691820261ffff60b01b191692909217600160b01b9285169283021790925560408051928352602083019190915242908201527f59f5b5d0be96f1a5b9b82414d4babf5c04060413a6b968fa5d5df1f2524ddeea9060600160405180910390a15050565b5f8080336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461098f5760405163570c108560e11b815260040160405180910390fd5b604051630a85dc2960e01b815260040160405180910390fd5b5f546001600160a01b031633146109d1576040516282b42960e81b815260040160405180910390fd5b6002546040516001600160a01b038084169216907f483bdedaaf23706a9800ac1af0d852b34927780d79f9d6ba60a80c7cad75ea39905f90a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f80604051630a85dc2960e01b815260040160405180910390fd5b5f546001600160a01b03163314610a70576040516282b42960e81b815260040160405180910390fd5b6101f48361ffff161180610a8957506101f48161ffff16115b15610aa75760405163f2c8ebdb60e01b815260040160405180910390fd5b8261ffff168461ffff161180610ac457508061ffff168261ffff16115b15610ae25760405163a883435760e01b815260040160405180910390fd5b6002805463ffffffff60c01b1916600160c01b61ffff87811691820261ffff60d01b191692909217600160d01b878416908102919091176001600160e01b0316600160e01b8785169081026001600160f01b031691909117600160f01b9487169485021790945560408051928352602083019190915281019290925260608201527f7382a72a2b2a6f08ed9f677a4d0ee36943d93658b4111c01c3d22fe7cdd75ea79060800160405180910390a150505050565b5f546001600160a01b03163314610bbf576040516282b42960e81b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610c7257604051630852cd8d60e31b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c68906024015f604051808303815f87803b158015610c57575f80fd5b505af1158015610c69573d5f803e3d5ffd5b50505050505050565b6001600160a01b038116610c995760405163d92e233d60e01b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af1158015610ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d099190611a48565b50505050565b5f546001600160a01b03163314610d38576040516282b42960e81b815260040160405180910390fd5b6001546040516001600160a01b038084169216907ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03905f90a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610dde5760405163570c108560e11b815260040160405180910390fd5b610dec888888888888610f1d565b915091505b965096945050505050565b5f546001600160a01b03163314610e25576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116610e4c5760405163d92e233d60e01b815260040160405180910390fd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61271082610ec157600254600160b01b900461ffff16610ed0565b600254600160a01b900461ffff165b610ede9061ffff1685611a63565b610ee89190611a86565b90505b92915050565b5f80546001600160a01b0383811691161480610eeb5750506001546001600160a01b0390811691161490565b6003545f90819060ff1615610f3d575063b47b2fb160e01b90505f610df1565b5f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610f7560208a018a611682565b6001600160a01b03161490505f8180610fce57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610fc360408b0160208c01611682565b6001600160a01b0316145b905080610fea575063b47b2fb160e01b92505f9150610df19050565b5f828015611000575061100060208a018a6114b9565b8061101e57508215801561101e575061101c60208a018a6114b9565b155b90505f8361102c5788611036565b6110368960801d90565b90505f8461104d576110488a60801d90565b61104f565b895b9050821561125b575f81600f0b13158061107257506002546001600160a01b0316155b1561108f575063b47b2fb160e01b95505f9450610df19350505050565b6002546001600160801b038216905f90612710906110b890600160b01b900461ffff1684611a63565b6110c29190611a86565b9050805f036110e5575063b47b2fb160e01b97505f9650610df195505050505050565b60016001607f1b038111156111355760405162461bcd60e51b81526020600482015260116024820152706361707475726520746f6f206c6172676560781b60448201526064015b60405180910390fd5b5f87611152578e5f01602081019061114d9190611682565b611165565b8e60200160208101906111659190611682565b600254604051630b0d9c0960e01b81526001600160a01b0380841660048301529182166024820152604481018590529192507f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b1580156111da575f80fd5b505af11580156111ec573d5f803e3d5ffd5b505050508160055f82825401925050819055508f6001600160a01b03167f6736979c4f54e6c60d693b74f2fba36eec0193132342caec0466cc5196cd1bdc8360405161123a91815260200190565b60405180910390a25063b47b2fb160e01b98509650610df195505050505050565b5f82600f0b1361127d575063b47b2fb160e01b95505f9450610df19350505050565b6002546001600160801b038316905f90612710906112a690600160a01b900461ffff1684611a63565b6112b09190611a86565b9050805f036112d3575063b47b2fb160e01b97505f9650610df195505050505050565b60016001607f1b0381111561131b5760405162461bcd60e51b815260206004820152600e60248201526d6275726e20746f6f206c6172676560901b604482015260640161112c565b604051630b0d9c0960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b1580156113a8575f80fd5b505af11580156113ba573d5f803e3d5ffd5b5050604051630852cd8d60e31b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506342966c6891506024015f604051808303815f87803b15801561141d575f80fd5b505af115801561142f573d5f803e3d5ffd5b505050508060045f82825401925050819055508e6001600160a01b03167f7b10bf146cdc5eae8410993ac44c741ece7649a7a07abf29f738ec0729bc69c68260016040516114899291909182521515602082015260400190565b60405180910390a263b47b2fb160e01b98509650610df195505050505050565b80151581146114b6575f80fd5b50565b5f602082840312156114c9575f80fd5b81356114d4816114a9565b9392505050565b6001600160a01b03811681146114b6575f80fd5b5f60a082840312156114ff575f80fd5b50919050565b5f608082840312156114ff575f80fd5b5f8083601f840112611525575f80fd5b50813567ffffffffffffffff81111561153c575f80fd5b602083019150836020828501011115611553575f80fd5b9250929050565b5f805f805f610160868803121561156f575f80fd5b853561157a816114db565b945061158987602088016114ef565b93506115988760c08801611505565b925061014086013567ffffffffffffffff8111156115b4575f80fd5b6115c088828901611515565b969995985093965092949392505050565b803561ffff811681146115e2575f80fd5b919050565b5f80604083850312156115f8575f80fd5b611601836115d1565b915061160f602084016115d1565b90509250929050565b5f606082840312156114ff575f80fd5b5f805f805f610140868803121561163d575f80fd5b8535611648816114db565b945061165787602088016114ef565b93506116668760c08801611618565b925061012086013567ffffffffffffffff8111156115b4575f80fd5b5f60208284031215611692575f80fd5b81356114d4816114db565b5f805f805f805f6101a0888a0312156116b4575f80fd5b87356116bf816114db565b96506116ce8960208a016114ef565b95506116dd8960c08a01611505565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115611709575f80fd5b6117158a828b01611515565b989b979a50959850939692959293505050565b5f805f80610100858703121561173c575f80fd5b8435611747816114db565b935061175686602087016114ef565b925060c0850135611766816114db565b915060e0850135600281900b811461177c575f80fd5b939692955090935050565b5f805f806080858703121561179a575f80fd5b6117a3856115d1565b93506117b1602086016115d1565b92506117bf604086016115d1565b91506117cd606086016115d1565b905092959194509250565b5f805f606084860312156117ea575f80fd5b83356117f5816114db565b925060208401359150604084013561180c816114db565b809150509250925092565b5f805f805f80610160878903121561182d575f80fd5b8635611838816114db565b955061184788602089016114ef565b94506118568860c08901611618565b9350610120870135925061014087013567ffffffffffffffff81111561187a575f80fd5b61188689828a01611515565b979a9699509497509295939492505050565b5f805f805f8061012087890312156118ae575f80fd5b86356118b9816114db565b95506118c888602089016114ef565b945060c0870135935060e0870135925061010087013567ffffffffffffffff81111561187a575f80fd5b8151151581526101c081016020830151611910602084018215159052565b506040830151611924604084018215159052565b506060830151611938606084018215159052565b50608083015161194c608084018215159052565b5060a083015161196060a084018215159052565b5060c083015161197460c084018215159052565b5060e083015161198860e084018215159052565b5061010083810151151590830152610120808401511515908301526101408084015115159083015261016080840151151590830152610180808401511515908301526101a0928301511515929091019190915290565b5f805f60e084860312156119f0575f80fd5b83356119fb816114db565b9250611a0a85602086016114ef565b915060c084013561180c816114db565b5f8060408385031215611a2b575f80fd5b823591506020830135611a3d816114a9565b809150509250929050565b5f60208284031215611a58575f80fd5b81516114d4816114a9565b8082028115828204841417610eeb57634e487b7160e01b5f52601160045260245ffd5b5f82611aa057634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220a5b367d1d4867d888ce5ead07a5e13744f7a11f110a1ea937a6612a9f477556364736f6c63430008180033000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa1530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5c3c17b90336f2ce85ea521b3f8ae54ba731ec500000000000000000000000090292b16888f20c83ec40aeba5ef47f96e8b80ea00000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000fa

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061023f575f3560e01c80638da5cb5b11610135578063d89135cd116100b4578063f2fde38b11610079578063f2fde38b146106d7578063f57dbbb5146106ea578063f84b2d8f146106fd578063fa7fa19814610710578063fbfa77cf14610725575f80fd5b8063d89135cd14610684578063dc4c90d31461068d578063dc98354e146106b4578063dfb3f51a146106c2578063e1b4af6914610552575f80fd5b8063b47b2fb1116100fa578063b47b2fb11461051c578063b6a8b0fa14610552578063bf1be3ac14610560578063c4e833ce14610575578063c59d484714610669575f80fd5b80638da5cb5b146104b95780639accab55146104cb5780639f063efc1461043e578063b37fd190146104f6578063b3ab15fb14610509575f80fd5b806356c4854b116101c15780636817031b116101865780636817031b1461042b5780636c2bbe7e1461043e5780636fe7e6eb14610471578063891ca6a61461047f578063893f3b47146104a6575f80fd5b806356c4854b146103a1578063570ca735146103b4578063575e24b4146103c75780635c975abb1461040557806365f5f1a214610422575f80fd5b8063259982e511610207578063259982e5146102d957806327fa9ceb1461030557806339d7dda21461032c5780633b8f954b146103435780633cc87a2014610358575f80fd5b80630a971dbf146102435780630e1c5d5c1461027057806316c38b3c146102855780631f34dab91461029a57806321d0ee70146102d9575b5f80fd5b60025461025890600160f01b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b60025461025890600160e01b900461ffff1681565b6102986102933660046114b9565b610738565b005b6102c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610267565b6102ec6102e736600461155a565b6107a8565b6040516001600160e01b03199091168152602001610267565b6102c17f0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa15381565b61033560055481565b604051908152602001610267565b60025461025890600160c01b900461ffff1681565b6002546040805161ffff600160c01b840481168252600160d01b840481166020830152600160e01b8404811692820192909252600160f01b909204166060820152608001610267565b6102986103af3660046115e7565b6107c2565b6001546102c1906001600160a01b031681565b6103da6103d5366004611628565b610943565b604080516001600160e01b03199094168452602084019290925262ffffff1690820152606001610267565b6003546104129060ff1681565b6040519015158152602001610267565b6103356101f481565b610298610439366004611682565b6109a8565b61045161044c36600461169d565b610a2c565b604080516001600160e01b03199093168352602083019190915201610267565b6102ec6102e7366004611728565b6102c17f0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa15381565b6102986104b4366004611787565b610a47565b5f546102c1906001600160a01b031681565b6002546040805161ffff600160a01b840481168252600160b01b909304909216602083015201610267565b6102986105043660046117d8565b610b96565b610298610517366004611682565b610d0f565b61052f61052a366004611817565b610d93565b604080516001600160e01b03199093168352600f9190910b602083015201610267565b6102ec6102e7366004611898565b60025461025890600160b01b900461ffff1681565b61065c604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c08101829052600160e0820181905261010082018390526101208201839052610140820183905261016082015261018081018290526101a081019190915290565b60405161026791906118f2565b60045460055460408051928352602083019190915201610267565b61033560045481565b6102c17f000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b81565b6102ec6102e73660046119de565b60025461025890600160d01b900461ffff1681565b6102986106e5366004611682565b610dfc565b6103356106f8366004611a1a565b610ea5565b61041261070b366004611682565b610ef1565b60025461025890600160a01b900461ffff1681565b6002546102c1906001600160a01b031681565b5f546001600160a01b03163314610761576040516282b42960e81b815260040160405180910390fd5b6003805460ff19168215159081179091556040519081527f4543baa938cb97f5073ec206ad35638cdb1f4db8f677d31579b2f6fe7d18c14a9060200160405180910390a150565b5f604051630a85dc2960e01b815260040160405180910390fd5b5f546001600160a01b031633148015906107e757506001546001600160a01b03163314155b15610804576040516282b42960e81b815260040160405180910390fd5b8061ffff168261ffff16111561082d576040516378c5623560e01b815260040160405180910390fd5b60025461ffff600160c01b9091048116908316108061085c575060025461ffff600160d01b9091048116908316115b1561087a57604051632e2039ab60e21b815260040160405180910390fd5b60025461ffff600160e01b909104811690821610806108a9575060025461ffff600160f01b9091048116908216115b156108c757604051632e2039ab60e21b815260040160405180910390fd5b6002805463ffffffff60a01b1916600160a01b61ffff85811691820261ffff60b01b191692909217600160b01b9285169283021790925560408051928352602083019190915242908201527f59f5b5d0be96f1a5b9b82414d4babf5c04060413a6b968fa5d5df1f2524ddeea9060600160405180910390a15050565b5f8080336001600160a01b037f000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b161461098f5760405163570c108560e11b815260040160405180910390fd5b604051630a85dc2960e01b815260040160405180910390fd5b5f546001600160a01b031633146109d1576040516282b42960e81b815260040160405180910390fd5b6002546040516001600160a01b038084169216907f483bdedaaf23706a9800ac1af0d852b34927780d79f9d6ba60a80c7cad75ea39905f90a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f80604051630a85dc2960e01b815260040160405180910390fd5b5f546001600160a01b03163314610a70576040516282b42960e81b815260040160405180910390fd5b6101f48361ffff161180610a8957506101f48161ffff16115b15610aa75760405163f2c8ebdb60e01b815260040160405180910390fd5b8261ffff168461ffff161180610ac457508061ffff168261ffff16115b15610ae25760405163a883435760e01b815260040160405180910390fd5b6002805463ffffffff60c01b1916600160c01b61ffff87811691820261ffff60d01b191692909217600160d01b878416908102919091176001600160e01b0316600160e01b8785169081026001600160f01b031691909117600160f01b9487169485021790945560408051928352602083019190915281019290925260608201527f7382a72a2b2a6f08ed9f677a4d0ee36943d93658b4111c01c3d22fe7cdd75ea79060800160405180910390a150505050565b5f546001600160a01b03163314610bbf576040516282b42960e81b815260040160405180910390fd5b7f0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa1536001600160a01b0316836001600160a01b031603610c7257604051630852cd8d60e31b8152600481018390527f0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa1536001600160a01b0316906342966c68906024015f604051808303815f87803b158015610c57575f80fd5b505af1158015610c69573d5f803e3d5ffd5b50505050505050565b6001600160a01b038116610c995760405163d92e233d60e01b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af1158015610ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d099190611a48565b50505050565b5f546001600160a01b03163314610d38576040516282b42960e81b815260040160405180910390fd5b6001546040516001600160a01b038084169216907ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03905f90a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80336001600160a01b037f000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b1614610dde5760405163570c108560e11b815260040160405180910390fd5b610dec888888888888610f1d565b915091505b965096945050505050565b5f546001600160a01b03163314610e25576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116610e4c5760405163d92e233d60e01b815260040160405180910390fd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61271082610ec157600254600160b01b900461ffff16610ed0565b600254600160a01b900461ffff165b610ede9061ffff1685611a63565b610ee89190611a86565b90505b92915050565b5f80546001600160a01b0383811691161480610eeb5750506001546001600160a01b0390811691161490565b6003545f90819060ff1615610f3d575063b47b2fb160e01b90505f610df1565b5f6001600160a01b037f0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa15316610f7560208a018a611682565b6001600160a01b03161490505f8180610fce57506001600160a01b037f0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa15316610fc360408b0160208c01611682565b6001600160a01b0316145b905080610fea575063b47b2fb160e01b92505f9150610df19050565b5f828015611000575061100060208a018a6114b9565b8061101e57508215801561101e575061101c60208a018a6114b9565b155b90505f8361102c5788611036565b6110368960801d90565b90505f8461104d576110488a60801d90565b61104f565b895b9050821561125b575f81600f0b13158061107257506002546001600160a01b0316155b1561108f575063b47b2fb160e01b95505f9450610df19350505050565b6002546001600160801b038216905f90612710906110b890600160b01b900461ffff1684611a63565b6110c29190611a86565b9050805f036110e5575063b47b2fb160e01b97505f9650610df195505050505050565b60016001607f1b038111156111355760405162461bcd60e51b81526020600482015260116024820152706361707475726520746f6f206c6172676560781b60448201526064015b60405180910390fd5b5f87611152578e5f01602081019061114d9190611682565b611165565b8e60200160208101906111659190611682565b600254604051630b0d9c0960e01b81526001600160a01b0380841660048301529182166024820152604481018590529192507f000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b1690630b0d9c09906064015f604051808303815f87803b1580156111da575f80fd5b505af11580156111ec573d5f803e3d5ffd5b505050508160055f82825401925050819055508f6001600160a01b03167f6736979c4f54e6c60d693b74f2fba36eec0193132342caec0466cc5196cd1bdc8360405161123a91815260200190565b60405180910390a25063b47b2fb160e01b98509650610df195505050505050565b5f82600f0b1361127d575063b47b2fb160e01b95505f9450610df19350505050565b6002546001600160801b038316905f90612710906112a690600160a01b900461ffff1684611a63565b6112b09190611a86565b9050805f036112d3575063b47b2fb160e01b97505f9650610df195505050505050565b60016001607f1b0381111561131b5760405162461bcd60e51b815260206004820152600e60248201526d6275726e20746f6f206c6172676560901b604482015260640161112c565b604051630b0d9c0960e01b81526001600160a01b037f0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa15381166004830152306024830152604482018390527f000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b1690630b0d9c09906064015f604051808303815f87803b1580156113a8575f80fd5b505af11580156113ba573d5f803e3d5ffd5b5050604051630852cd8d60e31b8152600481018490527f0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa1536001600160a01b031692506342966c6891506024015f604051808303815f87803b15801561141d575f80fd5b505af115801561142f573d5f803e3d5ffd5b505050508060045f82825401925050819055508e6001600160a01b03167f7b10bf146cdc5eae8410993ac44c741ece7649a7a07abf29f738ec0729bc69c68260016040516114899291909182521515602082015260400190565b60405180910390a263b47b2fb160e01b98509650610df195505050505050565b80151581146114b6575f80fd5b50565b5f602082840312156114c9575f80fd5b81356114d4816114a9565b9392505050565b6001600160a01b03811681146114b6575f80fd5b5f60a082840312156114ff575f80fd5b50919050565b5f608082840312156114ff575f80fd5b5f8083601f840112611525575f80fd5b50813567ffffffffffffffff81111561153c575f80fd5b602083019150836020828501011115611553575f80fd5b9250929050565b5f805f805f610160868803121561156f575f80fd5b853561157a816114db565b945061158987602088016114ef565b93506115988760c08801611505565b925061014086013567ffffffffffffffff8111156115b4575f80fd5b6115c088828901611515565b969995985093965092949392505050565b803561ffff811681146115e2575f80fd5b919050565b5f80604083850312156115f8575f80fd5b611601836115d1565b915061160f602084016115d1565b90509250929050565b5f606082840312156114ff575f80fd5b5f805f805f610140868803121561163d575f80fd5b8535611648816114db565b945061165787602088016114ef565b93506116668760c08801611618565b925061012086013567ffffffffffffffff8111156115b4575f80fd5b5f60208284031215611692575f80fd5b81356114d4816114db565b5f805f805f805f6101a0888a0312156116b4575f80fd5b87356116bf816114db565b96506116ce8960208a016114ef565b95506116dd8960c08a01611505565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115611709575f80fd5b6117158a828b01611515565b989b979a50959850939692959293505050565b5f805f80610100858703121561173c575f80fd5b8435611747816114db565b935061175686602087016114ef565b925060c0850135611766816114db565b915060e0850135600281900b811461177c575f80fd5b939692955090935050565b5f805f806080858703121561179a575f80fd5b6117a3856115d1565b93506117b1602086016115d1565b92506117bf604086016115d1565b91506117cd606086016115d1565b905092959194509250565b5f805f606084860312156117ea575f80fd5b83356117f5816114db565b925060208401359150604084013561180c816114db565b809150509250925092565b5f805f805f80610160878903121561182d575f80fd5b8635611838816114db565b955061184788602089016114ef565b94506118568860c08901611618565b9350610120870135925061014087013567ffffffffffffffff81111561187a575f80fd5b61188689828a01611515565b979a9699509497509295939492505050565b5f805f805f8061012087890312156118ae575f80fd5b86356118b9816114db565b95506118c888602089016114ef565b945060c0870135935060e0870135925061010087013567ffffffffffffffff81111561187a575f80fd5b8151151581526101c081016020830151611910602084018215159052565b506040830151611924604084018215159052565b506060830151611938606084018215159052565b50608083015161194c608084018215159052565b5060a083015161196060a084018215159052565b5060c083015161197460c084018215159052565b5060e083015161198860e084018215159052565b5061010083810151151590830152610120808401511515908301526101408084015115159083015261016080840151151590830152610180808401511515908301526101a0928301511515929091019190915290565b5f805f60e084860312156119f0575f80fd5b83356119fb816114db565b9250611a0a85602086016114ef565b915060c084013561180c816114db565b5f8060408385031215611a2b575f80fd5b823591506020830135611a3d816114a9565b809150509250929050565b5f60208284031215611a58575f80fd5b81516114d4816114a9565b8082028115828204841417610eeb57634e487b7160e01b5f52601160045260245ffd5b5f82611aa057634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220a5b367d1d4867d888ce5ead07a5e13744f7a11f110a1ea937a6612a9f477556364736f6c63430008180033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa1530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5c3c17b90336f2ce85ea521b3f8ae54ba731ec500000000000000000000000090292b16888f20c83ec40aeba5ef47f96e8b80ea00000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000fa

-----Decoded View---------------
Arg [0] : _poolManager (address): 0x498581fF718922c3f8e6A244956aF099B2652b2b
Arg [1] : _prToken (address): 0x2357110F5F0c5344EEf75966500c75116A4aA153
Arg [2] : _ethCurrency (address): 0x0000000000000000000000000000000000000000
Arg [3] : _vault (address): 0xE5C3C17b90336F2cE85eA521b3f8aE54Ba731Ec5
Arg [4] : _owner (address): 0x90292B16888f20C83eC40aEBA5Ef47F96E8B80Ea
Arg [5] : _initialBuyBps (uint16): 200
Arg [6] : _initialSellBps (uint16): 250

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b
Arg [1] : 0000000000000000000000002357110f5f0c5344eef75966500c75116a4aa153
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 000000000000000000000000e5c3c17b90336f2ce85ea521b3f8ae54ba731ec5
Arg [4] : 00000000000000000000000090292b16888f20c83ec40aeba5ef47f96e8b80ea
Arg [5] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [6] : 00000000000000000000000000000000000000000000000000000000000000fa


Deployed Bytecode Sourcemap

11468:9658:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12092:24;;;;;-1:-1:-1;;;12092:24:0;;;;;;;;;188:6:1;176:19;;;158:38;;146:2;131:18;12092:24:0;;;;;;;;12061;;;;;-1:-1:-1;;;12061:24:0;;;;;;19336:129;;;;;;:::i;:::-;;:::i;:::-;;11804:37;;;;;;;;-1:-1:-1;;;;;766:32:1;;;748:51;;736:2;721:18;11804:37:0;576:229:1;9111:208:0;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;2626:33:1;;;2608:52;;2596:2;2581:18;9111:208:0;2464:202:1;11761:36:0;;;;;12183:31;;;;;;;;;2817:25:1;;;2805:2;2790:18;12183:31:0;2671:177:1;12001:23:0;;;;;-1:-1:-1;;;12001:23:0;;;;;;20003:148;20098:9;;20003:148;;;20098:9;-1:-1:-1;;;20098:9:0;;;;3101:34:1;;-1:-1:-1;;;20109:9:0;;;;3166:2:1;3151:18;;3144:43;-1:-1:-1;;;20120:10:0;;;;3203:18:1;;;3196:43;;;;-1:-1:-1;;;20132:10:0;;;;3270:2:1;3255:18;;3248:43;3063:3;3048:19;20003:148:0;2853:444:1;18088:452:0;;;;;;:::i;:::-;;:::i;11877:23::-;;;;;-1:-1:-1;;;;;11877:23:0;;;9584:227;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;;5156:33:1;;;5138:52;;5221:2;5206:18;;5199:34;;;;5281:8;5269:21;5249:18;;;5242:49;5126:2;5111:18;9584:227:0;4906:391:1;12125:18:0;;;;;;;;;;;;5563:14:1;;5556:22;5538:41;;5526:2;5511:18;12125::0;5398:187:1;11662:46:0;;11705:3;11662:46;;18706:129;;;;;;:::i;:::-;;:::i;9327:249::-;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;;7092:33:1;;;7074:52;;7157:2;7142:18;;7135:34;;;;7047:18;9327:249:0;6872:303:1;8488:148:0;;;;;;:::i;11717:37::-;;;;;18843:485;;;;;;:::i;:::-;;:::i;11850:20::-;;;;;-1:-1:-1;;;;;11850:20:0;;;19885:110;19963:10;;19885:110;;;19963:10;-1:-1:-1;;;19963:10:0;;;;8699:34:1;;-1:-1:-1;;;19975:11:0;;;;;;8764:2:1;8749:18;;8742:43;8647:18;19885:110:0;8504:287:1;20813:310:0;;;;;;:::i;:::-;;:::i;18548:150::-;;;;;;:::i;:::-;;:::i;9819:284::-;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;;10353:33:1;;;10335:52;;10434:2;10423:22;;;;10418:2;10403:18;;10396:50;10308:18;9819:284:0;10165:287:1;10111:172:0;;;;;;:::i;11967:25::-;;;;;-1:-1:-1;;;11967:25:0;;;;;;14324:697;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14428:585:0;;;;;;;;-1:-1:-1;14428:585:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14324:697;;;;;;;;:::i;20480:134::-;20576:11;;20589:16;;20480:134;;;13349:25:1;;;13405:2;13390:18;;13383:34;;;;13322:18;20480:134:0;13175:248:1;12150:26:0;;;;;;7780:41;;;;;8338:142;;;;;;:::i;12031:23::-;;;;;-1:-1:-1;;;12031:23:0;;;;;;19473:215;;;;;;:::i;:::-;;:::i;20159:170::-;;;;;;:::i;:::-;;:::i;20337:135::-;;;;;;:::i;:::-;;:::i;11936:24::-;;;;;-1:-1:-1;;;11936:24:0;;;;;;11907:20;;;;;-1:-1:-1;;;;;11907:20:0;;;19336:129;13096:5;;-1:-1:-1;;;;;13096:5:0;13082:10;:19;13078:46;;13110:14;;-1:-1:-1;;;13110:14:0;;;;;;;;;;;13078:46;19399:6:::1;:16:::0;;-1:-1:-1;;19399:16:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19431:26:::1;::::0;5538:41:1;;;19431:26:0::1;::::0;5526:2:1;5511:18;19431:26:0::1;;;;;;;19336:129:::0;:::o;9111:208::-;9265:6;9291:20;;-1:-1:-1;;;9291:20:0;;;;;;;;;;;18088:452;13212:5;;-1:-1:-1;;;;;13212:5:0;13198:10;:19;;;;:45;;-1:-1:-1;13235:8:0;;-1:-1:-1;;;;;13235:8:0;13221:10;:22;;13198:45;13194:72;;;13252:14;;-1:-1:-1;;;13252:14:0;;;;;;;;;;;13194:72;18193:8:::1;18183:18;;:7;:18;;;18179:53;;;18210:22;;-1:-1:-1::0;;;18210:22:0::1;;;;;;;;;;;18179:53;18257:9;::::0;::::1;-1:-1:-1::0;;;18257:9:0;;::::1;::::0;::::1;18247:19:::0;;::::1;;::::0;:42:::1;;-1:-1:-1::0;18280:9:0::1;::::0;::::1;-1:-1:-1::0;;;18280:9:0;;::::1;::::0;::::1;18270:19:::0;;::::1;;18247:42;18243:72;;;18298:17;;-1:-1:-1::0;;;18298:17:0::1;;;;;;;;;;;18243:72;18341:10;::::0;::::1;-1:-1:-1::0;;;18341:10:0;;::::1;::::0;::::1;18330:21:::0;;::::1;;::::0;:46:::1;;-1:-1:-1::0;18366:10:0::1;::::0;::::1;-1:-1:-1::0;;;18366:10:0;;::::1;::::0;::::1;18355:21:::0;;::::1;;18330:46;18326:76;;;18385:17;;-1:-1:-1::0;;;18385:17:0::1;;;;;;;;;;;18326:76;18415:10;:20:::0;;-1:-1:-1;;;;18446:22:0;-1:-1:-1;;;18415:20:0::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;;18446:22:0;;;;;-1:-1:-1;;;18446:22:0;;::::1;::::0;;::::1;;::::0;;;18484:48:::1;::::0;;14713:34:1;;;14778:2;14763:18;;14756:43;;;;18516:15:0::1;14815:18:1::0;;;14808:34;18484:48:0::1;::::0;14676:2:1;14661:18;18484:48:0::1;;;;;;;18088:452:::0;;:::o;9584:227::-;9732:6;;;7936:10;-1:-1:-1;;;;;7958:11:0;7936:34;;7932:63;;7979:16;;-1:-1:-1;;;7979:16:0;;;;;;;;;;;7932:63;9783:20:::1;;-1:-1:-1::0;;;9783:20:0::1;;;;;;;;;;;18706:129:::0;13096:5;;-1:-1:-1;;;;;13096:5:0;13082:10;:19;13078:46;;13110:14;;-1:-1:-1;;;13110:14:0;;;;;;;;;;;13078:46;18788:5:::1;::::0;18775:27:::1;::::0;-1:-1:-1;;;;;18775:27:0;;::::1;::::0;18788:5:::1;::::0;18775:27:::1;::::0;18788:5:::1;::::0;18775:27:::1;18813:5;:14:::0;;-1:-1:-1;;;;;;18813:14:0::1;-1:-1:-1::0;;;;;18813:14:0;;;::::1;::::0;;;::::1;::::0;;18706:129::o;9327:249::-;9508:6;9516:12;9548:20;;-1:-1:-1;;;9548:20:0;;;;;;;;;;;18843:485;13096:5;;-1:-1:-1;;;;;13096:5:0;13082:10;:19;13078:46;;13110:14;;-1:-1:-1;;;13110:14:0;;;;;;;;;;;13078:46;11705:3:::1;18962:7;:26;;;:57;;;;11705:3;18992:8;:27;;;18962:57;18958:90;;;19028:20;;-1:-1:-1::0;;;19028:20:0::1;;;;;;;;;;;18958:90;19073:7;19063:17;;:7;:17;;;:40;;;;19095:8;19084:19;;:8;:19;;;19063:40;19059:68;;;19112:15;;-1:-1:-1::0;;;19112:15:0::1;;;;;;;;;;;19059:68;19140:9;:19:::0;;-1:-1:-1;;;;19170:19:0;-1:-1:-1;;;19140:19:0::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;;19170:19:0;;;;;-1:-1:-1;;;19170:19:0;;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;19232:21:0;-1:-1:-1;;;19200:21:0;;::::1;::::0;;::::1;-1:-1:-1::0;;;;;19232:21:0;;;;;-1:-1:-1;;;19232:21:0;;::::1;::::0;;::::1;;::::0;;;19269:51:::1;::::0;;3101:34:1;;;3166:2;3151:18;;3144:43;;;;3203:18;;3196:43;;;;3270:2;3255:18;;3248:43;19269:51:0::1;::::0;3063:3:1;3048:19;19269:51:0::1;;;;;;;18843:485:::0;;;;:::o;20813:310::-;13096:5;;-1:-1:-1;;;;;13096:5:0;13082:10;:19;13078:46;;13110:14;;-1:-1:-1;;;13110:14:0;;;;;;;;;;;13078:46;20929:7:::1;-1:-1:-1::0;;;;;20912:25:0::1;:5;-1:-1:-1::0;;;;;20912:25:0::1;::::0;20908:208:::1;;20954:20;::::0;-1:-1:-1;;;20954:20:0;;::::1;::::0;::::1;2817:25:1::0;;;20954:7:0::1;-1:-1:-1::0;;;;;20954:12:0::1;::::0;::::1;::::0;2790:18:1;;20954:20:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20813:310:::0;;;:::o;20908:208::-:1;-1:-1:-1::0;;;;;21011:16:0;::::1;21007:42;;21036:13;;-1:-1:-1::0;;;21036:13:0::1;;;;;;;;;;;21007:42;21064:40;::::0;-1:-1:-1;;;21064:40:0;;-1:-1:-1;;;;;15045:32:1;;;21064:40:0::1;::::0;::::1;15027:51:1::0;15094:18;;;15087:34;;;21064:28:0;::::1;::::0;::::1;::::0;15000:18:1;;21064:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20813:310:::0;;;:::o;18548:150::-;13096:5;;-1:-1:-1;;;;;13096:5:0;13082:10;:19;13078:46;;13110:14;;-1:-1:-1;;;13110:14:0;;;;;;;;;;;13078:46;18639:8:::1;::::0;18623:36:::1;::::0;-1:-1:-1;;;;;18623:36:0;;::::1;::::0;18639:8:::1;::::0;18623:36:::1;::::0;18639:8:::1;::::0;18623:36:::1;18670:8;:20:::0;;-1:-1:-1;;;;;;18670:20:0::1;-1:-1:-1::0;;;;;18670:20:0;;;::::1;::::0;;;::::1;::::0;;18548:150::o;9819:284::-;10013:6;;7936:10;-1:-1:-1;;;;;7958:11:0;7936:34;;7932:63;;7979:16;;-1:-1:-1;;;7979:16:0;;;;;;;;;;;7932:63;10047:48:::1;10058:6;10066:3;10071:6;10079:5;10086:8;;10047:10;:48::i;:::-;10040:55;;;;8006:1;9819:284:::0;;;;;;;;;:::o;19473:215::-;13096:5;;-1:-1:-1;;;;;13096:5:0;13082:10;:19;13078:46;;13110:14;;-1:-1:-1;;;13110:14:0;;;;;;;;;;;13078:46;-1:-1:-1;;;;;19553:23:0;::::1;19549:49;;19585:13;;-1:-1:-1::0;;;19585:13:0::1;;;;;;;;;;;19549:49;19635:5;::::0;;19614:38:::1;::::0;-1:-1:-1;;;;;19614:38:0;;::::1;::::0;19635:5;::::1;::::0;19614:38:::1;::::0;::::1;19663:5;:17:::0;;-1:-1:-1;;;;;;19663:17:0::1;-1:-1:-1::0;;;;;19663:17:0;;;::::1;::::0;;;::::1;::::0;;19473:215::o;20159:170::-;20231:7;11650:5;20269;:32;;20290:11;;-1:-1:-1;;;20290:11:0;;;;20269:32;;;20277:10;;-1:-1:-1;;;20277:10:0;;;;20269:32;20259:43;;;;:6;:43;:::i;:::-;20258:63;;;;:::i;:::-;20251:70;;20159:170;;;;;:::o;20337:135::-;20401:4;20436:5;;-1:-1:-1;;;;;20425:16:0;;;20436:5;;20425:16;;:39;;-1:-1:-1;;20456:8:0;;-1:-1:-1;;;;;20456:8:0;;;20445:19;;;;20337:135::o;15219:2671::-;15464:6;;15433;;;;15464;;15460:74;;;-1:-1:-1;;;;15495:23:0;-1:-1:-1;15520:1:0;15487:35;;15460:74;15546:15;-1:-1:-1;;;;;15614:10:0;15564:61;15580:13;;;;:3;:13;:::i;:::-;-1:-1:-1;;;;;15564:61:0;;15546:79;;15636:13;15652:10;:75;;;-1:-1:-1;;;;;;15716:10:0;15666:61;15682:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15666:61:0;;15652:75;15636:91;;15745:8;15740:77;;-1:-1:-1;;;;15778:23:0;-1:-1:-1;15803:1:0;;-1:-1:-1;15770:35:0;;-1:-1:-1;15770:35:0;15740:77;15829:11;15844:10;:31;;;;-1:-1:-1;15858:17:0;;;;:6;:17;:::i;:::-;15843:72;;;;15882:10;15881:11;:33;;;;-1:-1:-1;15897:17:0;;;;:6;:17;:::i;:::-;15896:18;15881:33;15829:86;;15928:14;15945:10;:46;;15976:5;15945:46;;;15958:15;:5;933:3;888:48;;788:157;15958:15;15928:63;;16002:15;16020:10;:46;;16051:15;:5;933:3;888:48;;788:157;16051:15;16020:46;;;16033:5;:15;16002:64;;16083:6;16079:1804;;;16204:1;16192:8;:13;;;;:36;;;-1:-1:-1;16209:5:0;;-1:-1:-1;;;;;16209:5:0;:19;16192:36;16188:112;;;-1:-1:-1;;;;16257:23:0;-1:-1:-1;16282:1:0;;-1:-1:-1;16249:35:0;;-1:-1:-1;;;;16249:35:0;16188:112;16414:11;;-1:-1:-1;;;;;16336:26:0;;;16316:17;;11650:5;;16402:23;;-1:-1:-1;;;16414:11:0;;;;16336:26;16402:23;:::i;:::-;16401:43;;;;:::i;:::-;16377:67;;16465:13;16482:1;16465:18;16461:94;;-1:-1:-1;;;;16512:23:0;-1:-1:-1;16537:1:0;;-1:-1:-1;16504:35:0;;-1:-1:-1;;;;;;16504:35:0;16461:94;-1:-1:-1;;;;;16579:42:0;;;16571:72;;;;-1:-1:-1;;;16571:72:0;;16354:2:1;16571:72:0;;;16336:21:1;16393:2;16373:18;;;16366:30;-1:-1:-1;;;16412:18:1;;;16405:47;16469:18;;16571:72:0;;;;;;;;;16660:22;16685:10;:42;;16714:3;:13;;;;;;;;;;:::i;:::-;16685:42;;;16698:3;:13;;;;;;;;;;:::i;:::-;16774:5;;16742:53;;-1:-1:-1;;;16742:53:0;;-1:-1:-1;;;;;16782:15:1;;;16742:53:0;;;16764:34:1;16774:5:0;;;16814:18:1;;;16807:43;16866:18;;;16859:34;;;16660:67:0;;-1:-1:-1;16742:11:0;:16;;;;16699:18:1;;16742:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16861:13;16841:16;;:33;;;;;;;;;;;16923:6;-1:-1:-1;;;;;16911:34:0;;16931:13;16911:34;;;;2817:25:1;;2805:2;2790:18;;2671:177;16911:34:0;;;;;;;;-1:-1:-1;;;;16968:23:0;-1:-1:-1;17007:13:0;-1:-1:-1;16960:63:0;;-1:-1:-1;;;;;;16960:63:0;16079:1804;17139:1;17128:7;:12;;;17124:88;;-1:-1:-1;;;;17169:23:0;-1:-1:-1;17194:1:0;;-1:-1:-1;17161:35:0;;-1:-1:-1;;;;17161:35:0;17124:88;17320:10;;-1:-1:-1;;;;;17247:25:0;;;17228:16;;11650:5;;17309:21;;-1:-1:-1;;;17320:10:0;;;;17247:25;17309:21;:::i;:::-;17308:41;;;;:::i;:::-;17287:62;;17370:10;17384:1;17370:15;17366:91;;-1:-1:-1;;;;17414:23:0;-1:-1:-1;17439:1:0;;-1:-1:-1;17406:35:0;;-1:-1:-1;;;;;;17406:35:0;17366:91;-1:-1:-1;;;;;17481:39:0;;;17473:66;;;;-1:-1:-1;;;17473:66:0;;17106:2:1;17473:66:0;;;17088:21:1;17145:2;17125:18;;;17118:30;-1:-1:-1;;;17164:18:1;;;17157:44;17218:18;;17473:66:0;16904:338:1;17473:66:0;17556:55;;-1:-1:-1;;;17556:55:0;;-1:-1:-1;;;;;17573:10:0;16782:15:1;;17556:55:0;;;16764:34:1;17593:4:0;16814:18:1;;;16807:43;16866:18;;;16859:34;;;17556:11:0;:16;;;;16699:18:1;;17556:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17626:24:0;;-1:-1:-1;;;17626:24:0;;;;;2817:25:1;;;17626:7:0;-1:-1:-1;;;;;17626:12:0;;-1:-1:-1;17626:12:0;;-1:-1:-1;2790:18:1;;17626:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17711:10;17696:11;;:25;;;;;;;;;;;17771:6;-1:-1:-1;;;;;17758:38:0;;17779:10;17791:4;17758:38;;;;;;17415:25:1;;;17483:14;17476:22;17471:2;17456:18;;17449:50;17403:2;17388:18;;17247:258;17758:38:0;;;;;;;;-1:-1:-1;;;17819:23:0;-1:-1:-1;17858:10:0;-1:-1:-1;17811:60:0;;-1:-1:-1;;;;;;17811:60:0;207:118:1;293:5;286:13;279:21;272:5;269:32;259:60;;315:1;312;305:12;259:60;207:118;:::o;330:241::-;386:6;439:2;427:9;418:7;414:23;410:32;407:52;;;455:1;452;445:12;407:52;494:9;481:23;513:28;535:5;513:28;:::i;:::-;560:5;330:241;-1:-1:-1;;;330:241:1:o;810:131::-;-1:-1:-1;;;;;885:31:1;;875:42;;865:70;;931:1;928;921:12;946:156;1006:5;1051:3;1042:6;1037:3;1033:16;1029:26;1026:46;;;1068:1;1065;1058:12;1026:46;-1:-1:-1;1090:6:1;946:156;-1:-1:-1;946:156:1:o;1107:170::-;1181:5;1226:3;1217:6;1212:3;1208:16;1204:26;1201:46;;;1243:1;1240;1233:12;1282:347;1333:8;1343:6;1397:3;1390:4;1382:6;1378:17;1374:27;1364:55;;1415:1;1412;1405:12;1364:55;-1:-1:-1;1438:20:1;;1481:18;1470:30;;1467:50;;;1513:1;1510;1503:12;1467:50;1550:4;1542:6;1538:17;1526:29;;1602:3;1595:4;1586:6;1578;1574:19;1570:30;1567:39;1564:59;;;1619:1;1616;1609:12;1564:59;1282:347;;;;;:::o;1634:825::-;1797:6;1805;1813;1821;1829;1882:3;1870:9;1861:7;1857:23;1853:33;1850:53;;;1899:1;1896;1889:12;1850:53;1938:9;1925:23;1957:31;1982:5;1957:31;:::i;:::-;2007:5;-1:-1:-1;2031:63:1;2086:7;2081:2;2066:18;;2031:63;:::i;:::-;2021:73;;2113:78;2183:7;2177:3;2166:9;2162:19;2113:78;:::i;:::-;2103:88;;2242:3;2231:9;2227:19;2214:33;2270:18;2262:6;2259:30;2256:50;;;2302:1;2299;2292:12;2256:50;2341:58;2391:7;2382:6;2371:9;2367:22;2341:58;:::i;:::-;1634:825;;;;-1:-1:-1;1634:825:1;;-1:-1:-1;2418:8:1;;2315:84;1634:825;-1:-1:-1;;;1634:825:1:o;3302:159::-;3369:20;;3429:6;3418:18;;3408:29;;3398:57;;3451:1;3448;3441:12;3398:57;3302:159;;;:::o;3466:256::-;3532:6;3540;3593:2;3581:9;3572:7;3568:23;3564:32;3561:52;;;3609:1;3606;3599:12;3561:52;3632:28;3650:9;3632:28;:::i;:::-;3622:38;;3679:37;3712:2;3701:9;3697:18;3679:37;:::i;:::-;3669:47;;3466:256;;;;;:::o;3935:158::-;3998:5;4043:2;4034:6;4029:3;4025:16;4021:25;4018:45;;;4059:1;4056;4049:12;4098:803;4250:6;4258;4266;4274;4282;4335:3;4323:9;4314:7;4310:23;4306:33;4303:53;;;4352:1;4349;4342:12;4303:53;4391:9;4378:23;4410:31;4435:5;4410:31;:::i;:::-;4460:5;-1:-1:-1;4484:63:1;4539:7;4534:2;4519:18;;4484:63;:::i;:::-;4474:73;;4566:67;4625:7;4619:3;4608:9;4604:19;4566:67;:::i;:::-;4556:77;;4684:3;4673:9;4669:19;4656:33;4712:18;4704:6;4701:30;4698:50;;;4744:1;4741;4734:12;5590:247;5649:6;5702:2;5690:9;5681:7;5677:23;5673:32;5670:52;;;5718:1;5715;5708:12;5670:52;5757:9;5744:23;5776:31;5801:5;5776:31;:::i;5842:1025::-;6085:6;6093;6101;6109;6117;6125;6133;6186:3;6174:9;6165:7;6161:23;6157:33;6154:53;;;6203:1;6200;6193:12;6154:53;6242:9;6229:23;6261:31;6286:5;6261:31;:::i;:::-;6311:5;-1:-1:-1;6335:63:1;6390:7;6385:2;6370:18;;6335:63;:::i;:::-;6325:73;;6417:78;6487:7;6481:3;6470:9;6466:19;6417:78;:::i;:::-;6407:88;;6542:3;6531:9;6527:19;6514:33;6504:43;;6594:3;6583:9;6579:19;6566:33;6556:43;;6650:3;6639:9;6635:19;6622:33;6678:18;6670:6;6667:30;6664:50;;;6710:1;6707;6700:12;6664:50;6749:58;6799:7;6790:6;6779:9;6775:22;6749:58;:::i;:::-;5842:1025;;;;-1:-1:-1;5842:1025:1;;-1:-1:-1;5842:1025:1;;;;6723:84;;-1:-1:-1;;;5842:1025:1:o;7180:685::-;7290:6;7298;7306;7314;7367:3;7355:9;7346:7;7342:23;7338:33;7335:53;;;7384:1;7381;7374:12;7335:53;7423:9;7410:23;7442:31;7467:5;7442:31;:::i;:::-;7492:5;-1:-1:-1;7516:63:1;7571:7;7566:2;7551:18;;7516:63;:::i;:::-;7506:73;;7631:3;7620:9;7616:19;7603:33;7645;7670:7;7645:33;:::i;:::-;7697:7;-1:-1:-1;7756:3:1;7741:19;;7728:33;7803:1;7792:22;;;7780:35;;7770:63;;7829:1;7826;7819:12;7770:63;7180:685;;;;-1:-1:-1;7180:685:1;;-1:-1:-1;;7180:685:1:o;8098:401::-;8180:6;8188;8196;8204;8257:3;8245:9;8236:7;8232:23;8228:33;8225:53;;;8274:1;8271;8264:12;8225:53;8297:28;8315:9;8297:28;:::i;:::-;8287:38;;8344:37;8377:2;8366:9;8362:18;8344:37;:::i;:::-;8334:47;;8400:37;8433:2;8422:9;8418:18;8400:37;:::i;:::-;8390:47;;8456:37;8489:2;8478:9;8474:18;8456:37;:::i;:::-;8446:47;;8098:401;;;;;;;:::o;8796:456::-;8873:6;8881;8889;8942:2;8930:9;8921:7;8917:23;8913:32;8910:52;;;8958:1;8955;8948:12;8910:52;8997:9;8984:23;9016:31;9041:5;9016:31;:::i;:::-;9066:5;-1:-1:-1;9118:2:1;9103:18;;9090:32;;-1:-1:-1;9174:2:1;9159:18;;9146:32;9187:33;9146:32;9187:33;:::i;:::-;9239:7;9229:17;;;8796:456;;;;;:::o;9257:903::-;9449:6;9457;9465;9473;9481;9489;9542:3;9530:9;9521:7;9517:23;9513:33;9510:53;;;9559:1;9556;9549:12;9510:53;9598:9;9585:23;9617:31;9642:5;9617:31;:::i;:::-;9667:5;-1:-1:-1;9691:63:1;9746:7;9741:2;9726:18;;9691:63;:::i;:::-;9681:73;;9773:67;9832:7;9826:3;9815:9;9811:19;9773:67;:::i;:::-;9763:77;;9887:3;9876:9;9872:19;9859:33;9849:43;;9943:3;9932:9;9928:19;9915:33;9971:18;9963:6;9960:30;9957:50;;;10003:1;10000;9993:12;9957:50;10042:58;10092:7;10083:6;10072:9;10068:22;10042:58;:::i;:::-;9257:903;;;;-1:-1:-1;9257:903:1;;-1:-1:-1;9257:903:1;;10119:8;;9257:903;-1:-1:-1;;;9257:903:1:o;10457:809::-;10589:6;10597;10605;10613;10621;10629;10682:3;10670:9;10661:7;10657:23;10653:33;10650:53;;;10699:1;10696;10689:12;10650:53;10738:9;10725:23;10757:31;10782:5;10757:31;:::i;:::-;10807:5;-1:-1:-1;10831:63:1;10886:7;10881:2;10866:18;;10831:63;:::i;:::-;10821:73;;10941:3;10930:9;10926:19;10913:33;10903:43;;10993:3;10982:9;10978:19;10965:33;10955:43;;11049:3;11038:9;11034:19;11021:33;11077:18;11069:6;11066:30;11063:50;;;11109:1;11106;11099:12;11271:1899;11490:13;;5372;5365:21;5353:34;;11461:3;11446:19;;11562:4;11554:6;11550:17;11544:24;11577:51;11622:4;11611:9;11607:20;11593:12;5372:13;5365:21;5353:34;;5302:91;11577:51;;11677:4;11669:6;11665:17;11659:24;11692:53;11739:4;11728:9;11724:20;11708:14;5372:13;5365:21;5353:34;;5302:91;11692:53;;11794:4;11786:6;11782:17;11776:24;11809:53;11856:4;11845:9;11841:20;11825:14;5372:13;5365:21;5353:34;;5302:91;11809:53;;11911:4;11903:6;11899:17;11893:24;11926:53;11973:4;11962:9;11958:20;11942:14;5372:13;5365:21;5353:34;;5302:91;11926:53;;12028:4;12020:6;12016:17;12010:24;12043:53;12090:4;12079:9;12075:20;12059:14;5372:13;5365:21;5353:34;;5302:91;12043:53;;12145:4;12137:6;12133:17;12127:24;12160:53;12207:4;12196:9;12192:20;12176:14;5372:13;5365:21;5353:34;;5302:91;12160:53;;12262:4;12254:6;12250:17;12244:24;12277:53;12324:4;12313:9;12309:20;12293:14;5372:13;5365:21;5353:34;;5302:91;12277:53;-1:-1:-1;12349:6:1;12392:15;;;12386:22;5372:13;5365:21;12449:18;;;5353:34;12487:6;12530:15;;;12524:22;5372:13;5365:21;12587:18;;;5353:34;12625:6;12668:15;;;12662:22;5372:13;5365:21;12725:18;;;5353:34;12763:6;12807:15;;;12801:22;5372:13;5365:21;12865:18;;;5353:34;12903:6;12947:15;;;12941:22;5372:13;5365:21;13005:18;;;5353:34;13043:6;13087:15;;;13081:22;5372:13;5365:21;13145:18;;;;5353:34;;;;11271:1899;:::o;13656:515::-;13759:6;13767;13775;13828:3;13816:9;13807:7;13803:23;13799:33;13796:53;;;13845:1;13842;13835:12;13796:53;13884:9;13871:23;13903:31;13928:5;13903:31;:::i;:::-;13953:5;-1:-1:-1;13977:63:1;14032:7;14027:2;14012:18;;13977:63;:::i;:::-;13967:73;;14092:3;14081:9;14077:19;14064:33;14106;14131:7;14106:33;:::i;14176:309::-;14241:6;14249;14302:2;14290:9;14281:7;14277:23;14273:32;14270:52;;;14318:1;14315;14308:12;14270:52;14354:9;14341:23;14331:33;;14414:2;14403:9;14399:18;14386:32;14427:28;14449:5;14427:28;:::i;:::-;14474:5;14464:15;;;14176:309;;;;;:::o;15132:245::-;15199:6;15252:2;15240:9;15231:7;15227:23;15223:32;15220:52;;;15268:1;15265;15258:12;15220:52;15300:9;15294:16;15319:28;15341:5;15319:28;:::i;15382:265::-;15455:9;;;15486;;15503:15;;;15497:22;;15483:37;15473:168;;15563:10;15558:3;15554:20;15551:1;15544:31;15598:4;15595:1;15588:15;15626:4;15623:1;15616:15;15652:217;15692:1;15718;15708:132;;15762:10;15757:3;15753:20;15750:1;15743:31;15797:4;15794:1;15787:15;15825:4;15822:1;15815:15;15708:132;-1:-1:-1;15854:9:1;;15652:217::o

Swarm Source

ipfs://a5b367d1d4867d888ce5ead07a5e13744f7a11f110a1ea937a6612a9f4775563

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.