ETH Price: $3,350.34 (+0.45%)
Gas: 4.45 Gwei
 

Overview

Max Total Supply

1,000,000,000 CARL

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
MustStopMurad 2
Balance
10,000,000 CARL

Value
$0.00
0xCBd0dEe0c3eEd152C3398B062361bEcc4a15522B
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:
CarlCoin

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-27
*/

/*

▄▄███▄▄· ██████╗ █████╗ ██████╗ ██╗     
██╔════╝██╔════╝██╔══██╗██╔══██╗██║     
███████╗██║     ███████║██████╔╝██║     
╚════██║██║     ██╔══██║██╔══██╗██║     
███████║╚██████╗██║  ██║██║  ██║███████╗
╚═▀▀▀══╝ ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚══════╝
                                         
 https://x.com/DeployedbyCarl
 https://deployedbycarl.dev

*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

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

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

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 CarlCoin is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;

    uint256 private _initialBuyTax = 5;
    uint256 private _initialSellTax = 5;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 30;
    uint256 private _reduceSellTaxAt = 35;
    uint256 private _preventSwapBefore = 35;
    uint256 private _transferTax = 70;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Deployed by Carl";
    string private constant _symbol = unicode"CARL";
    uint256 public _maxTxAmount = 15000000 * 10**_decimals;
    uint256 public _maxWalletSize = 15000000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap = 10000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool public tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event OpenTrade(address indexed owner, uint256 timestamp);
    event TransferTaxUpdated(uint256 _tax);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = 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 _balances[account];
    }

    function getTaxDetails()
        public
        view
        returns (
            uint256 initialBuyTax,
            uint256 initialSellTax,
            uint256 finalBuyTax,
            uint256 finalSellTax,
            uint256 transferTax
        )
    {
        return (
            _initialBuyTax,
            _initialSellTax,
            _finalBuyTax,
            _finalSellTax,
            _transferTax
        );
    }

    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");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner() && to != _taxWallet) {
            if (_buyCount == 0) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);
            }
            if (_buyCount > 0) {
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);
                _buyCount++;
            }

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(
                    min(amount, min(contractTokenBalance, _maxTaxSwap))
                );
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(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 removeLimit() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTranFe() external onlyOwner {
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

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

    function openTrade() 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),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
        swapEnabled = true;
        tradingOpen = true;

        emit OpenTrade(owner(), block.timestamp);
    }

    function reduceFee(uint256 _newFee) external {
        require(_msgSender() == _taxWallet);
        require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);
        _finalBuyTax = _newFee;
        _finalSellTax = _newFee;
    }

    receive() external payable {}

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender() == _taxWallet);
        uint256 _amount = IERC20(_address)
            .balanceOf(address(this))
            .mul(percent)
            .div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0 && swapEnabled) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }
}

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":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OpenTrade","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","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":[{"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":"getTaxDetails","outputs":[{"internalType":"uint256","name":"initialBuyTax","type":"uint256"},{"internalType":"uint256","name":"initialSellTax","type":"uint256"},{"internalType":"uint256","name":"finalBuyTax","type":"uint256"},{"internalType":"uint256","name":"finalSellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTranFe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005805560056006555f6007555f600855601e6009556023600a556023600b556046600c555f600d556009600a6200003d919062000339565b6200004c9062e4e1c062000350565b600e556200005d6009600a62000339565b6200006c9062e4e1c062000350565b600f556200007d6009600a62000339565b6200008c90620f424062000350565b6010556200009d6009600a62000339565b620000ac906298968062000350565b6011556013805461ffff60a81b191690555f6014819055601555348015620000d2575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b03191633179055620001336009600a62000339565b6200014390633b9aca0062000350565b335f9081526001602081905260408220929092556003906200016c5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600454909116835291208054909216179055620001ca3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002036009600a62000339565b6200021390633b9aca0062000350565b60405190815260200160405180910390a36200036a565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200027e57815f19048211156200026257620002626200022a565b808516156200027057918102915b93841c939080029062000243565b509250929050565b5f82620002965750600162000333565b81620002a457505f62000333565b8160018114620002bd5760028114620002c857620002e8565b600191505062000333565b60ff841115620002dc57620002dc6200022a565b50506001821b62000333565b5060208310610133831016604e8410600b84101617156200030d575081810a62000333565b6200031983836200023e565b805f19048211156200032f576200032f6200022a565b0290505b92915050565b5f6200034960ff84168362000286565b9392505050565b80820281158282048414176200033357620003336200022a565b611aff80620003785f395ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb14610398578063bf474bed146103b7578063dd62ed3e146103cc578063ec1f3f6314610410578063fb201b1d1461042f578063ffb54a9914610443575f80fd5b8063715018a6146102e95780637d1db4a5146102fd5780638cd4426d146103125780638da5cb5b146103315780638f9a55c01461035757806395d89b411461036c575f80fd5b80631fee5894116101045780631fee58941461021057806323b872dd14610253578063313ce5671461027257806351bc3c851461028d57806362256589146102a157806370a08231146102b5575f80fd5b806306fdde031461014a578063095ea7b3146101945780630faee56f146101c357806318160ddd146101e6578063197a23b6146101fa575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152601081526f11195c1b1bde595908189e4810d85c9b60821b60208201525b60405161018b91906116c1565b60405180910390f35b34801561019f575f80fd5b506101b36101ae366004611724565b610463565b604051901515815260200161018b565b3480156101ce575f80fd5b506101d860115481565b60405190815260200161018b565b3480156101f1575f80fd5b506101d8610479565b348015610205575f80fd5b5061020e610499565b005b34801561021b575f80fd5b50600554600654600754600854600c54604080519586526020860194909452928401919091526060830152608082015260a00161018b565b34801561025e575f80fd5b506101b361026d36600461174e565b610507565b34801561027d575f80fd5b506040516009815260200161018b565b348015610298575f80fd5b5061020e61056e565b3480156102ac575f80fd5b5061020e6105d6565b3480156102c0575f80fd5b506101d86102cf36600461178c565b6001600160a01b03165f9081526001602052604090205490565b3480156102f4575f80fd5b5061020e610682565b348015610308575f80fd5b506101d8600e5481565b34801561031d575f80fd5b5061020e61032c366004611724565b6106f3565b34801561033c575f80fd5b505f546040516001600160a01b03909116815260200161018b565b348015610362575f80fd5b506101d8600f5481565b348015610377575f80fd5b5060408051808201909152600481526310d0549360e21b602082015261017e565b3480156103a3575f80fd5b506101b36103b2366004611724565b610813565b3480156103c2575f80fd5b506101d860105481565b3480156103d7575f80fd5b506101d86103e63660046117a7565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561041b575f80fd5b5061020e61042a3660046117de565b61081f565b34801561043a575f80fd5b5061020e610864565b34801561044e575f80fd5b506013546101b390600160a01b900460ff1681565b5f61046f338484610c5a565b5060015b92915050565b5f6104866009600a6118e9565b61049490633b9aca006118f7565b905090565b5f546001600160a01b031633146104cb5760405162461bcd60e51b81526004016104c29061190e565b60405180910390fd5b5f600c8190556040519081527fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de3906020015b60405180910390a1565b5f610513848484610d7d565b610564843361055f85604051806060016040528060288152602001611aa2602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061133d565b610c5a565b5060019392505050565b6004546001600160a01b0316336001600160a01b03161461058d575f80fd5b305f9081526001602052604090205480158015906105b45750601354600160b01b900460ff165b156105c2576105c281611375565b4780156105d2576105d2816114e5565b5050565b5f546001600160a01b031633146105ff5760405162461bcd60e51b81526004016104c29061190e565b61060b6009600a6118e9565b61061990633b9aca006118f7565b600e556106286009600a6118e9565b61063690633b9aca006118f7565b600f557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106666009600a6118e9565b61067490633b9aca006118f7565b6040519081526020016104fd565b5f546001600160a01b031633146106ab5760405162461bcd60e51b81526004016104c29061190e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6004546001600160a01b0316336001600160a01b031614610712575f80fd5b6040516370a0823160e01b81523060048201525f906107939060649061078d9085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610763573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107879190611943565b9061151c565b906115a1565b6004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018390529192509084169063a9059cbb906044016020604051808303815f875af11580156107e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080d919061195a565b50505050565b5f61046f338484610d7d565b6004546001600160a01b0316336001600160a01b03161461083e575f80fd5b600754811115801561085257506008548111155b61085a575f80fd5b6007819055600855565b5f546001600160a01b0316331461088d5760405162461bcd60e51b81526004016104c29061190e565b601354600160a01b900460ff16156108e75760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104c2565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109309030906109226009600a6118e9565b61055f90633b9aca006118f7565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610980573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a49190611979565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a279190611979565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a959190611979565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d7194730610adc816001600160a01b03165f9081526001602052604090205490565b5f80610aef5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b55573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b7a9190611994565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610bcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf3919061195a565b506013805462ff00ff60a01b19166201000160a01b1790555f546001600160a01b03166001600160a01b03167ff9ca0f11181041c16343c0e2d0e0c3cf66188e39b033ab29e2fe6f0f84374a3642604051610c5091815260200190565b60405180910390a2565b6001600160a01b038316610cbc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104c2565b6001600160a01b038216610d1d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104c2565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610de15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104c2565b6001600160a01b038216610e435760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104c2565b5f8111610ea45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104c2565b5f80546001600160a01b03858116911614801590610ecf57505f546001600160a01b03848116911614155b8015610ee957506004546001600160a01b03848116911614155b1561120057600d545f03610f2057610f1d606461078d600954600d5411610f1257600554610f16565b6007545b859061151c565b90505b600d5415610f4557610f42606461078d600c548561151c90919063ffffffff16565b90505b6013546001600160a01b038581169116148015610f7057506012546001600160a01b03848116911614155b8015610f9457506001600160a01b0383165f9081526003602052604090205460ff16155b1561109757600e54821115610feb5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016104c2565b600f548261100d856001600160a01b03165f9081526001602052604090205490565b61101791906119bf565b11156110655760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104c2565b611080606461078d600954600d5411610f1257600554610f16565b600d80549192505f611091836119d2565b91905055505b6013546001600160a01b0384811691161480156110bd57506001600160a01b0384163014155b156110ea576110e7606461078d600a54600d54116110dd57600654610f16565b600854859061151c565b90505b305f90815260016020526040902054601354600160a81b900460ff1615801561112057506013546001600160a01b038581169116145b80156111355750601354600160b01b900460ff165b8015611142575060105481115b80156111515750600b54600d54115b156111fe57601554431115611165575f6014555b6003601454106111b75760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b2100000000000000000060448201526064016104c2565b6111d46111cf846111ca846011546115e2565b6115e2565b611375565b4780156111e4576111e4476114e5565b60148054905f6111f3836119d2565b909155505043601555505b505b801561127857305f9081526001602052604090205461121f90826115f6565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126f9085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461129a9083611654565b6001600160a01b0385165f908152600160205260409020556112dd6112bf8383611654565b6001600160a01b0385165f90815260016020526040902054906115f6565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113268585611654565b60405190815260200160405180910390a350505050565b5f81848411156113605760405162461bcd60e51b81526004016104c291906116c1565b505f61136c84866119ea565b95945050505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106113bb576113bb6119fd565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611412573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114369190611979565b81600181518110611449576114496119fd565b6001600160a01b03928316602091820292909201015260125461146f9130911684610c5a565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906114a79085905f90869030904290600401611a11565b5f604051808303815f87803b1580156114be575f80fd5b505af11580156114d0573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156105d2573d5f803e3d5ffd5b5f825f0361152b57505f610473565b5f61153683856118f7565b9050826115438583611a82565b1461159a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104c2565b9392505050565b5f61159a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611695565b5f8183116115f0578261159a565b50919050565b5f8061160283856119bf565b90508381101561159a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104c2565b5f61159a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061133d565b5f81836116b55760405162461bcd60e51b81526004016104c291906116c1565b505f61136c8486611a82565b5f602080835283518060208501525f5b818110156116ed578581018301518582016040015282016116d1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611721575f80fd5b50565b5f8060408385031215611735575f80fd5b82356117408161170d565b946020939093013593505050565b5f805f60608486031215611760575f80fd5b833561176b8161170d565b9250602084013561177b8161170d565b929592945050506040919091013590565b5f6020828403121561179c575f80fd5b813561159a8161170d565b5f80604083850312156117b8575f80fd5b82356117c38161170d565b915060208301356117d38161170d565b809150509250929050565b5f602082840312156117ee575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561184357815f1904821115611829576118296117f5565b8085161561183657918102915b93841c939080029061180e565b509250929050565b5f8261185957506001610473565b8161186557505f610473565b816001811461187b5760028114611885576118a1565b6001915050610473565b60ff841115611896576118966117f5565b50506001821b610473565b5060208310610133831016604e8410600b84101617156118c4575081810a610473565b6118ce8383611809565b805f19048211156118e1576118e16117f5565b029392505050565b5f61159a60ff84168361184b565b8082028115828204841417610473576104736117f5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611953575f80fd5b5051919050565b5f6020828403121561196a575f80fd5b8151801515811461159a575f80fd5b5f60208284031215611989575f80fd5b815161159a8161170d565b5f805f606084860312156119a6575f80fd5b8351925060208401519150604084015190509250925092565b80820180821115610473576104736117f5565b5f600182016119e3576119e36117f5565b5060010190565b81810381811115610473576104736117f5565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a615784516001600160a01b031683529383019391830191600101611a3c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a9c57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b4ceeccbf7e115b555275a779378d92734d35bc3e0069dda93783d0c7520e3cb64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb14610398578063bf474bed146103b7578063dd62ed3e146103cc578063ec1f3f6314610410578063fb201b1d1461042f578063ffb54a9914610443575f80fd5b8063715018a6146102e95780637d1db4a5146102fd5780638cd4426d146103125780638da5cb5b146103315780638f9a55c01461035757806395d89b411461036c575f80fd5b80631fee5894116101045780631fee58941461021057806323b872dd14610253578063313ce5671461027257806351bc3c851461028d57806362256589146102a157806370a08231146102b5575f80fd5b806306fdde031461014a578063095ea7b3146101945780630faee56f146101c357806318160ddd146101e6578063197a23b6146101fa575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152601081526f11195c1b1bde595908189e4810d85c9b60821b60208201525b60405161018b91906116c1565b60405180910390f35b34801561019f575f80fd5b506101b36101ae366004611724565b610463565b604051901515815260200161018b565b3480156101ce575f80fd5b506101d860115481565b60405190815260200161018b565b3480156101f1575f80fd5b506101d8610479565b348015610205575f80fd5b5061020e610499565b005b34801561021b575f80fd5b50600554600654600754600854600c54604080519586526020860194909452928401919091526060830152608082015260a00161018b565b34801561025e575f80fd5b506101b361026d36600461174e565b610507565b34801561027d575f80fd5b506040516009815260200161018b565b348015610298575f80fd5b5061020e61056e565b3480156102ac575f80fd5b5061020e6105d6565b3480156102c0575f80fd5b506101d86102cf36600461178c565b6001600160a01b03165f9081526001602052604090205490565b3480156102f4575f80fd5b5061020e610682565b348015610308575f80fd5b506101d8600e5481565b34801561031d575f80fd5b5061020e61032c366004611724565b6106f3565b34801561033c575f80fd5b505f546040516001600160a01b03909116815260200161018b565b348015610362575f80fd5b506101d8600f5481565b348015610377575f80fd5b5060408051808201909152600481526310d0549360e21b602082015261017e565b3480156103a3575f80fd5b506101b36103b2366004611724565b610813565b3480156103c2575f80fd5b506101d860105481565b3480156103d7575f80fd5b506101d86103e63660046117a7565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561041b575f80fd5b5061020e61042a3660046117de565b61081f565b34801561043a575f80fd5b5061020e610864565b34801561044e575f80fd5b506013546101b390600160a01b900460ff1681565b5f61046f338484610c5a565b5060015b92915050565b5f6104866009600a6118e9565b61049490633b9aca006118f7565b905090565b5f546001600160a01b031633146104cb5760405162461bcd60e51b81526004016104c29061190e565b60405180910390fd5b5f600c8190556040519081527fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de3906020015b60405180910390a1565b5f610513848484610d7d565b610564843361055f85604051806060016040528060288152602001611aa2602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061133d565b610c5a565b5060019392505050565b6004546001600160a01b0316336001600160a01b03161461058d575f80fd5b305f9081526001602052604090205480158015906105b45750601354600160b01b900460ff165b156105c2576105c281611375565b4780156105d2576105d2816114e5565b5050565b5f546001600160a01b031633146105ff5760405162461bcd60e51b81526004016104c29061190e565b61060b6009600a6118e9565b61061990633b9aca006118f7565b600e556106286009600a6118e9565b61063690633b9aca006118f7565b600f557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106666009600a6118e9565b61067490633b9aca006118f7565b6040519081526020016104fd565b5f546001600160a01b031633146106ab5760405162461bcd60e51b81526004016104c29061190e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6004546001600160a01b0316336001600160a01b031614610712575f80fd5b6040516370a0823160e01b81523060048201525f906107939060649061078d9085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610763573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107879190611943565b9061151c565b906115a1565b6004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018390529192509084169063a9059cbb906044016020604051808303815f875af11580156107e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080d919061195a565b50505050565b5f61046f338484610d7d565b6004546001600160a01b0316336001600160a01b03161461083e575f80fd5b600754811115801561085257506008548111155b61085a575f80fd5b6007819055600855565b5f546001600160a01b0316331461088d5760405162461bcd60e51b81526004016104c29061190e565b601354600160a01b900460ff16156108e75760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104c2565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109309030906109226009600a6118e9565b61055f90633b9aca006118f7565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610980573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a49190611979565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a279190611979565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a959190611979565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d7194730610adc816001600160a01b03165f9081526001602052604090205490565b5f80610aef5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b55573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b7a9190611994565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610bcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf3919061195a565b506013805462ff00ff60a01b19166201000160a01b1790555f546001600160a01b03166001600160a01b03167ff9ca0f11181041c16343c0e2d0e0c3cf66188e39b033ab29e2fe6f0f84374a3642604051610c5091815260200190565b60405180910390a2565b6001600160a01b038316610cbc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104c2565b6001600160a01b038216610d1d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104c2565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610de15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104c2565b6001600160a01b038216610e435760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104c2565b5f8111610ea45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104c2565b5f80546001600160a01b03858116911614801590610ecf57505f546001600160a01b03848116911614155b8015610ee957506004546001600160a01b03848116911614155b1561120057600d545f03610f2057610f1d606461078d600954600d5411610f1257600554610f16565b6007545b859061151c565b90505b600d5415610f4557610f42606461078d600c548561151c90919063ffffffff16565b90505b6013546001600160a01b038581169116148015610f7057506012546001600160a01b03848116911614155b8015610f9457506001600160a01b0383165f9081526003602052604090205460ff16155b1561109757600e54821115610feb5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016104c2565b600f548261100d856001600160a01b03165f9081526001602052604090205490565b61101791906119bf565b11156110655760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104c2565b611080606461078d600954600d5411610f1257600554610f16565b600d80549192505f611091836119d2565b91905055505b6013546001600160a01b0384811691161480156110bd57506001600160a01b0384163014155b156110ea576110e7606461078d600a54600d54116110dd57600654610f16565b600854859061151c565b90505b305f90815260016020526040902054601354600160a81b900460ff1615801561112057506013546001600160a01b038581169116145b80156111355750601354600160b01b900460ff165b8015611142575060105481115b80156111515750600b54600d54115b156111fe57601554431115611165575f6014555b6003601454106111b75760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b2100000000000000000060448201526064016104c2565b6111d46111cf846111ca846011546115e2565b6115e2565b611375565b4780156111e4576111e4476114e5565b60148054905f6111f3836119d2565b909155505043601555505b505b801561127857305f9081526001602052604090205461121f90826115f6565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126f9085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461129a9083611654565b6001600160a01b0385165f908152600160205260409020556112dd6112bf8383611654565b6001600160a01b0385165f90815260016020526040902054906115f6565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113268585611654565b60405190815260200160405180910390a350505050565b5f81848411156113605760405162461bcd60e51b81526004016104c291906116c1565b505f61136c84866119ea565b95945050505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106113bb576113bb6119fd565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611412573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114369190611979565b81600181518110611449576114496119fd565b6001600160a01b03928316602091820292909201015260125461146f9130911684610c5a565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906114a79085905f90869030904290600401611a11565b5f604051808303815f87803b1580156114be575f80fd5b505af11580156114d0573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156105d2573d5f803e3d5ffd5b5f825f0361152b57505f610473565b5f61153683856118f7565b9050826115438583611a82565b1461159a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104c2565b9392505050565b5f61159a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611695565b5f8183116115f0578261159a565b50919050565b5f8061160283856119bf565b90508381101561159a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104c2565b5f61159a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061133d565b5f81836116b55760405162461bcd60e51b81526004016104c291906116c1565b505f61136c8486611a82565b5f602080835283518060208501525f5b818110156116ed578581018301518582016040015282016116d1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611721575f80fd5b50565b5f8060408385031215611735575f80fd5b82356117408161170d565b946020939093013593505050565b5f805f60608486031215611760575f80fd5b833561176b8161170d565b9250602084013561177b8161170d565b929592945050506040919091013590565b5f6020828403121561179c575f80fd5b813561159a8161170d565b5f80604083850312156117b8575f80fd5b82356117c38161170d565b915060208301356117d38161170d565b809150509250929050565b5f602082840312156117ee575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561184357815f1904821115611829576118296117f5565b8085161561183657918102915b93841c939080029061180e565b509250929050565b5f8261185957506001610473565b8161186557505f610473565b816001811461187b5760028114611885576118a1565b6001915050610473565b60ff841115611896576118966117f5565b50506001821b610473565b5060208310610133831016604e8410600b84101617156118c4575081810a610473565b6118ce8383611809565b805f19048211156118e1576118e16117f5565b029392505050565b5f61159a60ff84168361184b565b8082028115828204841417610473576104736117f5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611953575f80fd5b5051919050565b5f6020828403121561196a575f80fd5b8151801515811461159a575f80fd5b5f60208284031215611989575f80fd5b815161159a8161170d565b5f805f606084860312156119a6575f80fd5b8351925060208401519150604084015190509250925092565b80820180821115610473576104736117f5565b5f600182016119e3576119e36117f5565b5060010190565b81810381811115610473576104736117f5565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a615784516001600160a01b031683529383019391830191600101611a3c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a9c57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b4ceeccbf7e115b555275a779378d92734d35bc3e0069dda93783d0c7520e3cb64736f6c63430008170033

Deployed Bytecode Sourcemap

4577:10531:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6593:83;;;;;;;;;;-1:-1:-1;6663:5:0;;;;;;;;;;;;-1:-1:-1;;;6663:5:0;;;;6593:83;;;;;;;:::i;:::-;;;;;;;;7950:193;;;;;;;;;;-1:-1:-1;7950:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7950:193:0;1023:187:1;5681:53:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;5681:53:0;1215:177:1;6870:95:0;;;;;;;;;;;;;:::i;12977:115::-;;;;;;;;;;;;;:::i;:::-;;7100:443;;;;;;;;;;-1:-1:-1;7398:14:0;;7427:15;;7457:12;;7484:13;;7512:12;;7100:443;;;1656:25:1;;;1712:2;1697:18;;1690:34;;;;1740:18;;;1733:34;;;;1798:2;1783:18;;1776:34;1841:3;1826:19;;1819:35;1643:3;1628:19;7100:443:0;1397:463:1;8151:446:0;;;;;;;;;;-1:-1:-1;8151:446:0;;;;;:::i;:::-;;:::i;6779:83::-;;;;;;;;;;-1:-1:-1;6779:83:0;;5298:1;2468:36:1;;2456:2;2441:18;6779:83:0;2326:184:1;14724:381:0;;;;;;;;;;;;;:::i;12808:161::-;;;;;;;;;;;;;:::i;6973:119::-;;;;;;;;;;-1:-1:-1;6973:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7066:18:0;7039:7;7066:18;;;:9;:18;;;;;;;6973:119;3529:148;;;;;;;;;;;;;:::i;5492:54::-;;;;;;;;;;;;;;;;14406:310;;;;;;;;;;-1:-1:-1;14406:310:0;;;;;:::i;:::-;;:::i;3315:79::-;;;;;;;;;;-1:-1:-1;3353:7:0;3380:6;3315:79;;-1:-1:-1;;;;;3380:6:0;;;2913:51:1;;2901:2;2886:18;3315:79:0;2767:203:1;5553:56:0;;;;;;;;;;;;;;;;6684:87;;;;;;;;;;-1:-1:-1;6756:7:0;;;;;;;;;;;;-1:-1:-1;;;6756:7:0;;;;6684:87;;7551:199;;;;;;;;;;-1:-1:-1;7551:199:0;;;;;:::i;:::-;;:::i;5616:58::-;;;;;;;;;;;;;;;;7758:184;;;;;;;;;;-1:-1:-1;7758:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7907:18:0;;;7875:7;7907:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7758:184;14124:237;;;;;;;;;;-1:-1:-1;14124:237:0;;;;;:::i;:::-;;:::i;13200:916::-;;;;;;;;;;;;;:::i;5828:23::-;;;;;;;;;;-1:-1:-1;5828:23:0;;;;-1:-1:-1;;;5828:23:0;;;;;;7950:193;8052:4;8074:39;935:10;8097:7;8106:6;8074:8;:39::i;:::-;-1:-1:-1;8131:4:0;7950:193;;;;;:::o;6870:95::-;6923:7;5354:13;5298:1;5354:2;:13;:::i;:::-;5341:26;;:10;:26;:::i;:::-;6943:14;;6870:95;:::o;12977:115::-;3442:6;;-1:-1:-1;;;;;3442:6:0;935:10;3442:22;3434:67;;;;-1:-1:-1;;;3434:67:0;;;;;;;:::i;:::-;;;;;;;;;13046:1:::1;13031:12;:16:::0;;;13063:21:::1;::::0;1361:25:1;;;13063:21:0::1;::::0;1349:2:1;1334:18;13063:21:0::1;;;;;;;;12977:115::o:0;8151:446::-;8283:4;8300:36;8310:6;8318:9;8329:6;8300:9;:36::i;:::-;8347:220;8370:6;935:10;8418:138;8474:6;8418:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8418:19:0;;;;;;:11;:19;;;;;;;;935:10;8418:33;;;;;;;;;;:37;:138::i;:::-;8347:8;:220::i;:::-;-1:-1:-1;8585:4:0;8151:446;;;;;:::o;14724:381::-;14790:10;;-1:-1:-1;;;;;14790:10:0;935;-1:-1:-1;;;;;14774:26:0;;14766:35;;;;;;14853:4;14812:20;7066:18;;;:9;:18;;;;;;14874:16;;;;;:31;;-1:-1:-1;14894:11:0;;-1:-1:-1;;;14894:11:0;;;;14874:31;14870:94;;;14922:30;14939:12;14922:16;:30::i;:::-;14995:21;15031:14;;15027:71;;15062:24;15075:10;15062:12;:24::i;:::-;14755:350;;14724:381::o;12808:161::-;3442:6;;-1:-1:-1;;;;;3442:6:0;935:10;3442:22;3434:67;;;;-1:-1:-1;;;3434:67:0;;;;;;;:::i;:::-;5354:13:::1;5298:1;5354:2;:13;:::i;:::-;5341:26;::::0;:10:::1;:26;:::i;:::-;12861:12;:22:::0;5354:13:::1;5298:1;5354:2;:13;:::i;:::-;5341:26;::::0;:10:::1;:26;:::i;:::-;12894:14;:24:::0;12934:27:::1;5354:13;5298:1;5354:2;:13;:::i;:::-;5341:26;::::0;:10:::1;:26;:::i;:::-;12934:27;::::0;1361:25:1;;;1349:2;1334:18;12934:27:0::1;1215:177:1::0;3529:148:0;3442:6;;-1:-1:-1;;;;;3442:6:0;935:10;3442:22;3434:67;;;;-1:-1:-1;;;3434:67:0;;;;;;;:::i;:::-;3636:1:::1;3620:6:::0;;3599:40:::1;::::0;-1:-1:-1;;;;;3620:6:0;;::::1;::::0;3599:40:::1;::::0;3636:1;;3599:40:::1;3667:1;3650:19:::0;;-1:-1:-1;;;;;;3650:19:0::1;::::0;;3529:148::o;14406:310::-;14506:10;;-1:-1:-1;;;;;14506:10:0;935;-1:-1:-1;;;;;14490:26:0;;14482:35;;;;;;14546:55;;-1:-1:-1;;;14546:55:0;;14595:4;14546:55;;;2913:51:1;14528:15:0;;14546:105;;14647:3;;14546:82;;14620:7;;-1:-1:-1;;;;;14546:40:0;;;;;2886:18:1;;14546:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;:82::i;:::-;:100;;:105::i;:::-;14688:10;;;14662:46;;-1:-1:-1;;;14662:46:0;;-1:-1:-1;;;;;14688:10:0;;;14662:46;;;6157:51:1;;;;6224:18;;;6217:34;;;14528:123:0;;-1:-1:-1;14662:25:0;;;;;;6130:18:1;;14662:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14471:245;14406:310;;:::o;7551:199::-;7656:4;7678:42;935:10;7702:9;7713:6;7678:9;:42::i;14124:237::-;14204:10;;-1:-1:-1;;;;;14204:10:0;935;-1:-1:-1;;;;;14188:26:0;;14180:35;;;;;;14245:12;;14234:7;:23;;:51;;;;;14272:13;;14261:7;:24;;14234:51;14226:60;;;;;;14297:12;:22;;;14330:13;:23;14124:237::o;13200:916::-;3442:6;;-1:-1:-1;;;;;3442:6:0;935:10;3442:22;3434:67;;;;-1:-1:-1;;;3434:67:0;;;;;;;:::i;:::-;13260:11:::1;::::0;-1:-1:-1;;;13260:11:0;::::1;;;13259:12;13251:48;;;::::0;-1:-1:-1;;;13251:48:0;;6746:2:1;13251:48:0::1;::::0;::::1;6728:21:1::0;6785:2;6765:18;;;6758:30;6824:25;6804:18;;;6797:53;6867:18;;13251:48:0::1;6544:347:1::0;13251:48:0::1;13310:15;:104:::0;;-1:-1:-1;;;;;;13310:104:0::1;13361:42;13310:104:::0;;::::1;::::0;;;13425:58:::1;::::0;13442:4:::1;::::0;5354:13:::1;5298:1;5354:2;:13;:::i;:::-;5341:26;::::0;:10:::1;:26;:::i;13425:58::-;13528:15;;;;;;;;;-1:-1:-1::0;;;;;13528:15:0::1;-1:-1:-1::0;;;;;13528:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13510:55:0::1;;13588:4;13608:15;;;;;;;;;-1:-1:-1::0;;;;;13608:15:0::1;-1:-1:-1::0;;;;;13608:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13510:131;::::0;-1:-1:-1;;;;;;13510:131:0::1;::::0;;;;;;-1:-1:-1;;;;;7382:15:1;;;13510:131:0::1;::::0;::::1;7364:34:1::0;7434:15;;7414:18;;;7407:43;7299:18;;13510:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13494:13;:147:::0;;-1:-1:-1;;;;;13494:147:0;;::::1;-1:-1:-1::0;;;;;;13494:147:0;;::::1;;::::0;;13652:15:::1;::::0;::::1;:31;13691:21;13736:4;13756:24;13736:4:::0;-1:-1:-1;;;;;7066:18:0;7039:7;7066:18;;;:9;:18;;;;;;;6973:119;13756:24:::1;13795:1;13811::::0;13827:7:::1;3353::::0;3380:6;-1:-1:-1;;;;;3380:6:0;;3315:79;13827:7:::1;13652:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13652:223:0;;;-1:-1:-1;;;;;7820:15:1;;;13652:223:0::1;::::0;::::1;7802:34:1::0;7852:18;;;7845:34;;;;7895:18;;;7888:34;;;;7938:18;;;7931:34;8002:15;;;7981:19;;;7974:44;13849:15:0::1;8034:19:1::0;;;8027:35;7736:19;;13652:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13893:13:0::1;::::0;13938:15:::1;::::0;13886:111:::1;::::0;-1:-1:-1;;;13886:111:0;;-1:-1:-1;;;;;13938:15:0;;::::1;13886:111;::::0;::::1;6157:51:1::0;-1:-1:-1;;6224:18:1;;;6217:34;13893:13:0;::::1;::::0;-1:-1:-1;13886:29:0::1;::::0;6130:18:1;;13886:111:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14008:11:0::1;:18:::0;;-1:-1:-1;;;;14037:18:0;-1:-1:-1;;;14037:18:0;;;-1:-1:-1;3380:6:0;-1:-1:-1;;;;;3380:6:0;-1:-1:-1;;;;;14073:35:0::1;;14092:15;14073:35;;;;1361:25:1::0;;1349:2;1334:18;;1215:177;14073:35:0::1;;;;;;;;13200:916::o:0;8605:369::-;-1:-1:-1;;;;;8732:19:0;;8724:68;;;;-1:-1:-1;;;8724:68:0;;8865:2:1;8724:68:0;;;8847:21:1;8904:2;8884:18;;;8877:30;8943:34;8923:18;;;8916:62;-1:-1:-1;;;8994:18:1;;;8987:34;9038:19;;8724:68:0;8663:400:1;8724:68:0;-1:-1:-1;;;;;8811:21:0;;8803:68;;;;-1:-1:-1;;;8803:68:0;;9270:2:1;8803:68:0;;;9252:21:1;9309:2;9289:18;;;9282:30;9348:34;9328:18;;;9321:62;-1:-1:-1;;;9399:18:1;;;9392:32;9441:19;;8803:68:0;9068:398:1;8803:68:0;-1:-1:-1;;;;;8882:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8934:32;;1361:25:1;;;8934:32:0;;1334:18:1;8934:32:0;;;;;;;8605:369;;;:::o;8982:3212::-;-1:-1:-1;;;;;9104:18:0;;9096:68;;;;-1:-1:-1;;;9096:68:0;;9673:2:1;9096:68:0;;;9655:21:1;9712:2;9692:18;;;9685:30;9751:34;9731:18;;;9724:62;-1:-1:-1;;;9802:18:1;;;9795:35;9847:19;;9096:68:0;9471:401:1;9096:68:0;-1:-1:-1;;;;;9183:16:0;;9175:64;;;;-1:-1:-1;;;9175:64:0;;10079:2:1;9175:64:0;;;10061:21:1;10118:2;10098:18;;;10091:30;10157:34;10137:18;;;10130:62;-1:-1:-1;;;10208:18:1;;;10201:33;10251:19;;9175:64:0;9877:399:1;9175:64:0;9267:1;9258:6;:10;9250:64;;;;-1:-1:-1;;;9250:64:0;;10483:2:1;9250:64:0;;;10465:21:1;10522:2;10502:18;;;10495:30;10561:34;10541:18;;;10534:62;-1:-1:-1;;;10612:18:1;;;10605:39;10661:19;;9250:64:0;10281:405:1;9250:64:0;9325:17;3380:6;;-1:-1:-1;;;;;9361:15:0;;;3380:6;;9361:15;;;;:32;;-1:-1:-1;3353:7:0;3380:6;-1:-1:-1;;;;;9380:13:0;;;3380:6;;9380:13;;9361:32;:52;;;;-1:-1:-1;9403:10:0;;-1:-1:-1;;;;;9397:16:0;;;9403:10;;9397:16;;9361:52;9357:2466;;;9434:9;;9447:1;9434:14;9430:299;;9481:232;9709:3;9481:201;9553:15;;9541:9;;:27;9540:119;;9645:14;;9540:119;;;9601:12;;9540:119;9481:6;;:32;:201::i;:232::-;9469:244;;9430:299;9747:9;;:13;9743:99;;9793:33;9822:3;9793:24;9804:12;;9793:6;:10;;:24;;;;:::i;:33::-;9781:45;;9743:99;9888:13;;-1:-1:-1;;;;;9880:21:0;;;9888:13;;9880:21;:72;;;;-1:-1:-1;9936:15:0;;-1:-1:-1;;;;;9922:30:0;;;9936:15;;9922:30;;9880:72;:116;;;;-1:-1:-1;;;;;;9974:22:0;;;;;;:18;:22;;;;;;;;9973:23;9880:116;9858:701;;;10049:12;;10039:6;:22;;10031:60;;;;-1:-1:-1;;;10031:60:0;;10893:2:1;10031:60:0;;;10875:21:1;10932:2;10912:18;;;10905:30;10971:27;10951:18;;;10944:55;11016:18;;10031:60:0;10691:349:1;10031:60:0;10166:14;;10156:6;10140:13;10150:2;-1:-1:-1;;;;;7066:18:0;7039:7;7066:18;;;:9;:18;;;;;;;6973:119;10140:13;:22;;;;:::i;:::-;:40;;10110:140;;;;-1:-1:-1;;;10110:140:0;;11377:2:1;10110:140:0;;;11359:21:1;11416:2;11396:18;;;11389:30;11455:28;11435:18;;;11428:56;11501:18;;10110:140:0;11175:350:1;10110:140:0;10281:232;10509:3;10281:201;10353:15;;10341:9;;:27;10340:119;;10445:14;;10340:119;;10281:232;10532:9;:11;;10269:244;;-1:-1:-1;10532:9:0;:11;;;:::i;:::-;;;;;;9858:701;10585:13;;-1:-1:-1;;;;;10579:19:0;;;10585:13;;10579:19;:44;;;;-1:-1:-1;;;;;;10602:21:0;;10618:4;10602:21;;10579:44;10575:332;;;10656:235;10887:3;10656:204;10728:16;;10716:9;;:28;10715:122;;10822:15;;10715:122;;;10777:13;;10656:6;;:32;:204::i;:235::-;10644:247;;10575:332;10972:4;10923:28;7066:18;;;:9;:18;;;;;;11016:6;;-1:-1:-1;;;11016:6:0;;;;11015:7;:47;;;;-1:-1:-1;11049:13:0;;-1:-1:-1;;;;;11043:19:0;;;11049:13;;11043:19;11015:47;:79;;;;-1:-1:-1;11083:11:0;;-1:-1:-1;;;11083:11:0;;;;11015:79;:140;;;;;11138:17;;11115:20;:40;11015:140;:191;;;;;11188:18;;11176:9;;:30;11015:191;10993:819;;;11260:13;;11245:12;:28;11241:90;;;11310:1;11298:9;:13;11241:90;11369:1;11357:9;;:13;11349:49;;;;-1:-1:-1;;;11349:49:0;;11872:2:1;11349:49:0;;;11854:21:1;11911:2;11891:18;;;11884:30;11950:25;11930:18;;;11923:53;11993:18;;11349:49:0;11670:347:1;11349:49:0;11417:109;11456:51;11460:6;11468:38;11472:20;11494:11;;11468:3;:38::i;:::-;11456:3;:51::i;:::-;11417:16;:109::i;:::-;11574:21;11618:22;;11614:106;;11665:35;11678:21;11665:12;:35::i;:::-;11738:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;11784:12:0;11768:13;:28;-1:-1:-1;10993:819:0;9415:2408;9357:2466;11839:13;;11835:172;;11914:4;11896:24;;;;:9;:24;;;;;;:39;;11925:9;11896:28;:39::i;:::-;11887:4;11869:24;;;;:9;:24;;;;;;;:66;;;;11955:40;;-1:-1:-1;;;;;11955:40:0;;;;;;;11985:9;1361:25:1;;1349:2;1334:18;;1215:177;11955:40:0;;;;;;;;11835:172;-1:-1:-1;;;;;12035:15:0;;;;;;:9;:15;;;;;;:27;;12055:6;12035:19;:27::i;:::-;-1:-1:-1;;;;;12017:15:0;;;;;;:9;:15;;;;;:45;12089:40;12107:21;:6;12118:9;12107:10;:21::i;:::-;-1:-1:-1;;;;;12089:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;12073:13:0;;;;;;;:9;:13;;;;;:56;;;;12145:41;;;12164:21;:6;12175:9;12164:10;:21::i;:::-;12145:41;;1361:25:1;;;1349:2;1334:18;12145:41:0;;;;;;;9085:3109;8982:3212;;;:::o;2117:224::-;2237:7;2273:12;2265:6;;;;2257:29;;;;-1:-1:-1;;;2257:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2297:9:0;2309:5;2313:1;2309;:5;:::i;:::-;2297:17;2117:224;-1:-1:-1;;;;;2117:224:0:o;12317:483::-;6203:6;:13;;-1:-1:-1;;;;6203:13:0;-1:-1:-1;;;6203:13:0;;;12419:16:::1;::::0;;12433:1:::1;12419:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12419:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12419:16:0::1;12395:40;;12464:4;12446;12451:1;12446:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12446:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12490:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12490:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12446:7;;12490:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12480:4;12485:1;12480:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12480:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12555:15:::1;::::0;12523:62:::1;::::0;12540:4:::1;::::0;12555:15:::1;12573:11:::0;12523:8:::1;:62::i;:::-;12596:15;::::0;:196:::1;::::0;-1:-1:-1;;;12596:196:0;;-1:-1:-1;;;;;12596:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12677:11;;12596:15:::1;::::0;12719:4;;12746::::1;::::0;12766:15:::1;::::0;12596:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6239:6:0;:14;;-1:-1:-1;;;;6239:14:0;;;-1:-1:-1;;;;12317:483:0:o;13100:92::-;13157:10;;:27;;-1:-1:-1;;;;;13157:10:0;;;;:27;;;;;13177:6;;13157:10;:27;:10;:27;13177:6;13157:10;:27;;;;;;;;;;;;;;;;;;;2349:246;2407:7;2431:1;2436;2431:6;2427:47;;-1:-1:-1;2461:1:0;2454:8;;2427:47;2484:9;2496:5;2500:1;2496;:5;:::i;:::-;2484:17;-1:-1:-1;2529:1:0;2520:5;2524:1;2484:17;2520:5;:::i;:::-;:10;2512:56;;;;-1:-1:-1;;;2512:56:0;;13828:2:1;2512:56:0;;;13810:21:1;13867:2;13847:18;;;13840:30;13906:34;13886:18;;;13879:62;-1:-1:-1;;;13957:18:1;;;13950:31;13998:19;;2512:56:0;13626:397:1;2512:56:0;2586:1;2349:246;-1:-1:-1;;;2349:246:0:o;2603:132::-;2661:7;2688:39;2692:1;2695;2688:39;;;;;;;;;;;;;;;;;:3;:39::i;12202:107::-;12259:7;12291:1;12287;:5;12286:15;;12300:1;12286:15;;;-1:-1:-1;12296:1:0;12202:107;-1:-1:-1;12202:107:0:o;1786:179::-;1844:7;;1876:5;1880:1;1876;:5;:::i;:::-;1864:17;;1905:1;1900;:6;;1892:46;;;;-1:-1:-1;;;1892:46:0;;14230:2:1;1892:46:0;;;14212:21:1;14269:2;14249:18;;;14242:30;14308:29;14288:18;;;14281:57;14355:18;;1892:46:0;14028:351:1;1973:136:0;2031:7;2058:43;2062:1;2065;2058:43;;;;;;;;;;;;;;;;;:3;:43::i;2743:223::-;2863:7;2898:12;2891:5;2883:28;;;;-1:-1:-1;;;2883:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2922:9:0;2934:5;2938:1;2934;:5;:::i;14:548:1:-;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;1865:456::-;1942:6;1950;1958;2011:2;1999:9;1990:7;1986:23;1982:32;1979:52;;;2027:1;2024;2017:12;1979:52;2066:9;2053:23;2085:31;2110:5;2085:31;:::i;:::-;2135:5;-1:-1:-1;2192:2:1;2177:18;;2164:32;2205:33;2164:32;2205:33;:::i;:::-;1865:456;;2257:7;;-1:-1:-1;;;2311:2:1;2296:18;;;;2283:32;;1865:456::o;2515:247::-;2574:6;2627:2;2615:9;2606:7;2602:23;2598:32;2595:52;;;2643:1;2640;2633:12;2595:52;2682:9;2669:23;2701:31;2726:5;2701:31;:::i;2975:388::-;3043:6;3051;3104:2;3092:9;3083:7;3079:23;3075:32;3072:52;;;3120:1;3117;3110:12;3072:52;3159:9;3146:23;3178:31;3203:5;3178:31;:::i;:::-;3228:5;-1:-1:-1;3285:2:1;3270:18;;3257:32;3298:33;3257:32;3298:33;:::i;:::-;3350:7;3340:17;;;2975:388;;;;;:::o;3368:180::-;3427:6;3480:2;3468:9;3459:7;3455:23;3451:32;3448:52;;;3496:1;3493;3486:12;3448:52;-1:-1:-1;3519:23:1;;3368:180;-1:-1:-1;3368:180:1:o;3553:127::-;3614:10;3609:3;3605:20;3602:1;3595:31;3645:4;3642:1;3635:15;3669:4;3666:1;3659:15;3685:416;3774:1;3811:5;3774:1;3825:270;3846:7;3836:8;3833:21;3825:270;;;3905:4;3901:1;3897:6;3893:17;3887:4;3884:27;3881:53;;;3914:18;;:::i;:::-;3964:7;3954:8;3950:22;3947:55;;;3984:16;;;;3947:55;4063:22;;;;4023:15;;;;3825:270;;;3829:3;3685:416;;;;;:::o;4106:806::-;4155:5;4185:8;4175:80;;-1:-1:-1;4226:1:1;4240:5;;4175:80;4274:4;4264:76;;-1:-1:-1;4311:1:1;4325:5;;4264:76;4356:4;4374:1;4369:59;;;;4442:1;4437:130;;;;4349:218;;4369:59;4399:1;4390:10;;4413:5;;;4437:130;4474:3;4464:8;4461:17;4458:43;;;4481:18;;:::i;:::-;-1:-1:-1;;4537:1:1;4523:16;;4552:5;;4349:218;;4651:2;4641:8;4638:16;4632:3;4626:4;4623:13;4619:36;4613:2;4603:8;4600:16;4595:2;4589:4;4586:12;4582:35;4579:77;4576:159;;;-1:-1:-1;4688:19:1;;;4720:5;;4576:159;4767:34;4792:8;4786:4;4767:34;:::i;:::-;4837:6;4833:1;4829:6;4825:19;4816:7;4813:32;4810:58;;;4848:18;;:::i;:::-;4886:20;;4106:806;-1:-1:-1;;;4106:806:1:o;4917:140::-;4975:5;5004:47;5045:4;5035:8;5031:19;5025:4;5004:47;:::i;5062:168::-;5135:9;;;5166;;5183:15;;;5177:22;;5163:37;5153:71;;5204:18;;:::i;5235:356::-;5437:2;5419:21;;;5456:18;;;5449:30;5515:34;5510:2;5495:18;;5488:62;5582:2;5567:18;;5235:356::o;5786:184::-;5856:6;5909:2;5897:9;5888:7;5884:23;5880:32;5877:52;;;5925:1;5922;5915:12;5877:52;-1:-1:-1;5948:16:1;;5786:184;-1:-1:-1;5786:184:1:o;6262:277::-;6329:6;6382:2;6370:9;6361:7;6357:23;6353:32;6350:52;;;6398:1;6395;6388:12;6350:52;6430:9;6424:16;6483:5;6476:13;6469:21;6462:5;6459:32;6449:60;;6505:1;6502;6495:12;6896:251;6966:6;7019:2;7007:9;6998:7;6994:23;6990:32;6987:52;;;7035:1;7032;7025:12;6987:52;7067:9;7061:16;7086:31;7111:5;7086:31;:::i;8073:306::-;8161:6;8169;8177;8230:2;8218:9;8209:7;8205:23;8201:32;8198:52;;;8246:1;8243;8236:12;8198:52;8275:9;8269:16;8259:26;;8325:2;8314:9;8310:18;8304:25;8294:35;;8369:2;8358:9;8354:18;8348:25;8338:35;;8073:306;;;;;:::o;11045:125::-;11110:9;;;11131:10;;;11128:36;;;11144:18;;:::i;11530:135::-;11569:3;11590:17;;;11587:43;;11610:18;;:::i;:::-;-1:-1:-1;11657:1:1;11646:13;;11530:135::o;12022:128::-;12089:9;;;12110:11;;;12107:37;;;12124:18;;:::i;12287:127::-;12348:10;12343:3;12339:20;12336:1;12329:31;12379:4;12376:1;12369:15;12403:4;12400:1;12393:15;12419:980;12681:4;12729:3;12718:9;12714:19;12760:6;12749:9;12742:25;12786:2;12824:6;12819:2;12808:9;12804:18;12797:34;12867:3;12862:2;12851:9;12847:18;12840:31;12891:6;12926;12920:13;12957:6;12949;12942:22;12995:3;12984:9;12980:19;12973:26;;13034:2;13026:6;13022:15;13008:29;;13055:1;13065:195;13079:6;13076:1;13073:13;13065:195;;;13144:13;;-1:-1:-1;;;;;13140:39:1;13128:52;;13235:15;;;;13200:12;;;;13176:1;13094:9;13065:195;;;-1:-1:-1;;;;;;;13316:32:1;;;;13311:2;13296:18;;13289:60;-1:-1:-1;;;13380:3:1;13365:19;13358:35;13277:3;12419:980;-1:-1:-1;;;12419:980:1:o;13404:217::-;13444:1;13470;13460:132;;13514:10;13509:3;13505:20;13502:1;13495:31;13549:4;13546:1;13539:15;13577:4;13574:1;13567:15;13460:132;-1:-1:-1;13606:9:1;;13404:217::o

Swarm Source

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