ETH Price: $2,692.28 (+2.02%)
Gas: 9 Gwei

Token

Emerging Assets Group (EAG)
 

Overview

Max Total Supply

12,075,000 EAG

Holders

134 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
ash13ld.q00t.eth
Balance
25,609.448413981696926471 EAG

Value
$0.00
0xcbc2146cf2699940f039dcd08ba619d0bd6d8339
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:
EAG

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-03
*/

/*

    
                    ███████  █████   ██████  
                    ██      ██   ██ ██       
                    █████   ███████ ██   ███ 
                    ██      ██   ██ ██    ██ 
                    ███████ ██   ██  ██████  

                    Emerging Assets Group

 Revolutionizing the Trading of Commodities and Alternative Hard Assets
                             
-> Telegram : https://t.me/EAG_Official

*/

// SPDX-License-Identifier:MIT

pragma solidity ^0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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
    );
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

interface IREWARD {
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
}

contract EAG is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "Emerging Assets Group"; 
    string private _symbol = "EAG"; 
    uint8 private _decimals = 18; 
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public ischargepair;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isDividendExempt;

    uint256 private _totalSupply = 12_075_000 * 10**_decimals;
    uint256 public swapThreshold = 6000 * 10**_decimals;

    address private deployer;

    bool public swapEnabled = true;
    bool public swapByLimit = true;

    IREWARD public rewardDividend;

    IDexSwapRouter public DexRouter;
    address public DexPair;

    bool inSwap;
    
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyGuard {
        require(msg.sender == deployer);
        _;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        deployer = msg.sender;
        
        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        DexPair = IDexSwapFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );

        DexRouter = _dexRouter;

        ischargepair[address(this)] = true;
        ischargepair[address(0xdead)] = true;
        ischargepair[msg.sender] = true;

        isDividendExempt[DexPair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(0xdead)] = true;
        isDividendExempt[address(DexRouter)] = true;

        isMarketPair[address(DexPair)] = true;

        _allowances[address(this)][address(DexRouter)] = ~uint256(0);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
       return _balances[account];     
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0) && recipient != address(0) && amount > 0);
        
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isMarketPair[sender] && 
                swapEnabled &&
                !ischargepair[sender] &&
                !ischargepair[recipient]
                ) {
                swapBack(contractTokenBalance);
            }
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            if(!isDividendExempt[sender]){ try rewardDividend.setShare(sender, balanceOf(sender)) {} catch {} }
            if(!isDividendExempt[recipient]){ try rewardDividend.setShare(recipient, balanceOf(recipient)) {} catch {} }

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(ischargepair[sender] || ischargepair[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(3).div(100);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(3).div(100);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function swapBack(uint contractBalance) internal swapping {

        if(swapByLimit) {
            contractBalance = swapThreshold;
        }

        if(contractBalance == 0) return;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        if(amountReceived > 0) {
            try rewardDividend.deposit { value: amountReceived } () {} catch {}
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = DexRouter.WETH();

        _approve(address(this), address(DexRouter), tokenAmount);

        // make the swap
        DexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }
    
    function rescueFunds() external onlyGuard {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success, 'Token payment failed');
    }

    function clearStuckTokens(address _token, address recipient, uint256 _amount) external onlyGuard {
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        require(success, 'Token payment failed');
    }

    function enableChargePair(address _adr,bool _status) external onlyGuard {
        ischargepair[_adr] = _status;
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        onlyGuard
    {
        if(exempt) {
            rewardDividend.setShare(holder,0);
        }
        else {
            rewardDividend.setShare(holder,balanceOf(holder));
        }
        isDividendExempt[holder] = exempt;
    }

    function setRewardDividend(address _dividend) external onlyGuard {
        rewardDividend = IREWARD(_dividend); 
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount, bool _limited)
        external
        onlyGuard
    {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        swapByLimit = _limited;
    }

}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":[],"name":"DexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableChargePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ischargepair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardDividend","outputs":[{"internalType":"contract IREWARD","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dividend","type":"address"}],"name":"setRewardDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapByLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601560809081527f456d657267696e67204173736574732047726f7570000000000000000000000060a0526001906200003e9082620004b1565b5060408051808201909152600381526245414760e81b6020820152600290620000689082620004b1565b506003805460ff191660129081179091556200008690600a62000688565b620000959062b83ff86200069f565b600955600354620000ab9060ff16600a62000688565b620000b9906117706200069f565b600a55600b805461ffff60a01b191661010160a01b179055348015620000dd575f80fd5b50620000e933620003c2565b600b80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa1580156200014d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001739190620006b9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e59190620006b9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000230573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002569190620006b9565b600e80546001600160a01b03199081166001600160a01b03938416178255600d8054909116848416178155305f818152600660209081526040808320805460ff1990811660019081179092557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905533808652838620805483168417905588548a168652600885528386208054831684179055808652838620805483168417905586865283862080548316841790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805483168417905587548a1686528386208054831684179055975489168552600784528285208054909116909117905592825260058152828220935490951681529184528082205f199055600954838352600485528183208190559051908152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620006e1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200043a57607f821691505b6020821081036200045957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004ac575f81815260208120601f850160051c81016020861015620004875750805b601f850160051c820191505b81811015620004a85782815560010162000493565b5050505b505050565b81516001600160401b03811115620004cd57620004cd62000411565b620004e581620004de845462000425565b846200045f565b602080601f8311600181146200051b575f8415620005035750858301515b5f19600386901b1c1916600185901b178555620004a8565b5f85815260208120601f198616915b828110156200054b578886015182559484019460019091019084016200052a565b50858210156200056957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005cd57815f1904821115620005b157620005b162000579565b80851615620005bf57918102915b93841c939080029062000592565b509250929050565b5f82620005e55750600162000682565b81620005f357505f62000682565b81600181146200060c5760028114620006175762000637565b600191505062000682565b60ff8411156200062b576200062b62000579565b50506001821b62000682565b5060208310610133831016604e8410600b84101617156200065c575081810a62000682565b6200066883836200058d565b805f19048211156200067e576200067e62000579565b0290505b92915050565b5f6200069860ff841683620005d5565b9392505050565b808202811582820484141762000682576200068262000579565b5f60208284031215620006ca575f80fd5b81516001600160a01b038116811462000698575f80fd5b611b4f80620006ef5f395ff3fe6080604052600436106101bd575f3560e01c806372460e7f116100f25780639d34a30d11610092578063dd62ed3e11610062578063dd62ed3e14610526578063e6b2603b1461056a578063f2fde38b1461057e578063f708a64f1461059d575f80fd5b80639d34a30d146104aa578063a457c2d7146104c9578063a6d3472a146104e8578063a9059cbb14610507575f80fd5b80638ca39f5e116100cd5780638ca39f5e1461043c5780638da5cb5b1461045b57806395d89b411461047757806398ed3bbd1461048b575f80fd5b806372460e7f146103c7578063736ce0d4146103fe5780637daf4b2b1461041d575f80fd5b8063313ce5671161015d5780634355855a116101385780634355855a1461032f5780636ddd17131461035d57806370a082311461037d578063715018a6146103b1575f80fd5b8063313ce567146102c157806339509351146102e25780633ecad27114610301575f80fd5b8063095ea7b311610198578063095ea7b3146102415780630d61f8371461026057806318160ddd1461028e57806323b872dd146102a2575f80fd5b80630445b667146101c85780630634f438146101f057806306fdde0314610220575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dd600a5481565b6040519081526020015b60405180910390f35b3480156101fb575f80fd5b50600b5461021090600160a81b900460ff1681565b60405190151581526020016101e7565b34801561022b575f80fd5b506102346105bc565b6040516101e791906117bd565b34801561024c575f80fd5b5061021061025b366004611803565b61064c565b34801561026b575f80fd5b5061021061027a36600461182d565b60066020525f908152604090205460ff1681565b348015610299575f80fd5b506009546101dd565b3480156102ad575f80fd5b506102106102bc366004611848565b610662565b3480156102cc575f80fd5b5060035460405160ff90911681526020016101e7565b3480156102ed575f80fd5b506102106102fc366004611803565b6106cb565b34801561030c575f80fd5b5061021061031b36600461182d565b60076020525f908152604090205460ff1681565b34801561033a575f80fd5b5061021061034936600461182d565b60086020525f908152604090205460ff1681565b348015610368575f80fd5b50600b5461021090600160a01b900460ff1681565b348015610388575f80fd5b506101dd61039736600461182d565b6001600160a01b03165f9081526004602052604090205490565b3480156103bc575f80fd5b506103c5610700565b005b3480156103d2575f80fd5b50600e546103e6906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b348015610409575f80fd5b50600d546103e6906001600160a01b031681565b348015610428575f80fd5b506103c561043736600461189a565b610769565b348015610447575f80fd5b50600c546103e6906001600160a01b031681565b348015610466575f80fd5b505f546001600160a01b03166103e6565b348015610482575f80fd5b506102346107bb565b348015610496575f80fd5b506103c56104a53660046118d3565b6107ca565b3480156104b5575f80fd5b506103c56104c4366004611848565b61080a565b3480156104d4575f80fd5b506102106104e3366004611803565b610904565b3480156104f3575f80fd5b506103c561050236600461182d565b610951565b348015610512575f80fd5b50610210610521366004611803565b610989565b348015610531575f80fd5b506101dd610540366004611906565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610575575f80fd5b506103c5610995565b348015610589575f80fd5b506103c561059836600461182d565b610a3a565b3480156105a8575f80fd5b506103c56105b73660046118d3565b610b01565b6060600180546105cb9061193d565b80601f01602080910402602001604051908101604052809291908181526020018280546105f79061193d565b80156106425780601f1061061957610100808354040283529160200191610642565b820191905f5260205f20905b81548152906001019060200180831161062557829003601f168201915b5050505050905090565b5f610658338484610c36565b5060015b92915050565b5f61066e848484610d59565b506106c084336106bb85604051806060016040528060288152602001611acd602891396001600160a01b038a165f90815260056020908152604080832033845290915290205491906110d4565b610c36565b5060015b9392505050565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916106589185906106bb908661110c565b5f546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107675f61116a565b565b600b546001600160a01b0316331461077f575f80fd5b600b8054600a93909355901515600160a81b0260ff60a81b19931515600160a01b029390931661ffff60a01b1990921691909117919091179055565b6060600280546105cb9061193d565b600b546001600160a01b031633146107e0575f80fd5b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b600b546001600160a01b03163314610820575f80fd5b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516108789190611975565b5f604051808303815f865af19150503d805f81146108b1576040519150601f19603f3d011682016040523d82523d5f602084013e6108b6565b606091505b50509050806108fe5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610755565b50505050565b5f61065833846106bb85604051806060016040528060258152602001611af560259139335f9081526005602090815260408083206001600160a01b038d16845290915290205491906110d4565b600b546001600160a01b03163314610967575f80fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6106c0338484610d59565b600b546001600160a01b031633146109ab575f80fd5b6040515f90339047908381818185875af1925050503d805f81146109ea576040519150601f19603f3d011682016040523d82523d5f602084013e6109ef565b606091505b5050905080610a375760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610755565b50565b5f546001600160a01b03163314610a935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610755565b6001600160a01b038116610af85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610755565b610a378161116a565b600b546001600160a01b03163314610b17575f80fd5b8015610b8257600c54604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015610b67575f80fd5b505af1158015610b79573d5f803e3d5ffd5b50505050610c0c565b600c546001600160a01b03166314b6ca9683610bb2816001600160a01b03165f9081526004602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610bf5575f80fd5b505af1158015610c07573d5f803e3d5ffd5b505050505b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b6001600160a01b038316610c985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610755565b6001600160a01b038216610cf95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610755565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841615801590610d7a57506001600160a01b03831615155b8015610d8557505f82115b610d8d575f80fd5b600e54600160a01b900460ff1615610db157610daa8484846111b9565b90506106c4565b305f90815260046020526040902054600a5481108015908190610dde5750600e54600160a01b900460ff16155b8015610e0257506001600160a01b0386165f9081526007602052604090205460ff16155b8015610e175750600b54600160a01b900460ff165b8015610e3b57506001600160a01b0386165f9081526006602052604090205460ff16155b8015610e5f57506001600160a01b0385165f9081526006602052604090205460ff16155b15610e6d57610e6d8261129c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260049091529190912054610ebe9186906110d4565b6001600160a01b0387165f90815260046020526040812091909155610ee3878761135d565b610ef757610ef28787876113f7565b610ef9565b845b6001600160a01b0387165f90815260046020526040902054909150610f1e908261110c565b6001600160a01b038088165f90815260046020908152604080832094909455918a1681526008909152205460ff16610fd657600c546001600160a01b03166314b6ca9688610f80816001600160a01b03165f9081526004602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610fc3575f80fd5b505af1925050508015610fd4575060015b505b6001600160a01b0386165f9081526008602052604090205460ff1661107b57600c546001600160a01b03166314b6ca9687611025816001600160a01b03165f9081526004602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611068575f80fd5b505af1925050508015611079575060015b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110c091815260200190565b60405180910390a3600193505050506106c4565b5f81848411156110f75760405162461bcd60e51b815260040161075591906117bd565b505f61110384866119a4565b95945050505050565b5f8061111883856119b7565b9050838110156106c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610755565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526004909152918220546112099184906110d4565b6001600160a01b038086165f908152600460205260408082209390935590851681522054611237908361110c565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061128a9086815260200190565b60405180910390a35060019392505050565b600e805460ff60a01b1916600160a01b179055600b54600160a81b900460ff16156112c65750600a545b801561134d57476112d6826114eb565b5f6112e14783611674565b9050801561134a57600c5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611336575f80fd5b505af193505050508015611348575060015b505b50505b50600e805460ff60a01b19169055565b6001600160a01b0382165f9081526006602052604081205460ff168061139a57506001600160a01b0382165f9081526006602052604090205460ff165b156113a75750600161065c565b6001600160a01b0383165f9081526007602052604090205460ff16806113e457506001600160a01b0382165f9081526007602052604090205460ff165b156113f057505f61065c565b505f61065c565b6001600160a01b0383165f90815260076020526040812054819060ff16156114365761142f60646114298560036116b5565b90611733565b9050611469565b6001600160a01b0384165f9081526007602052604090205460ff16156114695761146660646114298560036116b5565b90505b80156114e157305f90815260046020526040902054611488908261110c565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114d89085815260200190565b60405180910390a35b6111038382611674565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061151e5761151e6119ca565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611575573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159991906119de565b816001815181106115ac576115ac6119ca565b6001600160a01b039283166020918202929092010152600d546115d29130911684610c36565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061160a9085905f90869030904290600401611a3b565b5f604051808303815f87803b158015611621575f80fd5b505af1158015611633573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611668929190611a76565b60405180910390a15050565b5f6106c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110d4565b5f825f036116c457505f61065c565b5f6116cf8385611a96565b9050826116dc8583611aad565b146106c45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610755565b5f6106c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f818361178f5760405162461bcd60e51b815260040161075591906117bd565b505f6111038486611aad565b5f5b838110156117b557818101518382015260200161179d565b50505f910152565b602081525f82518060208401526117db81604085016020870161179b565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610a37575f80fd5b5f8060408385031215611814575f80fd5b823561181f816117ef565b946020939093013593505050565b5f6020828403121561183d575f80fd5b81356106c4816117ef565b5f805f6060848603121561185a575f80fd5b8335611865816117ef565b92506020840135611875816117ef565b929592945050506040919091013590565b80358015158114611895575f80fd5b919050565b5f805f606084860312156118ac575f80fd5b6118b584611886565b9250602084013591506118ca60408501611886565b90509250925092565b5f80604083850312156118e4575f80fd5b82356118ef816117ef565b91506118fd60208401611886565b90509250929050565b5f8060408385031215611917575f80fd5b8235611922816117ef565b91506020830135611932816117ef565b809150509250929050565b600181811c9082168061195157607f821691505b60208210810361196f57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f825161198681846020870161179b565b9190910192915050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561065c5761065c611990565b8082018082111561065c5761065c611990565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156119ee575f80fd5b81516106c4816117ef565b5f8151808452602080850194508084015f5b83811015611a305781516001600160a01b031687529582019590820190600101611a0b565b509495945050505050565b85815284602082015260a060408201525f611a5960a08301866119f9565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611a8e60408301846119f9565b949350505050565b808202811582820484141761065c5761065c611990565b5f82611ac757634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a7d1e9f1c501ebfc140c2735f64aa3f2068a9ad9744985de65026eb67cd0bb9264736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101bd575f3560e01c806372460e7f116100f25780639d34a30d11610092578063dd62ed3e11610062578063dd62ed3e14610526578063e6b2603b1461056a578063f2fde38b1461057e578063f708a64f1461059d575f80fd5b80639d34a30d146104aa578063a457c2d7146104c9578063a6d3472a146104e8578063a9059cbb14610507575f80fd5b80638ca39f5e116100cd5780638ca39f5e1461043c5780638da5cb5b1461045b57806395d89b411461047757806398ed3bbd1461048b575f80fd5b806372460e7f146103c7578063736ce0d4146103fe5780637daf4b2b1461041d575f80fd5b8063313ce5671161015d5780634355855a116101385780634355855a1461032f5780636ddd17131461035d57806370a082311461037d578063715018a6146103b1575f80fd5b8063313ce567146102c157806339509351146102e25780633ecad27114610301575f80fd5b8063095ea7b311610198578063095ea7b3146102415780630d61f8371461026057806318160ddd1461028e57806323b872dd146102a2575f80fd5b80630445b667146101c85780630634f438146101f057806306fdde0314610220575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dd600a5481565b6040519081526020015b60405180910390f35b3480156101fb575f80fd5b50600b5461021090600160a81b900460ff1681565b60405190151581526020016101e7565b34801561022b575f80fd5b506102346105bc565b6040516101e791906117bd565b34801561024c575f80fd5b5061021061025b366004611803565b61064c565b34801561026b575f80fd5b5061021061027a36600461182d565b60066020525f908152604090205460ff1681565b348015610299575f80fd5b506009546101dd565b3480156102ad575f80fd5b506102106102bc366004611848565b610662565b3480156102cc575f80fd5b5060035460405160ff90911681526020016101e7565b3480156102ed575f80fd5b506102106102fc366004611803565b6106cb565b34801561030c575f80fd5b5061021061031b36600461182d565b60076020525f908152604090205460ff1681565b34801561033a575f80fd5b5061021061034936600461182d565b60086020525f908152604090205460ff1681565b348015610368575f80fd5b50600b5461021090600160a01b900460ff1681565b348015610388575f80fd5b506101dd61039736600461182d565b6001600160a01b03165f9081526004602052604090205490565b3480156103bc575f80fd5b506103c5610700565b005b3480156103d2575f80fd5b50600e546103e6906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b348015610409575f80fd5b50600d546103e6906001600160a01b031681565b348015610428575f80fd5b506103c561043736600461189a565b610769565b348015610447575f80fd5b50600c546103e6906001600160a01b031681565b348015610466575f80fd5b505f546001600160a01b03166103e6565b348015610482575f80fd5b506102346107bb565b348015610496575f80fd5b506103c56104a53660046118d3565b6107ca565b3480156104b5575f80fd5b506103c56104c4366004611848565b61080a565b3480156104d4575f80fd5b506102106104e3366004611803565b610904565b3480156104f3575f80fd5b506103c561050236600461182d565b610951565b348015610512575f80fd5b50610210610521366004611803565b610989565b348015610531575f80fd5b506101dd610540366004611906565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610575575f80fd5b506103c5610995565b348015610589575f80fd5b506103c561059836600461182d565b610a3a565b3480156105a8575f80fd5b506103c56105b73660046118d3565b610b01565b6060600180546105cb9061193d565b80601f01602080910402602001604051908101604052809291908181526020018280546105f79061193d565b80156106425780601f1061061957610100808354040283529160200191610642565b820191905f5260205f20905b81548152906001019060200180831161062557829003601f168201915b5050505050905090565b5f610658338484610c36565b5060015b92915050565b5f61066e848484610d59565b506106c084336106bb85604051806060016040528060288152602001611acd602891396001600160a01b038a165f90815260056020908152604080832033845290915290205491906110d4565b610c36565b5060015b9392505050565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916106589185906106bb908661110c565b5f546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107675f61116a565b565b600b546001600160a01b0316331461077f575f80fd5b600b8054600a93909355901515600160a81b0260ff60a81b19931515600160a01b029390931661ffff60a01b1990921691909117919091179055565b6060600280546105cb9061193d565b600b546001600160a01b031633146107e0575f80fd5b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b600b546001600160a01b03163314610820575f80fd5b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516108789190611975565b5f604051808303815f865af19150503d805f81146108b1576040519150601f19603f3d011682016040523d82523d5f602084013e6108b6565b606091505b50509050806108fe5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610755565b50505050565b5f61065833846106bb85604051806060016040528060258152602001611af560259139335f9081526005602090815260408083206001600160a01b038d16845290915290205491906110d4565b600b546001600160a01b03163314610967575f80fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6106c0338484610d59565b600b546001600160a01b031633146109ab575f80fd5b6040515f90339047908381818185875af1925050503d805f81146109ea576040519150601f19603f3d011682016040523d82523d5f602084013e6109ef565b606091505b5050905080610a375760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610755565b50565b5f546001600160a01b03163314610a935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610755565b6001600160a01b038116610af85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610755565b610a378161116a565b600b546001600160a01b03163314610b17575f80fd5b8015610b8257600c54604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015610b67575f80fd5b505af1158015610b79573d5f803e3d5ffd5b50505050610c0c565b600c546001600160a01b03166314b6ca9683610bb2816001600160a01b03165f9081526004602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610bf5575f80fd5b505af1158015610c07573d5f803e3d5ffd5b505050505b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b6001600160a01b038316610c985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610755565b6001600160a01b038216610cf95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610755565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841615801590610d7a57506001600160a01b03831615155b8015610d8557505f82115b610d8d575f80fd5b600e54600160a01b900460ff1615610db157610daa8484846111b9565b90506106c4565b305f90815260046020526040902054600a5481108015908190610dde5750600e54600160a01b900460ff16155b8015610e0257506001600160a01b0386165f9081526007602052604090205460ff16155b8015610e175750600b54600160a01b900460ff165b8015610e3b57506001600160a01b0386165f9081526006602052604090205460ff16155b8015610e5f57506001600160a01b0385165f9081526006602052604090205460ff16155b15610e6d57610e6d8261129c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260049091529190912054610ebe9186906110d4565b6001600160a01b0387165f90815260046020526040812091909155610ee3878761135d565b610ef757610ef28787876113f7565b610ef9565b845b6001600160a01b0387165f90815260046020526040902054909150610f1e908261110c565b6001600160a01b038088165f90815260046020908152604080832094909455918a1681526008909152205460ff16610fd657600c546001600160a01b03166314b6ca9688610f80816001600160a01b03165f9081526004602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610fc3575f80fd5b505af1925050508015610fd4575060015b505b6001600160a01b0386165f9081526008602052604090205460ff1661107b57600c546001600160a01b03166314b6ca9687611025816001600160a01b03165f9081526004602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611068575f80fd5b505af1925050508015611079575060015b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110c091815260200190565b60405180910390a3600193505050506106c4565b5f81848411156110f75760405162461bcd60e51b815260040161075591906117bd565b505f61110384866119a4565b95945050505050565b5f8061111883856119b7565b9050838110156106c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610755565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526004909152918220546112099184906110d4565b6001600160a01b038086165f908152600460205260408082209390935590851681522054611237908361110c565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061128a9086815260200190565b60405180910390a35060019392505050565b600e805460ff60a01b1916600160a01b179055600b54600160a81b900460ff16156112c65750600a545b801561134d57476112d6826114eb565b5f6112e14783611674565b9050801561134a57600c5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611336575f80fd5b505af193505050508015611348575060015b505b50505b50600e805460ff60a01b19169055565b6001600160a01b0382165f9081526006602052604081205460ff168061139a57506001600160a01b0382165f9081526006602052604090205460ff165b156113a75750600161065c565b6001600160a01b0383165f9081526007602052604090205460ff16806113e457506001600160a01b0382165f9081526007602052604090205460ff165b156113f057505f61065c565b505f61065c565b6001600160a01b0383165f90815260076020526040812054819060ff16156114365761142f60646114298560036116b5565b90611733565b9050611469565b6001600160a01b0384165f9081526007602052604090205460ff16156114695761146660646114298560036116b5565b90505b80156114e157305f90815260046020526040902054611488908261110c565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114d89085815260200190565b60405180910390a35b6111038382611674565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061151e5761151e6119ca565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611575573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159991906119de565b816001815181106115ac576115ac6119ca565b6001600160a01b039283166020918202929092010152600d546115d29130911684610c36565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061160a9085905f90869030904290600401611a3b565b5f604051808303815f87803b158015611621575f80fd5b505af1158015611633573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611668929190611a76565b60405180910390a15050565b5f6106c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110d4565b5f825f036116c457505f61065c565b5f6116cf8385611a96565b9050826116dc8583611aad565b146106c45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610755565b5f6106c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f818361178f5760405162461bcd60e51b815260040161075591906117bd565b505f6111038486611aad565b5f5b838110156117b557818101518382015260200161179d565b50505f910152565b602081525f82518060208401526117db81604085016020870161179b565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610a37575f80fd5b5f8060408385031215611814575f80fd5b823561181f816117ef565b946020939093013593505050565b5f6020828403121561183d575f80fd5b81356106c4816117ef565b5f805f6060848603121561185a575f80fd5b8335611865816117ef565b92506020840135611875816117ef565b929592945050506040919091013590565b80358015158114611895575f80fd5b919050565b5f805f606084860312156118ac575f80fd5b6118b584611886565b9250602084013591506118ca60408501611886565b90509250925092565b5f80604083850312156118e4575f80fd5b82356118ef816117ef565b91506118fd60208401611886565b90509250929050565b5f8060408385031215611917575f80fd5b8235611922816117ef565b91506020830135611932816117ef565b809150509250929050565b600181811c9082168061195157607f821691505b60208210810361196f57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f825161198681846020870161179b565b9190910192915050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561065c5761065c611990565b8082018082111561065c5761065c611990565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156119ee575f80fd5b81516106c4816117ef565b5f8151808452602080850194508084015f5b83811015611a305781516001600160a01b031687529582019590820190600101611a0b565b509495945050505050565b85815284602082015260a060408201525f611a5960a08301866119f9565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611a8e60408301846119f9565b949350505050565b808202811582820484141761065c5761065c611990565b5f82611ac757634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a7d1e9f1c501ebfc140c2735f64aa3f2068a9ad9744985de65026eb67cd0bb9264736f6c63430008150033

Deployed Bytecode Sourcemap

3656:9695:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4224:51;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4224:51:0;;;;;;;;4354:30;;;;;;;;;;-1:-1:-1;4354:30:0;;;;-1:-1:-1;;;4354:30:0;;;;;;;;;361:14:1;;354:22;336:41;;324:2;309:18;4354:30:0;196:187:1;5791:83:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6961:161::-;;;;;;;;;;-1:-1:-1;6961:161:0;;;;;:::i;:::-;;:::i;3998:45::-;;;;;;;;;;-1:-1:-1;3998:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6068:100;;;;;;;;;;-1:-1:-1;6148:12:0;;6068:100;;7735:313;;;;;;;;;;-1:-1:-1;7735:313:0;;;;;:::i;:::-;;:::i;5977:83::-;;;;;;;;;;-1:-1:-1;6043:9:0;;5977:83;;6043:9;;;;2355:36:1;;2343:2;2328:18;5977:83:0;2213:184:1;6458:218:0;;;;;;;;;;-1:-1:-1;6458:218:0;;;;;:::i;:::-;;:::i;4050:45::-;;;;;;;;;;-1:-1:-1;4050:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4102:49;;;;;;;;;;-1:-1:-1;4102:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4317:30;;;;;;;;;;-1:-1:-1;4317:30:0;;;;-1:-1:-1;;;4317:30:0;;;;;;6176:123;;;;;;;;;;-1:-1:-1;6176:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;6268:18:0;6242:7;6268:18;;;:9;:18;;;;;;;6176:123;2424:94;;;;;;;;;;;;;:::i;:::-;;4469:22;;;;;;;;;;-1:-1:-1;4469:22:0;;;;-1:-1:-1;;;;;4469:22:0;;;;;;-1:-1:-1;;;;;2566:32:1;;;2548:51;;2536:2;2521:18;4469:22:0;2402:203:1;4431:31:0;;;;;;;;;;-1:-1:-1;4431:31:0;;;;-1:-1:-1;;;;;4431:31:0;;;13120:226;;;;;;;;;;-1:-1:-1;13120:226:0;;;;;:::i;:::-;;:::i;4393:29::-;;;;;;;;;;-1:-1:-1;4393:29:0;;;;-1:-1:-1;;;;;4393:29:0;;;2115:87;;;;;;;;;;-1:-1:-1;2161:7:0;2188:6;-1:-1:-1;;;;;2188:6:0;2115:87;;5882;;;;;;;;;;;;;:::i;12533:119::-;;;;;;;;;;-1:-1:-1;12533:119:0;;;;;:::i;:::-;;:::i;12244:281::-;;;;;;;;;;-1:-1:-1;12244:281:0;;;;;:::i;:::-;;:::i;6684:269::-;;;;;;;;;;-1:-1:-1;6684:269:0;;;;;:::i;:::-;;:::i;12992:120::-;;;;;;;;;;-1:-1:-1;12992:120:0;;;;;:::i;:::-;;:::i;7560:167::-;;;;;;;;;;-1:-1:-1;7560:167:0;;;;;:::i;:::-;;:::i;6307:143::-;;;;;;;;;;-1:-1:-1;6307:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6415:18:0;;;6388:7;6415:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6307:143;12048:188;;;;;;;;;;;;;:::i;2526:229::-;;;;;;;;;;-1:-1:-1;2526:229:0;;;;;:::i;:::-;;:::i;12660:324::-;;;;;;;;;;-1:-1:-1;12660:324:0;;;;;:::i;:::-;;:::i;5791:83::-;5828:13;5861:5;5854:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5791:83;:::o;6961:161::-;7036:4;7053:39;762:10;7076:7;7085:6;7053:8;:39::i;:::-;-1:-1:-1;7110:4:0;6961:161;;;;;:::o;7735:313::-;7833:4;7850:36;7860:6;7868:9;7879:6;7850:9;:36::i;:::-;-1:-1:-1;7897:121:0;7906:6;762:10;7928:89;7966:6;7928:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7928:19:0;;;;;;:11;:19;;;;;;;;762:10;7928:33;;;;;;;;;;:37;:89::i;:::-;7897:8;:121::i;:::-;-1:-1:-1;8036:4:0;7735:313;;;;;;:::o;6458:218::-;762:10;6546:4;6595:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6595:34:0;;;;;;;;;;6546:4;;6563:83;;6586:7;;6595:50;;6634:10;6595:38;:50::i;2424:94::-;2161:7;2188:6;-1:-1:-1;;;;;2188:6:0;762:10;2336:23;2328:68;;;;-1:-1:-1;;;2328:68:0;;4849:2:1;2328:68:0;;;4831:21:1;;;4868:18;;;4861:30;4927:34;4907:18;;;4900:62;4979:18;;2328:68:0;;;;;;;;;2489:21:::1;2507:1;2489:9;:21::i;:::-;2424:94::o:0;13120:226::-;4673:8;;-1:-1:-1;;;;;4673:8:0;4659:10;:22;4651:31;;;;;;13249:11:::1;:22:::0;;13282:13:::1;:23:::0;;;;13316:22;::::1;;-1:-1:-1::0;;;13316:22:0::1;-1:-1:-1::0;;;;13249:22:0;::::1;;-1:-1:-1::0;;;13249:22:0::1;13316::::0;;;;-1:-1:-1;;;;13316:22:0;;;;;;;;;;::::1;::::0;;13120:226::o;5882:87::-;5921:13;5954:7;5947:14;;;;;:::i;12533:119::-;4673:8;;-1:-1:-1;;;;;4673:8:0;4659:10;:22;4651:31;;;;;;-1:-1:-1;;;;;12616:18:0;;;::::1;;::::0;;;:12:::1;:18;::::0;;;;:28;;-1:-1:-1;;12616:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12533:119::o;12244:281::-;4673:8;;-1:-1:-1;;;;;4673:8:0;4659:10;:22;4651:31;;;;;;12392:73:::1;::::0;-1:-1:-1;;;;;5200:32:1;;;12392:73:0::1;::::0;::::1;5182:51:1::0;5249:18;;;5242:34;;;12353:12:0::1;::::0;12371:20;;::::1;::::0;5155:18:1;;12392:73:0::1;::::0;;-1:-1:-1;;12392:73:0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;12392:73:0::1;-1:-1:-1::0;;;12392:73:0::1;::::0;;12371:95;::::1;::::0;12392:73;12371:95:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12352:114;;;12485:7;12477:40;;;::::0;-1:-1:-1;;;12477:40:0;;5781:2:1;12477:40:0::1;::::0;::::1;5763:21:1::0;5820:2;5800:18;;;5793:30;-1:-1:-1;;;5839:18:1;;;5832:50;5899:18;;12477:40:0::1;5579:344:1::0;12477:40:0::1;12341:184;12244:281:::0;;;:::o;6684:269::-;6777:4;6794:129;762:10;6817:7;6826:96;6865:15;6826:96;;;;;;;;;;;;;;;;;762:10;6826:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6826:34:0;;;;;;;;;;;;:38;:96::i;12992:120::-;4673:8;;-1:-1:-1;;;;;4673:8:0;4659:10;:22;4651:31;;;;;;13068:14:::1;:35:::0;;-1:-1:-1;;;;;;13068:35:0::1;-1:-1:-1::0;;;;;13068:35:0;;;::::1;::::0;;;::::1;::::0;;12992:120::o;7560:167::-;7638:4;7655:42;762:10;7679:9;7690:6;7655:9;:42::i;12048:188::-;4673:8;;-1:-1:-1;;;;;4673:8:0;4659:10;:22;4651:31;;;;;;12119:58:::1;::::0;12102:12:::1;::::0;12127:10:::1;::::0;12151:21:::1;::::0;12102:12;12119:58;12102:12;12119:58;12151:21;12127:10;12119:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12101:76;;;12196:7;12188:40;;;::::0;-1:-1:-1;;;12188:40:0;;5781:2:1;12188:40:0::1;::::0;::::1;5763:21:1::0;5820:2;5800:18;;;5793:30;-1:-1:-1;;;5839:18:1;;;5832:50;5899:18;;12188:40:0::1;5579:344:1::0;12188:40:0::1;12090:146;12048:188::o:0;2526:229::-;2161:7;2188:6;-1:-1:-1;;;;;2188:6:0;762:10;2336:23;2328:68;;;;-1:-1:-1;;;2328:68:0;;4849:2:1;2328:68:0;;;4831:21:1;;;4868:18;;;4861:30;4927:34;4907:18;;;4900:62;4979:18;;2328:68:0;4647:356:1;2328:68:0;-1:-1:-1;;;;;2629:22:0;::::1;2607:110;;;::::0;-1:-1:-1;;;2607:110:0;;6340:2:1;2607:110:0::1;::::0;::::1;6322:21:1::0;6379:2;6359:18;;;6352:30;6418:34;6398:18;;;6391:62;-1:-1:-1;;;6469:18:1;;;6462:36;6515:19;;2607:110:0::1;6138:402:1::0;2607:110:0::1;2728:19;2738:8;2728:9;:19::i;12660:324::-:0;4673:8;;-1:-1:-1;;;;;4673:8:0;4659:10;:22;4651:31;;;;;;12774:6:::1;12771:162;;;12797:14;::::0;:33:::1;::::0;-1:-1:-1;;;12797:33:0;;-1:-1:-1;;;;;5200:32:1;;;12797:33:0::1;::::0;::::1;5182:51:1::0;12797:14:0::1;5249:18:1::0;;;5242:34;12797:14:0;;::::1;::::0;:23:::1;::::0;5155:18:1;;12797:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12771:162;;;12872:14;::::0;-1:-1:-1;;;;;12872:14:0::1;:23;12896:6:::0;12903:17:::1;12896:6:::0;-1:-1:-1;;;;;6268:18:0;6242:7;6268:18;;;:9;:18;;;;;;;6176:123;12903:17:::1;12872:49;::::0;-1:-1:-1;;;;;;12872:49:0::1;::::0;;;;;;-1:-1:-1;;;;;5200:32:1;;;12872:49:0::1;::::0;::::1;5182:51:1::0;5249:18;;;5242:34;5155:18;;12872:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12771:162;-1:-1:-1::0;;;;;12943:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;12943:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12660:324::o;7130:337::-;-1:-1:-1;;;;;7223:19:0;;7215:68;;;;-1:-1:-1;;;7215:68:0;;7034:2:1;7215:68:0;;;7016:21:1;7073:2;7053:18;;;7046:30;7112:34;7092:18;;;7085:62;-1:-1:-1;;;7163:18:1;;;7156:34;7207:19;;7215:68:0;6832:400:1;7215:68:0;-1:-1:-1;;;;;7302:21:0;;7294:68;;;;-1:-1:-1;;;7294:68:0;;7439:2:1;7294:68:0;;;7421:21:1;7478:2;7458:18;;;7451:30;7517:34;7497:18;;;7490:62;-1:-1:-1;;;7568:18:1;;;7561:32;7610:19;;7294:68:0;7237:398:1;7294:68:0;-1:-1:-1;;;;;7375:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7427:32;;160:25:1;;;7427:32:0;;133:18:1;7427:32:0;;;;;;;7130:337;;;:::o;8056:1438::-;8143:4;-1:-1:-1;;;;;8170:20:0;;;;;;:47;;-1:-1:-1;;;;;;8194:23:0;;;;8170:47;:61;;;;;8230:1;8221:6;:10;8170:61;8162:70;;;;;;8257:6;;-1:-1:-1;;;8257:6:0;;;;8253:1232;;;8287:41;8302:6;8310:9;8321:6;8287:14;:41::i;:::-;8280:48;;;;8253:1232;8421:4;8372:28;6268:18;;;:9;:18;;;;;;8497:13;;8473:37;;;;;;;8549:52;;-1:-1:-1;8595:6:0;;-1:-1:-1;;;8595:6:0;;;;8594:7;8549:52;:95;;;;-1:-1:-1;;;;;;8624:20:0;;;;;;:12;:20;;;;;;;;8623:21;8549:95;:128;;;;-1:-1:-1;8666:11:0;;-1:-1:-1;;;8666:11:0;;;;8549:128;:170;;;;-1:-1:-1;;;;;;8699:20:0;;;;;;:12;:20;;;;;;;;8698:21;8549:170;:215;;;;-1:-1:-1;;;;;;8741:23:0;;;;;;:12;:23;;;;;;;;8740:24;8549:215;8527:322;;;8803:30;8812:20;8803:8;:30::i;:::-;8897:53;;;;;;;;;;;-1:-1:-1;;;8897:53:0;;;;;;;;-1:-1:-1;;;;;8897:17:0;;-1:-1:-1;8897:17:0;;;:9;:17;;;;;;;;:53;;8919:6;;8897:21;:53::i;:::-;-1:-1:-1;;;;;8877:17:0;;;;;;:9;:17;;;;;:73;;;;8989:34;8887:6;9013:9;8989:16;:34::i;:::-;:80;;9035:34;9043:6;9051:9;9062:6;9035:7;:34::i;:::-;8989:80;;;9026:6;8989:80;-1:-1:-1;;;;;9109:20:0;;;;;;:9;:20;;;;;;8967:102;;-1:-1:-1;9109:37:0;;8967:102;9109:24;:37::i;:::-;-1:-1:-1;;;;;9086:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;9167:24;;;;;:16;:24;;;;;;;9163:99;;9198:14;;-1:-1:-1;;;;;9198:14:0;:23;9222:6;9230:17;9222:6;-1:-1:-1;;;;;6268:18:0;6242:7;6268:18;;;:9;:18;;;;;;;6176:123;9230:17;9198:50;;-1:-1:-1;;;;;;9198:50:0;;;;;;;-1:-1:-1;;;;;5200:32:1;;;9198:50:0;;;5182:51:1;5249:18;;;5242:34;5155:18;;9198:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9194:66;;-1:-1:-1;;;;;9280:27:0;;;;;;:16;:27;;;;;;;;9276:108;;9314:14;;-1:-1:-1;;;;;9314:14:0;:23;9338:9;9349:20;9338:9;-1:-1:-1;;;;;6268:18:0;6242:7;6268:18;;;:9;:18;;;;;;;6176:123;9349:20;9314:56;;-1:-1:-1;;;;;;9314:56:0;;;;;;;-1:-1:-1;;;;;5200:32:1;;;9314:56:0;;;5182:51:1;5249:18;;;5242:34;5155:18;;9314:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9310:72;;9422:9;-1:-1:-1;;;;;9405:40:0;9414:6;-1:-1:-1;;;;;9405:40:0;;9433:11;9405:40;;;;160:25:1;;148:2;133:18;;14:177;9405:40:0;;;;;;;;9467:4;9460:11;;;;;;;13714:192;13800:7;13836:12;13828:6;;;;13820:29;;;;-1:-1:-1;;;13820:29:0;;;;;;;;:::i;:::-;-1:-1:-1;13860:9:0;13872:5;13876:1;13872;:5;:::i;:::-;13860:17;13714:192;-1:-1:-1;;;;;13714:192:0:o;13381:181::-;13439:7;;13471:5;13475:1;13471;:5;:::i;:::-;13459:17;;13500:1;13495;:6;;13487:46;;;;-1:-1:-1;;;13487:46:0;;8237:2:1;13487:46:0;;;8219:21:1;8276:2;8256:18;;;8249:30;8315:29;8295:18;;;8288:57;8362:18;;13487:46:0;8035:351:1;2763:173:0;2819:16;2838:6;;-1:-1:-1;;;;;2855:17:0;;;-1:-1:-1;;;;;;2855:17:0;;;;;;2888:40;;2838:6;;;;;;;2888:40;;2819:16;2888:40;2808:128;2763:173;:::o;9502:330::-;9632:53;;;;;;;;;;;-1:-1:-1;;;9632:53:0;;;;;;;;-1:-1:-1;;;;;9632:17:0;;9595:4;9632:17;;;:9;:17;;;;;;;:53;;9654:6;;9632:21;:53::i;:::-;-1:-1:-1;;;;;9612:17:0;;;;;;;:9;:17;;;;;;:73;;;;9719:20;;;;;;;:32;;9744:6;9719:24;:32::i;:::-;-1:-1:-1;;;;;9696:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9767:35;;;;;;;;;;9795:6;160:25:1;;148:2;133:18;;14:177;9767:35:0;;;;;;;;-1:-1:-1;9820:4:0;9502:330;;;;;:::o;10876:504::-;4555:6;:13;;-1:-1:-1;;;;4555:13:0;-1:-1:-1;;;4555:13:0;;;10950:11:::1;::::0;-1:-1:-1;;;10950:11:0;::::1;4555:13:::0;10950:11:::1;10947:74;;;-1:-1:-1::0;10996:13:0::1;::::0;10947:74:::1;11033:32:::0;;11058:7:::1;11033:32;11102:21;11134:33;11151:15:::0;11134:16:::1;:33::i;:::-;11178:22;11203:41;:21;11229:14:::0;11203:25:::1;:41::i;:::-;11178:66:::0;-1:-1:-1;11260:18:0;;11257:116:::1;;11299:14;;;;;;;;;-1:-1:-1::0;;;;;11299:14:0::1;-1:-1:-1::0;;;;;11299:22:0::1;;11331:14;11299:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;11295:67:::0;::::1;10934:446;;4579:1;-1:-1:-1::0;4591:6:0;:14;;-1:-1:-1;;;;4591:14:0;;;10876:504::o;9844:359::-;-1:-1:-1;;;;;9948:20:0;;9928:4;9948:20;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;9972:23:0;;;;;;:12;:23;;;;;;;;9948:47;9945:251;;;-1:-1:-1;10019:4:0;10012:11;;9945:251;-1:-1:-1;;;;;10054:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;10078:23:0;;;;;;:12;:23;;;;;;;;10054:47;10050:146;;;-1:-1:-1;10125:5:0;10118:12;;10050:146;-1:-1:-1;10179:5:0;10172:12;;10211:657;-1:-1:-1;;;;;10384:20:0;;10297:7;10384:20;;;:12;:20;;;;;;10297:7;;10384:20;;10381:213;;;10438:22;10456:3;10438:13;:6;10449:1;10438:10;:13::i;:::-;:17;;:22::i;:::-;10426:34;;10381:213;;;-1:-1:-1;;;;;10499:23:0;;;;;;:12;:23;;;;;;;;10496:98;;;10556:22;10574:3;10556:13;:6;10567:1;10556:10;:13::i;:22::-;10544:34;;10496:98;10613:13;;10610:185;;10692:4;10674:24;;;;:9;:24;;;;;;:39;;10703:9;10674:28;:39::i;:::-;10665:4;10647:24;;;;:9;:24;;;;;;;:66;;;;10737:42;;-1:-1:-1;;;;;10737:42:0;;;;;;;10769:9;160:25:1;;148:2;133:18;;14:177;10737:42:0;;;;;;;;10610:185;10818:21;:6;10829:9;10818:10;:21::i;11388:648::-;11538:16;;;11552:1;11538:16;;;;;;;;11514:21;;11538:16;;;;;;;;;;-1:-1:-1;11538:16:0;11514:40;;11583:4;11565;11570:1;11565:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11565:23:0;;;:7;;;;;;;;;;:23;;;;11609:9;;:16;;;-1:-1:-1;;;11609:16:0;;;;:9;;;;;:14;;:16;;;;;11565:7;;11609:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11599:4;11604:1;11599:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11599:26:0;;;:7;;;;;;;;;:26;11670:9;;11638:56;;11655:4;;11670:9;11682:11;11638:8;:56::i;:::-;11733:9;;:234;;-1:-1:-1;;;11733:234:0;;-1:-1:-1;;;;;11733:9:0;;;;:60;;:234;;11808:11;;11733:9;;11878:4;;11905;;11941:15;;11733:234;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11993:35;12010:11;12023:4;11993:35;;;;;;;:::i;:::-;;;;;;;;11443:593;11388:648;:::o;13570:136::-;13628:7;13655:43;13659:1;13662;13655:43;;;;;;;;;;;;;;;;;:3;:43::i;13914:250::-;13972:7;13996:1;14001;13996:6;13992:47;;-1:-1:-1;14026:1:0;14019:8;;13992:47;14051:9;14063:5;14067:1;14063;:5;:::i;:::-;14051:17;-1:-1:-1;14096:1:0;14087:5;14091:1;14051:17;14087:5;:::i;:::-;:10;14079:56;;;;-1:-1:-1;;;14079:56:0;;10898:2:1;14079:56:0;;;10880:21:1;10937:2;10917:18;;;10910:30;10976:34;10956:18;;;10949:62;-1:-1:-1;;;11027:18:1;;;11020:31;11068:19;;14079:56:0;10696:397:1;14172:132:0;14230:7;14257:39;14261:1;14264;14257:39;;;;;;;;;;;;;;;;;14398:7;14433:12;14426:5;14418:28;;;;-1:-1:-1;;;14418:28:0;;;;;;;;:::i;:::-;-1:-1:-1;14457:9:0;14469:5;14473:1;14469;:5;:::i;388:250:1:-;473:1;483:113;497:6;494:1;491:13;483:113;;;573:11;;;567:18;554:11;;;547:39;519:2;512:10;483:113;;;-1:-1:-1;;630:1:1;612:16;;605:27;388:250::o;643:396::-;792:2;781:9;774:21;755:4;824:6;818:13;867:6;862:2;851:9;847:18;840:34;883:79;955:6;950:2;939:9;935:18;930:2;922:6;918:15;883:79;:::i;:::-;1023:2;1002:15;-1:-1:-1;;998:29:1;983:45;;;;1030:2;979:54;;643:396;-1:-1:-1;;643:396:1:o;1044:131::-;-1:-1:-1;;;;;1119:31:1;;1109:42;;1099:70;;1165:1;1162;1155:12;1180:315;1248:6;1256;1309:2;1297:9;1288:7;1284:23;1280:32;1277:52;;;1325:1;1322;1315:12;1277:52;1364:9;1351:23;1383:31;1408:5;1383:31;:::i;:::-;1433:5;1485:2;1470:18;;;;1457:32;;-1:-1:-1;;;1180:315:1:o;1500:247::-;1559:6;1612:2;1600:9;1591:7;1587:23;1583:32;1580:52;;;1628:1;1625;1618:12;1580:52;1667:9;1654:23;1686:31;1711:5;1686:31;:::i;1752:456::-;1829:6;1837;1845;1898:2;1886:9;1877:7;1873:23;1869:32;1866:52;;;1914:1;1911;1904:12;1866:52;1953:9;1940:23;1972:31;1997:5;1972:31;:::i;:::-;2022:5;-1:-1:-1;2079:2:1;2064:18;;2051:32;2092:33;2051:32;2092:33;:::i;:::-;1752:456;;2144:7;;-1:-1:-1;;;2198:2:1;2183:18;;;;2170:32;;1752:456::o;2840:160::-;2905:20;;2961:13;;2954:21;2944:32;;2934:60;;2990:1;2987;2980:12;2934:60;2840:160;;;:::o;3005:316::-;3076:6;3084;3092;3145:2;3133:9;3124:7;3120:23;3116:32;3113:52;;;3161:1;3158;3151:12;3113:52;3184:26;3200:9;3184:26;:::i;:::-;3174:36;;3257:2;3246:9;3242:18;3229:32;3219:42;;3280:35;3311:2;3300:9;3296:18;3280:35;:::i;:::-;3270:45;;3005:316;;;;;:::o;3549:315::-;3614:6;3622;3675:2;3663:9;3654:7;3650:23;3646:32;3643:52;;;3691:1;3688;3681:12;3643:52;3730:9;3717:23;3749:31;3774:5;3749:31;:::i;:::-;3799:5;-1:-1:-1;3823:35:1;3854:2;3839:18;;3823:35;:::i;:::-;3813:45;;3549:315;;;;;:::o;3869:388::-;3937:6;3945;3998:2;3986:9;3977:7;3973:23;3969:32;3966:52;;;4014:1;4011;4004:12;3966:52;4053:9;4040:23;4072:31;4097:5;4072:31;:::i;:::-;4122:5;-1:-1:-1;4179:2:1;4164:18;;4151:32;4192:33;4151:32;4192:33;:::i;:::-;4244:7;4234:17;;;3869:388;;;;;:::o;4262:380::-;4341:1;4337:12;;;;4384;;;4405:61;;4459:4;4451:6;4447:17;4437:27;;4405:61;4512:2;4504:6;4501:14;4481:18;4478:38;4475:161;;4558:10;4553:3;4549:20;4546:1;4539:31;4593:4;4590:1;4583:15;4621:4;4618:1;4611:15;4475:161;;4262:380;;;:::o;5287:287::-;5416:3;5454:6;5448:13;5470:66;5529:6;5524:3;5517:4;5509:6;5505:17;5470:66;:::i;:::-;5552:16;;;;;5287:287;-1:-1:-1;;5287:287:1:o;7640:127::-;7701:10;7696:3;7692:20;7689:1;7682:31;7732:4;7729:1;7722:15;7756:4;7753:1;7746:15;7772:128;7839:9;;;7860:11;;;7857:37;;;7874:18;;:::i;7905:125::-;7970:9;;;7991:10;;;7988:36;;;8004:18;;:::i;8523:127::-;8584:10;8579:3;8575:20;8572:1;8565:31;8615:4;8612:1;8605:15;8639:4;8636:1;8629:15;8655:251;8725:6;8778:2;8766:9;8757:7;8753:23;8749:32;8746:52;;;8794:1;8791;8784:12;8746:52;8826:9;8820:16;8845:31;8870:5;8845:31;:::i;8911:461::-;8964:3;9002:5;8996:12;9029:6;9024:3;9017:19;9055:4;9084:2;9079:3;9075:12;9068:19;;9121:2;9114:5;9110:14;9142:1;9152:195;9166:6;9163:1;9160:13;9152:195;;;9231:13;;-1:-1:-1;;;;;9227:39:1;9215:52;;9287:12;;;;9322:15;;;;9263:1;9181:9;9152:195;;;-1:-1:-1;9363:3:1;;8911:461;-1:-1:-1;;;;;8911:461:1:o;9377:582::-;9676:6;9665:9;9658:25;9719:6;9714:2;9703:9;9699:18;9692:34;9762:3;9757:2;9746:9;9742:18;9735:31;9639:4;9783:57;9835:3;9824:9;9820:19;9812:6;9783:57;:::i;:::-;-1:-1:-1;;;;;9876:32:1;;;;9871:2;9856:18;;9849:60;-1:-1:-1;9940:3:1;9925:19;9918:35;9775:65;9377:582;-1:-1:-1;;;9377:582:1:o;9964:332::-;10171:6;10160:9;10153:25;10214:2;10209;10198:9;10194:18;10187:30;10134:4;10234:56;10286:2;10275:9;10271:18;10263:6;10234:56;:::i;:::-;10226:64;9964:332;-1:-1:-1;;;;9964:332:1:o;10301:168::-;10374:9;;;10405;;10422:15;;;10416:22;;10402:37;10392:71;;10443:18;;:::i;10474:217::-;10514:1;10540;10530:132;;10584:10;10579:3;10575:20;10572:1;10565:31;10619:4;10616:1;10609:15;10647:4;10644:1;10637:15;10530:132;-1:-1:-1;10676:9:1;;10474:217::o

Swarm Source

ipfs://a7d1e9f1c501ebfc140c2735f64aa3f2068a9ad9744985de65026eb67cd0bb92
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.