ETH Price: $3,100.44 (+1.05%)
Gas: 12 Gwei

Token

Spherium (SPHRI)
 

Overview

Max Total Supply

1,000,000,000 SPHRI

Holders

118

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,395,915.033145151079097397 SPHRI

Value
$0.00
0xd4cccd3857119e22384cc93a51eecd238168db0e
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:
SPHRI

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-12-07
*/

/*
Experience a Cross Chain Interoperable Ecosystem.

Website; https://www.spherium.org
Telegram: https://t.me/spheriumfi_erc
Twitter: https://twitter.com/spheriumfi_erc
Dapp: https://app.spherium.org
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

interface IUniswapRouter {
    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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

interface IUniswapFactory {
    function createPair(address tokenA, address tokenB) external returns (address uniswapPair);
    function getPair(address tokenA, address tokenB) external view returns (address uniswapPair);
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    function renounceOwnership() public onlyOwner {owner = address(0); emit OwnershipTransferred(address(0));}
    event OwnershipTransferred(address owner);
}

interface IERC20Standard {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract SPHRI is IERC20Standard, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isSpecial;
    string private constant _name = 'Spherium';
    string private constant _symbol = 'SPHRI';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 10 ** 9 * (10 ** _decimals);
    IUniswapRouter uniswapRouter;
    address public uniswapPair;
    bool private buyEnabled = false;
    bool private taxActivated = true;
    uint256 private swapFeeAfter;
    bool private swapping;
    uint256 swappedNum = 1;
    uint256 private taxSwapThresh = ( _totalSupply * 3) / 100;
    uint256 private minTokensForSwap = ( _totalSupply * 1) / 100000;
    modifier lockSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0; 
    uint256 private developmentFee = 100; 
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500; 
    uint256 private sellFee = 2500; 
    uint256 private transferFee = 2500;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x883f8ee1b61A28DA869e072aB66733132E46F088;
    address internal marketing_receiver = 0x883f8ee1b61A28DA869e072aB66733132E46F088; 
    address internal liquidity_receiver = 0x883f8ee1b61A28DA869e072aB66733132E46F088;
    uint256 public maxTxSz = ( _totalSupply * 250 ) / 10000;
    uint256 public maxTransferSiz = ( _totalSupply * 250 ) / 10000;
    uint256 public maxWallet = ( _totalSupply * 250 ) / 10000;

    constructor() Ownable(msg.sender) {
        IUniswapRouter _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IUniswapFactory(_router.factory()).createPair(address(this), _router.WETH());
        uniswapRouter = _router; uniswapPair = _pair;
        isSpecial[liquidity_receiver] = true;
        isSpecial[marketing_receiver] = true;
        isSpecial[development_receiver] = true;
        isSpecial[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    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 getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    
    function enableBuy() external onlyOwner {buyEnabled = true;}
    function swapTokensToETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function isExcluded(address sender, address recipient) internal view returns (bool) {
        return !isSpecial[sender] && !isSpecial[recipient];
    }
    
    function getTax(address sender, address recipient) internal view returns (uint256) {
        if(recipient == uniswapPair){return sellFee;}
        if(sender == uniswapPair){return totalFee;}
        return transferFee;
    }

    function chargeTaxFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTax(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTax(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTax(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }
    
    function canSwapLiquidfiy(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokensForSwap;
        bool aboveThreshold = balanceOf(address(this)) >= minTokensForSwap;
        return !swapping && taxActivated && buyEnabled && aboveMin && !isSpecial[sender] && recipient == uniswapPair && swapFeeAfter >= swappedNum && aboveThreshold;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!isSpecial[sender] && !isSpecial[recipient]){require(buyEnabled, "buyEnabled");}
        if(!isSpecial[sender] && !isSpecial[recipient] && recipient != address(uniswapPair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxWallet, "Exceeds maximum wallet amount.");}
        if(sender != uniswapPair){require(amount <= maxTransferSiz || isSpecial[sender] || isSpecial[recipient], "TX Limit Exceeded");}
        require(amount <= maxTxSz || isSpecial[sender] || isSpecial[recipient], "TX Limit Exceeded"); 
        if(recipient == uniswapPair && !isSpecial[sender]){swapFeeAfter += uint256(1);}
        if(canSwapLiquidfiy(sender, recipient, amount)){swapTokensBackForLiquidify(min(balanceOf(address(this)), taxSwapThresh)); swapFeeAfter = uint256(0);}
        if (!buyEnabled || !isSpecial[sender]) { _balances[sender] = _balances[sender].sub(amount); }
        uint256 amountReceived = isExcluded(sender, recipient) ? chargeTaxFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function updateTaxParams(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 100%");
    }

    function updateTxParams(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        maxTxSz = newTx; maxTransferSiz = newTransfer; maxWallet = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? b : a;
    }
    function swapTokensBackForLiquidify(uint256 tokens) private lockSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensToETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSpecial","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferSiz","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxSz","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"updateTaxParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"updateTxParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004c8565b6200002290633b9aca00620004e0565b60048190556006805461ffff60a01b1916600160a81b179055600160095560649062000050906003620004e0565b6200005c9190620004fa565b600a55620186a06004546001620000749190620004e0565b620000809190620004fa565b600b556000600c819055600d8190556064600e55600f556109c46010819055601181905560125561271060138190556014805473883f8ee1b61a28da869e072ab66733132e46f0886001600160a01b0319918216811790925560158054821683179055601680549091169091179055600454620000ff9060fa620004e0565b6200010b9190620004fa565b60175561271060045460fa620001229190620004e0565b6200012e9190620004fa565b60185561271060045460fa620001459190620004e0565b620001519190620004fa565b6019553480156200016157600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef91906200051d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026391906200051d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d791906200051d565b600580546001600160a01b038086166001600160a01b03199283161790925560068054838516921691909117905560165481166000908152600360209081526040808320805460ff199081166001908117909255601554861685528285208054821683179055601454909516845281842080548616821790553380855282852080549096168217909555600454925280832082905551939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620003a391815260200190565b60405180910390a3505062000548565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200040a578160001904821115620003ee57620003ee620003b3565b80851615620003fc57918102915b93841c9390800290620003ce565b509250929050565b6000826200042357506001620004c2565b816200043257506000620004c2565b81600181146200044b5760028114620004565762000476565b6001915050620004c2565b60ff8411156200046a576200046a620003b3565b50506001821b620004c2565b5060208310610133831016604e8410600b84101617156200049b575081810a620004c2565b620004a78383620003c9565b8060001904821115620004be57620004be620003b3565b0290505b92915050565b6000620004d960ff84168362000412565b9392505050565b8082028115828204841417620004c257620004c2620003b3565b6000826200051857634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200053057600080fd5b81516001600160a01b0381168114620004d957600080fd5b61188e80620005586000396000f3fe60806040526004361061012e5760003560e01c806395d89b41116100ab578063c816841b1161006f578063c816841b1461038d578063db3fc684146103ad578063dd62ed3e146103c3578063f2fde38b14610409578063f8b45b0514610429578063fe257aa21461043f57600080fd5b806395d89b41146102da5780639c6fe5fb14610308578063a335239b14610338578063a9059cbb1461034d578063abc88ca41461036d57600080fd5b8063313ce567116100f2578063313ce5671461021f578063609c9a861461023b57806370a082311461025d578063715018a614610293578063893d20e8146102a857600080fd5b806306fdde031461013a578063095ea7b31461017d57806318160ddd146101ad57806323b872dd146101d05780632f54bf6e146101f057600080fd5b3661013557005b600080fd5b34801561014657600080fd5b50604080518082019091526008815267537068657269756d60c01b60208201525b6040516101749190611528565b60405180910390f35b34801561018957600080fd5b5061019d61019836600461158e565b610455565b6040519015158152602001610174565b3480156101b957600080fd5b506101c261046c565b604051908152602001610174565b3480156101dc57600080fd5b5061019d6101eb3660046115ba565b6104dd565b3480156101fc57600080fd5b5061019d61020b3660046115fb565b6000546001600160a01b0391821691161490565b34801561022b57600080fd5b5060405160128152602001610174565b34801561024757600080fd5b5061025b610256366004611618565b610547565b005b34801561026957600080fd5b506101c26102783660046115fb565b6001600160a01b031660009081526001602052604090205490565b34801561029f57600080fd5b5061025b610691565b3480156102b457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610174565b3480156102e657600080fd5b50604080518082019091526005815264535048524960d81b6020820152610167565b34801561031457600080fd5b5061019d6103233660046115fb565b60036020526000908152604090205460ff1681565b34801561034457600080fd5b5061025b610700565b34801561035957600080fd5b5061019d61036836600461158e565b61073f565b34801561037957600080fd5b5061025b610388366004611644565b61074c565b34801561039957600080fd5b506006546102c2906001600160a01b031681565b3480156103b957600080fd5b506101c260175481565b3480156103cf57600080fd5b506101c26103de366004611690565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561041557600080fd5b5061025b6104243660046115fb565b610821565b34801561043557600080fd5b506101c260195481565b34801561044b57600080fd5b506101c260185481565b600061046233848461089f565b5060015b92915050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460045491926104d89290916104d291906109c3565b906109c3565b905090565b60006104ea8484846109cf565b61053c843361053785604051806060016040528060288152602001611831602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610ee7565b61089f565b5060015b9392505050565b6000546001600160a01b0316331461057a5760405162461bcd60e51b8152600401610571906116c9565b60405180910390fd5b600061059d61271061059786600454610f1390919063ffffffff16565b90610f1f565b905060006105bc61271061059786600454610f1390919063ffffffff16565b905060006105db61271061059786600454610f1390919063ffffffff16565b601784905560188390556019819055905060006106076103e8610597600561060161046c565b90610f13565b90508084101580156106195750808310155b80156106255750808210155b6106885760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610571565b50505050505050565b6000546001600160a01b031633146106bb5760405162461bcd60e51b8152600401610571906116c9565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461072a5760405162461bcd60e51b8152600401610571906116c9565b6006805460ff60a01b1916600160a01b179055565b60006104623384846109cf565b6000546001600160a01b031633146107765760405162461bcd60e51b8152600401610571906116c9565b600c879055600d869055600f859055600e84905560108390556011829055601281905560135483118015906107af575060135460115411155b80156107bf575060135460125411155b6106885760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b6064820152608401610571565b6000546001600160a01b0316331461084b5760405162461bcd60e51b8152600401610571906116c9565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610571565b6001600160a01b0382166109625760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610571565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061054082846116ff565b6001600160a01b038316610a335760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610571565b6001600160a01b038216610a955760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610571565b6001600160a01b03831660009081526003602052604090205460ff16158015610ad757506001600160a01b03821660009081526003602052604090205460ff16155b15610b2257600654600160a01b900460ff16610b225760405162461bcd60e51b815260206004820152600a602482015269189d5e515b98589b195960b21b6044820152606401610571565b6001600160a01b03831660009081526003602052604090205460ff16158015610b6457506001600160a01b03821660009081526003602052604090205460ff16155b8015610b7e57506006546001600160a01b03838116911614155b8015610b9557506001600160a01b03821661dead14155b15610c0e576019546001600160a01b038316600090815260016020526040902054610bc09083610f2b565b1115610c0e5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610571565b6006546001600160a01b03848116911614610caf5760185481111580610c4c57506001600160a01b03831660009081526003602052604090205460ff165b80610c6f57506001600160a01b03821660009081526003602052604090205460ff165b610caf5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610571565b60175481111580610cd857506001600160a01b03831660009081526003602052604090205460ff165b80610cfb57506001600160a01b03821660009081526003602052604090205460ff165b610d3b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610571565b6006546001600160a01b038381169116148015610d7157506001600160a01b03831660009081526003602052604090205460ff16155b15610d8f57600160076000828254610d899190611712565b90915550505b610d9a838383610f37565b15610dca5730600090815260016020526040902054610dc490610dbf90600a54610ff0565b611005565b60006007555b600654600160a01b900460ff161580610dfc57506001600160a01b03831660009081526003602052604090205460ff16155b15610e3e576001600160a01b038316600090815260016020526040902054610e2490826109c3565b6001600160a01b0384166000908152600160205260409020555b6000610e4a8484611182565b610e545781610e5f565b610e5f8484846111c8565b6001600160a01b038416600090815260016020526040902054909150610e859082610f2b565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ed99085815260200190565b60405180910390a350505050565b60008184841115610f0b5760405162461bcd60e51b81526004016105719190611528565b505050900390565b60006105408284611725565b6000610540828461173c565b60006105408284611712565b600b5430600090815260016020526040812054600854919280851015929110159060ff16158015610f715750600654600160a81b900460ff165b8015610f865750600654600160a01b900460ff165b8015610f8f5750815b8015610fb457506001600160a01b03861660009081526003602052604090205460ff16155b8015610fcd57506006546001600160a01b038681169116145b8015610fdd575060095460075410155b8015610fe65750805b9695505050505050565b6000818311610fff5782610540565b50919050565b6008805460ff19166001908117909155600e54600d54600c5460009361103f93600293610601939192611039928391610f2b565b90610f2b565b9050600061105c82610597600c5486610f1390919063ffffffff16565b9050600061106a84836109c3565b905047611076826112cf565b600061108247836109c3565b905060006110a561109e600c54886109c390919063ffffffff16565b8390610f1f565b905060006110be600c5483610f1390919063ffffffff16565b905080156110d0576110d08682611429565b600d546000906110e590610601856002610f13565b90508015611129576015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611127573d6000803e3d6000fd5b505b47801561116c576014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561116a573d6000803e3d6000fd5b505b50506008805460ff191690555050505050505050565b6001600160a01b03821660009081526003602052604081205460ff161580156105405750506001600160a01b031660009081526003602052604090205460ff1615919050565b6000806111d585856114dd565b11156112c85760006111f86111ea86866114dd565b601354610601908690610f1f565b306000908152600160205260409020549091506112159082610f2b565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112669085815260200190565b60405180910390a36000600f5411801561128a5750600f5461128886866114dd565b115b156112b6576112b63061dead6112b1600f5461060160135489610f1f90919063ffffffff16565b6109cf565b6112c083826109c3565b915050610540565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106113045761130461175e565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113819190611774565b816001815181106113945761139461175e565b6001600160a01b0392831660209182029290920101526005546113ba913091168461089f565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906113f3908590600090869030904290600401611791565b600060405180830381600087803b15801561140d57600080fd5b505af1158015611421573d6000803e3d6000fd5b505050505050565b6005546114419030906001600160a01b03168461089f565b60055460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156114b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114d69190611802565b5050505050565b6006546000906001600160a01b03908116908316036114ff5750601154610466565b6006546001600160a01b039081169084160361151e5750601054610466565b5060125492915050565b600060208083528351808285015260005b8181101561155557858101830151858201604001528201611539565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461158b57600080fd5b50565b600080604083850312156115a157600080fd5b82356115ac81611576565b946020939093013593505050565b6000806000606084860312156115cf57600080fd5b83356115da81611576565b925060208401356115ea81611576565b929592945050506040919091013590565b60006020828403121561160d57600080fd5b813561054081611576565b60008060006060848603121561162d57600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561165f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080604083850312156116a357600080fd5b82356116ae81611576565b915060208301356116be81611576565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610466576104666116e9565b80820180821115610466576104666116e9565b8082028115828204841417610466576104666116e9565b60008261175957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178657600080fd5b815161054081611576565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e15784516001600160a01b0316835293830193918301916001016117bc565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561181757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122044bee95ceb53326be212459d83f89e81c5df92977177ddecf9ae89ae2fd04dc064736f6c63430008130033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806395d89b41116100ab578063c816841b1161006f578063c816841b1461038d578063db3fc684146103ad578063dd62ed3e146103c3578063f2fde38b14610409578063f8b45b0514610429578063fe257aa21461043f57600080fd5b806395d89b41146102da5780639c6fe5fb14610308578063a335239b14610338578063a9059cbb1461034d578063abc88ca41461036d57600080fd5b8063313ce567116100f2578063313ce5671461021f578063609c9a861461023b57806370a082311461025d578063715018a614610293578063893d20e8146102a857600080fd5b806306fdde031461013a578063095ea7b31461017d57806318160ddd146101ad57806323b872dd146101d05780632f54bf6e146101f057600080fd5b3661013557005b600080fd5b34801561014657600080fd5b50604080518082019091526008815267537068657269756d60c01b60208201525b6040516101749190611528565b60405180910390f35b34801561018957600080fd5b5061019d61019836600461158e565b610455565b6040519015158152602001610174565b3480156101b957600080fd5b506101c261046c565b604051908152602001610174565b3480156101dc57600080fd5b5061019d6101eb3660046115ba565b6104dd565b3480156101fc57600080fd5b5061019d61020b3660046115fb565b6000546001600160a01b0391821691161490565b34801561022b57600080fd5b5060405160128152602001610174565b34801561024757600080fd5b5061025b610256366004611618565b610547565b005b34801561026957600080fd5b506101c26102783660046115fb565b6001600160a01b031660009081526001602052604090205490565b34801561029f57600080fd5b5061025b610691565b3480156102b457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610174565b3480156102e657600080fd5b50604080518082019091526005815264535048524960d81b6020820152610167565b34801561031457600080fd5b5061019d6103233660046115fb565b60036020526000908152604090205460ff1681565b34801561034457600080fd5b5061025b610700565b34801561035957600080fd5b5061019d61036836600461158e565b61073f565b34801561037957600080fd5b5061025b610388366004611644565b61074c565b34801561039957600080fd5b506006546102c2906001600160a01b031681565b3480156103b957600080fd5b506101c260175481565b3480156103cf57600080fd5b506101c26103de366004611690565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561041557600080fd5b5061025b6104243660046115fb565b610821565b34801561043557600080fd5b506101c260195481565b34801561044b57600080fd5b506101c260185481565b600061046233848461089f565b5060015b92915050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460045491926104d89290916104d291906109c3565b906109c3565b905090565b60006104ea8484846109cf565b61053c843361053785604051806060016040528060288152602001611831602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610ee7565b61089f565b5060015b9392505050565b6000546001600160a01b0316331461057a5760405162461bcd60e51b8152600401610571906116c9565b60405180910390fd5b600061059d61271061059786600454610f1390919063ffffffff16565b90610f1f565b905060006105bc61271061059786600454610f1390919063ffffffff16565b905060006105db61271061059786600454610f1390919063ffffffff16565b601784905560188390556019819055905060006106076103e8610597600561060161046c565b90610f13565b90508084101580156106195750808310155b80156106255750808210155b6106885760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610571565b50505050505050565b6000546001600160a01b031633146106bb5760405162461bcd60e51b8152600401610571906116c9565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461072a5760405162461bcd60e51b8152600401610571906116c9565b6006805460ff60a01b1916600160a01b179055565b60006104623384846109cf565b6000546001600160a01b031633146107765760405162461bcd60e51b8152600401610571906116c9565b600c879055600d869055600f859055600e84905560108390556011829055601281905560135483118015906107af575060135460115411155b80156107bf575060135460125411155b6106885760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b6064820152608401610571565b6000546001600160a01b0316331461084b5760405162461bcd60e51b8152600401610571906116c9565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610571565b6001600160a01b0382166109625760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610571565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061054082846116ff565b6001600160a01b038316610a335760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610571565b6001600160a01b038216610a955760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610571565b6001600160a01b03831660009081526003602052604090205460ff16158015610ad757506001600160a01b03821660009081526003602052604090205460ff16155b15610b2257600654600160a01b900460ff16610b225760405162461bcd60e51b815260206004820152600a602482015269189d5e515b98589b195960b21b6044820152606401610571565b6001600160a01b03831660009081526003602052604090205460ff16158015610b6457506001600160a01b03821660009081526003602052604090205460ff16155b8015610b7e57506006546001600160a01b03838116911614155b8015610b9557506001600160a01b03821661dead14155b15610c0e576019546001600160a01b038316600090815260016020526040902054610bc09083610f2b565b1115610c0e5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610571565b6006546001600160a01b03848116911614610caf5760185481111580610c4c57506001600160a01b03831660009081526003602052604090205460ff165b80610c6f57506001600160a01b03821660009081526003602052604090205460ff165b610caf5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610571565b60175481111580610cd857506001600160a01b03831660009081526003602052604090205460ff165b80610cfb57506001600160a01b03821660009081526003602052604090205460ff165b610d3b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610571565b6006546001600160a01b038381169116148015610d7157506001600160a01b03831660009081526003602052604090205460ff16155b15610d8f57600160076000828254610d899190611712565b90915550505b610d9a838383610f37565b15610dca5730600090815260016020526040902054610dc490610dbf90600a54610ff0565b611005565b60006007555b600654600160a01b900460ff161580610dfc57506001600160a01b03831660009081526003602052604090205460ff16155b15610e3e576001600160a01b038316600090815260016020526040902054610e2490826109c3565b6001600160a01b0384166000908152600160205260409020555b6000610e4a8484611182565b610e545781610e5f565b610e5f8484846111c8565b6001600160a01b038416600090815260016020526040902054909150610e859082610f2b565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ed99085815260200190565b60405180910390a350505050565b60008184841115610f0b5760405162461bcd60e51b81526004016105719190611528565b505050900390565b60006105408284611725565b6000610540828461173c565b60006105408284611712565b600b5430600090815260016020526040812054600854919280851015929110159060ff16158015610f715750600654600160a81b900460ff165b8015610f865750600654600160a01b900460ff165b8015610f8f5750815b8015610fb457506001600160a01b03861660009081526003602052604090205460ff16155b8015610fcd57506006546001600160a01b038681169116145b8015610fdd575060095460075410155b8015610fe65750805b9695505050505050565b6000818311610fff5782610540565b50919050565b6008805460ff19166001908117909155600e54600d54600c5460009361103f93600293610601939192611039928391610f2b565b90610f2b565b9050600061105c82610597600c5486610f1390919063ffffffff16565b9050600061106a84836109c3565b905047611076826112cf565b600061108247836109c3565b905060006110a561109e600c54886109c390919063ffffffff16565b8390610f1f565b905060006110be600c5483610f1390919063ffffffff16565b905080156110d0576110d08682611429565b600d546000906110e590610601856002610f13565b90508015611129576015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611127573d6000803e3d6000fd5b505b47801561116c576014546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561116a573d6000803e3d6000fd5b505b50506008805460ff191690555050505050505050565b6001600160a01b03821660009081526003602052604081205460ff161580156105405750506001600160a01b031660009081526003602052604090205460ff1615919050565b6000806111d585856114dd565b11156112c85760006111f86111ea86866114dd565b601354610601908690610f1f565b306000908152600160205260409020549091506112159082610f2b565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112669085815260200190565b60405180910390a36000600f5411801561128a5750600f5461128886866114dd565b115b156112b6576112b63061dead6112b1600f5461060160135489610f1f90919063ffffffff16565b6109cf565b6112c083826109c3565b915050610540565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106113045761130461175e565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113819190611774565b816001815181106113945761139461175e565b6001600160a01b0392831660209182029290920101526005546113ba913091168461089f565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906113f3908590600090869030904290600401611791565b600060405180830381600087803b15801561140d57600080fd5b505af1158015611421573d6000803e3d6000fd5b505050505050565b6005546114419030906001600160a01b03168461089f565b60055460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156114b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114d69190611802565b5050505050565b6006546000906001600160a01b03908116908316036114ff5750601154610466565b6006546001600160a01b039081169084160361151e5750601054610466565b5060125492915050565b600060208083528351808285015260005b8181101561155557858101830151858201604001528201611539565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461158b57600080fd5b50565b600080604083850312156115a157600080fd5b82356115ac81611576565b946020939093013593505050565b6000806000606084860312156115cf57600080fd5b83356115da81611576565b925060208401356115ea81611576565b929592945050506040919091013590565b60006020828403121561160d57600080fd5b813561054081611576565b60008060006060848603121561162d57600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561165f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080604083850312156116a357600080fd5b82356116ae81611576565b915060208301356116be81611576565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610466576104666116e9565b80820180821115610466576104666116e9565b8082028115828204841417610466576104666116e9565b60008261175957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178657600080fd5b815161054081611576565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e15784516001600160a01b0316835293830193918301916001016117bc565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561181757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122044bee95ceb53326be212459d83f89e81c5df92977177ddecf9ae89ae2fd04dc064736f6c63430008130033

Deployed Bytecode Sourcemap

5022:9975:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7402:67;;;;;;;;;;-1:-1:-1;7462:5:0;;;;;;;;;;;;-1:-1:-1;;;7462:5:0;;;;7402:67;;;;;;;:::i;:::-;;;;;;;;8096:133;;;;;;;;;;-1:-1:-1;8096:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8096:133:0;1023:187:1;8235:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;8235:132:0;1215:177:1;11741:309:0;;;;;;;;;;-1:-1:-1;11741:309:0;;;;;:::i;:::-;;:::i;3729:87::-;;;;;;;;;;-1:-1:-1;3729:87:0;;;;;:::i;:::-;3784:4;3809:5;-1:-1:-1;;;;;3798:16:0;;;3809:5;;3798:16;;3729:87;7552:67;;;;;;;;;;-1:-1:-1;7552:67:0;;5406:2;2252:36:1;;2240:2;2225:18;7552:67:0;2110:184:1;12902:539:0;;;;;;;;;;-1:-1:-1;12902:539:0;;;;;:::i;:::-;;:::i;:::-;;7709:103;;;;;;;;;;-1:-1:-1;7709:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7792:18:0;7775:7;7792:18;;;:9;:18;;;;;;;7709:103;3939:106;;;;;;;;;;;;;:::i;7625:78::-;;;;;;;;;;-1:-1:-1;7677:7:0;7695:5;-1:-1:-1;;;;;7695:5:0;7625:78;;;-1:-1:-1;;;;;2784:32:1;;;2766:51;;2754:2;2739:18;7625:78:0;2620:203:1;7475:71:0;;;;;;;;;;-1:-1:-1;7537:7:0;;;;;;;;;;;;-1:-1:-1;;;7537:7:0;;;;7475:71;;5225:42;;;;;;;;;;-1:-1:-1;5225:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8379:60;;;;;;;;;;;;;:::i;7818:139::-;;;;;;;;;;-1:-1:-1;7818:139:0;;;;;:::i;:::-;;:::i;12401:493::-;;;;;;;;;;-1:-1:-1;12401:493:0;;;;;:::i;:::-;;:::i;5515:26::-;;;;;;;;;;-1:-1:-1;5515:26:0;;;;-1:-1:-1;;;;;5515:26:0;;;6577:55;;;;;;;;;;;;;;;;7963:127;;;;;;;;;;-1:-1:-1;7963:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8061:18:0;;;8044:7;8061:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7963:127;3822:111;;;;;;;;;;-1:-1:-1;3822:111:0;;;;;:::i;:::-;;:::i;6708:57::-;;;;;;;;;;;;;;;;6639:62;;;;;;;;;;;;;;;;8096:133;8171:4;8178:37;8187:10;8199:7;8208:6;8178:8;:37::i;:::-;-1:-1:-1;8223:4:0;8096:133;;;;;:::o;8235:132::-;7792:9;:18;;;;6264:42;8288:7;7792:18;;;;;8305:12;;8288:7;;8305:60;;7792:18;;8305:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8298:67;;8235:132;:::o;11741:309::-;11839:4;11856:36;11866:6;11874:9;11885:6;11856:9;:36::i;:::-;11903:117;11912:6;11920:10;11932:87;11968:6;11932:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11932:19:0;;;;;;:11;:19;;;;;;;;11952:10;11932:31;;;;;;;;;:87;:35;:87::i;:::-;11903:8;:117::i;:::-;-1:-1:-1;12038:4:0;11741:309;;;;;;:::o;12902:539::-;3784:4;3809:5;-1:-1:-1;;;;;3809:5:0;3696:10;3798:16;3680:38;;;;-1:-1:-1;;;3680:38:0;;;;;;;:::i;:::-;;;;;;;;;13002:13:::1;13018:33;13045:5;13018:22;13035:4;13018:12;;:16;;:22;;;;:::i;:::-;:26:::0;::::1;:33::i;:::-;13002:49;;13053:19;13075:34;13103:5;13075:23;13092:5;13075:12;;:16;;:23;;;;:::i;:34::-;13053:56;;13111:17;13131:36;13161:5;13131:25;13148:7;13131:12;;:16;;:25;;;;:::i;:36::-;13178:7;:15:::0;;;13195:14:::1;:28:::0;;;13225:9:::1;:21:::0;;;13111:56;-1:-1:-1;;13273:30:0::1;13298:4;13273:20;13291:1;13273:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;13257:46;;13331:5;13322;:14;;:38;;;;;13355:5;13340:11;:20;;13322:38;:60;;;;;13377:5;13364:9;:18;;13322:60;13314:119;;;::::0;-1:-1:-1;;;13314:119:0;;4614:2:1;13314:119:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:44;4797:19;;13314:119:0::1;4412:410:1::0;13314:119:0::1;12991:450;;;;12902:539:::0;;;:::o;3939:106::-;3784:4;3809:5;-1:-1:-1;;;;;3809:5:0;3696:10;3798:16;3680:38;;;;-1:-1:-1;;;3680:38:0;;;;;;;:::i;:::-;4002:1:::1;3986:18:::0;;-1:-1:-1;;;;;;3986:18:0::1;::::0;;4011:32:::1;::::0;2766:51:1;;;4011:32:0::1;::::0;2754:2:1;2739:18;4011:32:0::1;;;;;;;3939:106::o:0;8379:60::-;3784:4;3809:5;-1:-1:-1;;;;;3809:5:0;3696:10;3798:16;3680:38;;;;-1:-1:-1;;;3680:38:0;;;;;;;:::i;:::-;8420:10:::1;:17:::0;;-1:-1:-1;;;;8420:17:0::1;-1:-1:-1::0;;;8420:17:0::1;::::0;;8379:60::o;7818:139::-;7896:4;7903:40;7913:10;7925:9;7936:6;7903:9;:40::i;12401:493::-;3784:4;3809:5;-1:-1:-1;;;;;3809:5:0;3696:10;3798:16;3680:38;;;;-1:-1:-1;;;3680:38:0;;;;;;;:::i;:::-;12580:12:::1;:25:::0;;;12607:12:::1;:25:::0;;;12634:7:::1;:15:::0;;;12651:14:::1;:29:::0;;;12682:8:::1;:17:::0;;;12701:7:::1;:15:::0;;;12718:11:::1;:20:::0;;;12769:11:::1;::::0;12757:23;::::1;::::0;::::1;::::0;:49:::1;;;12795:11;;12784:7;;:22;;12757:49;:79;;;;;12825:11;;12810;;:26;;12757:79;12749:137;;;::::0;-1:-1:-1;;;12749:137:0;;5029:2:1;12749:137:0::1;::::0;::::1;5011:21:1::0;5068:2;5048:18;;;5041:30;5107:34;5087:18;;;5080:62;-1:-1:-1;;;5158:18:1;;;5151:43;5211:19;;12749:137:0::1;4827:409:1::0;3822:111:0;3784:4;3809:5;-1:-1:-1;;;;;3809:5:0;3696:10;3798:16;3680:38;;;;-1:-1:-1;;;3680:38:0;;;;;;;:::i;:::-;3888:5:::1;:11:::0;;-1:-1:-1;;;;;;3888:11:0::1;-1:-1:-1::0;;;;;3888:11:0;::::1;::::0;;::::1;::::0;;;3906:25:::1;::::0;2766:51:1;;;3906:25:0::1;::::0;2754:2:1;2739:18;3906:25:0::1;;;;;;;3822:111:::0;:::o;12058:335::-;-1:-1:-1;;;;;12151:19:0;;12143:68;;;;-1:-1:-1;;;12143:68:0;;5659:2:1;12143:68:0;;;5641:21:1;5698:2;5678:18;;;5671:30;5737:34;5717:18;;;5710:62;-1:-1:-1;;;5788:18:1;;;5781:34;5832:19;;12143:68:0;5457:400:1;12143:68:0;-1:-1:-1;;;;;12230:21:0;;12222:68;;;;-1:-1:-1;;;12222:68:0;;6064:2:1;12222:68:0;;;6046:21:1;6103:2;6083:18;;;6076:30;6142:34;6122:18;;;6115:62;-1:-1:-1;;;6193:18:1;;;6186:32;6235:19;;12222:68:0;5862:398:1;12222:68:0;-1:-1:-1;;;;;12301:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12353:32;;1361:25:1;;;12353:32:0;;1334:18:1;12353:32:0;;;;;;;12058:335;;;:::o;1522:98::-;1580:7;1607:5;1611:1;1607;:5;:::i;10319:1410::-;-1:-1:-1;;;;;10416:20:0;;10408:70;;;;-1:-1:-1;;;10408:70:0;;6732:2:1;10408:70:0;;;6714:21:1;6771:2;6751:18;;;6744:30;6810:34;6790:18;;;6783:62;-1:-1:-1;;;6861:18:1;;;6854:35;6906:19;;10408:70:0;6530:401:1;10408:70:0;-1:-1:-1;;;;;10497:23:0;;10489:71;;;;-1:-1:-1;;;10489:71:0;;7138:2:1;10489:71:0;;;7120:21:1;7177:2;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;-1:-1:-1;;;7267:18:1;;;7260:33;7310:19;;10489:71:0;6936:399:1;10489:71:0;-1:-1:-1;;;;;10575:17:0;;;;;;:9;:17;;;;;;;;10574:18;:43;;;;-1:-1:-1;;;;;;10597:20:0;;;;;;:9;:20;;;;;;;;10596:21;10574:43;10571:83;;;10627:10;;-1:-1:-1;;;10627:10:0;;;;10619:33;;;;-1:-1:-1;;;10619:33:0;;7542:2:1;10619:33:0;;;7524:21:1;7581:2;7561:18;;;7554:30;-1:-1:-1;;;7600:18:1;;;7593:40;7650:18;;10619:33:0;7340:334:1;10619:33:0;-1:-1:-1;;;;;10668:17:0;;;;;;:9;:17;;;;;;;;10667:18;:43;;;;-1:-1:-1;;;;;;10690:20:0;;;;;;:9;:20;;;;;;;;10689:21;10667:43;:80;;;;-1:-1:-1;10735:11:0;;-1:-1:-1;;;;;10714:33:0;;;10735:11;;10714:33;;10667:80;:110;;;;-1:-1:-1;;;;;;10751:26:0;;6264:42;10751:26;;10667:110;10664:217;;;10835:9;;-1:-1:-1;;;;;10798:20:0;;;;;;:9;:20;;;;;;:32;;10823:6;10798:24;:32::i;:::-;10797:47;;10789:90;;;;-1:-1:-1;;;10789:90:0;;7881:2:1;10789:90:0;;;7863:21:1;7920:2;7900:18;;;7893:30;7959:32;7939:18;;;7932:60;8009:18;;10789:90:0;7679:354:1;10789:90:0;10904:11;;-1:-1:-1;;;;;10894:21:0;;;10904:11;;10894:21;10891:127;;10935:14;;10925:6;:24;;:45;;;-1:-1:-1;;;;;;10953:17:0;;;;;;:9;:17;;;;;;;;10925:45;:69;;;-1:-1:-1;;;;;;10974:20:0;;;;;;:9;:20;;;;;;;;10925:69;10917:99;;;;-1:-1:-1;;;10917:99:0;;8240:2:1;10917:99:0;;;8222:21:1;8279:2;8259:18;;;8252:30;-1:-1:-1;;;8298:18:1;;;8291:47;8355:18;;10917:99:0;8038:341:1;10917:99:0;11046:7;;11036:6;:17;;:38;;;-1:-1:-1;;;;;;11057:17:0;;;;;;:9;:17;;;;;;;;11036:38;:62;;;-1:-1:-1;;;;;;11078:20:0;;;;;;:9;:20;;;;;;;;11036:62;11028:92;;;;-1:-1:-1;;;11028:92:0;;8240:2:1;11028:92:0;;;8222:21:1;8279:2;8259:18;;;8252:30;-1:-1:-1;;;8298:18:1;;;8291:47;8355:18;;11028:92:0;8038:341:1;11028:92:0;11148:11;;-1:-1:-1;;;;;11135:24:0;;;11148:11;;11135:24;:46;;;;-1:-1:-1;;;;;;11164:17:0;;;;;;:9;:17;;;;;;;;11163:18;11135:46;11132:79;;;11207:1;11183:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;11132:79:0;11224:43;11241:6;11249:9;11260:6;11224:16;:43::i;:::-;11221:149;;;11318:4;7775:7;7792:18;;;:9;:18;;;;;;11269:72;;11296:44;;11326:13;;11296:3;:44::i;:::-;11269:26;:72::i;:::-;11366:1;11343:12;:25;11221:149;11385:10;;-1:-1:-1;;;11385:10:0;;;;11384:11;;:33;;-1:-1:-1;;;;;;11400:17:0;;;;;;:9;:17;;;;;;;;11399:18;11384:33;11380:93;;;-1:-1:-1;;;;;11441:17:0;;;;;;:9;:17;;;;;;:29;;11463:6;11441:21;:29::i;:::-;-1:-1:-1;;;;;11421:17:0;;;;;;:9;:17;;;;;:49;11380:93;11483:22;11508:29;11519:6;11527:9;11508:10;:29::i;:::-;:80;;11582:6;11508:80;;;11540:39;11553:6;11561:9;11572:6;11540:12;:39::i;:::-;-1:-1:-1;;;;;11622:20:0;;;;;;:9;:20;;;;;;11483:105;;-1:-1:-1;11622:40:0;;11483:105;11622:24;:40::i;:::-;-1:-1:-1;;;;;11599:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11678:43;;;;;;;;;;11706:14;1361:25:1;;1349:2;1334:18;;1215:177;11678:43:0;;;;;;;;10397:1332;10319:1410;;;:::o;1946:240::-;2066:7;2127:12;2119:6;;;;2111:29;;;;-1:-1:-1;;;2111:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2162:5:0;;;1946:240::o;1628:98::-;1686:7;1713:5;1717:1;1713;:5;:::i;1734:98::-;1792:7;1819:5;1823:1;1819;:5;:::i;1416:98::-;1474:7;1501:5;1505:1;1501;:5;:::i;9900:411::-;10043:16;;10110:4;10000;7792:18;;;:9;:18;;;;;;10155:8;;10000:4;;10033:26;;;;;-1:-1:-1;;10092:44:0;;10155:8;;10154:9;:25;;;;-1:-1:-1;10167:12:0;;-1:-1:-1;;;10167:12:0;;;;10154:25;:39;;;;-1:-1:-1;10183:10:0;;-1:-1:-1;;;10183:10:0;;;;10154:39;:51;;;;;10197:8;10154:51;:73;;;;-1:-1:-1;;;;;;10210:17:0;;;;;;:9;:17;;;;;;;;10209:18;10154:73;:101;;;;-1:-1:-1;10244:11:0;;-1:-1:-1;;;;;10231:24:0;;;10244:11;;10231:24;10154:101;:131;;;;;10275:10;;10259:12;;:26;;10154:131;:149;;;;;10289:14;10154:149;10147:156;9900:411;-1:-1:-1;;;;;;9900:411:0:o;13449:105::-;13506:7;13536:1;13532;:5;13531:15;;13545:1;13531:15;;;-1:-1:-1;13541:1:0;13449:105;-1:-1:-1;13449:105:0:o;13560:1071::-;5870:8;:15;;-1:-1:-1;;5870:15:0;5881:4;5870:15;;;;;;13706:14:::1;::::0;13688:12:::1;::::0;13664::::1;::::0;5870:8;;13663:66:::1;::::0;13727:1:::1;::::0;13664:57:::1;::::0;13706:14;;13664:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;13663:66::-;13640:89;;13740:32;13775:42;13804:12;13775:24;13786:12;;13775:6;:10;;:24;;;;:::i;:42::-;13740:77:::0;-1:-1:-1;13828:14:0::1;13845:36;:6:::0;13740:77;13845:10:::1;:36::i;:::-;13828:53:::0;-1:-1:-1;13917:21:0::1;13949:23;13828:53:::0;13949:15:::1;:23::i;:::-;13983:20;14006:41;:21;14032:14:::0;14006:25:::1;:41::i;:::-;13983:64;;14058:19;14079:48;14096:30;14113:12;;14096;:16;;:30;;;;:::i;:::-;14079:12:::0;;:16:::1;:48::i;:::-;14058:69;;14138:29;14170;14186:12;;14170:11;:15;;:29;;;;:::i;:::-;14138:61:::0;-1:-1:-1;14213:34:0;;14210:103:::1;;14249:61;14262:24;14288:21;14249:12;:61::i;:::-;14369:12;::::0;14323:20:::1;::::0;14346:36:::1;::::0;:18:::1;:11:::0;14362:1:::1;14346:15;:18::i;:36::-;14323:59:::0;-1:-1:-1;14396:16:0;;14393:73:::1;;14422:18;::::0;14414:50:::1;::::0;-1:-1:-1;;;;;14422:18:0;;::::1;::::0;14414:50;::::1;;;::::0;14451:12;;14422:18:::1;14414:50:::0;14422:18;14414:50;14451:12;14422:18;14414:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14393:73;14502:21;14537:28:::0;;14534:90:::1;;14575:20;::::0;14567:55:::1;::::0;-1:-1:-1;;;;;14575:20:0;;::::1;::::0;14567:55;::::1;;;::::0;14606:15;;14575:20:::1;14567:55:::0;14575:20;14567:55;14606:15;14575:20;14567:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14534:90;-1:-1:-1::0;;5890:8:0;:16;;-1:-1:-1;;5890:16:0;;;-1:-1:-1;;;;;;;;13560:1071:0:o;8907:153::-;-1:-1:-1;;;;;9010:17:0;;8985:4;9010:17;;;:9;:17;;;;;;;;9009:18;:43;;;;-1:-1:-1;;;;;;;9032:20:0;;;;;:9;:20;;;;;;;;9031:21;;8907:153;-1:-1:-1;8907:153:0:o;9308:580::-;9399:7;9450:1;9422:25;9429:6;9437:9;9422:6;:25::i;:::-;:29;9419:447;;;9463:17;9483:54;9511:25;9518:6;9526:9;9511:6;:25::i;:::-;9494:11;;9483:23;;:6;;:10;:23::i;:54::-;9593:4;9575:24;;;;:9;:24;;;;;;9463:74;;-1:-1:-1;9575:39:0;;9463:74;9575:28;:39::i;:::-;9566:4;9548:24;;;;:9;:24;;;;;;;:66;;;;9630:42;;-1:-1:-1;;;;;9630:42:0;;;;;;;9662:9;1361:25:1;;1349:2;1334:18;;1215:177;9630:42:0;;;;;;;;9704:1;9686:7;;:20;:59;;;;;9738:7;;9710:25;9717:6;9725:9;9710:6;:25::i;:::-;:35;9686:59;9683:143;;;9747:77;9765:4;6264:42;9787:36;9815:7;;9787:23;9798:11;;9787:6;:10;;:23;;;;:::i;:36::-;9747:9;:77::i;:::-;9843:21;:6;9854:9;9843:10;:21::i;:::-;9836:28;;;;;9419:447;-1:-1:-1;9874:6:0;9308:580;-1:-1:-1;;9308:580:0:o;8445:454::-;8534:16;;;8548:1;8534:16;;;;;;;;8510:21;;8534:16;;;;;;;;;;-1:-1:-1;8534:16:0;8510:40;;8579:4;8561;8566:1;8561:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8561:23:0;;;:7;;;;;;;;;;:23;;;;8605:13;;:20;;;-1:-1:-1;;;8605:20:0;;;;:13;;;;;:18;;:20;;;;;8561:7;;8605:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8595:4;8600:1;8595:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8595:30:0;;;:7;;;;;;;;;:30;8668:13;;8636:60;;8653:4;;8668:13;8684:11;8636:8;:60::i;:::-;8707:13;;:184;;-1:-1:-1;;;8707:184:0;;-1:-1:-1;;;;;8707:13:0;;;;:64;;:184;;8786:11;;8707:13;;8828:4;;8855;;8875:15;;8707:184;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8499:400;8445:454;:::o;14637:357::-;14750:13;;14718:60;;14735:4;;-1:-1:-1;;;;;14750:13:0;14766:11;14718:8;:60::i;:::-;14789:13;;14937:18;;14789:197;;-1:-1:-1;;;14789:197:0;;14859:4;14789:197;;;10755:34:1;10805:18;;;10798:34;;;14789:13:0;10848:18:1;;;10841:34;;;10891:18;;;10884:34;-1:-1:-1;;;;;14937:18:0;;;10934:19:1;;;10927:44;14970:15:0;10987:19:1;;;10980:35;14789:13:0;;;:29;;14826:9;;10689:19:1;;14789:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14637:357;;:::o;9072:228::-;9182:11;;9146:7;;-1:-1:-1;;;;;9182:11:0;;;9169:24;;;;9166:45;;-1:-1:-1;9202:7:0;;9195:14;;9166:45;9234:11;;-1:-1:-1;;;;;9234:11:0;;;9224:21;;;;9221:43;;-1:-1:-1;9254:8:0;;9247:15;;9221:43;-1:-1:-1;9281:11:0;;9072:228;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2299:316::-;2376:6;2384;2392;2445:2;2433:9;2424:7;2420:23;2416:32;2413:52;;;2461:1;2458;2451:12;2413:52;-1:-1:-1;;2484:23:1;;;2554:2;2539:18;;2526:32;;-1:-1:-1;2605:2:1;2590:18;;;2577:32;;2299:316;-1:-1:-1;2299:316:1:o;2828:592::-;2941:6;2949;2957;2965;2973;2981;2989;3042:3;3030:9;3021:7;3017:23;3013:33;3010:53;;;3059:1;3056;3049:12;3010:53;-1:-1:-1;;3082:23:1;;;3152:2;3137:18;;3124:32;;-1:-1:-1;3203:2:1;3188:18;;3175:32;;3254:2;3239:18;;3226:32;;-1:-1:-1;3305:3:1;3290:19;;3277:33;;-1:-1:-1;3357:3:1;3342:19;;3329:33;;-1:-1:-1;3409:3:1;3394:19;3381:33;;-1:-1:-1;2828:592:1;-1:-1:-1;2828:592:1:o;3425:388::-;3493:6;3501;3554:2;3542:9;3533:7;3529:23;3525:32;3522:52;;;3570:1;3567;3560:12;3522:52;3609:9;3596:23;3628:31;3653:5;3628:31;:::i;:::-;3678:5;-1:-1:-1;3735:2:1;3720:18;;3707:32;3748:33;3707:32;3748:33;:::i;:::-;3800:7;3790:17;;;3425:388;;;;;:::o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;6265:127::-;6326:10;6321:3;6317:20;6314:1;6307:31;6357:4;6354:1;6347:15;6381:4;6378:1;6371:15;6397:128;6464:9;;;6485:11;;;6482:37;;;6499:18;;:::i;8384:125::-;8449:9;;;8470:10;;;8467:36;;;8483:18;;:::i;8514:168::-;8587:9;;;8618;;8635:15;;;8629:22;;8615:37;8605:71;;8656:18;;:::i;8687:217::-;8727:1;8753;8743:132;;8797:10;8792:3;8788:20;8785:1;8778:31;8832:4;8829:1;8822:15;8860:4;8857:1;8850:15;8743:132;-1:-1:-1;8889:9:1;;8687:217::o;9041:127::-;9102:10;9097:3;9093:20;9090:1;9083:31;9133:4;9130:1;9123:15;9157:4;9154:1;9147:15;9173:251;9243:6;9296:2;9284:9;9275:7;9271:23;9267:32;9264:52;;;9312:1;9309;9302:12;9264:52;9344:9;9338:16;9363:31;9388:5;9363:31;:::i;9429:980::-;9691:4;9739:3;9728:9;9724:19;9770:6;9759:9;9752:25;9796:2;9834:6;9829:2;9818:9;9814:18;9807:34;9877:3;9872:2;9861:9;9857:18;9850:31;9901:6;9936;9930:13;9967:6;9959;9952:22;10005:3;9994:9;9990:19;9983:26;;10044:2;10036:6;10032:15;10018:29;;10065:1;10075:195;10089:6;10086:1;10083:13;10075:195;;;10154:13;;-1:-1:-1;;;;;10150:39:1;10138:52;;10245:15;;;;10210:12;;;;10186:1;10104:9;10075:195;;;-1:-1:-1;;;;;;;10326:32:1;;;;10321:2;10306:18;;10299:60;-1:-1:-1;;;10390:3:1;10375:19;10368:35;10287:3;9429:980;-1:-1:-1;;;9429:980:1:o;11026:306::-;11114:6;11122;11130;11183:2;11171:9;11162:7;11158:23;11154:32;11151:52;;;11199:1;11196;11189:12;11151:52;11228:9;11222:16;11212:26;;11278:2;11267:9;11263:18;11257:25;11247:35;;11322:2;11311:9;11307:18;11301:25;11291:35;;11026:306;;;;;:::o

Swarm Source

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