ETH Price: $3,237.80 (-3.51%)

Token

AI DEV (AID)
 

Overview

Max Total Supply

1,000,000,000 AID

Holders

347

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
29,306,206.563985293 AID

Value
$0.00
0xa10d92f268f2e75fdca39a7f6d0ef87b3274592c
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:
AIDEV

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : AIDEV.sol
//===============================================================================================================
    //             _____      _____   ______ __      __
    //      /\    |_   _|    |  __ \ |  ____|\ \    / /
    //     /  \     | |      | |  | || |__    \ \  / / 
    //    / /\ \    | |      | |  | ||  __|    \ \/ /  
    //   / ____ \  _| |_     | |__| || |____    \  /   
    //  /_/    \_\|_____|    |_____/ |______|    \/    
    //===============================================================================================================
    //===============================================================================================================
/**
 * @title AI DEV
 * @dev ERC20 Token Contract
 *
 * @notice This contract implements the standard ERC20 token with additional features.
 *
 * @author 
 *
 * @links
 * - Website: [https://aidev.bot/](https://aidev.bot/)
 * - Telegram: [https://t.me/Aidev_bots](https://t.me/Aidev_bots)
 * - Twitter: [https://x.com/AiDevbots](https://x.com/AiDevbots)
 *
 * @description
 * This token is developed and maintained by the AiDev team. For more information, updates, and support, please visit our official channels listed above.
 */
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

//--- Context ---//
abstract contract Context {
    constructor() {
    }

    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

//--- Ownable ---//
abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _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 IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}



//--- Interface for ERC20 ---//
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

  //===============================================================================================================
    //             _____      _____   ______ __      __
    //      /\    |_   _|    |  __ \ |  ____|\ \    / /
    //     /  \     | |      | |  | || |__    \ \  / / 
    //    / /\ \    | |      | |  | ||  __|    \ \/ /  
    //   / ____ \  _| |_     | |__| || |____    \  /   
    //  /_/    \_\|_____|    |_____/ |______|    \/    
    //===============================================================================================================
    //===============================================================================================================

