ETH Price: $1,974.95 (+0.65%)
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deposit245107602026-02-22 6:56:5928 mins ago1771743419IN
Syrup: USDT Router
0 ETH0.000019410.07284336
Authorize And De...245101722026-02-22 4:59:232 hrs ago1771736363IN
Syrup: USDT Router
0 ETH0.000024050.06782801
Authorize And De...245098492026-02-22 3:54:473 hrs ago1771732487IN
Syrup: USDT Router
0 ETH0.000023770.06764505
Authorize And De...245069782026-02-21 18:16:5913 hrs ago1771697819IN
Syrup: USDT Router
0 ETH0.000047270.13332283
Deposit245059922026-02-21 14:59:1116 hrs ago1771685951IN
Syrup: USDT Router
0 ETH0.000014510.0544357
Authorize And De...245055642026-02-21 13:33:2317 hrs ago1771680803IN
Syrup: USDT Router
0 ETH0.000015010.04290309
Authorize And De...245041942026-02-21 8:58:2322 hrs ago1771664303IN
Syrup: USDT Router
0 ETH0.000027670.07909517
Authorize And De...245037522026-02-21 7:29:4723 hrs ago1771658987IN
Syrup: USDT Router
0 ETH0.000028620.0818125
Authorize And De...245031732026-02-21 5:33:3525 hrs ago1771652015IN
Syrup: USDT Router
0 ETH0.000030710.08545327
Deposit245028282026-02-21 4:24:1127 hrs ago1771647851IN
Syrup: USDT Router
0 ETH0.000019950.07036514
Authorize And De...245026322026-02-21 3:44:5927 hrs ago1771645499IN
Syrup: USDT Router
0 ETH0.000020960.0599166
Deposit244991642026-02-20 16:09:3539 hrs ago1771603775IN
Syrup: USDT Router
0 ETH0.000063440.21990312
Deposit244989442026-02-20 15:25:1140 hrs ago1771601111IN
Syrup: USDT Router
0 ETH0.000129410.45625239
Deposit244987942026-02-20 14:54:5940 hrs ago1771599299IN
Syrup: USDT Router
0 ETH0.000150550.53334861
Deposit244985582026-02-20 14:07:4741 hrs ago1771596467IN
Syrup: USDT Router
0 ETH0.000240520.90386074
Authorize And De...244979172026-02-20 11:58:5943 hrs ago1771588739IN
Syrup: USDT Router
0 ETH0.000111120.31809159
Deposit244977582026-02-20 11:26:4743 hrs ago1771586807IN
Syrup: USDT Router
0 ETH0.000021950.08248574
Deposit244977542026-02-20 11:25:5943 hrs ago1771586759IN
Syrup: USDT Router
0 ETH0.00002990.10212625
Deposit244974652026-02-20 10:28:1144 hrs ago1771583291IN
Syrup: USDT Router
0 ETH0.000015620.05733267
Authorize And De...244971002026-02-20 9:14:4746 hrs ago1771578887IN
Syrup: USDT Router
0 ETH0.000074410.20730638
Authorize And De...244970422026-02-20 9:03:1146 hrs ago1771578191IN
Syrup: USDT Router
0 ETH0.000061280.17074615
Authorize And De...244969202026-02-20 8:38:4746 hrs ago1771576727IN
Syrup: USDT Router
0 ETH0.00008930.2521851
Deposit244967872026-02-20 8:11:4747 hrs ago1771575107IN
Syrup: USDT Router
0 ETH0.00001190.04409724
Authorize And De...244928212026-02-19 18:55:472 days ago1771527347IN
Syrup: USDT Router
0 ETH0.000083680.23918551
Deposit244914712026-02-19 14:24:232 days ago1771511063IN
Syrup: USDT Router
0 ETH0.000086890.30636468
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SyrupRouter

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-08-06
*/

// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.7 ^0.8.0 ^0.8.7;

// contracts/interfaces/ISyrupRouter.sol

interface ISyrupRouter {

    /**
     *  @dev   Optional Deposit Data for off-chain processing.
     *  @param owner       The receiver of the shares.
     *  @param amount      The amount of assets to deposit.
     *  @param depositData Optional deposit data.
     */
    event DepositData(address indexed owner, uint256 amount, bytes32 depositData);

    /**
     *  @dev    The address of the underlying asset used by the ERC4626 Vault.
     *  @return asset The address of the underlying asset.
     */
    function asset() external view returns (address asset);

    /**
     *  @dev    Authorizes and deposits assets into the Vault.
     *  @param  bitmap_      The bitmap of the permission.
     *  @param  deadline_    The timestamp after which the `authorize` signature is no longer valid.
     *  @param  auth_v       ECDSA signature v component.
     *  @param  auth_r       ECDSA signature r component.
     *  @param  auth_s       ECDSA signature s component.
     *  @param  amount_      The amount of assets to deposit.
     *  @param  depositData_ Optional deposit data.
     *  @return shares_      The amount of shares minted.
     */
    function authorizeAndDeposit(
        uint256 bitmap_,
        uint256 deadline_,
        uint8   auth_v,
        bytes32 auth_r,
        bytes32 auth_s,
        uint256 amount_,
        bytes32 depositData_
    ) external returns (uint256 shares_);

    /**
     *  @dev    Authorizes and deposits assets into the Vault with a ERC-2612 `permit`.
     *  @param  bitmap_         The bitmap of the permission.
     *  @param  auth_deadline_  The timestamp after which the `authorize` signature is no longer valid.
     *  @param  auth_v          ECDSA signature v component of the authorization.
     *  @param  auth_r          ECDSA signature r component of the authorization.
     *  @param  auth_s          ECDSA signature s component of the authorization.
     *  @param  amount_         The amount of assets to deposit.
     *  @param  depositData_    Optional deposit data.
     *  @param  permit_deadline The timestamp after which the `permit` signature is no longer valid.
     *  @param  permit_v_       ECDSA signature v component of the token permit.
     *  @param  permit_r_       ECDSA signature r component of the token permit.
     *  @param  permit_s_       ECDSA signature s component of the token permit.
     *  @return shares_         The amount of shares minted.
     */
    function authorizeAndDepositWithPermit(
        uint256 bitmap_,
        uint256 auth_deadline_,
        uint8   auth_v,
        bytes32 auth_r,
        bytes32 auth_s,
        uint256 amount_,
        bytes32 depositData_,
        uint256 permit_deadline,
        uint8   permit_v_,
        bytes32 permit_r_,
        bytes32 permit_s_
    ) external returns (uint256 shares_);

