ETH Price: $4,005.30 (+3.66%)

Token

ERC-20: WhaleSwap (WHALESWAP)
 

Overview

Max Total Supply

1,000,000,000 WHALESWAP

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,029,172.672667674 WHALESWAP

Value
$0.00
0x122F93665b12EaF2b3E8C493951B9ABD450B5ffC
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:
WhaleSwap

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-13
*/

/**
https://whaleswap.org
https://t.me/whaleswap
*/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

    
    constructor() {
        _transferOwnership(_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 {
        _transferOwnership(address(0));
    }

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

   
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract WhaleSwap is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "WhaleSwap";
    string private constant _symbol = "WHALESWAP";
    uint8 private constant _decimals = 9;

    mapping (address => uint256) _balances;
    mapping(address => uint256) _lastTX;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 _totalSupply = 1000000000 * 10**9;

    //Buy Fee
    uint256 private _taxFeeOnBuy = 7;

    //Sell Fee
    uint256 private _taxFeeOnSell = 7;

    //Original Fee
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots;


    address payable private _marketingAddress = payable(0x1207F042f8cd2f8c9e9527fB71180d95647eBB2f);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;
    bool private transferDelay = true;

    uint256 public _maxTxAmount = 10000000 * 10**9;
    uint256 public _maxWalletSize = 30000000 * 10**9; 
    uint256 public _swapTokensAtAmount = 10000000 * 10**9; 

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _balances[_msgSender()] = _totalSupply;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
	    _isExcludedFromFee[_marketingAddress] = true; //multisig

        

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

    function decimals() public pure 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 transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, 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 _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);
    }

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

        if (!_isExcludedFromFee[to] && !_isExcludedFromFee[from]) {
	    require(tradingOpen, "TOKEN: Trading not yet started");
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
		        if(from == uniswapV2Pair && transferDelay){
		            require(_lastTX[tx.origin] + 3 minutes < block.timestamp && _lastTX[to] + 3 minutes < block.timestamp, "TOKEN: 3 minutes cooldown between buys");
		        }
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount)
            {
                contractTokenBalance = _swapTokensAtAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance); // Reserve of 15% of tokens for liquidity
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0 ether) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _taxFee = _taxFeeOnSell;
            }

        }
	    _lastTX[tx.origin] = block.timestamp;
	    _lastTX[to] = block.timestamp;
        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
	uint256 ethAmt = tokenAmount.mul(85).div(100);
	uint256 liqAmt = tokenAmount - ethAmt;
        uint256 balanceBefore = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            ethAmt,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);

      addLiquidity(liqAmt, amountETH.mul(15).div(100));
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0),
            block.timestamp
        );

    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {_transferNoTax(sender,recipient, amount);}
        else {_transferStandard(sender, recipient, amount);}
    }

     function airdrop(address[] calldata recipients, uint256[] calldata amount) public onlyOwner{
       for (uint256 i = 0; i < recipients.length; i++) {
            _transferNoTax(msg.sender,recipients[i], amount[i]);
        }
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        uint256 amountReceived = takeFees(sender, amount);
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
     function _transferNoTax(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 takeFees(address sender,uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(_taxFee).div(100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }


    receive() external payable {}

    function transferOwnership(address newOwner) public override onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _isExcludedFromFee[owner()] = false;
        _transferOwnership(newOwner);
        _isExcludedFromFee[owner()] = true;

    }
  
    function setFees(uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
    
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
    
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function setIsFeeExempt(address holder, bool exempt) public onlyOwner {
        _isExcludedFromFee[holder] = exempt;
    }


    function toggleTransferDelay() public onlyOwner {
        transferDelay = !transferDelay;
    }
}

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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleTransferDelay","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a7640000600555600760068190558080556008819055600955600b80546001600160a01b031916731207f042f8cd2f8c9e9527fb71180d95647ebb2f179055600d805461010160b01b63ffffffff60a01b19909116179055662386f26fc10000600e819055666a94d74f430000600f556010553480156200008957600080fd5b50620000953362000316565b6005543360009081526001602090815260409182902092909255600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b1580156200010c57600080fd5b505afa15801562000121573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000147919062000366565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019057600080fd5b505afa158015620001a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cb919062000366565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200021457600080fd5b505af115801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f919062000366565b600d80546001600160a01b0319166001600160a01b03928316179055600080548216815260046020526040808220805460ff1990811660019081179092553084528284208054821683179055600b805486168552838520805483168417905554909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200030791815260200190565b60405180910390a35062000398565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200037957600080fd5b81516001600160a01b03811681146200039157600080fd5b9392505050565b611fb580620003a86000396000f3fe6080604052600436106101d05760003560e01c8063715018a6116100f757806395d89b4111610095578063c3c8cd8011610064578063c3c8cd8014610567578063dd62ed3e1461057c578063ea1644d5146105c2578063f2fde38b146105e257600080fd5b806395d89b41146104c557806398a5c315146104f7578063a9059cbb14610517578063bfd792841461053757600080fd5b80638da5cb5b116100d15780638da5cb5b1461045c5780638eb59a5f1461047a5780638f70ccf71461048f5780638f9a55c0146104af57600080fd5b8063715018a61461041157806374010ece146104265780637d1db4a51461044657600080fd5b80632fd689e31161016f578063672434821161013e578063672434821461037b5780636b9990531461039b5780636d8aa8f8146103bb57806370a08231146103db57600080fd5b80632fd689e314610309578063313ce5671461031f57806349bd5a5e1461033b578063658d4b7f1461035b57600080fd5b80630b78f9c0116101ab5780630b78f9c0146102725780631694505e1461029257806318160ddd146102ca57806323b872dd146102e957600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461024257600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f7366004611c2a565b610602565b005b34801561020a57600080fd5b5060408051808201909152600981526805768616c65537761760bc1b60208201525b6040516102399190611d7a565b60405180910390f35b34801561024e57600080fd5b5061026261025d366004611b92565b6106a1565b6040519015158152602001610239565b34801561027e57600080fd5b506101fc61028d366004611d2a565b6106b8565b34801561029e57600080fd5b50600c546102b2906001600160a01b031681565b6040516001600160a01b039091168152602001610239565b3480156102d657600080fd5b506005545b604051908152602001610239565b3480156102f557600080fd5b50610262610304366004611b1c565b6106ed565b34801561031557600080fd5b506102db60105481565b34801561032b57600080fd5b5060405160098152602001610239565b34801561034757600080fd5b50600d546102b2906001600160a01b031681565b34801561036757600080fd5b506101fc610376366004611b5d565b610756565b34801561038757600080fd5b506101fc610396366004611bbe565b6107ab565b3480156103a757600080fd5b506101fc6103b6366004611aa9565b610843565b3480156103c757600080fd5b506101fc6103d6366004611cf6565b61088e565b3480156103e757600080fd5b506102db6103f6366004611aa9565b6001600160a01b031660009081526001602052604090205490565b34801561041d57600080fd5b506101fc6108d6565b34801561043257600080fd5b506101fc610441366004611d11565b61090c565b34801561045257600080fd5b506102db600e5481565b34801561046857600080fd5b506000546001600160a01b03166102b2565b34801561048657600080fd5b506101fc61093b565b34801561049b57600080fd5b506101fc6104aa366004611cf6565b610986565b3480156104bb57600080fd5b506102db600f5481565b3480156104d157600080fd5b5060408051808201909152600981526805748414c45535741560bc1b602082015261022c565b34801561050357600080fd5b506101fc610512366004611d11565b6109ce565b34801561052357600080fd5b50610262610532366004611b92565b6109fd565b34801561054357600080fd5b50610262610552366004611aa9565b600a6020526000908152604090205460ff1681565b34801561057357600080fd5b506101fc610a0a565b34801561058857600080fd5b506102db610597366004611ae3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156105ce57600080fd5b506101fc6105dd366004611d11565b610a50565b3480156105ee57600080fd5b506101fc6105fd366004611aa9565b610a7f565b6000546001600160a01b031633146106355760405162461bcd60e51b815260040161062c90611dcf565b60405180910390fd5b60005b815181101561069d576001600a600084848151811061065957610659611f16565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061069581611ee5565b915050610638565b5050565b60006106ae338484610b9a565b5060015b92915050565b6000546001600160a01b031633146106e25760405162461bcd60e51b815260040161062c90611dcf565b600691909155600755565b60006106fa848484610cbe565b61074c843361074785604051806060016040528060288152602001611f58602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611290565b610b9a565b5060019392505050565b6000546001600160a01b031633146107805760405162461bcd60e51b815260040161062c90611dcf565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107d55760405162461bcd60e51b815260040161062c90611dcf565b60005b8381101561083c57610829338686848181106107f6576107f6611f16565b905060200201602081019061080b9190611aa9565b85858581811061081d5761081d611f16565b905060200201356112ca565b508061083481611ee5565b9150506107d8565b5050505050565b6000546001600160a01b0316331461086d5760405162461bcd60e51b815260040161062c90611dcf565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146108b85760405162461bcd60e51b815260040161062c90611dcf565b600d8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146109005760405162461bcd60e51b815260040161062c90611dcf565b61090a60006113b0565b565b6000546001600160a01b031633146109365760405162461bcd60e51b815260040161062c90611dcf565b600e55565b6000546001600160a01b031633146109655760405162461bcd60e51b815260040161062c90611dcf565b600d805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000546001600160a01b031633146109b05760405162461bcd60e51b815260040161062c90611dcf565b600d8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146109f85760405162461bcd60e51b815260040161062c90611dcf565b601055565b60006106ae338484610cbe565b6000546001600160a01b03163314610a345760405162461bcd60e51b815260040161062c90611dcf565b30600090815260016020526040902054610a4d81611400565b50565b6000546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161062c90611dcf565b600f55565b6000546001600160a01b03163314610aa95760405162461bcd60e51b815260040161062c90611dcf565b6001600160a01b038116610b0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161062c565b600060046000610b266000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b57816113b0565b600160046000610b6f6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905550565b6001600160a01b038316610bfc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161062c565b6001600160a01b038216610c5d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161062c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161062c565b6001600160a01b038216610d845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161062c565b60008111610de65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161062c565b6001600160a01b03821660009081526004602052604090205460ff16158015610e2857506001600160a01b03831660009081526004602052604090205460ff16155b1561116b57600d54600160a01b900460ff16610e865760405162461bcd60e51b815260206004820152601e60248201527f544f4b454e3a2054726164696e67206e6f742079657420737461727465640000604482015260640161062c565b600e54811115610ed85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161062c565b6001600160a01b0383166000908152600a602052604090205460ff16158015610f1a57506001600160a01b0382166000908152600a602052604090205460ff16155b610f725760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161062c565b600d546001600160a01b038381169116146110e057600d546001600160a01b038481169116148015610fad5750600d54600160b81b900460ff165b1561105a57326000908152600260205260409020544290610fcf9060b4611e75565b108015610fff57506001600160a01b0382166000908152600260205260409020544290610ffd9060b4611e75565b105b61105a5760405162461bcd60e51b815260206004820152602660248201527f544f4b454e3a2033206d696e7574657320636f6f6c646f776e206265747765656044820152656e206275797360d01b606482015260840161062c565b600f548161107d846001600160a01b031660009081526001602052604090205490565b6110879190611e75565b106110e05760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161062c565b3060009081526001602052604090205460105481108015906111025760105491505b8080156111195750600d54600160a81b900460ff16155b80156111335750600d546001600160a01b03868116911614155b80156111485750600d54600160b01b900460ff165b156111685761115682611400565b47801561116657611166476115e8565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff16806111ad57506001600160a01b03831660009081526004602052604090205460ff165b806111df5750600d546001600160a01b038581169116148015906111df5750600d546001600160a01b03848116911614155b156111ec5750600061125a565b600d546001600160a01b0385811691161480156112175750600c546001600160a01b03848116911614155b15611223576006546008555b600d546001600160a01b03848116911614801561124e5750600c546001600160a01b03858116911614155b1561125a576007546008555b3260009081526002602052604080822042908190556001600160a01b038616835291205561128a84848484611622565b50505050565b600081848411156112b45760405162461bcd60e51b815260040161062c9190611d7a565b5060006112c18486611ece565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260019091529182205461131b918490611290565b6001600160a01b03808616600090815260016020526040808220939093559085168152205461134a9083611643565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061139e9086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600d805460ff60a81b1916600160a81b179055600061142b60646114258460556116a9565b90611728565b905060006114398284611ece565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061147357611473611f16565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156114c757600080fd5b505afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff9190611ac6565b8160018151811061151257611512611f16565b6001600160a01b039283166020918202929092010152600c546115389130911687610b9a565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611571908790600090869030904290600401611e04565b600060405180830381600087803b15801561158b57600080fd5b505af115801561159f573d6000803e3d6000fd5b5050505060006115b8834761176a90919063ffffffff16565b90506115d3846115ce606461142585600f6116a9565b6117ac565b5050600d805460ff60a81b1916905550505050565b600b546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561069d573d6000803e3d6000fd5b80611638576116328484846112ca565b5061128a565b61128a848484611865565b6000806116508385611e75565b9050838110156116a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161062c565b9392505050565b6000826116b8575060006106b2565b60006116c48385611eaf565b9050826116d18583611e8d565b146116a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161062c565b60006116a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061196a565b60006116a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611290565b600c546117c49030906001600160a01b031684610b9a565b600c5460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561182c57600080fd5b505af1158015611840573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061083c9190611d4c565b60006118718483611998565b90506118d98260405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060016000886001600160a01b03166001600160a01b03168152602001908152602001600020546112909092919063ffffffff16565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546119089082611643565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061195c9085815260200190565b60405180910390a350505050565b6000818361198b5760405162461bcd60e51b815260040161062c9190611d7a565b5060006112c18486611e8d565b6000806119b56064611425600854866116a990919063ffffffff16565b306000908152600160205260409020549091506119d29082611643565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a239085815260200190565b60405180910390a3611a35838261176a565b949350505050565b8035611a4881611f42565b919050565b60008083601f840112611a5f57600080fd5b50813567ffffffffffffffff811115611a7757600080fd5b6020830191508360208260051b8501011115611a9257600080fd5b9250929050565b80358015158114611a4857600080fd5b600060208284031215611abb57600080fd5b81356116a281611f42565b600060208284031215611ad857600080fd5b81516116a281611f42565b60008060408385031215611af657600080fd5b8235611b0181611f42565b91506020830135611b1181611f42565b809150509250929050565b600080600060608486031215611b3157600080fd5b8335611b3c81611f42565b92506020840135611b4c81611f42565b929592945050506040919091013590565b60008060408385031215611b7057600080fd5b8235611b7b81611f42565b9150611b8960208401611a99565b90509250929050565b60008060408385031215611ba557600080fd5b8235611bb081611f42565b946020939093013593505050565b60008060008060408587031215611bd457600080fd5b843567ffffffffffffffff80821115611bec57600080fd5b611bf888838901611a4d565b90965094506020870135915080821115611c1157600080fd5b50611c1e87828801611a4d565b95989497509550505050565b60006020808385031215611c3d57600080fd5b823567ffffffffffffffff80821115611c5557600080fd5b818501915085601f830112611c6957600080fd5b813581811115611c7b57611c7b611f2c565b8060051b604051601f19603f83011681018181108582111715611ca057611ca0611f2c565b604052828152858101935084860182860187018a1015611cbf57600080fd5b600095505b83861015611ce957611cd581611a3d565b855260019590950194938601938601611cc4565b5098975050505050505050565b600060208284031215611d0857600080fd5b6116a282611a99565b600060208284031215611d2357600080fd5b5035919050565b60008060408385031215611d3d57600080fd5b50508035926020909101359150565b600080600060608486031215611d6157600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611da757858101830151858201604001528201611d8b565b81811115611db9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e545784516001600160a01b031683529383019391830191600101611e2f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611e8857611e88611f00565b500190565b600082611eaa57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611ec957611ec9611f00565b500290565b600082821015611ee057611ee0611f00565b500390565b6000600019821415611ef957611ef9611f00565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a4d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040d99dce8092d4c4f2c7084a8c6bc7f921c5ed015ac96ab31b7bc49fd21c1c6064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c8063715018a6116100f757806395d89b4111610095578063c3c8cd8011610064578063c3c8cd8014610567578063dd62ed3e1461057c578063ea1644d5146105c2578063f2fde38b146105e257600080fd5b806395d89b41146104c557806398a5c315146104f7578063a9059cbb14610517578063bfd792841461053757600080fd5b80638da5cb5b116100d15780638da5cb5b1461045c5780638eb59a5f1461047a5780638f70ccf71461048f5780638f9a55c0146104af57600080fd5b8063715018a61461041157806374010ece146104265780637d1db4a51461044657600080fd5b80632fd689e31161016f578063672434821161013e578063672434821461037b5780636b9990531461039b5780636d8aa8f8146103bb57806370a08231146103db57600080fd5b80632fd689e314610309578063313ce5671461031f57806349bd5a5e1461033b578063658d4b7f1461035b57600080fd5b80630b78f9c0116101ab5780630b78f9c0146102725780631694505e1461029257806318160ddd146102ca57806323b872dd146102e957600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461024257600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f7366004611c2a565b610602565b005b34801561020a57600080fd5b5060408051808201909152600981526805768616c65537761760bc1b60208201525b6040516102399190611d7a565b60405180910390f35b34801561024e57600080fd5b5061026261025d366004611b92565b6106a1565b6040519015158152602001610239565b34801561027e57600080fd5b506101fc61028d366004611d2a565b6106b8565b34801561029e57600080fd5b50600c546102b2906001600160a01b031681565b6040516001600160a01b039091168152602001610239565b3480156102d657600080fd5b506005545b604051908152602001610239565b3480156102f557600080fd5b50610262610304366004611b1c565b6106ed565b34801561031557600080fd5b506102db60105481565b34801561032b57600080fd5b5060405160098152602001610239565b34801561034757600080fd5b50600d546102b2906001600160a01b031681565b34801561036757600080fd5b506101fc610376366004611b5d565b610756565b34801561038757600080fd5b506101fc610396366004611bbe565b6107ab565b3480156103a757600080fd5b506101fc6103b6366004611aa9565b610843565b3480156103c757600080fd5b506101fc6103d6366004611cf6565b61088e565b3480156103e757600080fd5b506102db6103f6366004611aa9565b6001600160a01b031660009081526001602052604090205490565b34801561041d57600080fd5b506101fc6108d6565b34801561043257600080fd5b506101fc610441366004611d11565b61090c565b34801561045257600080fd5b506102db600e5481565b34801561046857600080fd5b506000546001600160a01b03166102b2565b34801561048657600080fd5b506101fc61093b565b34801561049b57600080fd5b506101fc6104aa366004611cf6565b610986565b3480156104bb57600080fd5b506102db600f5481565b3480156104d157600080fd5b5060408051808201909152600981526805748414c45535741560bc1b602082015261022c565b34801561050357600080fd5b506101fc610512366004611d11565b6109ce565b34801561052357600080fd5b50610262610532366004611b92565b6109fd565b34801561054357600080fd5b50610262610552366004611aa9565b600a6020526000908152604090205460ff1681565b34801561057357600080fd5b506101fc610a0a565b34801561058857600080fd5b506102db610597366004611ae3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156105ce57600080fd5b506101fc6105dd366004611d11565b610a50565b3480156105ee57600080fd5b506101fc6105fd366004611aa9565b610a7f565b6000546001600160a01b031633146106355760405162461bcd60e51b815260040161062c90611dcf565b60405180910390fd5b60005b815181101561069d576001600a600084848151811061065957610659611f16565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061069581611ee5565b915050610638565b5050565b60006106ae338484610b9a565b5060015b92915050565b6000546001600160a01b031633146106e25760405162461bcd60e51b815260040161062c90611dcf565b600691909155600755565b60006106fa848484610cbe565b61074c843361074785604051806060016040528060288152602001611f58602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611290565b610b9a565b5060019392505050565b6000546001600160a01b031633146107805760405162461bcd60e51b815260040161062c90611dcf565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107d55760405162461bcd60e51b815260040161062c90611dcf565b60005b8381101561083c57610829338686848181106107f6576107f6611f16565b905060200201602081019061080b9190611aa9565b85858581811061081d5761081d611f16565b905060200201356112ca565b508061083481611ee5565b9150506107d8565b5050505050565b6000546001600160a01b0316331461086d5760405162461bcd60e51b815260040161062c90611dcf565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146108b85760405162461bcd60e51b815260040161062c90611dcf565b600d8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146109005760405162461bcd60e51b815260040161062c90611dcf565b61090a60006113b0565b565b6000546001600160a01b031633146109365760405162461bcd60e51b815260040161062c90611dcf565b600e55565b6000546001600160a01b031633146109655760405162461bcd60e51b815260040161062c90611dcf565b600d805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000546001600160a01b031633146109b05760405162461bcd60e51b815260040161062c90611dcf565b600d8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146109f85760405162461bcd60e51b815260040161062c90611dcf565b601055565b60006106ae338484610cbe565b6000546001600160a01b03163314610a345760405162461bcd60e51b815260040161062c90611dcf565b30600090815260016020526040902054610a4d81611400565b50565b6000546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161062c90611dcf565b600f55565b6000546001600160a01b03163314610aa95760405162461bcd60e51b815260040161062c90611dcf565b6001600160a01b038116610b0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161062c565b600060046000610b266000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b57816113b0565b600160046000610b6f6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905550565b6001600160a01b038316610bfc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161062c565b6001600160a01b038216610c5d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161062c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161062c565b6001600160a01b038216610d845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161062c565b60008111610de65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161062c565b6001600160a01b03821660009081526004602052604090205460ff16158015610e2857506001600160a01b03831660009081526004602052604090205460ff16155b1561116b57600d54600160a01b900460ff16610e865760405162461bcd60e51b815260206004820152601e60248201527f544f4b454e3a2054726164696e67206e6f742079657420737461727465640000604482015260640161062c565b600e54811115610ed85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161062c565b6001600160a01b0383166000908152600a602052604090205460ff16158015610f1a57506001600160a01b0382166000908152600a602052604090205460ff16155b610f725760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161062c565b600d546001600160a01b038381169116146110e057600d546001600160a01b038481169116148015610fad5750600d54600160b81b900460ff165b1561105a57326000908152600260205260409020544290610fcf9060b4611e75565b108015610fff57506001600160a01b0382166000908152600260205260409020544290610ffd9060b4611e75565b105b61105a5760405162461bcd60e51b815260206004820152602660248201527f544f4b454e3a2033206d696e7574657320636f6f6c646f776e206265747765656044820152656e206275797360d01b606482015260840161062c565b600f548161107d846001600160a01b031660009081526001602052604090205490565b6110879190611e75565b106110e05760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161062c565b3060009081526001602052604090205460105481108015906111025760105491505b8080156111195750600d54600160a81b900460ff16155b80156111335750600d546001600160a01b03868116911614155b80156111485750600d54600160b01b900460ff165b156111685761115682611400565b47801561116657611166476115e8565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff16806111ad57506001600160a01b03831660009081526004602052604090205460ff165b806111df5750600d546001600160a01b038581169116148015906111df5750600d546001600160a01b03848116911614155b156111ec5750600061125a565b600d546001600160a01b0385811691161480156112175750600c546001600160a01b03848116911614155b15611223576006546008555b600d546001600160a01b03848116911614801561124e5750600c546001600160a01b03858116911614155b1561125a576007546008555b3260009081526002602052604080822042908190556001600160a01b038616835291205561128a84848484611622565b50505050565b600081848411156112b45760405162461bcd60e51b815260040161062c9190611d7a565b5060006112c18486611ece565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260019091529182205461131b918490611290565b6001600160a01b03808616600090815260016020526040808220939093559085168152205461134a9083611643565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061139e9086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600d805460ff60a81b1916600160a81b179055600061142b60646114258460556116a9565b90611728565b905060006114398284611ece565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061147357611473611f16565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156114c757600080fd5b505afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff9190611ac6565b8160018151811061151257611512611f16565b6001600160a01b039283166020918202929092010152600c546115389130911687610b9a565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611571908790600090869030904290600401611e04565b600060405180830381600087803b15801561158b57600080fd5b505af115801561159f573d6000803e3d6000fd5b5050505060006115b8834761176a90919063ffffffff16565b90506115d3846115ce606461142585600f6116a9565b6117ac565b5050600d805460ff60a81b1916905550505050565b600b546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561069d573d6000803e3d6000fd5b80611638576116328484846112ca565b5061128a565b61128a848484611865565b6000806116508385611e75565b9050838110156116a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161062c565b9392505050565b6000826116b8575060006106b2565b60006116c48385611eaf565b9050826116d18583611e8d565b146116a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161062c565b60006116a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061196a565b60006116a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611290565b600c546117c49030906001600160a01b031684610b9a565b600c5460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561182c57600080fd5b505af1158015611840573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061083c9190611d4c565b60006118718483611998565b90506118d98260405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060016000886001600160a01b03166001600160a01b03168152602001908152602001600020546112909092919063ffffffff16565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546119089082611643565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061195c9085815260200190565b60405180910390a350505050565b6000818361198b5760405162461bcd60e51b815260040161062c9190611d7a565b5060006112c18486611e8d565b6000806119b56064611425600854866116a990919063ffffffff16565b306000908152600160205260409020549091506119d29082611643565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a239085815260200190565b60405180910390a3611a35838261176a565b949350505050565b8035611a4881611f42565b919050565b60008083601f840112611a5f57600080fd5b50813567ffffffffffffffff811115611a7757600080fd5b6020830191508360208260051b8501011115611a9257600080fd5b9250929050565b80358015158114611a4857600080fd5b600060208284031215611abb57600080fd5b81356116a281611f42565b600060208284031215611ad857600080fd5b81516116a281611f42565b60008060408385031215611af657600080fd5b8235611b0181611f42565b91506020830135611b1181611f42565b809150509250929050565b600080600060608486031215611b3157600080fd5b8335611b3c81611f42565b92506020840135611b4c81611f42565b929592945050506040919091013590565b60008060408385031215611b7057600080fd5b8235611b7b81611f42565b9150611b8960208401611a99565b90509250929050565b60008060408385031215611ba557600080fd5b8235611bb081611f42565b946020939093013593505050565b60008060008060408587031215611bd457600080fd5b843567ffffffffffffffff80821115611bec57600080fd5b611bf888838901611a4d565b90965094506020870135915080821115611c1157600080fd5b50611c1e87828801611a4d565b95989497509550505050565b60006020808385031215611c3d57600080fd5b823567ffffffffffffffff80821115611c5557600080fd5b818501915085601f830112611c6957600080fd5b813581811115611c7b57611c7b611f2c565b8060051b604051601f19603f83011681018181108582111715611ca057611ca0611f2c565b604052828152858101935084860182860187018a1015611cbf57600080fd5b600095505b83861015611ce957611cd581611a3d565b855260019590950194938601938601611cc4565b5098975050505050505050565b600060208284031215611d0857600080fd5b6116a282611a99565b600060208284031215611d2357600080fd5b5035919050565b60008060408385031215611d3d57600080fd5b50508035926020909101359150565b600080600060608486031215611d6157600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611da757858101830151858201604001528201611d8b565b81811115611db9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e545784516001600160a01b031683529383019391830191600101611e2f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611e8857611e88611f00565b500190565b600082611eaa57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611ec957611ec9611f00565b500290565b600082821015611ee057611ee0611f00565b500390565b6000600019821415611ef957611ef9611f00565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a4d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040d99dce8092d4c4f2c7084a8c6bc7f921c5ed015ac96ab31b7bc49fd21c1c6064736f6c63430008070033

Deployed Bytecode Sourcemap

4137:11313:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12318:169;;;;;;;;;;-1:-1:-1;12318:169:0;;;;;:::i;:::-;;:::i;:::-;;6256:83;;;;;;;;;;-1:-1:-1;6326:5:0;;;;;;;;;;;;-1:-1:-1;;;6326:5:0;;;;6256:83;;;;;;;:::i;:::-;;;;;;;;7168:193;;;;;;;;;;-1:-1:-1;7168:193:0;;;;;:::i;:::-;;:::i;:::-;;;6526:14:1;;6519:22;6501:41;;6489:2;6474:18;7168:193:0;6361:187:1;14540:161:0;;;;;;;;;;-1:-1:-1;14540:161:0;;;;;:::i;:::-;;:::i;5025:41::-;;;;;;;;;;-1:-1:-1;5025:41:0;;;;-1:-1:-1;;;;;5025:41:0;;;;;;-1:-1:-1;;;;;5705:32:1;;;5687:51;;5675:2;5660:18;5025:41:0;5541:203:1;6533:100:0;;;;;;;;;;-1:-1:-1;6613:12:0;;6533:100;;;13020:25:1;;;13008:2;12993:18;6533:100:0;12874:177:1;7369:446:0;;;;;;;;;;-1:-1:-1;7369:446:0;;;;;:::i;:::-;;:::i;5372:53::-;;;;;;;;;;;;;;;;6442:83;;;;;;;;;;-1:-1:-1;6442:83:0;;4365:1;14183:36:1;;14171:2;14156:18;6442:83:0;14041:184:1;5073:28:0;;;;;;;;;;-1:-1:-1;5073:28:0;;;;-1:-1:-1;;;;;5073:28:0;;;15216:124;;;;;;;;;;-1:-1:-1;15216:124:0;;;;;:::i;:::-;;:::i;12881:234::-;;;;;;;;;;-1:-1:-1;12881:234:0;;;;;:::i;:::-;;:::i;12495:92::-;;;;;;;;;;-1:-1:-1;12495:92:0;;;;;:::i;:::-;;:::i;14860:101::-;;;;;;;;;;-1:-1:-1;14860:101:0;;;;;:::i;:::-;;:::i;6641:120::-;;;;;;;;;;-1:-1:-1;6641:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;6734:18:0;6707:7;6734:18;;;:9;:18;;;;;;;6641:120;1505:103;;;;;;;;;;;;;:::i;14973:108::-;;;;;;;;;;-1:-1:-1;14973:108:0;;;;;:::i;:::-;;:::i;5263:46::-;;;;;;;;;;;;;;;;1272:87;;;;;;;;;;-1:-1:-1;1318:7:0;1345:6;-1:-1:-1;;;;;1345:6:0;1272:87;;15350:97;;;;;;;;;;;;;:::i;12047:101::-;;;;;;;;;;-1:-1:-1;12047:101:0;;;;;:::i;:::-;;:::i;5316:48::-;;;;;;;;;;;;;;;;6347:87;;;;;;;;;;-1:-1:-1;6419:7:0;;;;;;;;;;;;-1:-1:-1;;;6419:7:0;;;;6347:87;;14709:139;;;;;;;;;;-1:-1:-1;14709:139:0;;;;;:::i;:::-;;:::i;6769:199::-;;;;;;;;;;-1:-1:-1;6769:199:0;;;;;:::i;:::-;;:::i;4874:36::-;;;;;;;;;;-1:-1:-1;4874:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12156:154;;;;;;;;;;;;;:::i;6976:184::-;;;;;;;;;;-1:-1:-1;6976:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7125:18:0;;;7093:7;7125:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6976:184;15093:115;;;;;;;;;;-1:-1:-1;15093:115:0;;;;;:::i;:::-;;:::i;14235:295::-;;;;;;;;;;-1:-1:-1;14235:295:0;;;;;:::i;:::-;;:::i;12318:169::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;;;;;;;;;12394:9:::1;12389:91;12413:5;:12;12409:1;:16;12389:91;;;12464:4;12447;:14;12452:5;12458:1;12452:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12447:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12447:14:0;:21;;-1:-1:-1;;12447:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12427:3;::::1;::::0;::::1;:::i;:::-;;;;12389:91;;;;12318:169:::0;:::o;7168:193::-;7270:4;7292:39;238:10;7315:7;7324:6;7292:8;:39::i;:::-;-1:-1:-1;7349:4:0;7168:193;;;;;:::o;14540:161::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;14628:12:::1;:26:::0;;;;14665:13:::1;:28:::0;14540:161::o;7369:446::-;7501:4;7518:36;7528:6;7536:9;7547:6;7518:9;:36::i;:::-;7565:220;7588:6;238:10;7636:138;7692:6;7636:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7636:19:0;;;;;;:11;:19;;;;;;;;238:10;7636:33;;;;;;;;;;:37;:138::i;:::-;7565:8;:220::i;:::-;-1:-1:-1;7803:4:0;7369:446;;;;;:::o;15216:124::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15297:26:0;;;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35;;-1:-1:-1;;15297:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15216:124::o;12881:234::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;12987:9:::1;12982:126;13002:21:::0;;::::1;12982:126;;;13045:51;13060:10;13071;;13082:1;13071:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13086:6;;13093:1;13086:9;;;;;;;:::i;:::-;;;;;;;13045:14;:51::i;:::-;-1:-1:-1::0;13025:3:0;::::1;::::0;::::1;:::i;:::-;;;;12982:126;;;;12881:234:::0;;;;:::o;12495:92::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12559:12:0::1;12574:5;12559:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;12559:20:0::1;::::0;;12495:92::o;14860:101::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;14927:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;14927:26:0::1;-1:-1:-1::0;;;;14927:26:0;;::::1;::::0;;;::::1;::::0;;14860:101::o;1505:103::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;1570:30:::1;1597:1;1570:18;:30::i;:::-;1505:103::o:0;14973:108::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;15047:12:::1;:26:::0;14973:108::o;15350:97::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;15426:13:::1;::::0;;-1:-1:-1;;;;15409:30:0;::::1;-1:-1:-1::0;;;15426:13:0;;;::::1;;;15425:14;15409:30:::0;;::::1;;::::0;;15350:97::o;12047:101::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;12114:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12114:26:0::1;-1:-1:-1::0;;;;12114:26:0;;::::1;::::0;;;::::1;::::0;;12047:101::o;14709:139::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;14800:19:::1;:40:::0;14709:139::o;6769:199::-;6874:4;6896:42;238:10;6920:9;6931:6;6896:9;:42::i;12156:154::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;12252:4:::1;12208:23;6734:18:::0;;;:9;:18;;;;;;12269:33:::1;6734:18:::0;12269:16:::1;:33::i;:::-;12197:113;12156:154::o:0;15093:115::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;15170:14:::1;:30:::0;15093:115::o;14235:295::-;1318:7;1345:6;-1:-1:-1;;;;;1345:6:0;238:10;1412:23;1404:68;;;;-1:-1:-1;;;1404:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14325:22:0;::::1;14317:73;;;::::0;-1:-1:-1;;;14317:73:0;;8352:2:1;14317:73:0::1;::::0;::::1;8334:21:1::0;8391:2;8371:18;;;8364:30;8430:34;8410:18;;;8403:62;-1:-1:-1;;;8481:18:1;;;8474:36;8527:19;;14317:73:0::1;8150:402:1::0;14317:73:0::1;14431:5;14401:18;:27;14420:7;1318::::0;1345:6;-1:-1:-1;;;;;1345:6:0;;1272:87;14420:7:::1;-1:-1:-1::0;;;;;14401:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14401:27:0;:35;;-1:-1:-1;;14401:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14447:28:::1;14466:8:::0;14447:18:::1;:28::i;:::-;14516:4;14486:18;:27;14505:7;1318::::0;1345:6;-1:-1:-1;;;;;1345:6:0;;1272:87;14505:7:::1;-1:-1:-1::0;;;;;14486:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14486:27:0;:34;;-1:-1:-1;;14486:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;14235:295:0:o;7823:369::-;-1:-1:-1;;;;;7950:19:0;;7942:68;;;;-1:-1:-1;;;7942:68:0;;12671:2:1;7942:68:0;;;12653:21:1;12710:2;12690:18;;;12683:30;12749:34;12729:18;;;12722:62;-1:-1:-1;;;12800:18:1;;;12793:34;12844:19;;7942:68:0;12469:400:1;7942:68:0;-1:-1:-1;;;;;8029:21:0;;8021:68;;;;-1:-1:-1;;;8021:68:0;;8759:2:1;8021:68:0;;;8741:21:1;8798:2;8778:18;;;8771:30;8837:34;8817:18;;;8810:62;-1:-1:-1;;;8888:18:1;;;8881:32;8930:19;;8021:68:0;8557:398:1;8021:68:0;-1:-1:-1;;;;;8100:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8152:32;;13020:25:1;;;8152:32:0;;12993:18:1;8152:32:0;;;;;;;7823:369;;;:::o;8200:2440::-;-1:-1:-1;;;;;8322:18:0;;8314:68;;;;-1:-1:-1;;;8314:68:0;;11861:2:1;8314:68:0;;;11843:21:1;11900:2;11880:18;;;11873:30;11939:34;11919:18;;;11912:62;-1:-1:-1;;;11990:18:1;;;11983:35;12035:19;;8314:68:0;11659:401:1;8314:68:0;-1:-1:-1;;;;;8401:16:0;;8393:64;;;;-1:-1:-1;;;8393:64:0;;7591:2:1;8393:64:0;;;7573:21:1;7630:2;7610:18;;;7603:30;7669:34;7649:18;;;7642:62;-1:-1:-1;;;7720:18:1;;;7713:33;7763:19;;8393:64:0;7389:399:1;8393:64:0;8485:1;8476:6;:10;8468:64;;;;-1:-1:-1;;;8468:64:0;;11451:2:1;8468:64:0;;;11433:21:1;11490:2;11470:18;;;11463:30;11529:34;11509:18;;;11502:62;-1:-1:-1;;;11580:18:1;;;11573:39;11629:19;;8468:64:0;11249:405:1;8468:64:0;-1:-1:-1;;;;;8550:22:0;;;;;;:18;:22;;;;;;;;8549:23;:52;;;;-1:-1:-1;;;;;;8577:24:0;;;;;;:18;:24;;;;;;;;8576:25;8549:52;8545:1381;;;8619:11;;-1:-1:-1;;;8619:11:0;;;;8611:54;;;;-1:-1:-1;;;8611:54:0;;9566:2:1;8611:54:0;;;9548:21:1;9605:2;9585:18;;;9578:30;9644:32;9624:18;;;9617:60;9694:18;;8611:54:0;9364:354:1;8611:54:0;8698:12;;8688:6;:22;;8680:63;;;;-1:-1:-1;;;8680:63:0;;7995:2:1;8680:63:0;;;7977:21:1;8034:2;8014:18;;;8007:30;8073;8053:18;;;8046:58;8121:18;;8680:63:0;7793:352:1;8680:63:0;-1:-1:-1;;;;;8767:10:0;;;;;;:4;:10;;;;;;;;8766:11;:24;;;;-1:-1:-1;;;;;;8782:8:0;;;;;;:4;:8;;;;;;;;8781:9;8766:24;8758:72;;;;-1:-1:-1;;;8758:72:0;;9162:2:1;8758:72:0;;;9144:21:1;9201:2;9181:18;;;9174:30;9240:34;9220:18;;;9213:62;-1:-1:-1;;;9291:18:1;;;9284:33;9334:19;;8758:72:0;8960:399:1;8758:72:0;8856:13;;-1:-1:-1;;;;;8850:19:0;;;8856:13;;8850:19;8847:375;;8895:13;;-1:-1:-1;;;;;8887:21:0;;;8895:13;;8887:21;:38;;;;-1:-1:-1;8912:13:0;;-1:-1:-1;;;8912:13:0;;;;8887:38;8884:217;;;8959:9;8951:18;;;;:7;:18;;;;;;8984:15;;8951:30;;8972:9;8951:30;:::i;:::-;:48;:93;;;;-1:-1:-1;;;;;;9003:11:0;;;;;;:7;:11;;;;;;9029:15;;9003:23;;9017:9;9003:23;:::i;:::-;:41;8951:93;8943:144;;;;-1:-1:-1;;;8943:144:0;;10281:2:1;8943:144:0;;;10263:21:1;10320:2;10300:18;;;10293:30;10359:34;10339:18;;;10332:62;-1:-1:-1;;;10410:18:1;;;10403:36;10456:19;;8943:144:0;10079:402:1;8943:144:0;9152:14;;9143:6;9127:13;9137:2;-1:-1:-1;;;;;6734:18:0;6707:7;6734:18;;;:9;:18;;;;;;;6641:120;9127:13;:22;;;;:::i;:::-;:39;9119:87;;;;-1:-1:-1;;;9119:87:0;;12267:2:1;9119:87:0;;;12249:21:1;12306:2;12286:18;;;12279:30;12345:34;12325:18;;;12318:62;-1:-1:-1;;;12396:18:1;;;12389:33;12439:19;;9119:87:0;12065:399:1;9119:87:0;9287:4;9238:28;6734:18;;;:9;:18;;;;;;9347:19;;9323:43;;;;;9383:138;;9486:19;;9463:42;;9383:138;9541:7;:18;;;;-1:-1:-1;9553:6:0;;-1:-1:-1;;;9553:6:0;;;;9552:7;9541:18;:43;;;;-1:-1:-1;9571:13:0;;-1:-1:-1;;;;;9563:21:0;;;9571:13;;9563:21;;9541:43;:58;;;;-1:-1:-1;9588:11:0;;-1:-1:-1;;;9588:11:0;;;;9541:58;9537:378;;;9620:38;9637:20;9620:16;:38::i;:::-;9748:21;9792:28;;9788:112;;9845:35;9858:21;9845:12;:35::i;:::-;9601:314;9537:378;8603:1323;;8545:1381;-1:-1:-1;;;;;10002:24:0;;9938:12;10002:24;;;:18;:24;;;;;;9953:4;;10002:24;;;:50;;-1:-1:-1;;;;;;10030:22:0;;;;;;:18;:22;;;;;;;;10002:50;10001:102;;;-1:-1:-1;10066:13:0;;-1:-1:-1;;;;;10058:21:0;;;10066:13;;10058:21;;;;:44;;-1:-1:-1;10089:13:0;;-1:-1:-1;;;;;10083:19:0;;;10089:13;;10083:19;;10058:44;9997:503;;;-1:-1:-1;10130:5:0;9997:503;;;10213:13;;-1:-1:-1;;;;;10205:21:0;;;10213:13;;10205:21;:55;;;;-1:-1:-1;10244:15:0;;-1:-1:-1;;;;;10230:30:0;;;10244:15;;10230:30;;10205:55;10202:117;;;10291:12;;10281:7;:22;10202:117;10378:13;;-1:-1:-1;;;;;10372:19:0;;;10378:13;;10372:19;:55;;;;-1:-1:-1;10411:15:0;;-1:-1:-1;;;;;10395:32:0;;;10411:15;;10395:32;;10372:55;10368:119;;;10458:13;;10448:7;:23;10368:119;10515:9;10507:18;;;;:7;:18;;;;;;10528:15;10507:36;;;;-1:-1:-1;;;;;10551:11:0;;;;;;:29;10591:41;10606:4;10559:2;10616:6;10624:7;10591:14;:41::i;:::-;8303:2337;8200:2440;;;:::o;2388:224::-;2508:7;2544:12;2536:6;;;;2528:29;;;;-1:-1:-1;;;2528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2568:9:0;2580:5;2584:1;2580;:5;:::i;:::-;2568:17;2388:224;-1:-1:-1;;;;;2388:224:0:o;13535:330::-;13665:53;;;;;;;;;;;-1:-1:-1;;;13665:53:0;;;;;;;;-1:-1:-1;;;;;13665:17:0;;13628:4;13665:17;;;:9;:17;;;;;;;:53;;13687:6;;13665:21;:53::i;:::-;-1:-1:-1;;;;;13645:17:0;;;;;;;:9;:17;;;;;;:73;;;;13752:20;;;;;;;:32;;13777:6;13752:24;:32::i;:::-;-1:-1:-1;;;;;13729:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13800:35;;;;;;;;;;13828:6;13020:25:1;;13008:2;12993:18;;12874:177;13800:35:0;;;;;;;;-1:-1:-1;13853:4:0;13535:330;;;;;:::o;1835:191::-;1909:16;1928:6;;-1:-1:-1;;;;;1945:17:0;;;-1:-1:-1;;;;;;1945:17:0;;;;;;1978:40;;1928:6;;;;;;;1978:40;;1909:16;1978:40;1898:128;1835:191;:::o;10648:756::-;5520:6;:13;;-1:-1:-1;;;;5520:13:0;-1:-1:-1;;;5520:13:0;;;;10736:28:::1;10760:3;10736:19;:11:::0;10752:2:::1;10736:15;:19::i;:::-;:23:::0;::::1;:28::i;:::-;10719:45:::0;-1:-1:-1;10768:14:0::1;10785:20;10719:45:::0;10785:11;:20:::1;:::i;:::-;10898:16;::::0;;10912:1:::1;10898:16:::0;;;;;::::1;::::0;;10768:37;;-1:-1:-1;10840:21:0::1;::::0;10816::::1;::::0;10898:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10898:16:0::1;10874:40;;10943:4;10925;10930:1;10925:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10925:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10969:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10969:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10925:7;;10969:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10959:4;10964:1;10959:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10959:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11034:15:::1;::::0;11002:62:::1;::::0;11019:4:::1;::::0;11034:15:::1;11052:11:::0;11002:8:::1;:62::i;:::-;11075:15;::::0;:191:::1;::::0;-1:-1:-1;;;11075:191:0;;-1:-1:-1;;;;;11075:15:0;;::::1;::::0;:66:::1;::::0;:191:::1;::::0;11156:6;;11075:15:::1;::::0;11193:4;;11220::::1;::::0;11240:15:::1;::::0;11075:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11277:17;11297:40;11323:13;11297:21;:25;;:40;;;;:::i;:::-;11277:60:::0;-1:-1:-1;11348:48:0::1;11361:6:::0;11369:26:::1;11391:3;11369:17;11277:60:::0;11383:2:::1;11369:13;:17::i;:26::-;11348:12;:48::i;:::-;-1:-1:-1::0;;5556:6:0;:14;;-1:-1:-1;;;;5556:14:0;;;-1:-1:-1;;;;10648:756:0:o;11412:99::-;11469:17;;:34;;-1:-1:-1;;;;;11469:17:0;;;;:34;;;;;11496:6;;11469:17;:34;:17;:34;11496:6;11469:17;:34;;;;;;;;;;;;;;;;;;;12595:277;12751:7;12746:119;;12761:40;12776:6;12783:9;12794:6;12761:14;:40::i;:::-;;12746:119;;;12819:44;12837:6;12845:9;12856:6;12819:17;:44::i;2057:179::-;2115:7;;2147:5;2151:1;2147;:5;:::i;:::-;2135:17;;2176:1;2171;:6;;2163:46;;;;-1:-1:-1;;;2163:46:0;;9925:2:1;2163:46:0;;;9907:21:1;9964:2;9944:18;;;9937:30;10003:29;9983:18;;;9976:57;10050:18;;2163:46:0;9723:351:1;2163:46:0;2227:1;2057:179;-1:-1:-1;;;2057:179:0:o;2620:246::-;2678:7;2702:6;2698:47;;-1:-1:-1;2732:1:0;2725:8;;2698:47;2755:9;2767:5;2771:1;2767;:5;:::i;:::-;2755:17;-1:-1:-1;2800:1:0;2791:5;2795:1;2755:17;2791:5;:::i;:::-;:10;2783:56;;;;-1:-1:-1;;;2783:56:0;;10688:2:1;2783:56:0;;;10670:21:1;10727:2;10707:18;;;10700:30;10766:34;10746:18;;;10739:62;-1:-1:-1;;;10817:18:1;;;10810:31;10858:19;;2783:56:0;10486:397:1;2874:132:0;2932:7;2959:39;2963:1;2966;2959:39;;;;;;;;;;;;;;;;;:3;:39::i;2244:136::-;2302:7;2329:43;2333:1;2336;2329:43;;;;;;;;;;;;;;;;;:3;:43::i;11519:520::-;11701:15;;11669:62;;11686:4;;-1:-1:-1;;;;;11701:15:0;11719:11;11669:8;:62::i;:::-;11774:15;;:255;;-1:-1:-1;;;11774:255:0;;11846:4;11774:255;;;6090:34:1;6140:18;;;6133:34;;;11774:15:0;6183:18:1;;;6176:34;;;6226:18;;;6219:34;;;6269:19;;;6262:44;12003:15:0;6322:19:1;;;6315:35;-1:-1:-1;;;;;11774:15:0;;;;:31;;11813:9;;6024:19:1;;11774:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13123:405::-;13254:22;13279:24;13288:6;13296;13279:8;:24::i;:::-;13254:49;;13334:53;13356:6;13334:53;;;;;;;;;;;;;-1:-1:-1;;;13334:53:0;;;:9;:17;13344:6;-1:-1:-1;;;;;13334:17:0;-1:-1:-1;;;;;13334:17:0;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;-1:-1:-1;;;;;13314:17:0;;;;;;;:9;:17;;;;;;:73;;;;13421:20;;;;;;;:40;;13446:14;13421:24;:40::i;:::-;-1:-1:-1;;;;;13398:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13477:43;;;;;;;;;;13505:14;13020:25:1;;13008:2;12993:18;;12874:177;13477:43:0;;;;;;;;13243:285;13123:405;;;:::o;3014:223::-;3134:7;3169:12;3162:5;3154:28;;;;-1:-1:-1;;;3154:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3193:9:0;3205:5;3209:1;3205;:5;:::i;13871:317::-;13938:7;13958:17;13978:28;14002:3;13978:19;13989:7;;13978:6;:10;;:19;;;;:::i;:28::-;14062:4;14044:24;;;;:9;:24;;;;;;13958:48;;-1:-1:-1;14044:39:0;;13958:48;14044:28;:39::i;:::-;14035:4;14017:24;;;;:9;:24;;;;;;;:66;;;;14099:42;;-1:-1:-1;;;;;14099:42:0;;;;;;;14131:9;13020:25:1;;13008:2;12993:18;;12874:177;14099:42:0;;;;;;;;14159:21;:6;14170:9;14159:10;:21::i;:::-;14152:28;13871:317;-1:-1:-1;;;;13871:317:0:o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:367::-;216:8;226:6;280:3;273:4;265:6;261:17;257:27;247:55;;298:1;295;288:12;247:55;-1:-1:-1;321:20:1;;364:18;353:30;;350:50;;;396:1;393;386:12;350:50;433:4;425:6;421:17;409:29;;493:3;486:4;476:6;473:1;469:14;461:6;457:27;453:38;450:47;447:67;;;510:1;507;500:12;447:67;153:367;;;;;:::o;525:160::-;590:20;;646:13;;639:21;629:32;;619:60;;675:1;672;665:12;690:247;749:6;802:2;790:9;781:7;777:23;773:32;770:52;;;818:1;815;808:12;770:52;857:9;844:23;876:31;901:5;876:31;:::i;942:251::-;1012:6;1065:2;1053:9;1044:7;1040:23;1036:32;1033:52;;;1081:1;1078;1071:12;1033:52;1113:9;1107:16;1132:31;1157:5;1132:31;:::i;1198:388::-;1266:6;1274;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;:::-;1451:5;-1:-1:-1;1508:2:1;1493:18;;1480:32;1521:33;1480:32;1521:33;:::i;:::-;1573:7;1563:17;;;1198:388;;;;;:::o;1591:456::-;1668:6;1676;1684;1737:2;1725:9;1716:7;1712:23;1708:32;1705:52;;;1753:1;1750;1743:12;1705:52;1792:9;1779:23;1811:31;1836:5;1811:31;:::i;:::-;1861:5;-1:-1:-1;1918:2:1;1903:18;;1890:32;1931:33;1890:32;1931:33;:::i;:::-;1591:456;;1983:7;;-1:-1:-1;;;2037:2:1;2022:18;;;;2009:32;;1591:456::o;2052:315::-;2117:6;2125;2178:2;2166:9;2157:7;2153:23;2149:32;2146:52;;;2194:1;2191;2184:12;2146:52;2233:9;2220:23;2252:31;2277:5;2252:31;:::i;:::-;2302:5;-1:-1:-1;2326:35:1;2357:2;2342:18;;2326:35;:::i;:::-;2316:45;;2052:315;;;;;:::o;2372:::-;2440:6;2448;2501:2;2489:9;2480:7;2476:23;2472:32;2469:52;;;2517:1;2514;2507:12;2469:52;2556:9;2543:23;2575:31;2600:5;2575:31;:::i;:::-;2625:5;2677:2;2662:18;;;;2649:32;;-1:-1:-1;;;2372:315:1:o;2692:773::-;2814:6;2822;2830;2838;2891:2;2879:9;2870:7;2866:23;2862:32;2859:52;;;2907:1;2904;2897:12;2859:52;2947:9;2934:23;2976:18;3017:2;3009:6;3006:14;3003:34;;;3033:1;3030;3023:12;3003:34;3072:70;3134:7;3125:6;3114:9;3110:22;3072:70;:::i;:::-;3161:8;;-1:-1:-1;3046:96:1;-1:-1:-1;3249:2:1;3234:18;;3221:32;;-1:-1:-1;3265:16:1;;;3262:36;;;3294:1;3291;3284:12;3262:36;;3333:72;3397:7;3386:8;3375:9;3371:24;3333:72;:::i;:::-;2692:773;;;;-1:-1:-1;3424:8:1;-1:-1:-1;;;;2692:773:1:o;3470:1132::-;3554:6;3585:2;3628;3616:9;3607:7;3603:23;3599:32;3596:52;;;3644:1;3641;3634:12;3596:52;3684:9;3671:23;3713:18;3754:2;3746:6;3743:14;3740:34;;;3770:1;3767;3760:12;3740:34;3808:6;3797:9;3793:22;3783:32;;3853:7;3846:4;3842:2;3838:13;3834:27;3824:55;;3875:1;3872;3865:12;3824:55;3911:2;3898:16;3933:2;3929;3926:10;3923:36;;;3939:18;;:::i;:::-;3985:2;3982:1;3978:10;4017:2;4011:9;4080:2;4076:7;4071:2;4067;4063:11;4059:25;4051:6;4047:38;4135:6;4123:10;4120:22;4115:2;4103:10;4100:18;4097:46;4094:72;;;4146:18;;:::i;:::-;4182:2;4175:22;4232:18;;;4266:15;;;;-1:-1:-1;4301:11:1;;;4331;;;4327:20;;4324:33;-1:-1:-1;4321:53:1;;;4370:1;4367;4360:12;4321:53;4392:1;4383:10;;4402:169;4416:2;4413:1;4410:9;4402:169;;;4473:23;4492:3;4473:23;:::i;:::-;4461:36;;4434:1;4427:9;;;;;4517:12;;;;4549;;4402:169;;;-1:-1:-1;4590:6:1;3470:1132;-1:-1:-1;;;;;;;;3470:1132:1:o;4607:180::-;4663:6;4716:2;4704:9;4695:7;4691:23;4687:32;4684:52;;;4732:1;4729;4722:12;4684:52;4755:26;4771:9;4755:26;:::i;4792:180::-;4851:6;4904:2;4892:9;4883:7;4879:23;4875:32;4872:52;;;4920:1;4917;4910:12;4872:52;-1:-1:-1;4943:23:1;;4792:180;-1:-1:-1;4792:180:1:o;4977:248::-;5045:6;5053;5106:2;5094:9;5085:7;5081:23;5077:32;5074:52;;;5122:1;5119;5112:12;5074:52;-1:-1:-1;;5145:23:1;;;5215:2;5200:18;;;5187:32;;-1:-1:-1;4977:248:1:o;5230:306::-;5318:6;5326;5334;5387:2;5375:9;5366:7;5362:23;5358:32;5355:52;;;5403:1;5400;5393:12;5355:52;5432:9;5426:16;5416:26;;5482:2;5471:9;5467:18;5461:25;5451:35;;5526:2;5515:9;5511:18;5505:25;5495:35;;5230:306;;;;;:::o;6787:597::-;6899:4;6928:2;6957;6946:9;6939:21;6989:6;6983:13;7032:6;7027:2;7016:9;7012:18;7005:34;7057:1;7067:140;7081:6;7078:1;7075:13;7067:140;;;7176:14;;;7172:23;;7166:30;7142:17;;;7161:2;7138:26;7131:66;7096:10;;7067:140;;;7225:6;7222:1;7219:13;7216:91;;;7295:1;7290:2;7281:6;7270:9;7266:22;7262:31;7255:42;7216:91;-1:-1:-1;7368:2:1;7347:15;-1:-1:-1;;7343:29:1;7328:45;;;;7375:2;7324:54;;6787:597;-1:-1:-1;;;6787:597:1:o;10888:356::-;11090:2;11072:21;;;11109:18;;;11102:30;11168:34;11163:2;11148:18;;11141:62;11235:2;11220:18;;10888:356::o;13056:980::-;13318:4;13366:3;13355:9;13351:19;13397:6;13386:9;13379:25;13423:2;13461:6;13456:2;13445:9;13441:18;13434:34;13504:3;13499:2;13488:9;13484:18;13477:31;13528:6;13563;13557:13;13594:6;13586;13579:22;13632:3;13621:9;13617:19;13610:26;;13671:2;13663:6;13659:15;13645:29;;13692:1;13702:195;13716:6;13713:1;13710:13;13702:195;;;13781:13;;-1:-1:-1;;;;;13777:39:1;13765:52;;13872:15;;;;13837:12;;;;13813:1;13731:9;13702:195;;;-1:-1:-1;;;;;;;13953:32:1;;;;13948:2;13933:18;;13926:60;-1:-1:-1;;;14017:3:1;14002:19;13995:35;13914:3;13056:980;-1:-1:-1;;;13056:980:1:o;14230:128::-;14270:3;14301:1;14297:6;14294:1;14291:13;14288:39;;;14307:18;;:::i;:::-;-1:-1:-1;14343:9:1;;14230:128::o;14363:217::-;14403:1;14429;14419:132;;14473:10;14468:3;14464:20;14461:1;14454:31;14508:4;14505:1;14498:15;14536:4;14533:1;14526:15;14419:132;-1:-1:-1;14565:9:1;;14363:217::o;14585:168::-;14625:7;14691:1;14687;14683:6;14679:14;14676:1;14673:21;14668:1;14661:9;14654:17;14650:45;14647:71;;;14698:18;;:::i;:::-;-1:-1:-1;14738:9:1;;14585:168::o;14758:125::-;14798:4;14826:1;14823;14820:8;14817:34;;;14831:18;;:::i;:::-;-1:-1:-1;14868:9:1;;14758:125::o;14888:135::-;14927:3;-1:-1:-1;;14948:17:1;;14945:43;;;14968:18;;:::i;:::-;-1:-1:-1;15015:1:1;15004:13;;14888:135::o;15028:127::-;15089:10;15084:3;15080:20;15077:1;15070:31;15120:4;15117:1;15110:15;15144:4;15141:1;15134:15;15160:127;15221:10;15216:3;15212:20;15209:1;15202:31;15252:4;15249:1;15242:15;15276:4;15273:1;15266:15;15292:127;15353:10;15348:3;15344:20;15341:1;15334:31;15384:4;15381:1;15374:15;15408:4;15405:1;15398:15;15424:131;-1:-1:-1;;;;;15499:31:1;;15489:42;;15479:70;;15545:1;15542;15535:12

Swarm Source

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