ETH Price: $2,629.32 (+1.10%)
Gas: 1 Gwei

Token

Xudo (XUDO)
 

Overview

Max Total Supply

100,000,000 XUDO

Holders

95

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
130,156.914098115516364678 XUDO

Value
$0.00
0x75fc060626ea916cfab2b5a57a77d6906a925cb2
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:
Xudo

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-04
*/

/**
* Website: https://xudo.io
* Twitter: https://twitter.com/xudoio
* Telegram: https://t.me/xudoportal
*/

// SPDX-License-Identifier: MIT
pragma solidity =0.8.19;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    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);

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

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
}

contract Xudo is Context, IERC20, Ownable {
    using Address for address payable;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;

    address[] private _excluded;

    bool private swapping;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 18;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 100_000_000 * 10 ** _decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    address public marketingWallet = 0x462b599CD0273F1e3445e81E56eCa1A8E4e7B6D5;

    string private constant _name = "Xudo";
    string private constant _symbol = "XUDO";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
    }

    Taxes public buyTax = Taxes(1, 4);
    Taxes public sellTax = Taxes(1, 4);

    struct TotFeesPaidStruct {
        uint256 rfi;
        uint256 marketing;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues {
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rMarketing;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tMarketing;
    }

    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    constructor() {
        address routerAddress;
        if (block.chainid == 56) {
            routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
        } else if (block.chainid == 97) {
            routerAddress = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
        } else if (block.chainid == 1 || block.chainid == 5) {
            routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
        } else {
            revert();
        }

        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );

        router = _router;
        pair = _pair;

        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[
            address(0x462b599CD0273F1e3445e81E56eCa1A8E4e7B6D5)
        ] = true;
        emit Transfer(address(0), owner(), _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 view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function tokenFromReflection(
        uint256 rAmount
    ) public view returns (uint256) {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount / currentRate;
    }

    function setBuyTax(
        uint256 _reflection,
        uint256 _marketing
    ) external onlyOwner {
        require(
            buyTax.rfi != _reflection || buyTax.marketing != _marketing,
            "Tax already that amount"
        );

        require(
            _reflection + _marketing <= 25,
            "Tax cannot be more than 25 percent"
        );

        buyTax.rfi = _reflection;
        buyTax.marketing = _marketing;
    }

    function setSellTax(
        uint256 _reflection,
        uint256 _marketing
    ) external onlyOwner {
        require(
            sellTax.rfi != _reflection || sellTax.marketing != _marketing,
            "Tax already that amount"
        );

        require(
            _reflection + _marketing <= 25,
            "Tax cannot be more than 25 percent"
        );

        sellTax.rfi = _reflection;
        sellTax.marketing = _marketing;
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -= rRfi;
        totFeesPaid.rfi += tRfi;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing += tMarketing;

        if (_isExcluded[address(marketingWallet)]) {
            _tOwned[address(marketingWallet)] += tMarketing;
        }
        _rOwned[address(marketingWallet)] += rMarketing;
    }

    function _getValues(
        uint256 tAmount,
        bool takeFee,
        address sender,
        address recipient
    ) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, sender, recipient);
        (
            to_return.rAmount,
            to_return.rTransferAmount,
            to_return.rRfi,
            to_return.rMarketing
        ) = _getRValues(to_return, tAmount, takeFee, _getRate());

        return to_return;
    }

    function _getTValues(
        uint256 tAmount,
        bool takeFee,
        address sender,
        address recipient
    ) private view returns (valuesFromGetValues memory s) {
        if (!takeFee) {
            s.tTransferAmount = tAmount;
            return s;
        }

        if (sender == address(pair)) {
            s.tRfi = (tAmount * buyTax.rfi) / 100;
            s.tMarketing = (tAmount * buyTax.marketing) / 100;
            s.tTransferAmount = tAmount - s.tRfi - s.tMarketing;
            return s;
        } else if (recipient == address(pair)) {
            s.tRfi = (tAmount * sellTax.rfi) / 100;
            s.tMarketing = (tAmount * sellTax.marketing) / 100;
            s.tTransferAmount = tAmount - s.tRfi - s.tMarketing;
            return s;
        } else {
            s.tTransferAmount = tAmount;
            return s;
        }
    }

    function _getRValues(
        valuesFromGetValues memory s,
        uint256 tAmount,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rRfi,
            uint256 rMarketing
        )
    {
        rAmount = tAmount * currentRate;

        if (!takeFee) {
            return (rAmount, rAmount, 0, 0);
        }

        rRfi = s.tRfi * currentRate;
        rMarketing = s.tMarketing * currentRate;
        rTransferAmount = rAmount - rRfi - rMarketing;
        return (rAmount, rTransferAmount, rRfi, rMarketing);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    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");
        require(
            amount <= balanceOf(from),
            "You are trying to transfer more than your balance"
        );

        bool takeFee = true;
        if (
            swapping ||
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            (from != address(pair) && to != address(pair))
        ) takeFee = false;

        if (takeFee) {
            if (from == address(pair) && buyTax.rfi + buyTax.marketing == 0) {
                takeFee = false;
            } else if (
                to == address(pair) && sellTax.rfi + sellTax.marketing == 0
            ) {
                takeFee = false;
            }
        }

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        valuesFromGetValues memory s = _getValues(
            tAmount,
            takeFee,
            sender,
            recipient
        );

        if (_isExcluded[sender]) {
            //from excluded
            _tOwned[sender] = _tOwned[sender] - tAmount;
        }
        if (_isExcluded[recipient]) {
            //to excluded
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender] - s.rAmount;
        _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;

        if (s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if (s.rMarketing > 0 || s.tMarketing > 0)
            _takeMarketing(s.rMarketing, s.tMarketing);
        emit Transfer(sender, recipient, s.tTransferAmount);
    }

    function bulkExcludeFee(
        address[] memory accounts,
        bool state
    ) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Fee address cannot be zero address");
        marketingWallet = newWallet;
    }

    function rescueWETH(uint256 weiAmount) external onlyOwner {
        require(address(this).balance >= weiAmount, "Insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function rescueAnyERC20Tokens(
        address _tokenAddr,
        address _to,
        uint256 _amount
    ) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    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":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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflection","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflection","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000980565b62000022906305f5e10062000991565b60098190556200003590600019620009c1565b6200004390600019620009d8565b600a55600b80546001600160a01b03191673462b599cd0273f1e3445e81e56eca1a8e4e7b6d5179055604080518082018252600180825260046020928301819052600c829055600d819055835180850190945281845292909101829052600e55600f55348015620000b357600080fd5b50620000bf3362000441565b600046603803620000e657507310ed43c718714eb63d5aa57b78b54704e256024e62000142565b466061036200010b575073d99d1c33f9fc3444f8101754abc46c52416550d162000142565b46600114806200011b5750466005145b156200013d5750737a250d5630b4cf539739df2c5dacb4c659f2488d62000142565b600080fd5b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000188573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ae9190620009ee565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002229190620009ee565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002969190620009ee565b600780546001600160a01b0380861661010002610100600160a81b031990921691909117909155600880549183166001600160a01b031990921682179055909150620002e29062000491565b600a5460016000620002fc6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff19166001908117909155916200034b6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600b5490911681526004909252812080548316600190811790915573462b599cd0273f1e3445e81e56eca1a8e4e7b6d59091527fd437a9f71b27a383484cb052b88ad0a010a1b72eda217453c577c0cca8bff5b08054909216179055620003e86000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200043091815260200190565b60405180910390a350505062000a62565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620004f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156200055c5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620004e8565b6001600160a01b03811660009081526001602052604090205415620005b9576001600160a01b0381166000908152600160205260409020546200059f906200061f565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000600a54821115620006885760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620004e8565b600062000694620006a9565b9050620006a2818462000a19565b9392505050565b60008080620006b7620006cf565b9092509050620006c8818362000a19565b9250505090565b600a546009546000918291825b600654811015620008375782600160006006848154811062000702576200070262000a30565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200077157508160026000600684815481106200074a576200074a62000a30565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200078857600a54600954945094505050509091565b6001600060068381548110620007a257620007a262000a30565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620007d39084620009d8565b92506002600060068381548110620007ef57620007ef62000a30565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008209083620009d8565b9150806200082e8162000a46565b915050620006dc565b50600954600a546200084a919062000a19565b8210156200086257600a546009549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008c2578160001904821115620008a657620008a66200086b565b80851615620008b457918102915b93841c939080029062000886565b509250929050565b600082620008db575060016200097a565b81620008ea575060006200097a565b81600181146200090357600281146200090e576200092e565b60019150506200097a565b60ff8411156200092257620009226200086b565b50506001821b6200097a565b5060208310610133831016604e8410600b841016171562000953575081810a6200097a565b6200095f838362000881565b80600019048211156200097657620009766200086b565b0290505b92915050565b6000620006a260ff841683620008ca565b80820281158282048414176200097a576200097a6200086b565b634e487b7160e01b600052601260045260246000fd5b600082620009d357620009d3620009ab565b500690565b818103818111156200097a576200097a6200086b565b60006020828403121562000a0157600080fd5b81516001600160a01b0381168114620006a257600080fd5b60008262000a2b5762000a2b620009ab565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162000a5b5762000a5b6200086b565b5060010190565b6120308062000a726000396000f3fe6080604052600436106101f25760003560e01c8063715018a61161010d578063a8aa1b31116100a0578063cc1776d31161006f578063cc1776d3146105ff578063dd62ed3e1461061a578063ea2f0b3714610660578063f2fde38b14610680578063f887ea40146106a057600080fd5b8063a8aa1b311461057f578063a9059cbb1461059f578063aacebbe3146105bf578063c853c4bc146105df57600080fd5b80638e2839ff116100dc5780638e2839ff146104f757806395d89b41146105175780639ba5e4d514610544578063a457c2d71461055f57600080fd5b8063715018a61461045357806375f0a8741461046857806388f82020146104a05780638da5cb5b146104d957600080fd5b8063313ce567116101855780634f7041a5116101545780634f7041a5146103aa57806352390c02146103da5780635342acb4146103fa57806370a082311461043357600080fd5b8063313ce5671461032e5780633685d4191461034a578063395093511461036a578063437823ec1461038a57600080fd5b806318160ddd116101c157806318160ddd146102af57806323b872dd146102ce578063247b912d146102ee5780632d8381191461030e57600080fd5b806305a1f36d146101fe57806306fdde0314610220578063095ea7b31461025f5780630d65df9b1461028f57600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021e610219366004611c4d565b6106c5565b005b34801561022c57600080fd5b506040805180820190915260048152635875646f60e01b60208201525b6040516102569190611c6f565b60405180910390f35b34801561026b57600080fd5b5061027f61027a366004611cd9565b610786565b6040519015158152602001610256565b34801561029b57600080fd5b5061021e6102aa366004611d03565b61079d565b3480156102bb57600080fd5b506009545b604051908152602001610256565b3480156102da57600080fd5b5061027f6102e9366004611d03565b610840565b3480156102fa57600080fd5b5061021e610309366004611c4d565b6108f1565b34801561031a57600080fd5b506102c0610329366004611d3f565b6109a9565b34801561033a57600080fd5b5060405160128152602001610256565b34801561035657600080fd5b5061021e610365366004611d58565b610a2d565b34801561037657600080fd5b5061027f610385366004611cd9565b610be3565b34801561039657600080fd5b5061021e6103a5366004611d58565b610c1a565b3480156103b657600080fd5b50600c54600d546103c5919082565b60408051928352602083019190915201610256565b3480156103e657600080fd5b5061021e6103f5366004611d58565b610c68565b34801561040657600080fd5b5061027f610415366004611d58565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561043f57600080fd5b506102c061044e366004611d58565b610dbb565b34801561045f57600080fd5b5061021e610e1a565b34801561047457600080fd5b50600b54610488906001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104ac57600080fd5b5061027f6104bb366004611d58565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104e557600080fd5b506000546001600160a01b0316610488565b34801561050357600080fd5b5061021e610512366004611da2565b610e50565b34801561052357600080fd5b506040805180820190915260048152635855444f60e01b6020820152610249565b34801561055057600080fd5b506010546011546103c5919082565b34801561056b57600080fd5b5061027f61057a366004611cd9565b610ee6565b34801561058b57600080fd5b50600854610488906001600160a01b031681565b3480156105ab57600080fd5b5061027f6105ba366004611cd9565b610f81565b3480156105cb57600080fd5b5061021e6105da366004611d58565b610f8e565b3480156105eb57600080fd5b5061021e6105fa366004611d3f565b61103b565b34801561060b57600080fd5b50600e54600f546103c5919082565b34801561062657600080fd5b506102c0610635366004611e79565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561066c57600080fd5b5061021e61067b366004611d58565b6110e2565b34801561068c57600080fd5b5061021e61069b366004611d58565b61112d565b3480156106ac57600080fd5b506007546104889061010090046001600160a01b031681565b6000546001600160a01b031633146106f85760405162461bcd60e51b81526004016106ef90611eac565b60405180910390fd5b600c548214158061070b5750600d548114155b6107515760405162461bcd60e51b815260206004820152601760248201527615185e08185b1c9958591e481d1a185d08185b5bdd5b9d604a1b60448201526064016106ef565b601961075d8284611ef7565b111561077b5760405162461bcd60e51b81526004016106ef90611f0a565b600c91909155600d55565b60006107933384846111c8565b5060015b92915050565b6000546001600160a01b031633146107c75760405162461bcd60e51b81526004016106ef90611eac565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083a9190611f4c565b50505050565b600061084d8484846112ec565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156108d25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106ef565b6108e685336108e18685611f69565b6111c8565b506001949350505050565b6000546001600160a01b0316331461091b5760405162461bcd60e51b81526004016106ef90611eac565b600e548214158061092e5750600f548114155b6109745760405162461bcd60e51b815260206004820152601760248201527615185e08185b1c9958591e481d1a185d08185b5bdd5b9d604a1b60448201526064016106ef565b60196109808284611ef7565b111561099e5760405162461bcd60e51b81526004016106ef90611f0a565b600e91909155600f55565b6000600a54821115610a105760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106ef565b6000610a1a61158c565b9050610a268184611f7c565b9392505050565b6000546001600160a01b03163314610a575760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b03811660009081526005602052604090205460ff16610abf5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016106ef565b60005b600654811015610bdf57816001600160a01b031660068281548110610ae957610ae9611f9e565b6000918252602090912001546001600160a01b031603610bcd5760068054610b1390600190611f69565b81548110610b2357610b23611f9e565b600091825260209091200154600680546001600160a01b039092169183908110610b4f57610b4f611f9e565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610ba757610ba7611fb4565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bd781611fca565b915050610ac2565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107939185906108e1908690611ef7565b6000546001600160a01b03163314610c445760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610c925760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b03811660009081526005602052604090205460ff1615610cfb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016106ef565b6001600160a01b03811660009081526001602052604090205415610d55576001600160a01b038116600090815260016020526040902054610d3b906109a9565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610df857506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610797906109a9565b6000546001600160a01b03163314610e445760405162461bcd60e51b81526004016106ef90611eac565b610e4e60006115af565b565b6000546001600160a01b03163314610e7a5760405162461bcd60e51b81526004016106ef90611eac565b60005b8251811015610ee1578160046000858481518110610e9d57610e9d611f9e565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ed981611fca565b915050610e7d565b505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610f685760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106ef565b610f7733856108e18685611f69565b5060019392505050565b60006107933384846112ec565b6000546001600160a01b03163314610fb85760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b0381166110195760405162461bcd60e51b815260206004820152602260248201527f46656520616464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016106ef565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110655760405162461bcd60e51b81526004016106ef90611eac565b804710156110b55760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016106ef565b604051339082156108fc029083906000818181858888f19350505050158015610bdf573d6000803e3d6000fd5b6000546001600160a01b0316331461110c5760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146111575760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b0381166111bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ef565b6111c5816115af565b50565b6001600160a01b03831661122a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ef565b6001600160a01b03821661128b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ef565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113505760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106ef565b6001600160a01b0382166113b25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106ef565b600081116114145760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106ef565b61141d83610dbb565b8111156114865760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016106ef565b60075460019060ff16806114b257506001600160a01b03841660009081526004602052604090205460ff165b806114d557506001600160a01b03831660009081526004602052604090205460ff165b8061150757506008546001600160a01b0385811691161480159061150757506008546001600160a01b03848116911614155b15611510575060005b8015611580576008546001600160a01b0385811691161480156115405750600d54600c5461153e9190611ef7565b155b1561154d57506000611580565b6008546001600160a01b0384811691161480156115775750600f54600e546115759190611ef7565b155b15611580575060005b61083a848484846115ff565b60008060006115996117fd565b90925090506115a88183611f7c565b9250505090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061160d83838787611980565b6001600160a01b03861660009081526005602052604090205490915060ff161561166f576001600160a01b038516600090815260026020526040902054611655908490611f69565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff16156116d25760808101516001600160a01b0385166000908152600260205260409020546116b89190611ef7565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b0386166000908152600160205260409020546116f79190611f69565b6001600160a01b038087166000908152600160209081526040808320949094558401519187168152919091205461172e9190611ef7565b6001600160a01b0385166000908152600160205260409081902091909155810151151580611760575060008160a00151115b156117775761177781604001518260a001516119fb565b60008160600151118061178e575060008160c00151115b156117a5576117a581606001518260c00151611a30565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83608001516040516117ee91815260200190565b60405180910390a35050505050565b600a546009546000918291825b60065481101561194f5782600160006006848154811061182c5761182c611f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611897575081600260006006848154811061187057611870611f9e565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156118ad57600a54600954945094505050509091565b60016000600683815481106118c4576118c4611f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020546118f39084611f69565b9250600260006006838154811061190c5761190c611f9e565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461193b9083611f69565b91508061194781611fca565b91505061180a565b50600954600a546119609190611f7c565b82101561197757600a546009549350935050509091565b90939092509050565b6119c06040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6119cc85858585611ac7565b90506119e18186866119dc61158c565b611be2565b60608501526040840152602083015281525b949350505050565b81600a6000828254611a0d9190611f69565b909155505060108054829190600090611a27908490611ef7565b90915550505050565b8060106001016000828254611a459190611ef7565b9091555050600b546001600160a01b031660009081526005602052604090205460ff1615611a9d57600b546001600160a01b031660009081526002602052604081208054839290611a97908490611ef7565b90915550505b600b546001600160a01b031660009081526001602052604081208054849290611a27908490611ef7565b611b076040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b83611b1857608081018590526119f3565b6008546001600160a01b0390811690841603611b9157600c54606490611b3e9087611fe3565b611b489190611f7c565b60a0820152600d54606490611b5d9087611fe3565b611b679190611f7c565b60c0820181905260a0820151611b7d9087611f69565b611b879190611f69565b60808201526119f3565b6008546001600160a01b0390811690831603611bd657600e54606490611bb79087611fe3565b611bc19190611f7c565b60a0820152600f54606490611b5d9087611fe3565b608081018590526119f3565b6000808080611bf18588611fe3565b935085611c0657508291506000905080611c42565b848860a00151611c169190611fe3565b9150848860c00151611c289190611fe3565b905080611c358386611f69565b611c3f9190611f69565b92505b945094509450949050565b60008060408385031215611c6057600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015611c9c57858101830151858201604001528201611c80565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611cd457600080fd5b919050565b60008060408385031215611cec57600080fd5b611cf583611cbd565b946020939093013593505050565b600080600060608486031215611d1857600080fd5b611d2184611cbd565b9250611d2f60208501611cbd565b9150604084013590509250925092565b600060208284031215611d5157600080fd5b5035919050565b600060208284031215611d6a57600080fd5b610a2682611cbd565b634e487b7160e01b600052604160045260246000fd5b80151581146111c557600080fd5b8035611cd481611d89565b60008060408385031215611db557600080fd5b823567ffffffffffffffff80821115611dcd57600080fd5b818501915085601f830112611de157600080fd5b8135602082821115611df557611df5611d73565b8160051b604051601f19603f83011681018181108682111715611e1a57611e1a611d73565b604052928352818301935084810182019289841115611e3857600080fd5b948201945b83861015611e5d57611e4e86611cbd565b85529482019493820193611e3d565b9650611e6c9050878201611d97565b9450505050509250929050565b60008060408385031215611e8c57600080fd5b611e9583611cbd565b9150611ea360208401611cbd565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561079757610797611ee1565b60208082526022908201527f5461782063616e6e6f74206265206d6f7265207468616e2032352070657263656040820152611b9d60f21b606082015260800190565b600060208284031215611f5e57600080fd5b8151610a2681611d89565b8181038181111561079757610797611ee1565b600082611f9957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611fdc57611fdc611ee1565b5060010190565b808202811582820484141761079757610797611ee156fea26469706673582212208681aed523cabcc9df6f382d6e49383a06f47025019c2082ebb72851e37d7f7564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063715018a61161010d578063a8aa1b31116100a0578063cc1776d31161006f578063cc1776d3146105ff578063dd62ed3e1461061a578063ea2f0b3714610660578063f2fde38b14610680578063f887ea40146106a057600080fd5b8063a8aa1b311461057f578063a9059cbb1461059f578063aacebbe3146105bf578063c853c4bc146105df57600080fd5b80638e2839ff116100dc5780638e2839ff146104f757806395d89b41146105175780639ba5e4d514610544578063a457c2d71461055f57600080fd5b8063715018a61461045357806375f0a8741461046857806388f82020146104a05780638da5cb5b146104d957600080fd5b8063313ce567116101855780634f7041a5116101545780634f7041a5146103aa57806352390c02146103da5780635342acb4146103fa57806370a082311461043357600080fd5b8063313ce5671461032e5780633685d4191461034a578063395093511461036a578063437823ec1461038a57600080fd5b806318160ddd116101c157806318160ddd146102af57806323b872dd146102ce578063247b912d146102ee5780632d8381191461030e57600080fd5b806305a1f36d146101fe57806306fdde0314610220578063095ea7b31461025f5780630d65df9b1461028f57600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021e610219366004611c4d565b6106c5565b005b34801561022c57600080fd5b506040805180820190915260048152635875646f60e01b60208201525b6040516102569190611c6f565b60405180910390f35b34801561026b57600080fd5b5061027f61027a366004611cd9565b610786565b6040519015158152602001610256565b34801561029b57600080fd5b5061021e6102aa366004611d03565b61079d565b3480156102bb57600080fd5b506009545b604051908152602001610256565b3480156102da57600080fd5b5061027f6102e9366004611d03565b610840565b3480156102fa57600080fd5b5061021e610309366004611c4d565b6108f1565b34801561031a57600080fd5b506102c0610329366004611d3f565b6109a9565b34801561033a57600080fd5b5060405160128152602001610256565b34801561035657600080fd5b5061021e610365366004611d58565b610a2d565b34801561037657600080fd5b5061027f610385366004611cd9565b610be3565b34801561039657600080fd5b5061021e6103a5366004611d58565b610c1a565b3480156103b657600080fd5b50600c54600d546103c5919082565b60408051928352602083019190915201610256565b3480156103e657600080fd5b5061021e6103f5366004611d58565b610c68565b34801561040657600080fd5b5061027f610415366004611d58565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561043f57600080fd5b506102c061044e366004611d58565b610dbb565b34801561045f57600080fd5b5061021e610e1a565b34801561047457600080fd5b50600b54610488906001600160a01b031681565b6040516001600160a01b039091168152602001610256565b3480156104ac57600080fd5b5061027f6104bb366004611d58565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104e557600080fd5b506000546001600160a01b0316610488565b34801561050357600080fd5b5061021e610512366004611da2565b610e50565b34801561052357600080fd5b506040805180820190915260048152635855444f60e01b6020820152610249565b34801561055057600080fd5b506010546011546103c5919082565b34801561056b57600080fd5b5061027f61057a366004611cd9565b610ee6565b34801561058b57600080fd5b50600854610488906001600160a01b031681565b3480156105ab57600080fd5b5061027f6105ba366004611cd9565b610f81565b3480156105cb57600080fd5b5061021e6105da366004611d58565b610f8e565b3480156105eb57600080fd5b5061021e6105fa366004611d3f565b61103b565b34801561060b57600080fd5b50600e54600f546103c5919082565b34801561062657600080fd5b506102c0610635366004611e79565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561066c57600080fd5b5061021e61067b366004611d58565b6110e2565b34801561068c57600080fd5b5061021e61069b366004611d58565b61112d565b3480156106ac57600080fd5b506007546104889061010090046001600160a01b031681565b6000546001600160a01b031633146106f85760405162461bcd60e51b81526004016106ef90611eac565b60405180910390fd5b600c548214158061070b5750600d548114155b6107515760405162461bcd60e51b815260206004820152601760248201527615185e08185b1c9958591e481d1a185d08185b5bdd5b9d604a1b60448201526064016106ef565b601961075d8284611ef7565b111561077b5760405162461bcd60e51b81526004016106ef90611f0a565b600c91909155600d55565b60006107933384846111c8565b5060015b92915050565b6000546001600160a01b031633146107c75760405162461bcd60e51b81526004016106ef90611eac565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083a9190611f4c565b50505050565b600061084d8484846112ec565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156108d25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106ef565b6108e685336108e18685611f69565b6111c8565b506001949350505050565b6000546001600160a01b0316331461091b5760405162461bcd60e51b81526004016106ef90611eac565b600e548214158061092e5750600f548114155b6109745760405162461bcd60e51b815260206004820152601760248201527615185e08185b1c9958591e481d1a185d08185b5bdd5b9d604a1b60448201526064016106ef565b60196109808284611ef7565b111561099e5760405162461bcd60e51b81526004016106ef90611f0a565b600e91909155600f55565b6000600a54821115610a105760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106ef565b6000610a1a61158c565b9050610a268184611f7c565b9392505050565b6000546001600160a01b03163314610a575760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b03811660009081526005602052604090205460ff16610abf5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016106ef565b60005b600654811015610bdf57816001600160a01b031660068281548110610ae957610ae9611f9e565b6000918252602090912001546001600160a01b031603610bcd5760068054610b1390600190611f69565b81548110610b2357610b23611f9e565b600091825260209091200154600680546001600160a01b039092169183908110610b4f57610b4f611f9e565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610ba757610ba7611fb4565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bd781611fca565b915050610ac2565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107939185906108e1908690611ef7565b6000546001600160a01b03163314610c445760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610c925760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b03811660009081526005602052604090205460ff1615610cfb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016106ef565b6001600160a01b03811660009081526001602052604090205415610d55576001600160a01b038116600090815260016020526040902054610d3b906109a9565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610df857506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610797906109a9565b6000546001600160a01b03163314610e445760405162461bcd60e51b81526004016106ef90611eac565b610e4e60006115af565b565b6000546001600160a01b03163314610e7a5760405162461bcd60e51b81526004016106ef90611eac565b60005b8251811015610ee1578160046000858481518110610e9d57610e9d611f9e565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ed981611fca565b915050610e7d565b505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610f685760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106ef565b610f7733856108e18685611f69565b5060019392505050565b60006107933384846112ec565b6000546001600160a01b03163314610fb85760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b0381166110195760405162461bcd60e51b815260206004820152602260248201527f46656520616464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016106ef565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110655760405162461bcd60e51b81526004016106ef90611eac565b804710156110b55760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016106ef565b604051339082156108fc029083906000818181858888f19350505050158015610bdf573d6000803e3d6000fd5b6000546001600160a01b0316331461110c5760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146111575760405162461bcd60e51b81526004016106ef90611eac565b6001600160a01b0381166111bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ef565b6111c5816115af565b50565b6001600160a01b03831661122a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ef565b6001600160a01b03821661128b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ef565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113505760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106ef565b6001600160a01b0382166113b25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106ef565b600081116114145760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106ef565b61141d83610dbb565b8111156114865760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016106ef565b60075460019060ff16806114b257506001600160a01b03841660009081526004602052604090205460ff165b806114d557506001600160a01b03831660009081526004602052604090205460ff165b8061150757506008546001600160a01b0385811691161480159061150757506008546001600160a01b03848116911614155b15611510575060005b8015611580576008546001600160a01b0385811691161480156115405750600d54600c5461153e9190611ef7565b155b1561154d57506000611580565b6008546001600160a01b0384811691161480156115775750600f54600e546115759190611ef7565b155b15611580575060005b61083a848484846115ff565b60008060006115996117fd565b90925090506115a88183611f7c565b9250505090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061160d83838787611980565b6001600160a01b03861660009081526005602052604090205490915060ff161561166f576001600160a01b038516600090815260026020526040902054611655908490611f69565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff16156116d25760808101516001600160a01b0385166000908152600260205260409020546116b89190611ef7565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b0386166000908152600160205260409020546116f79190611f69565b6001600160a01b038087166000908152600160209081526040808320949094558401519187168152919091205461172e9190611ef7565b6001600160a01b0385166000908152600160205260409081902091909155810151151580611760575060008160a00151115b156117775761177781604001518260a001516119fb565b60008160600151118061178e575060008160c00151115b156117a5576117a581606001518260c00151611a30565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83608001516040516117ee91815260200190565b60405180910390a35050505050565b600a546009546000918291825b60065481101561194f5782600160006006848154811061182c5761182c611f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611897575081600260006006848154811061187057611870611f9e565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156118ad57600a54600954945094505050509091565b60016000600683815481106118c4576118c4611f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020546118f39084611f69565b9250600260006006838154811061190c5761190c611f9e565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461193b9083611f69565b91508061194781611fca565b91505061180a565b50600954600a546119609190611f7c565b82101561197757600a546009549350935050509091565b90939092509050565b6119c06040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6119cc85858585611ac7565b90506119e18186866119dc61158c565b611be2565b60608501526040840152602083015281525b949350505050565b81600a6000828254611a0d9190611f69565b909155505060108054829190600090611a27908490611ef7565b90915550505050565b8060106001016000828254611a459190611ef7565b9091555050600b546001600160a01b031660009081526005602052604090205460ff1615611a9d57600b546001600160a01b031660009081526002602052604081208054839290611a97908490611ef7565b90915550505b600b546001600160a01b031660009081526001602052604081208054849290611a27908490611ef7565b611b076040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b83611b1857608081018590526119f3565b6008546001600160a01b0390811690841603611b9157600c54606490611b3e9087611fe3565b611b489190611f7c565b60a0820152600d54606490611b5d9087611fe3565b611b679190611f7c565b60c0820181905260a0820151611b7d9087611f69565b611b879190611f69565b60808201526119f3565b6008546001600160a01b0390811690831603611bd657600e54606490611bb79087611fe3565b611bc19190611f7c565b60a0820152600f54606490611b5d9087611fe3565b608081018590526119f3565b6000808080611bf18588611fe3565b935085611c0657508291506000905080611c42565b848860a00151611c169190611fe3565b9150848860c00151611c289190611fe3565b905080611c358386611f69565b611c3f9190611f69565b92505b945094509450949050565b60008060408385031215611c6057600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015611c9c57858101830151858201604001528201611c80565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611cd457600080fd5b919050565b60008060408385031215611cec57600080fd5b611cf583611cbd565b946020939093013593505050565b600080600060608486031215611d1857600080fd5b611d2184611cbd565b9250611d2f60208501611cbd565b9150604084013590509250925092565b600060208284031215611d5157600080fd5b5035919050565b600060208284031215611d6a57600080fd5b610a2682611cbd565b634e487b7160e01b600052604160045260246000fd5b80151581146111c557600080fd5b8035611cd481611d89565b60008060408385031215611db557600080fd5b823567ffffffffffffffff80821115611dcd57600080fd5b818501915085601f830112611de157600080fd5b8135602082821115611df557611df5611d73565b8160051b604051601f19603f83011681018181108682111715611e1a57611e1a611d73565b604052928352818301935084810182019289841115611e3857600080fd5b948201945b83861015611e5d57611e4e86611cbd565b85529482019493820193611e3d565b9650611e6c9050878201611d97565b9450505050509250929050565b60008060408385031215611e8c57600080fd5b611e9583611cbd565b9150611ea360208401611cbd565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561079757610797611ee1565b60208082526022908201527f5461782063616e6e6f74206265206d6f7265207468616e2032352070657263656040820152611b9d60f21b606082015260800190565b600060208284031215611f5e57600080fd5b8151610a2681611d89565b8181038181111561079757610797611ee1565b600082611f9957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611fdc57611fdc611ee1565b5060010190565b808202811582820484141761079757610797611ee156fea26469706673582212208681aed523cabcc9df6f382d6e49383a06f47025019c2082ebb72851e37d7f7564736f6c63430008130033

Deployed Bytecode Sourcemap

3618:14261:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9165:459;;;;;;;;;;-1:-1:-1;9165:459:0;;;;;:::i;:::-;;:::i;:::-;;6350:83;;;;;;;;;;-1:-1:-1;6420:5:0;;;;;;;;;;;;-1:-1:-1;;;6420:5:0;;;;6350:83;;;;;;;:::i;:::-;;;;;;;;7112:186;;;;;;;;;;-1:-1:-1;7112:186:0;;;;;:::i;:::-;;:::i;:::-;;;1422:14:1;;1415:22;1397:41;;1385:2;1370:18;7112:186:0;1257:187:1;17648:191:0;;;;;;;;;;-1:-1:-1;17648:191:0;;;;;:::i;:::-;;:::i;6627:95::-;;;;;;;;;;-1:-1:-1;6707:7:0;;6627:95;;;1928:25:1;;;1916:2;1901:18;6627:95:0;1782:177:1;7306:485:0;;;;;;;;;;-1:-1:-1;7306:485:0;;;;;:::i;:::-;;:::i;9632:464::-;;;;;;;;;;-1:-1:-1;9632:464:0;;;;;:::i;:::-;;:::i;8854:303::-;;;;;;;;;;-1:-1:-1;8854:303:0;;;;;:::i;:::-;;:::i;6536:83::-;;;;;;;;;;-1:-1:-1;6536:83:0;;4151:2;2291:36:1;;2279:2;2264:18;6536:83:0;2149:184:1;10444:473:0;;;;;;;;;;-1:-1:-1;10444:473:0;;;;;:::i;:::-;;:::i;7799:282::-;;;;;;;;;;-1:-1:-1;7799:282:0;;;;;:::i;:::-;;:::i;10925:111::-;;;;;;;;;;-1:-1:-1;10925:111:0;;;;;:::i;:::-;;:::i;4588:33::-;;;;;;;;;;-1:-1:-1;4588:33:0;;;;;;;;;;;;;2703:25:1;;;2759:2;2744:18;;2737:34;;;;2676:18;4588:33:0;2529:248:1;10104:332:0;;;;;;;;;;-1:-1:-1;10104:332:0;;;;;:::i;:::-;;:::i;11162:124::-;;;;;;;;;;-1:-1:-1;11162:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;11251:27:0;11227:4;11251:27;;;:18;:27;;;;;;;;;11162:124;6730:198;;;;;;;;;;-1:-1:-1;6730:198:0;;;;;:::i;:::-;;:::i;1848:94::-;;;;;;;;;;;;;:::i;4331:75::-;;;;;;;;;;-1:-1:-1;4331:75:0;;;;-1:-1:-1;;;;;4331:75:0;;;;;;-1:-1:-1;;;;;2946:32:1;;;2928:51;;2916:2;2901:18;4331:75:0;2782:203:1;8726:120:0;;;;;;;;;;-1:-1:-1;8726:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;8818:20:0;8794:4;8818:20;;;:11;:20;;;;;;;;;8726:120;1625:87;;;;;;;;;;-1:-1:-1;1671:7:0;1698:6;-1:-1:-1;;;;;1698:6:0;1625:87;;16993:237;;;;;;;;;;-1:-1:-1;16993:237:0;;;;;:::i;:::-;;:::i;6441:87::-;;;;;;;;;;-1:-1:-1;6513:7:0;;;;;;;;;;;;-1:-1:-1;;;6513:7:0;;;;6441:87;;4762:36;;;;;;;;;;-1:-1:-1;4762:36:0;;;;;;;;;8089:431;;;;;;;;;;-1:-1:-1;8089:431:0;;;;;:::i;:::-;;:::i;4088:19::-;;;;;;;;;;-1:-1:-1;4088:19:0;;;;-1:-1:-1;;;;;4088:19:0;;;8528:190;;;;;;;;;;-1:-1:-1;8528:190:0;;;;;:::i;:::-;;:::i;17238:196::-;;;;;;;;;;-1:-1:-1;17238:196:0;;;;;:::i;:::-;;:::i;17442:198::-;;;;;;;;;;-1:-1:-1;17442:198:0;;;;;:::i;:::-;;:::i;4628:34::-;;;;;;;;;;-1:-1:-1;4628:34:0;;;;;;;;;6936:168;;;;;;;;;;-1:-1:-1;6936:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7069:18:0;;;7042:7;7069:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6936:168;11044:110;;;;;;;;;;-1:-1:-1;11044:110:0;;;;;:::i;:::-;;:::i;1950:229::-;;;;;;;;;;-1:-1:-1;1950:229:0;;;;;:::i;:::-;;:::i;4060:21::-;;;;;;;;;;-1:-1:-1;4060:21:0;;;;;;;-1:-1:-1;;;;;4060:21:0;;;9165:459;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;;;;;;;;;9302:6:::1;:10:::0;:25;::::1;;::::0;:59:::1;;-1:-1:-1::0;9331:16:0;;:30;::::1;;9302:59;9280:132;;;::::0;-1:-1:-1;;;9280:132:0;;5625:2:1;9280:132:0::1;::::0;::::1;5607:21:1::0;5664:2;5644:18;;;5637:30;-1:-1:-1;;;5683:18:1;;;5676:53;5746:18;;9280:132:0::1;5423:347:1::0;9280:132:0::1;9475:2;9447:24;9461:10:::0;9447:11;:24:::1;:::i;:::-;:30;;9425:114;;;;-1:-1:-1::0;;;9425:114:0::1;;;;;;;:::i;:::-;9552:6;:24:::0;;;;9587:16;:29;9165:459::o;7112:186::-;7212:4;7229:39;1101:10;7252:7;7261:6;7229:8;:39::i;:::-;-1:-1:-1;7286:4:0;7112:186;;;;;:::o;17648:191::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;17790:41:::1;::::0;-1:-1:-1;;;17790:41:0;;-1:-1:-1;;;;;6632:32:1;;;17790:41:0::1;::::0;::::1;6614:51:1::0;6681:18;;;6674:34;;;17790:27:0;::::1;::::0;::::1;::::0;6587:18:1;;17790:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17648:191:::0;;;:::o;7306:485::-;7438:4;7455:36;7465:6;7473:9;7484:6;7455:9;:36::i;:::-;-1:-1:-1;;;;;7531:19:0;;7504:24;7531:19;;;:11;:19;;;;;;;;1101:10;7531:33;;;;;;;;7597:26;;;;7575:116;;;;-1:-1:-1;;;7575:116:0;;7171:2:1;7575:116:0;;;7153:21:1;7210:2;7190:18;;;7183:30;7249:34;7229:18;;;7222:62;-1:-1:-1;;;7300:18:1;;;7293:38;7348:19;;7575:116:0;6969:404:1;7575:116:0;7702:57;7711:6;1101:10;7733:25;7752:6;7733:16;:25;:::i;:::-;7702:8;:57::i;:::-;-1:-1:-1;7779:4:0;;7306:485;-1:-1:-1;;;;7306:485:0:o;9632:464::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;9770:7:::1;:11:::0;:26;::::1;;::::0;:61:::1;;-1:-1:-1::0;9800:17:0;;:31;::::1;;9770:61;9748:134;;;::::0;-1:-1:-1;;;9748:134:0;;5625:2:1;9748:134:0::1;::::0;::::1;5607:21:1::0;5664:2;5644:18;;;5637:30;-1:-1:-1;;;5683:18:1;;;5676:53;5746:18;;9748:134:0::1;5423:347:1::0;9748:134:0::1;9945:2;9917:24;9931:10:::0;9917:11;:24:::1;:::i;:::-;:30;;9895:114;;;;-1:-1:-1::0;;;9895:114:0::1;;;;;;;:::i;:::-;10022:7;:25:::0;;;;10058:17;:30;9632:464::o;8854:303::-;8937:7;8990;;8979;:18;;8957:110;;;;-1:-1:-1;;;8957:110:0;;7713:2:1;8957:110:0;;;7695:21:1;7752:2;7732:18;;;7725:30;7791:34;7771:18;;;7764:62;-1:-1:-1;;;7842:18:1;;;7835:40;7892:19;;8957:110:0;7511:406:1;8957:110:0;9078:19;9100:10;:8;:10::i;:::-;9078:32;-1:-1:-1;9128:21:0;9078:32;9128:7;:21;:::i;:::-;9121:28;8854:303;-1:-1:-1;;;8854:303:0:o;10444:473::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10524:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10516:56;;;::::0;-1:-1:-1;;;10516:56:0;;8346:2:1;10516:56:0::1;::::0;::::1;8328:21:1::0;8385:2;8365:18;;;8358:30;8424:25;8404:18;;;8397:53;8467:18;;10516:56:0::1;8144:347:1::0;10516:56:0::1;10588:9;10583:327;10607:9;:16:::0;10603:20;::::1;10583:327;;;10665:7;-1:-1:-1::0;;;;;10649:23:0::1;:9;10659:1;10649:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10649:12:0::1;:23:::0;10645:254:::1;;10708:9;10718:16:::0;;:20:::1;::::0;10737:1:::1;::::0;10718:20:::1;:::i;:::-;10708:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;10693:9:::1;:12:::0;;-1:-1:-1;;;;;10708:31:0;;::::1;::::0;10703:1;;10693:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;10693:46:0::1;-1:-1:-1::0;;;;;10693:46:0;;::::1;;::::0;;10758:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;10797:11:::1;:20:::0;;;;:28;;-1:-1:-1;;10797:28:0::1;::::0;;10844:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;10844:15:0;;;;;-1:-1:-1;;;;;;10844:15:0::1;::::0;;;;;10583:327:::1;10444:473:::0;:::o;10645:254::-:1;10625:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10583:327;;;;10444:473:::0;:::o;7799:282::-;1101:10;7904:4;7993:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7993:34:0;;;;;;;;;;7904:4;;7921:130;;7971:7;;7993:47;;8030:10;;7993:47;:::i;10925:111::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10994:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;10994:34:0::1;11024:4;10994:34;::::0;;10925:111::o;10104:332::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10185:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10184:21;10176:61;;;::::0;-1:-1:-1;;;10176:61:0;;9102:2:1;10176:61:0::1;::::0;::::1;9084:21:1::0;9141:2;9121:18;;;9114:30;9180:29;9160:18;;;9153:57;9227:18;;10176:61:0::1;8900:351:1::0;10176:61:0::1;-1:-1:-1::0;;;;;10252:16:0;::::1;10271:1;10252:16:::0;;;:7:::1;:16;::::0;;;;;:20;10248:109:::1;;-1:-1:-1::0;;;;;10328:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10308:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10289:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10248:109:::1;-1:-1:-1::0;;;;;10367:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;10367:27:0::1;10390:4;10367:27:::0;;::::1;::::0;;;10405:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10405:23:0::1;::::0;;::::1;::::0;;10104:332::o;6730:198::-;-1:-1:-1;;;;;6820:20:0;;6796:7;6820:20;;;:11;:20;;;;;;;;6816:49;;;-1:-1:-1;;;;;;6849:16:0;;;;;:7;:16;;;;;;;6730:198::o;6816:49::-;-1:-1:-1;;;;;6903:16:0;;;;;;:7;:16;;;;;;6883:37;;:19;:37::i;1848:94::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;1913:21:::1;1931:1;1913:9;:21::i;:::-;1848:94::o:0;16993:237::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;17116:9:::1;17111:112;17135:8;:15;17131:1;:19;17111:112;;;17206:5;17172:18;:31;17191:8;17200:1;17191:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;17172:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;17172:31:0;:39;;-1:-1:-1;;17172:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17152:3;::::1;::::0;::::1;:::i;:::-;;;;17111:112;;;;16993:237:::0;;:::o;8089:431::-;1101:10;8199:4;8243:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8243:34:0;;;;;;;;;;8310:35;;;;8288:122;;;;-1:-1:-1;;;8288:122:0;;9458:2:1;8288:122:0;;;9440:21:1;9497:2;9477:18;;;9470:30;9536:34;9516:18;;;9509:62;-1:-1:-1;;;9587:18:1;;;9580:35;9632:19;;8288:122:0;9256:401:1;8288:122:0;8421:67;1101:10;8444:7;8453:34;8472:15;8453:16;:34;:::i;8421:67::-;-1:-1:-1;8508:4:0;;8089:431;-1:-1:-1;;;8089:431:0:o;8528:190::-;8631:4;8648:40;8658:10;8670:9;8681:6;8648:9;:40::i;17238:196::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17326:23:0;::::1;17318:70;;;::::0;-1:-1:-1;;;17318:70:0;;9864:2:1;17318:70:0::1;::::0;::::1;9846:21:1::0;9903:2;9883:18;;;9876:30;9942:34;9922:18;;;9915:62;-1:-1:-1;;;9993:18:1;;;9986:32;10035:19;;17318:70:0::1;9662:398:1::0;17318:70:0::1;17399:15;:27:::0;;-1:-1:-1;;;;;;17399:27:0::1;-1:-1:-1::0;;;;;17399:27:0;;;::::1;::::0;;;::::1;::::0;;17238:196::o;17442:198::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;17544:9:::1;17519:21;:34;;17511:71;;;::::0;-1:-1:-1;;;17511:71:0;;10267:2:1;17511:71:0::1;::::0;::::1;10249:21:1::0;10306:2;10286:18;;;10279:30;10345:26;10325:18;;;10318:54;10389:18;;17511:71:0::1;10065:348:1::0;17511:71:0::1;17593:39;::::0;17601:10:::1;::::0;17593:39;::::1;;;::::0;17622:9;;17593:39:::1;::::0;;;17622:9;17601:10;17593:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;11044:110:::0;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11111:27:0::1;11141:5;11111:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11111:35:0::1;::::0;;11044:110::o;1950:229::-;1671:7;1698:6;-1:-1:-1;;;;;1698:6:0;1101:10;1760:23;1752:68;;;;-1:-1:-1;;;1752:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2053:22:0;::::1;2031:110;;;::::0;-1:-1:-1;;;2031:110:0;;10620:2:1;2031:110:0::1;::::0;::::1;10602:21:1::0;10659:2;10639:18;;;10632:30;10698:34;10678:18;;;10671:62;-1:-1:-1;;;10749:18:1;;;10742:36;10795:19;;2031:110:0::1;10418:402:1::0;2031:110:0::1;2152:19;2162:8;2152:9;:19::i;:::-;1950:229:::0;:::o;14625:335::-;-1:-1:-1;;;;;14718:19:0;;14710:68;;;;-1:-1:-1;;;14710:68:0;;11027:2:1;14710:68:0;;;11009:21:1;11066:2;11046:18;;;11039:30;11105:34;11085:18;;;11078:62;-1:-1:-1;;;11156:18:1;;;11149:34;11200:19;;14710:68:0;10825:400:1;14710:68:0;-1:-1:-1;;;;;14797:21:0;;14789:68;;;;-1:-1:-1;;;14789:68:0;;11432:2:1;14789:68:0;;;11414:21:1;11471:2;11451:18;;;11444:30;11510:34;11490:18;;;11483:62;-1:-1:-1;;;11561:18:1;;;11554:32;11603:19;;14789:68:0;11230:398:1;14789:68:0;-1:-1:-1;;;;;14868:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14920:32;;1928:25:1;;;14920:32:0;;1901:18:1;14920:32:0;;;;;;;14625:335;;;:::o;14968:1053::-;-1:-1:-1;;;;;15056:18:0;;15048:68;;;;-1:-1:-1;;;15048:68:0;;11835:2:1;15048:68:0;;;11817:21:1;11874:2;11854:18;;;11847:30;11913:34;11893:18;;;11886:62;-1:-1:-1;;;11964:18:1;;;11957:35;12009:19;;15048:68:0;11633:401:1;15048:68:0;-1:-1:-1;;;;;15135:16:0;;15127:64;;;;-1:-1:-1;;;15127:64:0;;12241:2:1;15127:64:0;;;12223:21:1;12280:2;12260:18;;;12253:30;12319:34;12299:18;;;12292:62;-1:-1:-1;;;12370:18:1;;;12363:33;12413:19;;15127:64:0;12039:399:1;15127:64:0;15219:1;15210:6;:10;15202:64;;;;-1:-1:-1;;;15202:64:0;;12645:2:1;15202:64:0;;;12627:21:1;12684:2;12664:18;;;12657:30;12723:34;12703:18;;;12696:62;-1:-1:-1;;;12774:18:1;;;12767:39;12823:19;;15202:64:0;12443:405:1;15202:64:0;15309:15;15319:4;15309:9;:15::i;:::-;15299:6;:25;;15277:124;;;;-1:-1:-1;;;15277:124:0;;13055:2:1;15277:124:0;;;13037:21:1;13094:2;13074:18;;;13067:30;13133:34;13113:18;;;13106:62;-1:-1:-1;;;13184:18:1;;;13177:47;13241:19;;15277:124:0;12853:413:1;15277:124:0;15462:8;;15429:4;;15462:8;;;:49;;-1:-1:-1;;;;;;15487:24:0;;;;;;:18;:24;;;;;;;;15462:49;:88;;;-1:-1:-1;;;;;;15528:22:0;;;;;;:18;:22;;;;;;;;15462:88;:151;;;-1:-1:-1;15584:4:0;;-1:-1:-1;;;;;15568:21:0;;;15584:4;;15568:21;;;;:44;;-1:-1:-1;15607:4:0;;-1:-1:-1;;;;;15593:19:0;;;15607:4;;15593:19;;15568:44;15444:196;;;-1:-1:-1;15635:5:0;15444:196;15657:7;15653:307;;;15701:4;;-1:-1:-1;;;;;15685:21:0;;;15701:4;;15685:21;:59;;;;-1:-1:-1;15723:16:0;;:6;15710:10;:29;;15723:16;15710:29;:::i;:::-;:34;15685:59;15681:268;;;-1:-1:-1;15775:5:0;15681:268;;;15838:4;;-1:-1:-1;;;;;15824:19:0;;;15838:4;;15824:19;:59;;;;-1:-1:-1;15861:17:0;;:7;15847:11;:31;;15861:17;15847:31;:::i;:::-;:36;15824:59;15802:147;;;-1:-1:-1;15928:5:0;15802:147;15972:41;15987:4;15993:2;15997:6;16005:7;15972:14;:41::i;13852:161::-;13894:7;13915:15;13932;13951:19;:17;:19::i;:::-;13914:56;;-1:-1:-1;13914:56:0;-1:-1:-1;13988:17:0;13914:56;;13988:17;:::i;:::-;13981:24;;;;13852:161;:::o;2187:173::-;2243:16;2262:6;;-1:-1:-1;;;;;2279:17:0;;;-1:-1:-1;;;;;;2279:17:0;;;;;;2312:40;;2262:6;;;;;;;2312:40;;2243:16;2312:40;2232:128;2187:173;:::o;16029:956::-;16181:28;16212:110;16237:7;16259;16281:6;16302:9;16212:10;:110::i;:::-;-1:-1:-1;;;;;16339:19:0;;;;;;:11;:19;;;;;;16181:141;;-1:-1:-1;16339:19:0;;16335:124;;;-1:-1:-1;;;;;16422:15:0;;;;;;:7;:15;;;;;;:25;;16440:7;;16422:25;:::i;:::-;-1:-1:-1;;;;;16404:15:0;;;;;;:7;:15;;;;;:43;16335:124;-1:-1:-1;;;;;16473:22:0;;;;;;:11;:22;;;;;;;;16469:141;;;16581:17;;;;-1:-1:-1;;;;;16560:18:0;;;;;;:7;:18;;;;;;:38;;16581:17;16560:38;:::i;:::-;-1:-1:-1;;;;;16539:18:0;;;;;;:7;:18;;;;;:59;16469:141;16658:9;;-1:-1:-1;;;;;16640:15:0;;16658:9;16640:15;;;:7;:15;;;;;;:27;;16658:9;16640:27;:::i;:::-;-1:-1:-1;;;;;16622:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;16720:17;;;16699:18;;;;;;;;;;:38;;16720:17;16699:38;:::i;:::-;-1:-1:-1;;;;;16678:18:0;;;;;;:7;:18;;;;;;;:59;;;;16754:6;;;:10;;;:24;;;16777:1;16768;:6;;;:10;16754:24;16750:57;;;16780:27;16792:1;:6;;;16800:1;:6;;;16780:11;:27::i;:::-;16837:1;16822;:12;;;:16;:36;;;;16857:1;16842;:12;;;:16;16822:36;16818:97;;;16873:42;16888:1;:12;;;16902:1;:12;;;16873:14;:42::i;:::-;16948:9;-1:-1:-1;;;;;16931:46:0;16940:6;-1:-1:-1;;;;;16931:46:0;;16959:1;:17;;;16931:46;;;;1928:25:1;;1916:2;1901:18;;1782:177;16931:46:0;;;;;;;;16170:815;16029:956;;;;:::o;14021:596::-;14119:7;;14155;;14072;;;;;14173:332;14197:9;:16;14193:20;;14173:332;;;14281:7;14257;:21;14265:9;14275:1;14265:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14265:12:0;14257:21;;;;;;;;;;;;;:31;;:83;;;14333:7;14309;:21;14317:9;14327:1;14317:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14317:12:0;14309:21;;;;;;;;;;;;;:31;14257:83;14235:146;;;14364:7;;14373;;14356:25;;;;;;;14021:596;;:::o;14235:146::-;14416:7;:21;14424:9;14434:1;14424:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14424:12:0;14416:21;;;;;;;;;;;;;14406:31;;:7;:31;:::i;:::-;14396:41;;14472:7;:21;14480:9;14490:1;14480:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14480:12:0;14472:21;;;;;;;;;;;;;14462:31;;:7;:31;:::i;:::-;14452:41;-1:-1:-1;14215:3:0;;;;:::i;:::-;;;;14173:332;;;;14539:7;;14529;;:17;;;;:::i;:::-;14519:7;:27;14515:58;;;14556:7;;14565;;14548:25;;;;;;14021:596;;:::o;14515:58::-;14592:7;;14601;;-1:-1:-1;14021:596:0;-1:-1:-1;14021:596:0:o;11748:510::-;11899:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11899:36:0;11960:48;11972:7;11981;11990:6;11998:9;11960:11;:48::i;:::-;11948:60;;12169:52;12181:9;12192:7;12201;12210:10;:8;:10::i;:::-;12169:11;:52::i;:::-;12135:20;;;12019:202;12106:14;;;12019:202;12066:25;;;12019:202;;;11748:510;;;;;;;:::o;11294:125::-;11373:4;11362:7;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;11388:11:0;:23;;11407:4;;11388:11;:15;;:23;;11407:4;;11388:23;:::i;:::-;;;;-1:-1:-1;;;;11294:125:0:o;11427:313::-;11535:10;11510:11;:21;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;11582:15:0;;-1:-1:-1;;;;;11582:15:0;11562:37;;;;:11;:37;;;;;;;;11558:117;;;11632:15;;-1:-1:-1;;;;;11632:15:0;11616:33;;;;:7;:33;;;;;:47;;11653:10;;11616:33;:47;;11653:10;;11616:47;:::i;:::-;;;;-1:-1:-1;;11558:117:0;11701:15;;-1:-1:-1;;;;;11701:15:0;11685:33;;;;:7;:33;;;;;:47;;11722:10;;11685:33;:47;;11722:10;;11685:47;:::i;12266:889::-;12418:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12418:28:0;12464:7;12459:91;;12488:17;;;:27;;;12530:8;;12459:91;12584:4;;-1:-1:-1;;;;;12584:4:0;;;12566:23;;;;12562:586;;12626:6;:10;12640:3;;12616:20;;:7;:20;:::i;:::-;12615:28;;;;:::i;:::-;12606:6;;;:37;12684:16;;12704:3;;12674:26;;:7;:26;:::i;:::-;12673:34;;;;:::i;:::-;12658:12;;;:49;;;12752:6;;;;12742:16;;:7;:16;:::i;:::-;:31;;;;:::i;:::-;12722:17;;;:51;12788:8;;12562:586;12839:4;;-1:-1:-1;;;;;12839:4:0;;;12818:26;;;;12814:334;;12881:7;:11;12896:3;;12871:21;;:7;:21;:::i;:::-;12870:29;;;;:::i;:::-;12861:6;;;:38;12940:17;;12961:3;;12930:27;;:7;:27;:::i;12814:334::-;13086:17;;;:27;;;13128:8;;13163:681;13372:15;;;;13523:21;13533:11;13523:7;:21;:::i;:::-;13513:31;;13562:7;13557:72;;-1:-1:-1;13594:7:0;;-1:-1:-1;13612:1:0;;-1:-1:-1;13612:1:0;13586:31;;13557:72;13657:11;13648:1;:6;;;:20;;;;:::i;:::-;13641:27;;13707:11;13692:1;:12;;;:26;;;;:::i;:::-;13679:39;-1:-1:-1;13679:39:0;13747:14;13757:4;13747:7;:14;:::i;:::-;:27;;;;:::i;:::-;13729:45;;13163:681;;;;;;;;;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:173::-;888:20;;-1:-1:-1;;;;;937:31:1;;927:42;;917:70;;983:1;980;973:12;917:70;820:173;;;:::o;998:254::-;1066:6;1074;1127:2;1115:9;1106:7;1102:23;1098:32;1095:52;;;1143:1;1140;1133:12;1095:52;1166:29;1185:9;1166:29;:::i;:::-;1156:39;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;998:254:1:o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1964:180::-;2023:6;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;-1:-1:-1;2115:23:1;;1964:180;-1:-1:-1;1964:180:1:o;2338:186::-;2397:6;2450:2;2438:9;2429:7;2425:23;2421:32;2418:52;;;2466:1;2463;2456:12;2418:52;2489:29;2508:9;2489:29;:::i;2990:127::-;3051:10;3046:3;3042:20;3039:1;3032:31;3082:4;3079:1;3072:15;3106:4;3103:1;3096:15;3122:118;3208:5;3201:13;3194:21;3187:5;3184:32;3174:60;;3230:1;3227;3220:12;3245:128;3310:20;;3339:28;3310:20;3339:28;:::i;3378:1191::-;3468:6;3476;3529:2;3517:9;3508:7;3504:23;3500:32;3497:52;;;3545:1;3542;3535:12;3497:52;3585:9;3572:23;3614:18;3655:2;3647:6;3644:14;3641:34;;;3671:1;3668;3661:12;3641:34;3709:6;3698:9;3694:22;3684:32;;3754:7;3747:4;3743:2;3739:13;3735:27;3725:55;;3776:1;3773;3766:12;3725:55;3812:2;3799:16;3834:4;3857:2;3853;3850:10;3847:36;;;3863:18;;:::i;:::-;3909:2;3906:1;3902:10;3941:2;3935:9;4004:2;4000:7;3995:2;3991;3987:11;3983:25;3975:6;3971:38;4059:6;4047:10;4044:22;4039:2;4027:10;4024:18;4021:46;4018:72;;;4070:18;;:::i;:::-;4106:2;4099:22;4156:18;;;4190:15;;;;-1:-1:-1;4232:11:1;;;4228:20;;;4260:19;;;4257:39;;;4292:1;4289;4282:12;4257:39;4316:11;;;;4336:148;4352:6;4347:3;4344:15;4336:148;;;4418:23;4437:3;4418:23;:::i;:::-;4406:36;;4369:12;;;;4462;;;;4336:148;;;4503:6;-1:-1:-1;4528:35:1;;-1:-1:-1;4544:18:1;;;4528:35;:::i;:::-;4518:45;;;;;;3378:1191;;;;;:::o;4574:260::-;4642:6;4650;4703:2;4691:9;4682:7;4678:23;4674:32;4671:52;;;4719:1;4716;4709:12;4671:52;4742:29;4761:9;4742:29;:::i;:::-;4732:39;;4790:38;4824:2;4813:9;4809:18;4790:38;:::i;:::-;4780:48;;4574:260;;;;;:::o;5062:356::-;5264:2;5246:21;;;5283:18;;;5276:30;5342:34;5337:2;5322:18;;5315:62;5409:2;5394:18;;5062:356::o;5775:127::-;5836:10;5831:3;5827:20;5824:1;5817:31;5867:4;5864:1;5857:15;5891:4;5888:1;5881:15;5907:125;5972:9;;;5993:10;;;5990:36;;;6006:18;;:::i;6037:398::-;6239:2;6221:21;;;6278:2;6258:18;;;6251:30;6317:34;6312:2;6297:18;;6290:62;-1:-1:-1;;;6383:2:1;6368:18;;6361:32;6425:3;6410:19;;6037:398::o;6719:245::-;6786:6;6839:2;6827:9;6818:7;6814:23;6810:32;6807:52;;;6855:1;6852;6845:12;6807:52;6887:9;6881:16;6906:28;6928:5;6906:28;:::i;7378:128::-;7445:9;;;7466:11;;;7463:37;;;7480:18;;:::i;7922:217::-;7962:1;7988;7978:132;;8032:10;8027:3;8023:20;8020:1;8013:31;8067:4;8064:1;8057:15;8095:4;8092:1;8085:15;7978:132;-1:-1:-1;8124:9:1;;7922:217::o;8496:127::-;8557:10;8552:3;8548:20;8545:1;8538:31;8588:4;8585:1;8578:15;8612:4;8609:1;8602:15;8628:127;8689:10;8684:3;8680:20;8677:1;8670:31;8720:4;8717:1;8710:15;8744:4;8741:1;8734:15;8760:135;8799:3;8820:17;;;8817:43;;8840:18;;:::i;:::-;-1:-1:-1;8887:1:1;8876:13;;8760:135::o;13271:168::-;13344:9;;;13375;;13392:15;;;13386:22;;13372:37;13362:71;;13413:18;;:::i

Swarm Source

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