    /**
     *  @dev    Mints `shares` to sender by depositing `assets` into the Vault.
     *  @param  assets      The amount of assets to deposit.
     *  @param  depositData Optional deposit data.
     *  @return shares      The amount of shares minted.
     */
    function deposit(uint256 assets, bytes32 depositData) external returns (uint256 shares);

    /**
     *  @dev    Does a ERC4626 `deposit` into a Maple Pool with a ERC-2612 `permit`.
     *  @param  amount     The amount of assets to deposit.
     *  @param  deadline   The timestamp after which the `permit` signature is no longer valid.
     *  @param  v          ECDSA signature v component.
     *  @param  r          ECDSA signature r component.
     *  @param  s          ECDSA signature s component.
     *  @param depositData Optional deposit data.
     *  @return shares     The amount of shares minted.
     */
    function depositWithPermit(uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s, bytes32 depositData)
        external returns (uint256 shares);

    /**
      *  @dev    Returns the nonce for the given owner.
      *  @param  owner_ The address of the owner account.
      *  @return nonce_ The nonce for the given owner.
     */
    function nonces(address owner_) external view returns (uint256 nonce_);

    /**
     *  @dev    The address of the ERC4626 Vault.
     *  @return pool The address of the ERC4626 Vault.
     */
    function pool() external view returns (address pool);

    /**
     *  @dev    The address of the Pool Manager.
     *  @return poolManager The address of the Pool Manager.
     */
    function poolManager() external view returns (address poolManager);

    /**
     *  @dev    The address of the Pool Permission Manager.
     *  @return poolPermissionManager The address of the Pool Permission Manager.
     */
    function poolPermissionManager() external view returns (address poolPermissionManager);

}

// contracts/interfaces/Interfaces.sol

interface IBalancerVaultLike {

    enum SwapKind { GIVEN_IN, GIVEN_OUT }

    struct FundManagement {
        address sender;
        bool fromInternalBalance;
        address recipient;
        bool toInternalBalance;
    }

    struct SingleSwap {
        bytes32 poolId;
        SwapKind kind;
        address assetIn;
        address assetOut;
        uint256 amount;
        bytes userData;
    }

    function swap(
        SingleSwap calldata singleSwap,
        FundManagement calldata funds,
        uint256 limit,
        uint256 deadline
    ) external returns (uint256 assetDelta);

}

interface IERC20Like_0 {

    function allowance(address owner, address spender) external view returns (uint256 allowance);

    function balanceOf(address account) external view returns (uint256 balance);

    function DOMAIN_SEPARATOR() external view returns (bytes32 domainSeparator);

    function PERMIT_TYPEHASH() external view returns (bytes32 permitTypehash);

    function approve(address spender, uint256 amount) external returns (bool success);

    function permit(address owner, address spender, uint amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    function transfer(address recipient, uint256 amount) external returns (bool success);

    function transferFrom(address owner, address recipient, uint256 amount) external returns (bool success);

}

interface IGlobalsLike {

    function governor() external view returns (address governor);

    function operationalAdmin() external view returns (address operationalAdmin);

}

interface IMigratorLike {

    function migrate(address receiver, uint256 mplAmount) external returns (uint256 syrupAmount);

}

interface IPoolLike is IERC20Like_0 {

    function asset() external view returns (address asset);

    function convertToExitAssets(uint256 shares) external view returns (uint256);

    function deposit(uint256 assets, address receiver) external returns (uint256 shares);

    function manager() external view returns (address manager);

}

interface IPoolManagerLike {

    function poolPermissionManager() external view returns (address poolPermissionManager);

}

interface IPoolPermissionManagerLike {

    function hasPermission(address poolManager, address lender, bytes32 functionId) external view returns (bool hasPermission);

    function permissionAdmins(address account) external view returns (bool isAdmin);

    function setLenderBitmaps(address[] calldata lenders, uint256[] calldata bitmaps) external;

}

interface IPSMLike {

    function buyGem(address account, uint256 daiAmount) external;

    function tout() external view returns (uint256 tout);  // This is the fee charged for conversion

}

interface ISDaiLike {

    function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);

}

interface IRDTLike {

    function asset() external view returns (address asset);

    function deposit(uint256 assets, address receiver) external returns (uint256 shares);

    function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);

}

interface IStakedSyrupLike {

    function deposit(uint256 assets, address receiver) external returns (uint256 shares);

}

// modules/erc20-helper/src/interfaces/IERC20Like.sol

/// @title Interface of the ERC20 standard as needed by ERC20Helper.
interface IERC20Like_1 {

    function approve(address spender_, uint256 amount_) external returns (bool success_);

    function transfer(address recipient_, uint256 amount_) external returns (bool success_);

    function transferFrom(address owner_, address recipient_, uint256 amount_) external returns (bool success_);

}

// modules/erc20-helper/src/ERC20Helper.sol

/**
 * @title Small Library to standardize erc20 token interactions.
 */
library ERC20Helper {

    /**************************************************************************************************************************************/
    /*** Internal Functions                                                                                                             ***/
    /**************************************************************************************************************************************/

    function transfer(address token_, address to_, uint256 amount_) internal returns (bool success_) {
        return _call(token_, abi.encodeWithSelector(IERC20Like_1.transfer.selector, to_, amount_));
    }

    function transferFrom(address token_, address from_, address to_, uint256 amount_) internal returns (bool success_) {
        return _call(token_, abi.encodeWithSelector(IERC20Like_1.transferFrom.selector, from_, to_, amount_));
    }

    function approve(address token_, address spender_, uint256 amount_) internal returns (bool success_) {
        // If setting approval to zero fails, return false.
        if (!_call(token_, abi.encodeWithSelector(IERC20Like_1.approve.selector, spender_, uint256(0)))) return false;

        // If `amount_` is zero, return true as the previous step already did this.
        if (amount_ == uint256(0)) return true;

        // Return the result of setting the approval to `amount_`.
        return _call(token_, abi.encodeWithSelector(IERC20Like_1.approve.selector, spender_, amount_));
    }

    function _call(address token_, bytes memory data_) private returns (bool success_) {
        if (token_.code.length == uint256(0)) return false;

        bytes memory returnData;
        ( success_, returnData ) = token_.call(data_);

        return success_ && (returnData.length == uint256(0) || abi.decode(returnData, (bool)));
    }

}