//--- Contract v3 ---//
contract AIDEV is Context, Ownable,IERC20 {

    function totalSupply() external pure override returns (uint256) { if (_totalSupply == 0) { revert(); } return _totalSupply; }
    function decimals() external pure override returns (uint8) { if (_totalSupply == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return balance[account];
    }


    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFee;
    mapping (address => bool) private liquidityAdd;
    mapping (address => bool) private isLpPair;
    mapping (address => bool) private isPresaleAddress;
    mapping (address => uint256) private balance;



    uint256 constant public _totalSupply = 1_000_000_000 * 10**9;
    uint256 constant public swapFee = _totalSupply / 1_000;
    uint256 constant public buyTax = 50;
    uint256 constant public sellTax = 50;
    uint256 constant public transferfee = 0;
    uint256 constant public fee_denominator = 1_000;
    bool private canSwapFees = false;
    address payable private marketingAddress = payable(0x690060E470EA5851Fd975aE4F00Ec33073C12699);
    address payable private devAddress = payable(0xECA200364B509aF71a36285713F368E89b66FDC9);

    IRouter02 public swapRouter;
    string constant private _name = "AI DEV";
    string constant private _symbol = "AID";
    uint8 constant private _decimals = 9;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public lpPair;
    bool public tradingEnable = false;
    bool private inSwap;

        modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }


    event _enableTrading();
    event _setPresaleAddress(address account, bool enabled);
    event _toggleCanSwapFees(bool enabled);
    event _changePair(address newLpPair);
    event _changeThreshold(uint256 newThreshold);
    event _changeWallets(address indexed newBuy, address indexed newDev);
    event SwapAndLiquify();


    constructor () {
        _noFee[msg.sender] = true;

        if (block.chainid == 56) {
            swapRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            swapRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            swapRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else {
            revert("Chain not valid");
        }


        liquidityAdd[msg.sender] = true;
        balance[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

     
        canSwapFees = true;

        lpPair = IFactoryV2(swapRouter.factory()).createPair(swapRouter.WETH(), address(this));
        isLpPair[lpPair] = true;
        _approve(msg.sender, address(swapRouter), type(uint256).max);
        _approve(address(this), address(swapRouter), type(uint256).max);


    }

    receive() external payable {}

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

        function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

        function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

        function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }
    function isNoFeeWallet(address account) external view returns(bool) {
        return _noFee[account];
    }

    function setNoFeeWallet(address account, bool enabled) public onlyOwner {
        require(account != address(0),"AIDEV: Account is zero address");
        _noFee[account] = enabled;
    }

    function isLimitedAddress(address ins, address out) internal view returns (bool) {

        bool isLimited = ins != owner()
            && out != owner()
            && msg.sender != owner()
            && !liquidityAdd[ins]  && !liquidityAdd[out] && out != address(0) && out != address(this);
            return isLimited;
    }

    function is_buy(address ins, address out) internal view returns (bool) {
        bool _is_buy = !isLpPair[out] && isLpPair[ins];
        return _is_buy;
    }

    function is_sell(address ins, address out) internal view returns (bool) { 
        bool _is_sell = isLpPair[out] && !isLpPair[ins];
        return _is_sell;
    }

    function canSwap(address ins, address out) internal view returns (bool) {
        bool canswap = canSwapFees && !isPresaleAddress[ins] && !isPresaleAddress[out];

        return canswap;
    }

    function toggleCanSwapFees(bool yesno) external onlyOwner {
        require(canSwapFees != yesno,"Bool is the same");
        canSwapFees = yesno;
        emit _toggleCanSwapFees(yesno);
    }

    function _transfer(address from, address to, uint256 amount) internal returns  (bool) {
        bool takeFee = true;
        require(to != address(0), "ERC20: transfer to the zero address");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (isLimitedAddress(from,to)) {
            require(tradingEnable,"Trading is not enabled");
        }


        if(is_sell(from, to) &&  !inSwap && canSwap(from, to)) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance >= swapFee) { 
                uint256 toLiq = contractTokenBalance / 5;
                if(toLiq > 0) swapAndLiquify(toLiq);
                contractTokenBalance = balanceOf(address(this));
                if(contractTokenBalance > 0) internalSwap(contractTokenBalance);
             }
        }

        if (_noFee[from] || _noFee[to]){
            takeFee = false;
        }
        
        balance[from] -= amount; uint256 amountAfterFee = (takeFee) ? takeTaxes(from, is_buy(from, to), is_sell(from, to), amount) : amount;
        balance[to] += amountAfterFee; emit Transfer(from, to, amountAfterFee);

        return true;

    }

    function changeWallets(address newBuy, address newDev) external onlyOwner {
        require(newBuy != address(0),"AIDEV: Marketing address cannot be zero");
        require(newDev != address(0),"AIDEV: Dev address cannot be zero");
        marketingAddress = payable(newBuy);
        devAddress = payable(newDev);
        emit _changeWallets(newBuy, newDev);
    }

    function takeTaxes(address from, bool isbuy, bool issell, uint256 amount) internal returns (uint256) {
        uint256 fee;
        if (isbuy)  fee = buyTax;  else if (issell)  fee = sellTax;  else  fee = transferfee; 
        if (fee == 0)  return amount; 
        uint256 feeAmount = amount * fee / fee_denominator;
        if (feeAmount > 0) {

            balance[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
            
        }
        return amount - feeAmount;
    }

    function swapAndLiquify(uint256 contractTokenBalance) internal inSwapFlag {
        uint256 firstmath = contractTokenBalance / 2;
        uint256 secondMath = contractTokenBalance - firstmath;

        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        if (_allowances[address(this)][address(swapRouter)] != type(uint256).max) {
            _allowances[address(this)][address(swapRouter)] = type(uint256).max;
        }

        try swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            firstmath,
            0, 
            path,
            address(this),
            block.timestamp) {} catch {return;}
        
        uint256 newBalance = address(this).balance - initialBalance;

        try swapRouter.addLiquidityETH{value: newBalance}(
            address(this),
            secondMath,
            0,
            0,
            DEAD,
            block.timestamp
        ){} catch {return;}

        emit SwapAndLiquify();
    }

    function internalSwap(uint256 contractTokenBalance) internal inSwapFlag {
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        if (_allowances[address(this)][address(swapRouter)] != type(uint256).max) {
            _allowances[address(this)][address(swapRouter)] = type(uint256).max;
        }

        try swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }
        bool success;

        uint256 toMarketing = address(this).balance / 2;
        if(toMarketing > 0) (success,) = marketingAddress.call{value: toMarketing, gas: 35000}("");
        if(address(this).balance > 0) (success,) = devAddress.call{value: address(this).balance, gas: 35000}("");
    }

        function setPresaleAddress(address presale, bool yesno) external onlyOwner {
            require(isPresaleAddress[presale] != yesno,"Same bool");
            isPresaleAddress[presale] = yesno;
            _noFee[presale] = yesno;
            liquidityAdd[presale] = yesno;
            emit _setPresaleAddress(presale, yesno);
        }

        function enableTrading() external onlyOwner {
            require(!tradingEnable, "Trading already enabled");


            tradingEnable = true;
            emit _enableTrading();
        }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": []
}

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":[],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLpPair","type":"address"}],"name":"_changePair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"_changeThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newBuy","type":"address"},{"indexed":true,"internalType":"address","name":"newDev","type":"address"}],"name":"_changeWallets","type":"event"},{"anonymous":false,"inputs":[],"name":"_enableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"_setPresaleAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"_toggleCanSwapFees","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newBuy","type":"address"},{"internalType":"address","name":"newDev","type":"address"}],"name":"changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee_denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isNoFeeWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setNoFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"presale","type":"address"},{"internalType":"bool","name":"yesno","type":"bool"}],"name":"setPresaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"yesno","type":"bool"}],"name":"toggleCanSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[],"name":"transferfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526007805474690060e470ea5851fd975ae4f00ec33073c12699006001600160a81b0319909116179055600880546001600160a01b03191673eca200364b509af71a36285713f368e89b66fdc9179055600a805460ff60a01b191690553480156200006c575f80fd5b506200007833620003c4565b335f908152600260205260409020805460ff1916600117905546603803620000c657600980546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000188565b46606103620000fb57600980546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d117905562000188565b46600114806200010b5750466004145b80620001175750466003145b156200014957600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000188565b60405162461bcd60e51b815260206004820152600f60248201526e10da185a5b881b9bdd081d985b1a59608a1b60448201526064015b60405180910390fd5b335f818152600360209081526040808320805460ff1916600117905560068252808320670de0b6b3a76400009081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36007805460ff191660011790556009546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa1580156200023e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026491906200050f565b6001600160a01b031663c9c6539660095f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e991906200050f565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af115801562000333573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035991906200050f565b600a80546001600160a01b0319166001600160a01b039283169081179091555f908152600460205260409020805460ff19166001179055600954620003a3913391165f1962000413565b600954620003be9030906001600160a01b03165f1962000413565b6200053e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620004615760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200017f565b6001600160a01b038216620004af5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200017f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6020828403121562000520575f80fd5b81516001600160a01b038116811462000537575f80fd5b9392505050565b611ae9806200054c5f395ff3fe6080604052600436106101bd575f3560e01c806354cf2aeb116100f257806395d89b4111610092578063cc1776d311610062578063cc1776d3146103ae578063dc9d75b0146104e9578063dd62ed3e146104fe578063f2fde38b14610542575f80fd5b806395d89b4114610461578063a61699c41461048c578063a9059cbb146104ab578063c31c9c07146104ca575f80fd5b8063715018a6116100cd578063715018a61461041d578063893d20e8146104315780638a8c523c1461044d5780638da5cb5b14610431575f80fd5b806354cf2aeb146103c257806354de7bee146103d657806370a08231146103e9575f80fd5b806323b872dd1161015d5780633cd17c96116101385780633cd17c96146103555780633eaaf86b14610374578063452ed4f11461038f5780634f7041a5146103ae575f80fd5b806323b872dd146102e45780632788986214610303578063313ce5671461033a575f80fd5b80630faba554116101985780630faba55414610260578063111a60b0146102815780631693e8d4146102a057806318160ddd146102c0575f80fd5b806303fd2a45146101c857806306fdde03146101fa578063095ea7b314610231575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610205575f80fd5b5060408051808201909152600681526520a4902222ab60d11b60208201525b6040516101f191906117c2565b34801561023c575f80fd5b5061025061024b366004611822565b610561565b60405190151581526020016101f1565b34801561026b575f80fd5b5061027f61027a366004611860565b610577565b005b34801561028c575f80fd5b5061027f61029b366004611893565b610629565b3480156102ab575f80fd5b50600a5461025090600160a01b900460ff1681565b3480156102cb575f80fd5b50670de0b6b3a76400005b6040519081526020016101f1565b3480156102ef575f80fd5b506102506102fe3660046118b3565b6106e6565b34801561030e575f80fd5b5061025061031d3660046118f1565b6001600160a01b03165f9081526002602052604090205460ff1690565b348015610345575f80fd5b50604051600981526020016101f1565b348015610360575f80fd5b5061027f61036f366004611860565b61075b565b34801561037f575f80fd5b506102d6670de0b6b3a764000081565b34801561039a575f80fd5b50600a546101dd906001600160a01b031681565b3480156103b9575f80fd5b506102d6603281565b3480156103cd575f80fd5b506102d6610865565b3480156103e1575f80fd5b506102d65f81565b3480156103f4575f80fd5b506102d66104033660046118f1565b6001600160a01b03165f9081526006602052604090205490565b348015610428575f80fd5b5061027f61087c565b34801561043c575f80fd5b505f546001600160a01b03166101dd565b348015610458575f80fd5b5061027f6108b0565b34801561046c575f80fd5b5060408051808201909152600381526210525160ea1b6020820152610224565b348015610497575f80fd5b5061027f6104a636600461190c565b610970565b3480156104b6575f80fd5b506102506104c5366004611822565b610aca565b3480156104d5575f80fd5b506009546101dd906001600160a01b031681565b3480156104f4575f80fd5b506102d66103e881565b348015610509575f80fd5b506102d661051836600461190c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561054d575f80fd5b5061027f61055c3660046118f1565b610ae0565b5f61056d338484610b7a565b5060015b92915050565b5f546001600160a01b031633146105a95760405162461bcd60e51b81526004016105a090611943565b60405180910390fd5b6001600160a01b0382166105ff5760405162461bcd60e51b815260206004820152601e60248201527f41494445563a204163636f756e74206973207a65726f2061646472657373000060448201526064016105a0565b6001600160a01b03919091165f908152600260205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146106525760405162461bcd60e51b81526004016105a090611943565b60075481151560ff90911615150361069f5760405162461bcd60e51b815260206004820152601060248201526f426f6f6c206973207468652073616d6560801b60448201526064016105a0565b6007805460ff19168215159081179091556040519081527f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e89060200160405180910390a150565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1914610748576001600160a01b0384165f9081526001602090815260408083203384529091528120805484929061074290849061198c565b90915550505b610753848484610c72565b949350505050565b5f546001600160a01b031633146107845760405162461bcd60e51b81526004016105a090611943565b6001600160a01b0382165f9081526005602052604090205481151560ff9091161515036107df5760405162461bcd60e51b815260206004820152600960248201526814d85b5948189bdbdb60ba1b60448201526064016105a0565b6001600160a01b0382165f818152600560209081526040808320805486151560ff1991821681179092556002845282852080548216831790556003845293829020805490941681179093558051938452908301919091527f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b764513910160405180910390a15050565b6108796103e8670de0b6b3a764000061199f565b81565b5f546001600160a01b031633146108a55760405162461bcd60e51b81526004016105a090611943565b6108ae5f610fc5565b565b5f546001600160a01b031633146108d95760405162461bcd60e51b81526004016105a090611943565b600a54600160a01b900460ff16156109335760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016105a0565b600a805460ff60a01b1916600160a01b1790556040517fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad6868905f90a1565b5f546001600160a01b031633146109995760405162461bcd60e51b81526004016105a090611943565b6001600160a01b0382166109ff5760405162461bcd60e51b815260206004820152602760248201527f41494445563a204d61726b6574696e6720616464726573732063616e6e6f74206044820152666265207a65726f60c81b60648201526084016105a0565b6001600160a01b038116610a5f5760405162461bcd60e51b815260206004820152602160248201527f41494445563a2044657620616464726573732063616e6e6f74206265207a65726044820152606f60f81b60648201526084016105a0565b600780546001600160a01b038085166101008102610100600160a81b031990931692909217909255600880549284166001600160a01b0319909316831790556040517fb7dbb12e3d7d2f1359cb61a83553096a35374fe4c0b5624717a5c59b853e77c1905f90a35050565b5f610ad6338484610c72565b5060019392505050565b5f546001600160a01b03163314610b095760405162461bcd60e51b81526004016105a090611943565b6001600160a01b038116610b6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a0565b610b7781610fc5565b50565b6001600160a01b038316610bc65760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016105a0565b6001600160a01b038216610c125760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016105a0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f60016001600160a01b038416610cd75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a0565b6001600160a01b038516610d3b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a0565b5f8311610d9c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a0565b610da68585611014565b15610dfd57600a54600160a01b900460ff16610dfd5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016105a0565b610e0785856110e3565b8015610e1d5750600a54600160a81b900460ff16155b8015610e2e5750610e2e8585611128565b15610e9d57305f90815260066020526040902054610e566103e8670de0b6b3a764000061199f565b8110610e9b575f610e6860058361199f565b90508015610e7957610e798161117f565b305f9081526006602052604090205491508115610e9957610e9982611429565b505b505b6001600160a01b0385165f9081526002602052604090205460ff1680610eda57506001600160a01b0384165f9081526002602052604090205460ff165b15610ee257505f5b6001600160a01b0385165f9081526006602052604081208054859290610f0990849061198c565b909155505f905081610f1b5783610f39565b610f3986610f2988886116b3565b610f3389896110e3565b876116f8565b6001600160a01b0386165f90815260066020526040812080549293508392909190610f659084906119be565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fb191815260200190565b60405180910390a350600195945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f806110275f546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561105557505f546001600160a01b03848116911614155b801561106b57505f546001600160a01b03163314155b801561108f57506001600160a01b0384165f9081526003602052604090205460ff16155b80156110b357506001600160a01b0383165f9081526003602052604090205460ff16155b80156110c757506001600160a01b03831615155b801561075357506001600160a01b038316301415949350505050565b6001600160a01b0381165f90815260046020526040812054819060ff16801561075357505050506001600160a01b03165f9081526004602052604090205460ff161590565b6007545f90819060ff16801561115657506001600160a01b0384165f9081526005602052604090205460ff16155b8015610753575050506001600160a01b03165f9081526005602052604090205460ff1615919050565b600a805460ff60a81b1916600160a81b1790555f61119e60028361199f565b90505f6111ab828461198c565b60408051600280825260608201835292935047925f9260208301908036833701905050905030815f815181106111e3576111e36119d1565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561123a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125e91906119e5565b81600181518110611271576112716119d1565b6001600160a01b03928316602091820292909201810191909152305f90815260018252604080822060095490941682529290915220545f19146112d757305f9081526001602090815260408083206009546001600160a01b0316845290915290205f1990555b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061130f9087905f90869030904290600401611a00565b5f604051808303815f87803b158015611326575f80fd5b505af1925050508015611337575060015b6113445750505050611419565b5f61134f834761198c565b60095460405163f305d71960e01b8152306004820152602481018790525f60448201819052606482015261dead60848201524260a48201529192506001600160a01b03169063f305d71990839060c40160606040518083038185885af1935050505080156113da575060408051601f3d908101601f191682019092526113d791810190611a71565b60015b6113e8575050505050611419565b5050506040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb70030905f90a150505050505b50600a805460ff60a81b19169055565b600a805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061146f5761146f6119d1565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ea91906119e5565b816001815181106114fd576114fd6119d1565b6001600160a01b03928316602091820292909201810191909152305f90815260018252604080822060095490941682529290915220545f191461156357305f9081526001602090815260408083206009546001600160a01b0316845290915290205f1990555b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061159b9085905f90869030904290600401611a00565b5f604051808303815f87803b1580156115b2575f80fd5b505af19250505080156115c3575060015b6115cd5750611419565b5f806115da60024761199f565b90508015611640576007546040516101009091046001600160a01b0316906188b89083905f818181858888f193505050503d805f8114611635576040519150601f19603f3d011682016040523d82523d5f602084013e61163a565b606091505b50909250505b47156116a0576008546040516001600160a01b03909116906188b89047905f818181858888f193505050503d805f8114611695576040519150601f19603f3d011682016040523d82523d5f602084013e61169a565b606091505b50909250505b50505050600a805460ff60a81b19169055565b6001600160a01b0381165f90815260046020526040812054819060ff1615801561075357505050506001600160a01b03165f9081526004602052604090205460ff1690565b5f80841561170857506032611719565b831561171657506032611719565b505f5b805f036117295782915050610753565b5f6103e86117378386611a9c565b611741919061199f565b905080156117ad57305f90815260066020526040812080548392906117679084906119be565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6117b7818561198c565b979650505050505050565b5f602080835283518060208501525f5b818110156117ee578581018301518582016040015282016117d2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b77575f80fd5b5f8060408385031215611833575f80fd5b823561183e8161180e565b946020939093013593505050565b8035801515811461185b575f80fd5b919050565b5f8060408385031215611871575f80fd5b823561187c8161180e565b915061188a6020840161184c565b90509250929050565b5f602082840312156118a3575f80fd5b6118ac8261184c565b9392505050565b5f805f606084860312156118c5575f80fd5b83356118d08161180e565b925060208401356118e08161180e565b929592945050506040919091013590565b5f60208284031215611901575f80fd5b81356118ac8161180e565b5f806040838503121561191d575f80fd5b82356119288161180e565b915060208301356119388161180e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561057157610571611978565b5f826119b957634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561057157610571611978565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156119f5575f80fd5b81516118ac8161180e565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a505784516001600160a01b031683529383019391830191600101611a2b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611a83575f80fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176105715761057161197856fea2646970667358221220f682c2402c11567c92b27fab284970d8c55924ead84608f57e40f14e748af6ed64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101bd575f3560e01c806354cf2aeb116100f257806395d89b4111610092578063cc1776d311610062578063cc1776d3146103ae578063dc9d75b0146104e9578063dd62ed3e146104fe578063f2fde38b14610542575f80fd5b806395d89b4114610461578063a61699c41461048c578063a9059cbb146104ab578063c31c9c07146104ca575f80fd5b8063715018a6116100cd578063715018a61461041d578063893d20e8146104315780638a8c523c1461044d5780638da5cb5b14610431575f80fd5b806354cf2aeb146103c257806354de7bee146103d657806370a08231146103e9575f80fd5b806323b872dd1161015d5780633cd17c96116101385780633cd17c96146103555780633eaaf86b14610374578063452ed4f11461038f5780634f7041a5146103ae575f80fd5b806323b872dd146102e45780632788986214610303578063313ce5671461033a575f80fd5b80630faba554116101985780630faba55414610260578063111a60b0146102815780631693e8d4146102a057806318160ddd146102c0575f80fd5b806303fd2a45146101c857806306fdde03146101fa578063095ea7b314610231575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610205575f80fd5b5060408051808201909152600681526520a4902222ab60d11b60208201525b6040516101f191906117c2565b34801561023c575f80fd5b5061025061024b366004611822565b610561565b60405190151581526020016101f1565b34801561026b575f80fd5b5061027f61027a366004611860565b610577565b005b34801561028c575f80fd5b5061027f61029b366004611893565b610629565b3480156102ab575f80fd5b50600a5461025090600160a01b900460ff1681565b3480156102cb575f80fd5b50670de0b6b3a76400005b6040519081526020016101f1565b3480156102ef575f80fd5b506102506102fe3660046118b3565b6106e6565b34801561030e575f80fd5b5061025061031d3660046118f1565b6001600160a01b03165f9081526002602052604090205460ff1690565b348015610345575f80fd5b50604051600981526020016101f1565b348015610360575f80fd5b5061027f61036f366004611860565b61075b565b34801561037f575f80fd5b506102d6670de0b6b3a764000081565b34801561039a575f80fd5b50600a546101dd906001600160a01b031681565b3480156103b9575f80fd5b506102d6603281565b3480156103cd575f80fd5b506102d6610865565b3480156103e1575f80fd5b506102d65f81565b3480156103f4575f80fd5b506102d66104033660046118f1565b6001600160a01b03165f9081526006602052604090205490565b348015610428575f80fd5b5061027f61087c565b34801561043c575f80fd5b505f546001600160a01b03166101dd565b348015610458575f80fd5b5061027f6108b0565b34801561046c575f80fd5b5060408051808201909152600381526210525160ea1b6020820152610224565b348015610497575f80fd5b5061027f6104a636600461190c565b610970565b3480156104b6575f80fd5b506102506104c5366004611822565b610aca565b3480156104d5575f80fd5b506009546101dd906001600160a01b031681565b3480156104f4575f80fd5b506102d66103e881565b348015610509575f80fd5b506102d661051836600461190c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561054d575f80fd5b5061027f61055c3660046118f1565b610ae0565b5f61056d338484610b7a565b5060015b92915050565b5f546001600160a01b031633146105a95760405162461bcd60e51b81526004016105a090611943565b60405180910390fd5b6001600160a01b0382166105ff5760405162461bcd60e51b815260206004820152601e60248201527f41494445563a204163636f756e74206973207a65726f2061646472657373000060448201526064016105a0565b6001600160a01b03919091165f908152600260205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146106525760405162461bcd60e51b81526004016105a090611943565b60075481151560ff90911615150361069f5760405162461bcd60e51b815260206004820152601060248201526f426f6f6c206973207468652073616d6560801b60448201526064016105a0565b6007805460ff19168215159081179091556040519081527f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e89060200160405180910390a150565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1914610748576001600160a01b0384165f9081526001602090815260408083203384529091528120805484929061074290849061198c565b90915550505b610753848484610c72565b949350505050565b5f546001600160a01b031633146107845760405162461bcd60e51b81526004016105a090611943565b6001600160a01b0382165f9081526005602052604090205481151560ff9091161515036107df5760405162461bcd60e51b815260206004820152600960248201526814d85b5948189bdbdb60ba1b60448201526064016105a0565b6001600160a01b0382165f818152600560209081526040808320805486151560ff1991821681179092556002845282852080548216831790556003845293829020805490941681179093558051938452908301919091527f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b764513910160405180910390a15050565b6108796103e8670de0b6b3a764000061199f565b81565b5f546001600160a01b031633146108a55760405162461bcd60e51b81526004016105a090611943565b6108ae5f610fc5565b565b5f546001600160a01b031633146108d95760405162461bcd60e51b81526004016105a090611943565b600a54600160a01b900460ff16156109335760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016105a0565b600a805460ff60a01b1916600160a01b1790556040517fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad6868905f90a1565b5f546001600160a01b031633146109995760405162461bcd60e51b81526004016105a090611943565b6001600160a01b0382166109ff5760405162461bcd60e51b815260206004820152602760248201527f41494445563a204d61726b6574696e6720616464726573732063616e6e6f74206044820152666265207a65726f60c81b60648201526084016105a0565b6001600160a01b038116610a5f5760405162461bcd60e51b815260206004820152602160248201527f41494445563a2044657620616464726573732063616e6e6f74206265207a65726044820152606f60f81b60648201526084016105a0565b600780546001600160a01b038085166101008102610100600160a81b031990931692909217909255600880549284166001600160a01b0319909316831790556040517fb7dbb12e3d7d2f1359cb61a83553096a35374fe4c0b5624717a5c59b853e77c1905f90a35050565b5f610ad6338484610c72565b5060019392505050565b5f546001600160a01b03163314610b095760405162461bcd60e51b81526004016105a090611943565b6001600160a01b038116610b6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a0565b610b7781610fc5565b50565b6001600160a01b038316610bc65760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016105a0565b6001600160a01b038216610c125760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016105a0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f60016001600160a01b038416610cd75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a0565b6001600160a01b038516610d3b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a0565b5f8311610d9c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a0565b610da68585611014565b15610dfd57600a54600160a01b900460ff16610dfd5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016105a0565b610e0785856110e3565b8015610e1d5750600a54600160a81b900460ff16155b8015610e2e5750610e2e8585611128565b15610e9d57305f90815260066020526040902054610e566103e8670de0b6b3a764000061199f565b8110610e9b575f610e6860058361199f565b90508015610e7957610e798161117f565b305f9081526006602052604090205491508115610e9957610e9982611429565b505b505b6001600160a01b0385165f9081526002602052604090205460ff1680610eda57506001600160a01b0384165f9081526002602052604090205460ff165b15610ee257505f5b6001600160a01b0385165f9081526006602052604081208054859290610f0990849061198c565b909155505f905081610f1b5783610f39565b610f3986610f2988886116b3565b610f3389896110e3565b876116f8565b6001600160a01b0386165f90815260066020526040812080549293508392909190610f659084906119be565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fb191815260200190565b60405180910390a350600195945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f806110275f546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561105557505f546001600160a01b03848116911614155b801561106b57505f546001600160a01b03163314155b801561108f57506001600160a01b0384165f9081526003602052604090205460ff16155b80156110b357506001600160a01b0383165f9081526003602052604090205460ff16155b80156110c757506001600160a01b03831615155b801561075357506001600160a01b038316301415949350505050565b6001600160a01b0381165f90815260046020526040812054819060ff16801561075357505050506001600160a01b03165f9081526004602052604090205460ff161590565b6007545f90819060ff16801561115657506001600160a01b0384165f9081526005602052604090205460ff16155b8015610753575050506001600160a01b03165f9081526005602052604090205460ff1615919050565b600a805460ff60a81b1916600160a81b1790555f61119e60028361199f565b90505f6111ab828461198c565b60408051600280825260608201835292935047925f9260208301908036833701905050905030815f815181106111e3576111e36119d1565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561123a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125e91906119e5565b81600181518110611271576112716119d1565b6001600160a01b03928316602091820292909201810191909152305f90815260018252604080822060095490941682529290915220545f19146112d757305f9081526001602090815260408083206009546001600160a01b0316845290915290205f1990555b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061130f9087905f90869030904290600401611a00565b5f604051808303815f87803b158015611326575f80fd5b505af1925050508015611337575060015b6113445750505050611419565b5f61134f834761198c565b60095460405163f305d71960e01b8152306004820152602481018790525f60448201819052606482015261dead60848201524260a48201529192506001600160a01b03169063f305d71990839060c40160606040518083038185885af1935050505080156113da575060408051601f3d908101601f191682019092526113d791810190611a71565b60015b6113e8575050505050611419565b5050506040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb70030905f90a150505050505b50600a805460ff60a81b19169055565b600a805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061146f5761146f6119d1565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ea91906119e5565b816001815181106114fd576114fd6119d1565b6001600160a01b03928316602091820292909201810191909152305f90815260018252604080822060095490941682529290915220545f191461156357305f9081526001602090815260408083206009546001600160a01b0316845290915290205f1990555b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061159b9085905f90869030904290600401611a00565b5f604051808303815f87803b1580156115b2575f80fd5b505af19250505080156115c3575060015b6115cd5750611419565b5f806115da60024761199f565b90508015611640576007546040516101009091046001600160a01b0316906188b89083905f818181858888f193505050503d805f8114611635576040519150601f19603f3d011682016040523d82523d5f602084013e61163a565b606091505b50909250505b47156116a0576008546040516001600160a01b03909116906188b89047905f818181858888f193505050503d805f8114611695576040519150601f19603f3d011682016040523d82523d5f602084013e61169a565b606091505b50909250505b50505050600a805460ff60a81b19169055565b6001600160a01b0381165f90815260046020526040812054819060ff1615801561075357505050506001600160a01b03165f9081526004602052604090205460ff1690565b5f80841561170857506032611719565b831561171657506032611719565b505f5b805f036117295782915050610753565b5f6103e86117378386611a9c565b611741919061199f565b905080156117ad57305f90815260066020526040812080548392906117679084906119be565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6117b7818561198c565b979650505050505050565b5f602080835283518060208501525f5b818110156117ee578581018301518582016040015282016117d2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b77575f80fd5b5f8060408385031215611833575f80fd5b823561183e8161180e565b946020939093013593505050565b8035801515811461185b575f80fd5b919050565b5f8060408385031215611871575f80fd5b823561187c8161180e565b915061188a6020840161184c565b90509250929050565b5f602082840312156118a3575f80fd5b6118ac8261184c565b9392505050565b5f805f606084860312156118c5575f80fd5b83356118d08161180e565b925060208401356118e08161180e565b929592945050506040919091013590565b5f60208284031215611901575f80fd5b81356118ac8161180e565b5f806040838503121561191d575f80fd5b82356119288161180e565b915060208301356119388161180e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561057157610571611978565b5f826119b957634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561057157610571611978565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156119f5575f80fd5b81516118ac8161180e565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a505784516001600160a01b031683529383019391830191600101611a2b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611a83575f80fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176105715761057161197856fea2646970667358221220f682c2402c11567c92b27fab284970d8c55924ead84608f57e40f14e748af6ed64736f6c63430008170033

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.