// contracts/SyrupRouter.sol

/*

███████╗██╗   ██╗██████╗ ██╗   ██╗██████╗     ██████╗  ██████╗ ██╗   ██╗████████╗███████╗██████╗
██╔════╝╚██╗ ██╔╝██╔══██╗██║   ██║██╔══██╗    ██╔══██╗██╔═══██╗██║   ██║╚══██╔══╝██╔════╝██╔══██╗
███████╗ ╚████╔╝ ██████╔╝██║   ██║██████╔╝    ██████╔╝██║   ██║██║   ██║   ██║   █████╗  ██████╔╝
╚════██║  ╚██╔╝  ██╔══██╗██║   ██║██╔═══╝     ██╔══██╗██║   ██║██║   ██║   ██║   ██╔══╝  ██╔══██╗
███████║   ██║   ██║  ██║╚██████╔╝██║         ██║  ██║╚██████╔╝╚██████╔╝   ██║   ███████╗██║  ██║
╚══════╝   ╚═╝   ╚═╝  ╚═╝ ╚═════╝ ╚═╝         ╚═╝  ╚═╝ ╚═════╝  ╚═════╝    ╚═╝   ╚══════╝╚═╝  ╚═╝

*/

contract SyrupRouter is ISyrupRouter {

    address public immutable override asset;
    address public immutable override pool;
    address public immutable override poolManager;
    address public immutable override poolPermissionManager;

    mapping(address => uint256) public override nonces;

    constructor(address pool_) {
        pool = pool_;

        // Get the addresses of all the associated contracts.
        address asset_ = asset = IPoolLike(pool_).asset();
        address poolManager_ = poolManager = IPoolLike(pool_).manager();

        poolPermissionManager = IPoolManagerLike(poolManager_).poolPermissionManager();

        // Perform an infinite approval.
        require(ERC20Helper.approve(asset_, pool_, type(uint256).max), "SR:C:APPROVE_FAIL");
    }

    /**************************************************************************************************************************************/
    /*** External Functions                                                                                                             ***/
    /**************************************************************************************************************************************/

    function authorizeAndDeposit(
        uint256 bitmap_,
        uint256 deadline_,
        uint8   auth_v,
        bytes32 auth_r,
        bytes32 auth_s,
        uint256 amount_,
        bytes32 depositData_
    )
        external override returns (uint256 shares_)
    {
        _authorize(deadline_, bitmap_, auth_v, auth_r, auth_s);

        shares_ = _deposit(msg.sender, amount_, depositData_);
    }

    function authorizeAndDepositWithPermit(
        uint256 bitmap_,
        uint256 auth_deadline_,
        uint8   auth_v,
        bytes32 auth_r,
        bytes32 auth_s,
        uint256 amount_,
        bytes32 depositData_,
        uint256 permit_deadline,
        uint8   permit_v_,
        bytes32 permit_r_,
        bytes32 permit_s_
    )
        external override returns (uint256 shares_)
    {
        _authorize(auth_deadline_, bitmap_, auth_v, auth_r, auth_s);
        _permit(asset, permit_deadline, amount_, permit_v_, permit_r_, permit_s_);

        shares_ = _deposit(msg.sender, amount_, depositData_);
    }

    function deposit(uint256 amount_, bytes32 depositData_) external override returns (uint256 shares_) {
        shares_ = _deposit(msg.sender, amount_, depositData_);
    }

    function depositWithPermit(
        uint256 amount_,
        uint256 deadline_,
        uint8   v_,
        bytes32 r_,
        bytes32 s_,
        bytes32 depositData_
    )
        external override returns (uint256 shares_)
    {
        _permit(asset, deadline_, amount_, v_, r_, s_);

        shares_ = _deposit(msg.sender, amount_, depositData_);
    }

    /**************************************************************************************************************************************/
    /*** Internal Functions                                                                                                             ***/
    /**************************************************************************************************************************************/

    function _authorize(uint256 deadline_, uint256 bitmap_, uint8 v_, bytes32 r_, bytes32 s_) internal {
        require(deadline_ >= block.timestamp, "SR:A:EXPIRED");

        // Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}.
        require(
            uint256(s_) <= uint256(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) &&
            (v_ == 27 || v_ == 28),
            "SR:A:MALLEABLE"
        );

        bytes32 digest_ = keccak256(abi.encodePacked(
            "\x19\x01",
            block.chainid,  // Chain id + address(this) serves as domain separator to avoid replay attacks.
            address(this),
            msg.sender,
            nonces[msg.sender]++,
            bitmap_,
            deadline_
        ));

        address recoveredAddress_ = ecrecover(digest_, v_, r_, s_);

        IPoolPermissionManagerLike ppm_ = IPoolPermissionManagerLike(poolPermissionManager);

        // Any valid permission admin can authorize the deposit.
        require(recoveredAddress_ != address(0) && ppm_.permissionAdmins(recoveredAddress_), "SR:A:NOT_PERMISSION_ADMIN");

        address[] memory lender = new address[](1);
        uint256[] memory bitmap = new uint256[](1);

        lender[0] = msg.sender;
        bitmap[0] = bitmap_;

        ppm_.setLenderBitmaps(lender, bitmap);
    }

    function _deposit(address owner_, uint256 amount_, bytes32 depositData_) internal returns (uint256 shares_) {
        // Check the owner has permission to deposit into the pool.
        require(
            IPoolPermissionManagerLike(poolPermissionManager).hasPermission(poolManager, owner_, "P:deposit"),
            "SR:D:NOT_AUTHORIZED"
        );

        // Pull assets from the owner to the router.
        require(ERC20Helper.transferFrom(asset, owner_, address(this), amount_), "SR:D:TRANSFER_FROM_FAIL");

        // Deposit assets into the pool and receive the shares personally.
        address pool_ = pool;

        shares_ = IPoolLike(pool_).deposit(amount_, address(this));

        // Route shares back to the caller.
        require(ERC20Helper.transfer(pool_, owner_, shares_), "SR:D:TRANSFER_FAIL");

        emit DepositData(owner_, amount_, depositData_);
    }

    function _permit(address asset_, uint256 deadline_, uint256 amount_, uint8 v_, bytes32 r_, bytes32 s_) internal {
        uint256 allowance_ = IERC20Like_0(asset_).allowance(msg.sender, address(this));

        if (allowance_ < amount_) {
            IERC20Like_0(asset_).permit(msg.sender, address(this), amount_, deadline_, v_, r_, s_);
        }
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"pool_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"depositData","type":"bytes32"}],"name":"DepositData","type":"event"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap_","type":"uint256"},{"internalType":"uint256","name":"deadline_","type":"uint256"},{"internalType":"uint8","name":"auth_v","type":"uint8"},{"internalType":"bytes32","name":"auth_r","type":"bytes32"},{"internalType":"bytes32","name":"auth_s","type":"bytes32"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"}],"name":"authorizeAndDeposit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap_","type":"uint256"},{"internalType":"uint256","name":"auth_deadline_","type":"uint256"},{"internalType":"uint8","name":"auth_v","type":"uint8"},{"internalType":"bytes32","name":"auth_r","type":"bytes32"},{"internalType":"bytes32","name":"auth_s","type":"bytes32"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"},{"internalType":"uint256","name":"permit_deadline","type":"uint256"},{"internalType":"uint8","name":"permit_v_","type":"uint8"},{"internalType":"bytes32","name":"permit_r_","type":"bytes32"},{"internalType":"bytes32","name":"permit_s_","type":"bytes32"}],"name":"authorizeAndDepositWithPermit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"deadline_","type":"uint256"},{"internalType":"uint8","name":"v_","type":"uint8"},{"internalType":"bytes32","name":"r_","type":"bytes32"},{"internalType":"bytes32","name":"s_","type":"bytes32"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"}],"name":"depositWithPermit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolPermissionManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6101006040523480156200001257600080fd5b5060405162001400380380620014008339810160408190526200003591620003e9565b806001600160a01b031660a0816001600160a01b031660601b815250506000816001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200008e57600080fd5b505afa158015620000a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c99190620003e9565b6001600160a01b03166080816001600160a01b031660601b81525090506000826001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012257600080fd5b505afa15801562000137573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015d9190620003e9565b6001600160a01b031660c0816001600160a01b031660601b8152509050806001600160a01b031663e15e990a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b457600080fd5b505afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef9190620003e9565b6001600160a01b031660e0816001600160a01b031660601b815250506200022582846000196200027360201b620002a31760201c565b6200026a5760405162461bcd60e51b815260206004820152601160248201527014d48e90ce9054141493d59157d1905253607a1b604482015260640160405180910390fd5b50505062000476565b6040516001600160a01b038316602482015260006044820181905290620002dc90859063095ea7b360e01b906064015b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052906200033516565b620002ea575060006200032e565b81620002f9575060016200032e565b6040516001600160a01b0384166024820152604481018390526200032b90859063095ea7b360e01b90606401620002a3565b90505b9392505050565b60006001600160a01b0383163b6200035057506000620003e3565b6060836001600160a01b0316836040516200036c919062000438565b6000604051808303816000865af19150503d8060008114620003ab576040519150601f19603f3d011682016040523d82523d6000602084013e620003b0565b606091505b509092509050818015620003df575080511580620003df575080806020019051810190620003df919062000414565b9150505b92915050565b600060208284031215620003fc57600080fd5b81516001600160a01b03811681146200032e57600080fd5b6000602082840312156200042757600080fd5b815180151581146200032e57600080fd5b6000825160005b818110156200045b57602081860181015185830152016200043f565b818111156200046b576000828501525b509190910192915050565b60805160601c60a05160601c60c05160601c60e05160601c610f15620004eb600039600081816101a9015281816104ce01526108ef0152600081816101820152610489015260008181609d015261062501526000818160e1015281816101d20152818161022501526105960152610f156000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a6d061fb11610066578063a6d061fb14610144578063c9630cb014610157578063d5db8c671461016a578063dc4c90d31461017d578063e15e990a146101a457600080fd5b806316f0115b1461009857806338d52e0f146100dc5780636807c8dc146101035780637ecebe0014610124575b600080fd5b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b610116610111366004610ca9565b6101cb565b6040519081526020016100d3565b610116610132366004610c23565b60006020819052908152604090205481565b610116610152366004610d54565b610211565b610116610165366004610c87565b610269565b610116610178366004610cfa565b61027d565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b60006101fb7f0000000000000000000000000000000000000000000000000000000000000000878988888861035a565b610206338884610472565b979650505050505050565b60006102208b8d8c8c8c610745565b61024e7f0000000000000000000000000000000000000000000000000000000000000000868987878761035a565b610259338888610472565b9c9b505050505050505050505050565b6000610276338484610472565b9392505050565b600061028c8789888888610745565b610297338484610472565b98975050505050505050565b6040516001600160a01b03831660248201526000604482018190529061030990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610aec565b61031557506000610276565b8161032257506001610276565b6040516001600160a01b03841660248201526044810183905261035290859063095ea7b360e01b906064016102d2565b949350505050565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0388169063dd62ed3e9060440160206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610c6e565b9050848110156104695760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b505050505b50505050505050565b604051630dace25b60e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152848116602483015268140e99195c1bdcda5d60ba1b60448301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636d6712d89060640160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610c4c565b6105915760405162461bcd60e51b815260206004820152601360248201527214d48e910e9393d517d055551213d492569151606a1b60448201526064015b60405180910390fd5b6105bd7f0000000000000000000000000000000000000000000000000000000000000000853086610b96565b6106095760405162461bcd60e51b815260206004820152601760248201527f53523a443a5452414e534645525f46524f4d5f4641494c0000000000000000006044820152606401610588565b604051636e553f6560e01b8152600481018490523060248201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690636e553f6590604401602060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190610c6e565b91506106b8818684610bda565b6106f95760405162461bcd60e51b815260206004820152601260248201527114d48e910e9514905394d1915497d190525360721b6044820152606401610588565b60408051858152602081018590526001600160a01b038716917fec286cce32dfa9d8e469ef4d4bb77854e3225bc050e97e66bb30fe1e4c2819cb910160405180910390a2509392505050565b428510156107845760405162461bcd60e51b815260206004820152600c60248201526b14d48e904e9156141254915160a21b6044820152606401610588565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081118015906107c457508260ff16601b14806107c457508260ff16601c145b6108015760405162461bcd60e51b815260206004820152600e60248201526d53523a413a4d414c4c4541424c4560901b6044820152606401610588565b33600081815260208190526040812080549192469230928561082283610ea0565b9091555060405161190160f01b602082015260228101949094526bffffffffffffffffffffffff19606093841b811660428601529190921b166056830152606a820152608a810186905260aa810187905260ca0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156108e1573d6000803e3d6000fd5b5050604051601f19015191507f000000000000000000000000000000000000000000000000000000000000000090506001600160a01b0382161580159061099c57506040516329206d6f60e01b81526001600160a01b0383811660048301528216906329206d6f9060240160206040518083038186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190610c4c565b6109e85760405162461bcd60e51b815260206004820152601960248201527f53523a413a4e4f545f5045524d495353494f4e5f41444d494e000000000000006044820152606401610588565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090503382600081518110610a4157610a41610ec9565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600081518110610a7557610a75610ec9565b6020908102919091010152604051638551366360e01b81526001600160a01b03841690638551366390610aae9085908590600401610e1c565b600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050505050505050505050505050565b60006001600160a01b0383163b610b0557506000610b90565b6060836001600160a01b031683604051610b1f9190610de1565b6000604051808303816000865af19150503d8060008114610b5c576040519150601f19603f3d011682016040523d82523d6000602084013e610b61565b606091505b509092509050818015610b8c575080511580610b8c575080806020019051810190610b8c9190610c4c565b9150505b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052600090610bd19086906323b872dd60e01b906084016102d2565b95945050505050565b6040516001600160a01b03831660248201526044810182905260009061035290859063a9059cbb60e01b906064016102d2565b803560ff81168114610c1e57600080fd5b919050565b600060208284031215610c3557600080fd5b81356001600160a01b038116811461027657600080fd5b600060208284031215610c5e57600080fd5b8151801515811461027657600080fd5b600060208284031215610c8057600080fd5b5051919050565b60008060408385031215610c9a57600080fd5b50508035926020909101359150565b60008060008060008060c08789031215610cc257600080fd5b8635955060208701359450610cd960408801610c0d565b9350606087013592506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215610d1557600080fd5b8735965060208801359550610d2c60408901610c0d565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060008060008060008060008060006101608c8e031215610d7657600080fd5b8b359a5060208c01359950610d8d60408d01610c0d565b985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c01359350610dbf6101008d01610c0d565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000825160005b81811015610e025760208186018101518583015201610de8565b81811115610e11576000828501525b509190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610e5e5781516001600160a01b031684529284019290840190600101610e39565b5050508381038285015284518082528583019183019060005b81811015610e9357835183529284019291840191600101610e77565b5090979650505050505050565b6000600019821415610ec257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220129827db56dc4d2689fc074a9f29fa1fd10e29a4c516fd1f001f876e1d78312a64736f6c63430008070033000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063a6d061fb11610066578063a6d061fb14610144578063c9630cb014610157578063d5db8c671461016a578063dc4c90d31461017d578063e15e990a146101a457600080fd5b806316f0115b1461009857806338d52e0f146100dc5780636807c8dc146101035780637ecebe0014610124575b600080fd5b6100bf7f000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec781565b610116610111366004610ca9565b6101cb565b6040519081526020016100d3565b610116610132366004610c23565b60006020819052908152604090205481565b610116610152366004610d54565b610211565b610116610165366004610c87565b610269565b610116610178366004610cfa565b61027d565b6100bf7f0000000000000000000000000cda32e08b48bfddbc7ee96b44b09cf286f9e21a81565b6100bf7f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b381565b60006101fb7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7878988888861035a565b610206338884610472565b979650505050505050565b60006102208b8d8c8c8c610745565b61024e7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7868987878761035a565b610259338888610472565b9c9b505050505050505050505050565b6000610276338484610472565b9392505050565b600061028c8789888888610745565b610297338484610472565b98975050505050505050565b6040516001600160a01b03831660248201526000604482018190529061030990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610aec565b61031557506000610276565b8161032257506001610276565b6040516001600160a01b03841660248201526044810183905261035290859063095ea7b360e01b906064016102d2565b949350505050565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0388169063dd62ed3e9060440160206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610c6e565b9050848110156104695760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b505050505b50505050505050565b604051630dace25b60e31b81526001600160a01b037f0000000000000000000000000cda32e08b48bfddbc7ee96b44b09cf286f9e21a81166004830152848116602483015268140e99195c1bdcda5d60ba1b60448301526000917f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b390911690636d6712d89060640160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610c4c565b6105915760405162461bcd60e51b815260206004820152601360248201527214d48e910e9393d517d055551213d492569151606a1b60448201526064015b60405180910390fd5b6105bd7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7853086610b96565b6106095760405162461bcd60e51b815260206004820152601760248201527f53523a443a5452414e534645525f46524f4d5f4641494c0000000000000000006044820152606401610588565b604051636e553f6560e01b8152600481018490523060248201527f000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d906001600160a01b03821690636e553f6590604401602060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190610c6e565b91506106b8818684610bda565b6106f95760405162461bcd60e51b815260206004820152601260248201527114d48e910e9514905394d1915497d190525360721b6044820152606401610588565b60408051858152602081018590526001600160a01b038716917fec286cce32dfa9d8e469ef4d4bb77854e3225bc050e97e66bb30fe1e4c2819cb910160405180910390a2509392505050565b428510156107845760405162461bcd60e51b815260206004820152600c60248201526b14d48e904e9156141254915160a21b6044820152606401610588565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081118015906107c457508260ff16601b14806107c457508260ff16601c145b6108015760405162461bcd60e51b815260206004820152600e60248201526d53523a413a4d414c4c4541424c4560901b6044820152606401610588565b33600081815260208190526040812080549192469230928561082283610ea0565b9091555060405161190160f01b602082015260228101949094526bffffffffffffffffffffffff19606093841b811660428601529190921b166056830152606a820152608a810186905260aa810187905260ca0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156108e1573d6000803e3d6000fd5b5050604051601f19015191507f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b390506001600160a01b0382161580159061099c57506040516329206d6f60e01b81526001600160a01b0383811660048301528216906329206d6f9060240160206040518083038186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190610c4c565b6109e85760405162461bcd60e51b815260206004820152601960248201527f53523a413a4e4f545f5045524d495353494f4e5f41444d494e000000000000006044820152606401610588565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090503382600081518110610a4157610a41610ec9565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600081518110610a7557610a75610ec9565b6020908102919091010152604051638551366360e01b81526001600160a01b03841690638551366390610aae9085908590600401610e1c565b600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050505050505050505050505050565b60006001600160a01b0383163b610b0557506000610b90565b6060836001600160a01b031683604051610b1f9190610de1565b6000604051808303816000865af19150503d8060008114610b5c576040519150601f19603f3d011682016040523d82523d6000602084013e610b61565b606091505b509092509050818015610b8c575080511580610b8c575080806020019051810190610b8c9190610c4c565b9150505b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052600090610bd19086906323b872dd60e01b906084016102d2565b95945050505050565b6040516001600160a01b03831660248201526044810182905260009061035290859063a9059cbb60e01b906064016102d2565b803560ff81168114610c1e57600080fd5b919050565b600060208284031215610c3557600080fd5b81356001600160a01b038116811461027657600080fd5b600060208284031215610c5e57600080fd5b8151801515811461027657600080fd5b600060208284031215610c8057600080fd5b5051919050565b60008060408385031215610c9a57600080fd5b50508035926020909101359150565b60008060008060008060c08789031215610cc257600080fd5b8635955060208701359450610cd960408801610c0d565b9350606087013592506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215610d1557600080fd5b8735965060208801359550610d2c60408901610c0d565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060008060008060008060008060006101608c8e031215610d7657600080fd5b8b359a5060208c01359950610d8d60408d01610c0d565b985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c01359350610dbf6101008d01610c0d565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000825160005b81811015610e025760208186018101518583015201610de8565b81811115610e11576000828501525b509190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610e5e5781516001600160a01b031684529284019290840190600101610e39565b5050508381038285015284518082528583019183019060005b81811015610e9357835183529284019291840191600101610e77565b5090979650505050505050565b6000600019821415610ec257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220129827db56dc4d2689fc074a9f29fa1fd10e29a4c516fd1f001f876e1d78312a64736f6c63430008070033

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

000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d

-----Decoded View---------------
Arg [0] : pool_ (address): 0x356B8d89c1e1239Cbbb9dE4815c39A1474d5BA7D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000356b8d89c1e1239cbbb9de4815c39a1474d5ba7d


Deployed Bytecode Sourcemap

12413:6096:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12505:38;;;;;;;;-1:-1:-1;;;;;4539:32:1;;;4521:51;;4509:2;4494:18;12505:38:0;;;;;;;;12459:39;;;;;14903:371;;;;;;:::i;:::-;;:::i;:::-;;;10491:25:1;;;10479:2;10464:18;14903:371:0;10345:177:1;12666:50:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;14074:641;;;;;;:::i;:::-;;:::i;14723:172::-;;;;;;:::i;:::-;;:::i;13647:419::-;;;;;;:::i;:::-;;:::i;12550:45::-;;;;;12602:55;;;;;14903:371;15121:15;15154:46;15162:5;15169:9;15180:7;15189:2;15193;15197;15154:7;:46::i;:::-;15223:43;15232:10;15244:7;15253:12;15223:8;:43::i;:::-;15213:53;14903:371;-1:-1:-1;;;;;;;14903:371:0:o;14074:641::-;14465:15;14498:59;14509:14;14525:7;14534:6;14542;14550;14498:10;:59::i;:::-;14568:73;14576:5;14583:15;14600:7;14609:9;14620;14631;14568:7;:73::i;:::-;14664:43;14673:10;14685:7;14694:12;14664:8;:43::i;:::-;14654:53;14074:641;-1:-1:-1;;;;;;;;;;;;14074:641:0:o;14723:172::-;14806:15;14844:43;14853:10;14865:7;14874:12;14844:8;:43::i;:::-;14834:53;14723:172;-1:-1:-1;;;14723:172:0:o;13647:419::-;13905:15;13938:54;13949:9;13960:7;13969:6;13977;13985;13938:10;:54::i;:::-;14015:43;14024:10;14036:7;14045:12;14015:8;:43::i;:::-;14005:53;13647:419;-1:-1:-1;;;;;;;;13647:419:0:o;9927:601::-;10119:75;;-1:-1:-1;;;;;6587:32:1;;10119:75:0;;;6569:51:1;10013:13:0;6636:18:1;;;6629:34;;;10013:13:0;10105:90;;10111:6;;-1:-1:-1;;;10142:29:0;6542:18:1;;10119:75:0;;;;-1:-1:-1;;10119:75:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10119:75:0;-1:-1:-1;;;;;;10119:75:0;;;;;;;;;;10105:5;:90::i;:::-;10100:109;;-1:-1:-1;10204:5:0;10197:12;;10100:109;10311:21;10307:38;;-1:-1:-1;10341:4:0;10334:11;;10307:38;10447:72;;-1:-1:-1;;;;;6587:32:1;;10447:72:0;;;6569:51:1;6636:18;;;6629:34;;;10433:87:0;;10439:6;;-1:-1:-1;;;10470:29:0;6542:18:1;;10447:72:0;6395:274:1;10433:87:0;10426:94;9927:601;-1:-1:-1;;;;9927:601:0:o;18144:360::-;18288:57;;-1:-1:-1;;;18288:57:0;;18319:10;18288:57;;;4795:34:1;18339:4:0;4845:18:1;;;4838:43;18267:18:0;;-1:-1:-1;;;;;18288:30:0;;;;;4730:18:1;;18288:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18267:78;;18375:7;18362:10;:20;18358:139;;;18399:86;;-1:-1:-1;;;18399:86:0;;18427:10;18399:86;;;6069:34:1;18447:4:0;6119:18:1;;;6112:43;6171:18;;;6164:34;;;6214:18;;;6207:34;;;6290:4;6278:17;;6257:19;;;6250:46;6312:19;;;6305:35;;;6356:19;;;6349:35;;;-1:-1:-1;;;;;18399:27:0;;;;;6003:19:1;;18399:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18358:139;18256:248;18144:360;;;;;;:::o;17235:901::-;17445:97;;-1:-1:-1;;;17445:97:0;;-1:-1:-1;;;;;17509:11:0;5213:15:1;;17445:97:0;;;5195:34:1;5265:15;;;5245:18;;;5238:43;-1:-1:-1;;;5297:18:1;;;5290:39;-1:-1:-1;;17472:21:0;17445:63;;;;;;5130:18:1;;17445:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17423:166;;;;-1:-1:-1;;;17423:166:0;;10199:2:1;17423:166:0;;;10181:21:1;10238:2;10218:18;;;10211:30;-1:-1:-1;;;10257:18:1;;;10250:49;10316:18;;17423:166:0;;;;;;;;;17664:63;17689:5;17696:6;17712:4;17719:7;17664:24;:63::i;:::-;17656:99;;;;-1:-1:-1;;;17656:99:0;;8462:2:1;17656:99:0;;;8444:21:1;8501:2;8481:18;;;8474:30;8540:25;8520:18;;;8513:53;8583:18;;17656:99:0;8260:347:1;17656:99:0;17887:48;;-1:-1:-1;;;17887:48:0;;;;;10701:25:1;;;17929:4:0;10742:18:1;;;10735:60;17860:4:0;;-1:-1:-1;;;;;17887:24:0;;;;;10674:18:1;;17887:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17877:58;;18001:44;18022:5;18029:6;18037:7;18001:20;:44::i;:::-;17993:75;;;;-1:-1:-1;;;17993:75:0;;9852:2:1;17993:75:0;;;9834:21:1;9891:2;9871:18;;;9864:30;-1:-1:-1;;;9910:18:1;;;9903:48;9968:18;;17993:75:0;9650:342:1;17993:75:0;18086:42;;;10980:25:1;;;11036:2;11021:18;;11014:34;;;-1:-1:-1;;;;;18086:42:0;;;;;10953:18:1;18086:42:0;;;;;;;17343:793;17235:901;;;;;:::o;15710:1517::-;15841:15;15828:9;:28;;15820:53;;;;-1:-1:-1;;;15820:53:0;;8814:2:1;15820:53:0;;;8796:21:1;8853:2;8833:18;;;8826:30;-1:-1:-1;;;8872:18:1;;;8865:42;8924:18;;15820:53:0;8612:336:1;15820:53:0;16152:66;16129:90;;;;;:129;;;16237:2;:8;;16243:2;16237:8;:20;;;;16249:2;:8;;16255:2;16249:8;16237:20;16107:193;;;;-1:-1:-1;;;16107:193:0;;9509:2:1;16107:193:0;;;9491:21:1;9548:2;9528:18;;;9521:30;-1:-1:-1;;;9567:18:1;;;9560:44;9621:18;;16107:193:0;9307:338:1;16107:193:0;16534:10;16313:15;16559:18;;;;;;;;;;:20;;16313:15;;16397:13;;16514:4;;16313:15;16559:20;;;:::i;:::-;;;;-1:-1:-1;16341:295:0;;-1:-1:-1;;;16341:295:0;;;3999:27:1;4042:11;;;4035:27;;;;-1:-1:-1;;4150:2:1;4146:15;;;4142:24;;4128:12;;;4121:46;4201:15;;;;4197:24;4183:12;;;4176:46;4238:12;;;4231:28;4275:13;;;4268:29;;;4313:13;;;4306:29;;;4351:13;;16341:295:0;;;-1:-1:-1;;16341:295:0;;;;;;;;;16331:306;;16341:295;16331:306;;;;16650:25;16678:30;;;;;;;;;8084:25:1;;;8157:4;8145:17;;8125:18;;;8118:45;;;;8179:18;;;8172:34;;;8222:18;;;8215:34;;;16331:306:0;;-1:-1:-1;16650:25:0;16678:30;;8056:19:1;;16678:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16678:30:0;;-1:-1:-1;;16678:30:0;;;-1:-1:-1;16782:21:0;;-1:-1:-1;;;;;;16891:31:0;;;;;;:75;;-1:-1:-1;16926:40:0;;-1:-1:-1;;;16926:40:0;;-1:-1:-1;;;;;4539:32:1;;;16926:40:0;;;4521:51:1;16926:21:0;;;;;4494:18:1;;16926:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16883:113;;;;-1:-1:-1;;;16883:113:0;;9155:2:1;16883:113:0;;;9137:21:1;9194:2;9174:18;;;9167:30;9233:27;9213:18;;;9206:55;9278:18;;16883:113:0;8953:349:1;16883:113:0;17035:16;;;17049:1;17035:16;;;;;;;;;17009:23;;17035:16;;;;;;;;;-1:-1:-1;;17088:16:0;;;17102:1;17088:16;;;;;;;;;17009:42;;-1:-1:-1;17062:23:0;;17088:16;-1:-1:-1;17088:16:0;;;;;;;;;;;-1:-1:-1;17088:16:0;17062:42;;17129:10;17117:6;17124:1;17117:9;;;;;;;;:::i;:::-;;;;;;:22;-1:-1:-1;;;;;17117:22:0;;;-1:-1:-1;;;;;17117:22:0;;;;;17162:7;17150:6;17157:1;17150:9;;;;;;;;:::i;:::-;;;;;;;;;;:19;17182:37;;-1:-1:-1;;;17182:37:0;;-1:-1:-1;;;;;17182:21:0;;;;;:37;;17204:6;;17212;;17182:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15809:1418;;;;;15710:1517;;;;;:::o;10536:343::-;10604:13;-1:-1:-1;;;;;10634:18:0;;;10630:50;;-1:-1:-1;10675:5:0;10668:12;;10630:50;10693:23;10754:6;-1:-1:-1;;;;;10754:11:0;10766:5;10754:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10727:45:0;;-1:-1:-1;10727:45:0;-1:-1:-1;10727:45:0;10792:79;;;;-1:-1:-1;10805:17:0;;:31;;:65;;;10851:10;10840:30;;;;;;;;;;;;:::i;:::-;10785:86;;;10536:343;;;;;:::o;9683:236::-;9831:79;;-1:-1:-1;;;;;5598:15:1;;;9831:79:0;;;5580:34:1;5650:15;;5630:18;;;5623:43;5682:18;;;5675:34;;;9784:13:0;;9817:94;;9823:6;;-1:-1:-1;;;9854:34:0;5515:18:1;;9831:79:0;5340:375:1;9817:94:0;9810:101;9683:236;-1:-1:-1;;;;;9683:236:0:o;9469:206::-;9598:68;;-1:-1:-1;;;;;6587:32:1;;9598:68:0;;;6569:51:1;6636:18;;;6629:34;;;9551:13:0;;9584:83;;9590:6;;-1:-1:-1;;;9621:30:0;6542:18:1;;9598:68:0;6395:274:1;14:156;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:286::-;234:6;287:2;275:9;266:7;262:23;258:32;255:52;;;303:1;300;293:12;255:52;329:23;;-1:-1:-1;;;;;381:31:1;;371:42;;361:70;;427:1;424;417:12;466:277;533:6;586:2;574:9;565:7;561:23;557:32;554:52;;;602:1;599;592:12;554:52;634:9;628:16;687:5;680:13;673:21;666:5;663:32;653:60;;709:1;706;699:12;748:184;818:6;871:2;859:9;850:7;846:23;842:32;839:52;;;887:1;884;877:12;839:52;-1:-1:-1;910:16:1;;748:184;-1:-1:-1;748:184:1:o;937:248::-;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;-1:-1:-1;;1105:23:1;;;1175:2;1160:18;;;1147:32;;-1:-1:-1;937:248:1:o;1190:525::-;1292:6;1300;1308;1316;1324;1332;1385:3;1373:9;1364:7;1360:23;1356:33;1353:53;;;1402:1;1399;1392:12;1353:53;1438:9;1425:23;1415:33;;1495:2;1484:9;1480:18;1467:32;1457:42;;1518:36;1550:2;1539:9;1535:18;1518:36;:::i;:::-;1508:46;;1601:2;1590:9;1586:18;1573:32;1563:42;;1652:3;1641:9;1637:19;1624:33;1614:43;;1704:3;1693:9;1689:19;1676:33;1666:43;;1190:525;;;;;;;;:::o;1720:594::-;1831:6;1839;1847;1855;1863;1871;1879;1932:3;1920:9;1911:7;1907:23;1903:33;1900:53;;;1949:1;1946;1939:12;1900:53;1985:9;1972:23;1962:33;;2042:2;2031:9;2027:18;2014:32;2004:42;;2065:36;2097:2;2086:9;2082:18;2065:36;:::i;:::-;1720:594;;;;-1:-1:-1;2055:46:1;;2148:2;2133:18;;2120:32;;-1:-1:-1;2199:3:1;2184:19;;2171:33;;2251:3;2236:19;;2223:33;;-1:-1:-1;2303:3:1;2288:19;;;2275:33;;-1:-1:-1;1720:594:1;-1:-1:-1;;1720:594:1:o;2319:874::-;2464:6;2472;2480;2488;2496;2504;2512;2520;2528;2536;2544:7;2598:3;2586:9;2577:7;2573:23;2569:33;2566:53;;;2615:1;2612;2605:12;2566:53;2651:9;2638:23;2628:33;;2708:2;2697:9;2693:18;2680:32;2670:42;;2731:36;2763:2;2752:9;2748:18;2731:36;:::i;:::-;2721:46;;2814:2;2803:9;2799:18;2786:32;2776:42;;2865:3;2854:9;2850:19;2837:33;2827:43;;2917:3;2906:9;2902:19;2889:33;2879:43;;2969:3;2958:9;2954:19;2941:33;2931:43;;3021:3;3010:9;3006:19;2993:33;2983:43;;3045:37;3077:3;3066:9;3062:19;3045:37;:::i;:::-;3035:47;;3129:3;3118:9;3114:19;3101:33;3091:43;;3182:3;3171:9;3167:19;3154:33;3143:44;;2319:874;;;;;;;;;;;;;;:::o;3198:426::-;3327:3;3365:6;3359:13;3390:1;3400:129;3414:6;3411:1;3408:13;3400:129;;;3512:4;3496:14;;;3492:25;;3486:32;3473:11;;;3466:53;3429:12;3400:129;;;3547:6;3544:1;3541:13;3538:48;;;3582:1;3573:6;3568:3;3564:16;3557:27;3538:48;-1:-1:-1;3602:16:1;;;;;3198:426;-1:-1:-1;;3198:426:1:o;6674:1178::-;6942:2;6954:21;;;7024:13;;6927:18;;;7046:22;;;6894:4;;7121;;7099:2;7084:18;;;7148:15;;;6894:4;7191:195;7205:6;7202:1;7199:13;7191:195;;;7270:13;;-1:-1:-1;;;;;7266:39:1;7254:52;;7326:12;;;;7361:15;;;;7302:1;7220:9;7191:195;;;-1:-1:-1;;;7422:19:1;;;7402:18;;;7395:47;7492:13;;7514:21;;;7590:15;;;;7553:12;;;7625:1;7635:189;7651:8;7646:3;7643:17;7635:189;;;7720:15;;7706:30;;7797:17;;;;7758:14;;;;7679:1;7670:11;7635:189;;;-1:-1:-1;7841:5:1;;6674:1178;-1:-1:-1;;;;;;;6674:1178:1:o;11059:232::-;11098:3;-1:-1:-1;;11119:17:1;;11116:140;;;11178:10;11173:3;11169:20;11166:1;11159:31;11213:4;11210:1;11203:15;11241:4;11238:1;11231:15;11116:140;-1:-1:-1;11283:1:1;11272:13;;11059:232::o;11296:127::-;11357:10;11352:3;11348:20;11345:1;11338:31;11388:4;11385:1;11378:15;11412:4;11409:1;11402:15

Swarm Source

ipfs://129827db56dc4d2689fc074a9f29fa1fd10e29a4c516fd1f001f876e1d78312a

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.