ETH Price: $2,640.42 (+1.36%)

Token

Pepe (PEPE)
 

Overview

Max Total Supply

420,690,000,000 PEPE

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 PEPE

Value
$0.00
0x2ab7cCA2d109238cA85813477885665E053bf7C5
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:
Pepe

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/* 
    SPDX-License-Identifier: None

    Website: https://www.pepetokenerc.vip/
    Twitter: https://twitter.com/pepethofficial
    Telegram: https://t.me/PepeOfficialeth
*/

pragma solidity ^0.8.19;

interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface IDEXRouter {

    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;

}

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) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }
}

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

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

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

     /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Pepe is IERC20, Ownable {
    using SafeMath for uint256;

    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ROUTER        = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public WETH;

    string _name = "Pepe";
    string _symbol = "PEPE";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 420_690_000_000 * (10 ** _decimals);
    uint256 public _maxWalletToken = (_totalSupply * 200) / 10000;   // 2% 

    mapping (address => uint256) _rOwned;

    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;


    uint256 marketingFee = 0;   
    uint256 reflectionFee = 0; 
    uint256 totalFee = 0;

    uint256 buyFee = 20; 
    uint256 sellFee = 30; 
    uint256 transferFee = 50; 
    uint256 feeDenominator = 100;

    address marketingFeeReceiver;

    IDEXRouter public router;
    address public uniswapV2Pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply.mul(1).div(100);
    bool anticlearOn = true;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }


    constructor () {

        address deployer = msg.sender;
        router = IDEXRouter(ROUTER);
        WETH = router.WETH();
        uniswapV2Pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        address initialLP = uniswapV2Pair;

        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[initialLP][deployer] = type(uint256).max;
        isFeeExempt[address(this)] = true;
        isFeeExempt[deployer] = true;

        marketingFeeReceiver = deployer;

        _rOwned[deployer] = _totalSupply;
        emit Transfer(address(0), deployer, _totalSupply);
        
    }

    receive() external payable { }

    function addLiquidity() external payable onlyOwner {

        swapEnabled = false;

        uint256 amountETH = address(this).balance;
        router.addLiquidityETH{value: amountETH} (
            address(this),
            balanceOf(address(this)),
            balanceOf(address(this)),
            amountETH,
            msg.sender,
            block.timestamp
        );

        swapEnabled = true;
    }


    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external view returns (string memory) { return _symbol; }
    function name() external view returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _rOwned[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (recipient != uniswapV2Pair && recipient != DEAD && !isFeeExempt[recipient] && !isFeeExempt[sender]) {
            require(balanceOf(recipient) + amount <= _maxWalletToken, "Max Wallet Exceeded");
        }

        if(shouldSwapBack()){ swapBack(amount); }


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

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _rOwned[recipient] = _rOwned[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amount);
        return true;
        
    }
    
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) public view returns (uint256) { 
        if (sender    == uniswapV2Pair) { return buyFee; } 
        if (recipient == uniswapV2Pair) { return sellFee; } 
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(sender,recipient)).div(feeDenominator);

    
        _rOwned[address(this)] = _rOwned[address(this)].add(feeAmount);

        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

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

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != uniswapV2Pair
        && !inSwap
        && swapEnabled
        && balanceOf(address(this)) >= swapThreshold;
    }

    function swapBack(uint256 originaltxAmount) internal swapping {


        uint256 amountToSwap = (anticlearOn && originaltxAmount < swapThreshold) ? originaltxAmount : swapThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );


        (bool success,) = payable(marketingFeeReceiver).call{value: address(this).balance, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount, bool _anticlearOn) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        anticlearOn = _anticlearOn;
    }
    
    function sendETH() external {
        (bool success,) = payable(marketingFeeReceiver).call{value: address(this).balance, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");
    }
    
    function removeLimits() external onlyOwner {
        _maxWalletToken = _totalSupply;
        buyFee      =0;
        sellFee     =0;
        transferFee =0;
        totalFee    =0; 
    }

    function removeBuyFees() external onlyOwner {
        buyFee = 0;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

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

    event Reflect(uint256 amountReflected, uint256 newTotalProportion);

}

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":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","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":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"getTotalFee","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":"removeBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_anticlearOn","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260046080908152635065706560e01b60a05260029062000025908262000573565b506040805180820190915260048152635045504560e01b602082015260039062000050908262000573565b506200005f6009600a62000752565b62000070906461f313f88062000763565b60045561271060045460c862000087919062000763565b6200009391906200077d565b60055560006009819055600a819055600b556014600c55601e600d556032600e556064600f8190556012805460ff60a01b1916600160a01b179055600454620000eb9190620000e4906001620003b1565b9062000448565b6013556014805460ff191660011790553480156200010857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905133929163ad5c46489160048083019260209291908290030181865afa158015620001b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d79190620007a0565b600180546001600160a01b0319166001600160a01b039283161790556011546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c9190620007a0565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620002ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d49190620007a0565b601280546001600160a01b039283166001600160a01b03199182168117909255306000818152600760208181526040808420601154891685528252808420600019908190558785529282528084209789168085529782528084209290925592825260088352808220805460ff19908116600190811790925587845282842080549091169091179055601080549094168617909355600454600683528382208190559251928352929392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200081b565b600082600003620003c55750600062000442565b6000620003d3838562000763565b905082620003e285836200077d565b146200043f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200043f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200049260201b60201c565b60008183620004b65760405162461bcd60e51b8152600401620004369190620007cb565b506000620004c584866200077d565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004f957607f821691505b6020821081036200051a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200056e57600081815260208120601f850160051c81016020861015620005495750805b601f850160051c820191505b818110156200056a5782815560010162000555565b5050505b505050565b81516001600160401b038111156200058f576200058f620004ce565b620005a781620005a08454620004e4565b8462000520565b602080601f831160018114620005df5760008415620005c65750858301515b600019600386901b1c1916600185901b1785556200056a565b600085815260208120601f198616915b828110156200061057888601518255948401946001909101908401620005ef565b50858210156200062f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006965781600019048211156200067a576200067a6200063f565b808516156200068857918102915b93841c93908002906200065a565b509250929050565b600082620006af5750600162000442565b81620006be5750600062000442565b8160018114620006d75760028114620006e25762000702565b600191505062000442565b60ff841115620006f657620006f66200063f565b50506001821b62000442565b5060208310610133831016604e8410600b841016171562000727575081810a62000442565b62000733838362000655565b80600019048211156200074a576200074a6200063f565b029392505050565b60006200043f60ff8416836200069e565b80820281158282048414176200044257620004426200063f565b6000826200079b57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007b357600080fd5b81516001600160a01b03811681146200043f57600080fd5b600060208083528351808285015260005b81811015620007fa57858101830151858201604001528201620007dc565b506000604082860101526040601f19601f8301168501019250505092915050565b611707806200082b6000396000f3fe6080604052600436106101bb5760003560e01c8063751039fc116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e14610481578063e8078d94146104c7578063f2fde38b146104cf578063f887ea40146104ef57600080fd5b8063a9059cbb14610421578063ad5c464814610441578063d2d55dde1461046157600080fd5b8063893d20e8116100c6578063893d20e8146103d95780638da5cb5b146103d957806395d89b41146103f7578063a14212d21461040c57600080fd5b8063751039fc1461038e57806378109e54146103a35780637daf4b2b146103b957600080fd5b8063313ce56711610159578063658d4b7f11610133578063658d4b7f146103025780636ddd17131461032257806370a0823114610343578063715018a61461037957600080fd5b8063313ce5671461028e57806349bd5a5e146102aa578063571ac8b0146102e257600080fd5b806318160ddd1161019557806318160ddd146102425780631d16d9a01461025757806323b872dd1461026e5780632b112e491461024257600080fd5b80630445b667146101c757806306fdde03146101f0578063095ea7b31461021257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dd60135481565b6040519081526020015b60405180910390f35b3480156101fc57600080fd5b5061020561050f565b6040516101e791906113a4565b34801561021e57600080fd5b5061023261022d36600461140e565b6105a1565b60405190151581526020016101e7565b34801561024e57600080fd5b506004546101dd565b34801561026357600080fd5b5061026c61060e565b005b34801561027a57600080fd5b50610232610289366004611438565b6106be565b34801561029a57600080fd5b50604051600981526020016101e7565b3480156102b657600080fd5b506012546102ca906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b3480156102ee57600080fd5b506102326102fd366004611474565b610780565b34801561030e57600080fd5b5061026c61031d36600461149f565b61078e565b34801561032e57600080fd5b5060125461023290600160a01b900460ff1681565b34801561034f57600080fd5b506101dd61035e366004611474565b6001600160a01b031660009081526006602052604090205490565b34801561038557600080fd5b5061026c6107e3565b34801561039a57600080fd5b5061026c610857565b3480156103af57600080fd5b506101dd60055481565b3480156103c557600080fd5b5061026c6103d43660046114d2565b61089d565b3480156103e557600080fd5b506000546001600160a01b03166102ca565b34801561040357600080fd5b50610205610900565b34801561041857600080fd5b5061026c61090f565b34801561042d57600080fd5b5061023261043c36600461140e565b610940565b34801561044d57600080fd5b506001546102ca906001600160a01b031681565b34801561046d57600080fd5b506101dd61047c36600461150e565b61094d565b34801561048d57600080fd5b506101dd61049c36600461150e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b61026c610998565b3480156104db57600080fd5b5061026c6104ea366004611474565b610ab6565b3480156104fb57600080fd5b506011546102ca906001600160a01b031681565b60606002805461051e90611538565b80601f016020809104026020016040519081016040528092919081815260200182805461054a90611538565b80156105975780601f1061056c57610100808354040283529160200191610597565b820191906000526020600020905b81548152906001019060200180831161057a57829003601f168201915b5050505050905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105fc9086815260200190565b60405180910390a35060015b92915050565b6010546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610660576040519150601f19603f3d011682016040523d82523d6000602084013e610665565b606091505b50509050806106bb5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064015b60405180910390fd5b50565b6001600160a01b03831660009081526007602090815260408083203384529091528120546000191461076b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610746918490610ba0565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610776848484610bda565b90505b9392505050565b6000610608826000196105a1565b6000546001600160a01b031633146107b85760405162461bcd60e51b81526004016106b290611572565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461080d5760405162461bcd60e51b81526004016106b290611572565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108815760405162461bcd60e51b81526004016106b290611572565b6004546005556000600c819055600d819055600e819055600b55565b6000546001600160a01b031633146108c75760405162461bcd60e51b81526004016106b290611572565b6012805460ff60a01b1916600160a01b94151594909402939093179092556013556014805460ff1916911515919091179055565b905090565b60606003805461051e90611538565b6000546001600160a01b031633146109395760405162461bcd60e51b81526004016106b290611572565b6000600c55565b6000610779338484610bda565b6012546000906001600160a01b039081169084160361096f5750600c54610608565b6012546001600160a01b039081169083160361098e5750600d54610608565b50600e5492915050565b6000546001600160a01b031633146109c25760405162461bcd60e51b81526004016106b290611572565b6012805460ff60a01b1916905560115447906001600160a01b031663f305d7198230610a03816001600160a01b031660009081526006602052604090205490565b306000908152600660205260409020546040516001600160e01b031960e087901b1681526001600160a01b03909316600484015260248301919091526044820152606481018590523360848201524260a482015260c40160606040518083038185885af1158015610a78573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a9d91906115a7565b50506012805460ff60a01b1916600160a01b1790555050565b6000546001600160a01b03163314610ae05760405162461bcd60e51b81526004016106b290611572565b6001600160a01b038116610b455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610bc45760405162461bcd60e51b81526004016106b291906113a4565b506000610bd184866115eb565b95945050505050565b601454600090610100900460ff1615610bff57610bf8848484610e18565b9050610779565b6012546001600160a01b03848116911614801590610c2857506001600160a01b03831661dead14155b8015610c4d57506001600160a01b03831660009081526008602052604090205460ff16155b8015610c7257506001600160a01b03841660009081526008602052604090205460ff16155b15610ce85760055482610c9a856001600160a01b031660009081526006602052604090205490565b610ca491906115fe565b1115610ce85760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016106b2565b610cf0610efe565b15610cfe57610cfe82610f59565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260069091529190912054610d50918490610ba0565b6001600160a01b038516600090815260066020526040812091909155610d768585611128565b610d805782610d8b565b610d8b85858561116e565b6001600160a01b038516600090815260066020526040902054909150610db19082611211565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e059087815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054610e69918490610ba0565b6001600160a01b038086166000908152600660205260408082209390935590851681522054610e989083611211565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eec9086815260200190565b60405180910390a35060019392505050565b6012546000906001600160a01b03163314801590610f245750601454610100900460ff16155b8015610f395750601254600160a01b900460ff165b80156108fb57505060135430600090815260066020526040902054101590565b6014805461ff001981166101001790915560009060ff168015610f7d575060135482105b610f8957601354610f8b565b815b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610fc557610fc5611611565b6001600160a01b0392831660209182029290920101526001805483519216918391908110610ff557610ff5611611565b6001600160a01b03928316602091820292909201015260115460405163791ac94760e01b815291169063791ac9479061103b908590600090869030904290600401611627565b600060405180830381600087803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b5050601054604051600093506001600160a01b03909116915061753090479084818181858888f193505050503d80600081146110c1576040519150601f19603f3d011682016040523d82523d6000602084013e6110c6565b606091505b50509050806111175760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016106b2565b50506014805461ff00191690555050565b6001600160a01b03821660009081526008602052604081205460ff161580156107795750506001600160a01b031660009081526008602052604090205460ff1615919050565b600080611191600f5461118b611184888861094d565b8690611270565b906112f2565b306000908152600660205260409020549091506111ae9082611211565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111ff9085815260200190565b60405180910390a3610bd18382611334565b60008061121e83856115fe565b9050838110156107795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106b2565b60008260000361128257506000610608565b600061128e8385611698565b90508261129b85836116af565b146107795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106b2565b600061077983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611376565b600061077983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ba0565b600081836113975760405162461bcd60e51b81526004016106b291906113a4565b506000610bd184866116af565b600060208083528351808285015260005b818110156113d1578581018301518582016040015282016113b5565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461140957600080fd5b919050565b6000806040838503121561142157600080fd5b61142a836113f2565b946020939093013593505050565b60008060006060848603121561144d57600080fd5b611456846113f2565b9250611464602085016113f2565b9150604084013590509250925092565b60006020828403121561148657600080fd5b610779826113f2565b8035801515811461140957600080fd5b600080604083850312156114b257600080fd5b6114bb836113f2565b91506114c96020840161148f565b90509250929050565b6000806000606084860312156114e757600080fd5b6114f08461148f565b9250602084013591506115056040850161148f565b90509250925092565b6000806040838503121561152157600080fd5b61152a836113f2565b91506114c9602084016113f2565b600181811c9082168061154c57607f821691505b60208210810361156c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000806000606084860312156115bc57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b81810381811115610608576106086115d5565b80820180821115610608576106086115d5565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116775784516001600160a01b031683529383019391830191600101611652565b50506001600160a01b03969096166060850152505050608001529392505050565b8082028115828204841417610608576106086115d5565b6000826116cc57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212200a971401a2e1dfc23b38de5d4f096a5598214eb214dc84c2f63a20830f10d89064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c8063751039fc116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e14610481578063e8078d94146104c7578063f2fde38b146104cf578063f887ea40146104ef57600080fd5b8063a9059cbb14610421578063ad5c464814610441578063d2d55dde1461046157600080fd5b8063893d20e8116100c6578063893d20e8146103d95780638da5cb5b146103d957806395d89b41146103f7578063a14212d21461040c57600080fd5b8063751039fc1461038e57806378109e54146103a35780637daf4b2b146103b957600080fd5b8063313ce56711610159578063658d4b7f11610133578063658d4b7f146103025780636ddd17131461032257806370a0823114610343578063715018a61461037957600080fd5b8063313ce5671461028e57806349bd5a5e146102aa578063571ac8b0146102e257600080fd5b806318160ddd1161019557806318160ddd146102425780631d16d9a01461025757806323b872dd1461026e5780632b112e491461024257600080fd5b80630445b667146101c757806306fdde03146101f0578063095ea7b31461021257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dd60135481565b6040519081526020015b60405180910390f35b3480156101fc57600080fd5b5061020561050f565b6040516101e791906113a4565b34801561021e57600080fd5b5061023261022d36600461140e565b6105a1565b60405190151581526020016101e7565b34801561024e57600080fd5b506004546101dd565b34801561026357600080fd5b5061026c61060e565b005b34801561027a57600080fd5b50610232610289366004611438565b6106be565b34801561029a57600080fd5b50604051600981526020016101e7565b3480156102b657600080fd5b506012546102ca906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b3480156102ee57600080fd5b506102326102fd366004611474565b610780565b34801561030e57600080fd5b5061026c61031d36600461149f565b61078e565b34801561032e57600080fd5b5060125461023290600160a01b900460ff1681565b34801561034f57600080fd5b506101dd61035e366004611474565b6001600160a01b031660009081526006602052604090205490565b34801561038557600080fd5b5061026c6107e3565b34801561039a57600080fd5b5061026c610857565b3480156103af57600080fd5b506101dd60055481565b3480156103c557600080fd5b5061026c6103d43660046114d2565b61089d565b3480156103e557600080fd5b506000546001600160a01b03166102ca565b34801561040357600080fd5b50610205610900565b34801561041857600080fd5b5061026c61090f565b34801561042d57600080fd5b5061023261043c36600461140e565b610940565b34801561044d57600080fd5b506001546102ca906001600160a01b031681565b34801561046d57600080fd5b506101dd61047c36600461150e565b61094d565b34801561048d57600080fd5b506101dd61049c36600461150e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b61026c610998565b3480156104db57600080fd5b5061026c6104ea366004611474565b610ab6565b3480156104fb57600080fd5b506011546102ca906001600160a01b031681565b60606002805461051e90611538565b80601f016020809104026020016040519081016040528092919081815260200182805461054a90611538565b80156105975780601f1061056c57610100808354040283529160200191610597565b820191906000526020600020905b81548152906001019060200180831161057a57829003601f168201915b5050505050905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105fc9086815260200190565b60405180910390a35060015b92915050565b6010546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610660576040519150601f19603f3d011682016040523d82523d6000602084013e610665565b606091505b50509050806106bb5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064015b60405180910390fd5b50565b6001600160a01b03831660009081526007602090815260408083203384529091528120546000191461076b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610746918490610ba0565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610776848484610bda565b90505b9392505050565b6000610608826000196105a1565b6000546001600160a01b031633146107b85760405162461bcd60e51b81526004016106b290611572565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461080d5760405162461bcd60e51b81526004016106b290611572565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108815760405162461bcd60e51b81526004016106b290611572565b6004546005556000600c819055600d819055600e819055600b55565b6000546001600160a01b031633146108c75760405162461bcd60e51b81526004016106b290611572565b6012805460ff60a01b1916600160a01b94151594909402939093179092556013556014805460ff1916911515919091179055565b905090565b60606003805461051e90611538565b6000546001600160a01b031633146109395760405162461bcd60e51b81526004016106b290611572565b6000600c55565b6000610779338484610bda565b6012546000906001600160a01b039081169084160361096f5750600c54610608565b6012546001600160a01b039081169083160361098e5750600d54610608565b50600e5492915050565b6000546001600160a01b031633146109c25760405162461bcd60e51b81526004016106b290611572565b6012805460ff60a01b1916905560115447906001600160a01b031663f305d7198230610a03816001600160a01b031660009081526006602052604090205490565b306000908152600660205260409020546040516001600160e01b031960e087901b1681526001600160a01b03909316600484015260248301919091526044820152606481018590523360848201524260a482015260c40160606040518083038185885af1158015610a78573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a9d91906115a7565b50506012805460ff60a01b1916600160a01b1790555050565b6000546001600160a01b03163314610ae05760405162461bcd60e51b81526004016106b290611572565b6001600160a01b038116610b455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610bc45760405162461bcd60e51b81526004016106b291906113a4565b506000610bd184866115eb565b95945050505050565b601454600090610100900460ff1615610bff57610bf8848484610e18565b9050610779565b6012546001600160a01b03848116911614801590610c2857506001600160a01b03831661dead14155b8015610c4d57506001600160a01b03831660009081526008602052604090205460ff16155b8015610c7257506001600160a01b03841660009081526008602052604090205460ff16155b15610ce85760055482610c9a856001600160a01b031660009081526006602052604090205490565b610ca491906115fe565b1115610ce85760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016106b2565b610cf0610efe565b15610cfe57610cfe82610f59565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260069091529190912054610d50918490610ba0565b6001600160a01b038516600090815260066020526040812091909155610d768585611128565b610d805782610d8b565b610d8b85858561116e565b6001600160a01b038516600090815260066020526040902054909150610db19082611211565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e059087815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054610e69918490610ba0565b6001600160a01b038086166000908152600660205260408082209390935590851681522054610e989083611211565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eec9086815260200190565b60405180910390a35060019392505050565b6012546000906001600160a01b03163314801590610f245750601454610100900460ff16155b8015610f395750601254600160a01b900460ff165b80156108fb57505060135430600090815260066020526040902054101590565b6014805461ff001981166101001790915560009060ff168015610f7d575060135482105b610f8957601354610f8b565b815b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610fc557610fc5611611565b6001600160a01b0392831660209182029290920101526001805483519216918391908110610ff557610ff5611611565b6001600160a01b03928316602091820292909201015260115460405163791ac94760e01b815291169063791ac9479061103b908590600090869030904290600401611627565b600060405180830381600087803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b5050601054604051600093506001600160a01b03909116915061753090479084818181858888f193505050503d80600081146110c1576040519150601f19603f3d011682016040523d82523d6000602084013e6110c6565b606091505b50509050806111175760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016106b2565b50506014805461ff00191690555050565b6001600160a01b03821660009081526008602052604081205460ff161580156107795750506001600160a01b031660009081526008602052604090205460ff1615919050565b600080611191600f5461118b611184888861094d565b8690611270565b906112f2565b306000908152600660205260409020549091506111ae9082611211565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111ff9085815260200190565b60405180910390a3610bd18382611334565b60008061121e83856115fe565b9050838110156107795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106b2565b60008260000361128257506000610608565b600061128e8385611698565b90508261129b85836116af565b146107795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106b2565b600061077983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611376565b600061077983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ba0565b600081836113975760405162461bcd60e51b81526004016106b291906113a4565b506000610bd184866116af565b600060208083528351808285015260005b818110156113d1578581018301518582016040015282016113b5565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461140957600080fd5b919050565b6000806040838503121561142157600080fd5b61142a836113f2565b946020939093013593505050565b60008060006060848603121561144d57600080fd5b611456846113f2565b9250611464602085016113f2565b9150604084013590509250925092565b60006020828403121561148657600080fd5b610779826113f2565b8035801515811461140957600080fd5b600080604083850312156114b257600080fd5b6114bb836113f2565b91506114c96020840161148f565b90509250929050565b6000806000606084860312156114e757600080fd5b6114f08461148f565b9250602084013591506115056040850161148f565b90509250925092565b6000806040838503121561152157600080fd5b61152a836113f2565b91506114c9602084016113f2565b600181811c9082168061154c57607f821691505b60208210810361156c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000806000606084860312156115bc57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b81810381811115610608576106086115d5565b80820180821115610608576106086115d5565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116775784516001600160a01b031683529383019391830191600101611652565b50506001600160a01b03969096166060850152505050608001529392505050565b8082028115828204841417610608576106086115d5565b6000826116cc57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212200a971401a2e1dfc23b38de5d4f096a5598214eb214dc84c2f63a20830f10d89064736f6c63430008130033

Deployed Bytecode Sourcemap

6920:7792:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7951:59;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7951:59:0;;;;;;;;9513:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9917:216::-;;;;;;;;;;-1:-1:-1;9917:216:0;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;9917:216:0;1186:187:1;9261:88:0;;;;;;;;;;-1:-1:-1;9334:12:0;;9261:88;;13905:206;;;;;;;;;;;;;:::i;:::-;;10435:370;;;;;;;;;;-1:-1:-1;10435:370:0;;;;;:::i;:::-;;:::i;9355:71::-;;;;;;;;;;-1:-1:-1;9355:71:0;;7272:1;1853:36:1;;1841:2;1826:18;9355:71:0;1711:184:1;7877:28:0;;;;;;;;;;-1:-1:-1;7877:28:0;;;;-1:-1:-1;;;;;7877:28:0;;;;;;-1:-1:-1;;;;;2064:32:1;;;2046:51;;2034:2;2019:18;7877:28:0;1900:203:1;10141:122:0;;;;;;;;;;-1:-1:-1;10141:122:0;;;;;:::i;:::-;;:::i;14405:119::-;;;;;;;;;;-1:-1:-1;14405:119:0;;;;;:::i;:::-;;:::i;7914:30::-;;;;;;;;;;-1:-1:-1;7914:30:0;;;;-1:-1:-1;;;7914:30:0;;;;;;9667:103;;;;;;;;;;-1:-1:-1;9667:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;9751:16:0;9733:7;9751:16;;;:7;:16;;;;;;;9667:103;6366:148;;;;;;;;;;;;;:::i;14123:193::-;;;;;;;;;;;;;:::i;7347:61::-;;;;;;;;;;;;;;;;13682:211;;;;;;;;;;-1:-1:-1;13682:211:0;;;;;:::i;:::-;;:::i;9590:71::-;;;;;;;;;;-1:-1:-1;9633:7:0;5788:6;-1:-1:-1;;;;;5788:6:0;9590:71;;9432:75;;;;;;;;;;;;;:::i;14324:73::-;;;;;;;;;;;;;:::i;10271:156::-;;;;;;;;;;-1:-1:-1;10271:156:0;;;;;:::i;:::-;;:::i;7159:19::-;;;;;;;;;;-1:-1:-1;7159:19:0;;;;-1:-1:-1;;;;;7159:19:0;;;11813:247;;;;;;;;;;-1:-1:-1;11813:247:0;;;;;:::i;:::-;;:::i;9776:133::-;;;;;;;;;;-1:-1:-1;9776:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9878:19:0;;;9860:7;9878:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9776:133;8827:424;;;:::i;6669:244::-;;;;;;;;;;-1:-1:-1;6669:244:0;;;;;:::i;:::-;;:::i;7846:24::-;;;;;;;;;;-1:-1:-1;7846:24:0;;;;-1:-1:-1;;;;;7846:24:0;;;9513:71;9552:13;9576:5;9569:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9513:71;:::o;9917:216::-;10021:10;9992:4;10009:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10009:32:0;;;;;;;;;;:41;;;10066:37;9992:4;;10009:32;;10066:37;;;;10044:6;160:25:1;;148:2;133:18;;14:177;10066:37:0;;;;;;;;-1:-1:-1;10121:4:0;9917:216;;;;;:::o;13905:206::-;13970:20;;13962:80;;13945:12;;-1:-1:-1;;;;;13970:20:0;;14032:5;;14004:21;;13945:12;13962:80;13945:12;13962:80;14004:21;13970:20;14032:5;13962:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13944:98;;;14061:7;14053:50;;;;-1:-1:-1;;;14053:50:0;;4332:2:1;14053:50:0;;;4314:21:1;4371:2;4351:18;;;4344:30;4410:32;4390:18;;;4383:60;4460:18;;14053:50:0;;;;;;;;;13933:178;13905:206::o;10435:370::-;-1:-1:-1;;;;;10555:19:0;;10535:4;10555:19;;;:11;:19;;;;;;;;10575:10;10555:31;;;;;;;;-1:-1:-1;;10555:52:0;10552:186;;10657:69;;;;;;;;;;;-1:-1:-1;;;10657:69:0;;;;;;;;-1:-1:-1;;;;;10657:19:0;;-1:-1:-1;10657:19:0;;;:11;:19;;;;;10677:10;10657:31;;;;;;;;;;:69;;10693:6;;10657:35;:69::i;:::-;-1:-1:-1;;;;;10623:19:0;;;;;;:11;:19;;;;;;;;10643:10;10623:31;;;;;;;:103;10552:186;10757:40;10771:6;10779:9;10790:6;10757:13;:40::i;:::-;10750:47;;10435:370;;;;;;:::o;10141:122::-;10196:4;10220:35;10228:7;-1:-1:-1;;10220:7:0;:35::i;14405:119::-;5935:6;;-1:-1:-1;;;;;5935:6:0;4972:10;5935:22;5927:67;;;;-1:-1:-1;;;5927:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14488:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;14488:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14405:119::o;6366:148::-;5935:6;;-1:-1:-1;;;;;5935:6:0;4972:10;5935:22;5927:67;;;;-1:-1:-1;;;5927:67:0;;;;;;;:::i;:::-;6473:1:::1;6457:6:::0;;6436:40:::1;::::0;-1:-1:-1;;;;;6457:6:0;;::::1;::::0;6436:40:::1;::::0;6473:1;;6436:40:::1;6504:1;6487:19:::0;;-1:-1:-1;;;;;;6487:19:0::1;::::0;;6366:148::o;14123:193::-;5935:6;;-1:-1:-1;;;;;5935:6:0;4972:10;5935:22;5927:67;;;;-1:-1:-1;;;5927:67:0;;;;;;;:::i;:::-;14195:12:::1;::::0;14177:15:::1;:30:::0;-1:-1:-1;14218:6:0::1;:14:::0;;;14243:7:::1;:14:::0;;;14268:11:::1;:14:::0;;;14293:8:::1;:14:::0;14123:193::o;13682:211::-;5935:6;;-1:-1:-1;;;;;5935:6:0;4972:10;5935:22;5927:67;;;;-1:-1:-1;;;5927:67:0;;;;;;;:::i;:::-;13792:11:::1;:22:::0;;-1:-1:-1;;;;13792:22:0::1;-1:-1:-1::0;;;13792:22:0;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;13825:13:::1;:23:::0;13792:11:::1;13859:26:::0;;-1:-1:-1;;13859:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13682:211::o;9651:7::-;9644:14;;9590:71;:::o;9432:75::-;9473:13;9497:7;9490:14;;;;;:::i;14324:73::-;5935:6;;-1:-1:-1;;;;;5935:6:0;4972:10;5935:22;5927:67;;;;-1:-1:-1;;;5927:67:0;;;;;;;:::i;:::-;14388:1:::1;14379:6;:10:::0;14324:73::o;10271:156::-;10351:4;10375:44;10389:10;10401:9;10412:6;10375:13;:44::i;11813:247::-;11928:13;;11890:7;;-1:-1:-1;;;;;11928:13:0;;;11915:26;;;;11911:50;;-1:-1:-1;11952:6:0;;11945:13;;11911:50;11989:13;;-1:-1:-1;;;;;11989:13:0;;;11976:26;;;;11972:51;;-1:-1:-1;12013:7:0;;12006:14;;11972:51;-1:-1:-1;12041:11:0;;11813:247;;;;:::o;8827:424::-;5935:6;;-1:-1:-1;;;;;5935:6:0;4972:10;5935:22;5927:67;;;;-1:-1:-1;;;5927:67:0;;;;;;;:::i;:::-;8891:11:::1;:19:::0;;-1:-1:-1;;;;8891:19:0::1;::::0;;8975:6:::1;::::0;8943:21:::1;::::0;-1:-1:-1;;;;;8975:6:0::1;:22;8943:21:::0;9039:4:::1;9059:24;9039:4:::0;-1:-1:-1;;;;;9751:16:0;9733:7;9751:16;;;:7;:16;;;;;;;9667:103;9059:24:::1;9116:4;9733:7:::0;9751:16;;;:7;:16;;;;;;8975:237:::1;::::0;-1:-1:-1;;;;;;8975:237:0::1;::::0;;;;;;-1:-1:-1;;;;;5193:15:1;;;8975:237:0::1;::::0;::::1;5175:34:1::0;5225:18;;;5218:34;;;;5268:18;;;5261:34;5311:18;;;5304:34;;;9161:10:0::1;5354:19:1::0;;;5347:44;9186:15:0::1;5407:19:1::0;;;5400:35;5109:19;;8975:237:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;9225:11:0::1;:18:::0;;-1:-1:-1;;;;9225:18:0::1;-1:-1:-1::0;;;9225:18:0::1;::::0;;-1:-1:-1;;8827:424:0:o;6669:244::-;5935:6;;-1:-1:-1;;;;;5935:6:0;4972:10;5935:22;5927:67;;;;-1:-1:-1;;;5927:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6758:22:0;::::1;6750:73;;;::::0;-1:-1:-1;;;6750:73:0;;5959:2:1;6750:73:0::1;::::0;::::1;5941:21:1::0;5998:2;5978:18;;;5971:30;6037:34;6017:18;;;6010:62;-1:-1:-1;;;6088:18:1;;;6081:36;6134:19;;6750:73:0::1;5757:402:1::0;6750:73:0::1;6860:6;::::0;;6839:38:::1;::::0;-1:-1:-1;;;;;6839:38:0;;::::1;::::0;6860:6;::::1;::::0;6839:38:::1;::::0;::::1;6888:6;:17:::0;;-1:-1:-1;;;;;;6888:17:0::1;-1:-1:-1::0;;;;;6888:17:0;;;::::1;::::0;;;::::1;::::0;;6669:244::o;3901:192::-;3987:7;4023:12;4015:6;;;;4007:29;;;;-1:-1:-1;;;4007:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4047:9:0;4059:5;4063:1;4059;:5;:::i;:::-;4047:17;3901:192;-1:-1:-1;;;;;3901:192:0:o;10813:820::-;10935:6;;10905:4;;10935:6;;;;;10932:63;;;10951:41;10966:6;10974:9;10985:6;10951:14;:41::i;:::-;10944:48;;;;10932:63;11024:13;;-1:-1:-1;;;;;11011:26:0;;;11024:13;;11011:26;;;;:47;;-1:-1:-1;;;;;;11041:17:0;;7028:42;11041:17;;11011:47;:74;;;;-1:-1:-1;;;;;;11063:22:0;;;;;;:11;:22;;;;;;;;11062:23;11011:74;:98;;;;-1:-1:-1;;;;;;11090:19:0;;;;;;:11;:19;;;;;;;;11089:20;11011:98;11007:211;;;11167:15;;11157:6;11134:20;11144:9;-1:-1:-1;;;;;9751:16:0;9733:7;9751:16;;;:7;:16;;;;;;;9667:103;11134:20;:29;;;;:::i;:::-;:48;;11126:80;;;;-1:-1:-1;;;11126:80:0;;6761:2:1;11126:80:0;;;6743:21:1;6800:2;6780:18;;;6773:30;-1:-1:-1;;;6819:18:1;;;6812:49;6878:18;;11126:80:0;6559:343:1;11126:80:0;11233:16;:14;:16::i;:::-;11230:41;;;11252:16;11261:6;11252:8;:16::i;:::-;11303:51;;;;;;;;;;;-1:-1:-1;;;11303:51:0;;;;;;;;-1:-1:-1;;;;;11303:15:0;;-1:-1:-1;11303:15:0;;;:7;:15;;;;;;;;:51;;11323:6;;11303:19;:51::i;:::-;-1:-1:-1;;;;;11285:15:0;;;;;;:7;:15;;;;;:69;;;;11392:32;11293:6;11414:9;11392:13;:32::i;:::-;:78;;11464:6;11392:78;;;11427:34;11435:6;11443:9;11454:6;11427:7;:34::i;:::-;-1:-1:-1;;;;;11502:18:0;;;;;;:7;:18;;;;;;11367:103;;-1:-1:-1;11502:38:0;;11367:103;11502:22;:38::i;:::-;-1:-1:-1;;;;;11481:18:0;;;;;;;:7;:18;;;;;;;:59;;;;11558:35;;;;;;;;;;11586:6;160:25:1;;148:2;133:18;;14:177;11558:35:0;;;;;;;;-1:-1:-1;11611:4:0;;10813:820;-1:-1:-1;;;;10813:820:0:o;12451:322::-;12579:51;;;;;;;;;;;-1:-1:-1;;;12579:51:0;;;;;;;;-1:-1:-1;;;;;12579:15:0;;12544:4;12579:15;;;:7;:15;;;;;;;:51;;12599:6;;12579:19;:51::i;:::-;-1:-1:-1;;;;;12561:15:0;;;;;;;:7;:15;;;;;;:69;;;;12662:18;;;;;;;:30;;12685:6;12662:22;:30::i;:::-;-1:-1:-1;;;;;12641:18:0;;;;;;;:7;:18;;;;;;;:51;;;;12708:35;;;;;;;;;;12736:6;160:25:1;;148:2;133:18;;14:177;12708:35:0;;;;;;;;-1:-1:-1;12761:4:0;12451:322;;;;;:::o;12781:206::-;12868:13;;12830:4;;-1:-1:-1;;;;;12868:13:0;12854:10;:27;;;;:47;;-1:-1:-1;12895:6:0;;;;;;;12894:7;12854:47;:71;;;;-1:-1:-1;12914:11:0;;-1:-1:-1;;;12914:11:0;;;;12854:71;:125;;;;-1:-1:-1;;12966:13:0;;12956:4;9733:7;9751:16;;;:7;:16;;;;;;12938:41;;;12781:206::o;12995:679::-;8089:6;:13;;-1:-1:-1;;8089:13:0;;;;;;;;;;13096:11;:47;::::1;;;;13130:13;;13111:16;:32;13096:47;13095:84;;13166:13;;13095:84;;;13147:16;13095:84;13216:16;::::0;;13230:1:::1;13216:16:::0;;;;;::::1;::::0;;13072:107;;-1:-1:-1;13192:21:0::1;::::0;13216:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13216:16:0::1;13192:40;;13261:4;13243;13248:1;13243:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13243:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13287:4:::1;::::0;;13277:7;;13287:4;::::1;::::0;13277;;13287;13277:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;13277:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13304:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13304:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13376:12;;13304:6:::1;::::0;13419:4;;13446::::1;::::0;13466:15:::1;::::0;13304:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13533:20:0::1;::::0;13525:80:::1;::::0;13508:12:::1;::::0;-1:-1:-1;;;;;;13533:20:0;;::::1;::::0;-1:-1:-1;13595:5:0::1;::::0;13567:21:::1;::::0;13508:12;13525:80;13508:12;13525:80;13567:21;13533:20;13595:5;13525:80:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13507:98;;;13624:7;13616:50;;;::::0;-1:-1:-1;;;13616:50:0;;4332:2:1;13616:50:0::1;::::0;::::1;4314:21:1::0;4371:2;4351:18;;;4344:30;4410:32;4390:18;;;4383:60;4460:18;;13616:50:0::1;4130:354:1::0;13616:50:0::1;-1:-1:-1::0;;8107:6:0;:14;;-1:-1:-1;;8107:14:0;;;-1:-1:-1;;12995:679:0:o;11645:160::-;-1:-1:-1;;;;;11751:19:0;;11726:4;11751:19;;;:11;:19;;;;;;;;11750:20;:47;;;;-1:-1:-1;;;;;;;11775:22:0;;;;;:11;:22;;;;;;;;11774:23;;11645:160;-1:-1:-1;11645:160:0:o;12068:375::-;12154:7;12174:17;12194:61;12240:14;;12194:41;12205:29;12217:6;12224:9;12205:11;:29::i;:::-;12194:6;;:10;:41::i;:::-;:45;;:61::i;:::-;12315:4;12299:22;;;;:7;:22;;;;;;12174:81;;-1:-1:-1;12299:37:0;;12174:81;12299:26;:37::i;:::-;12290:4;12274:22;;;;:7;:22;;;;;;;:62;;;;12354:42;;-1:-1:-1;;;;;12354:42:0;;;;;;;12386:9;160:25:1;;148:2;133:18;;14:177;12354:42:0;;;;;;;;12414:21;:6;12425:9;12414:10;:21::i;3568:181::-;3626:7;;3658:5;3662:1;3658;:5;:::i;:::-;3646:17;;3687:1;3682;:6;;3674:46;;;;-1:-1:-1;;;3674:46:0;;8358:2:1;3674:46:0;;;8340:21:1;8397:2;8377:18;;;8370:30;8436:29;8416:18;;;8409:57;8483:18;;3674:46:0;8156:351:1;4101:250:0;4159:7;4183:1;4188;4183:6;4179:47;;-1:-1:-1;4213:1:0;4206:8;;4179:47;4238:9;4250:5;4254:1;4250;:5;:::i;:::-;4238:17;-1:-1:-1;4283:1:0;4274:5;4278:1;4238:17;4274:5;:::i;:::-;:10;4266:56;;;;-1:-1:-1;;;4266:56:0;;9109:2:1;4266:56:0;;;9091:21:1;9148:2;9128:18;;;9121:30;9187:34;9167:18;;;9160:62;-1:-1:-1;;;9238:18:1;;;9231:31;9279:19;;4266:56:0;8907:397:1;4359:132:0;4417:7;4444:39;4448:1;4451;4444:39;;;;;;;;;;;;;;;;;:3;:39::i;3757:136::-;3815:7;3842:43;3846:1;3849;3842:43;;;;;;;;;;;;;;;;;:3;:43::i;4499:345::-;4585:7;4687:12;4680:5;4672:28;;;;-1:-1:-1;;;4672:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4711:9:0;4723:5;4727:1;4723;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:173::-;817:20;;-1:-1:-1;;;;;866:31:1;;856:42;;846:70;;912:1;909;902:12;846:70;749:173;;;:::o;927:254::-;995:6;1003;1056:2;1044:9;1035:7;1031:23;1027:32;1024:52;;;1072:1;1069;1062:12;1024:52;1095:29;1114:9;1095:29;:::i;:::-;1085:39;1171:2;1156:18;;;;1143:32;;-1:-1:-1;;;927:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;2108:186::-;2167:6;2220:2;2208:9;2199:7;2195:23;2191:32;2188:52;;;2236:1;2233;2226:12;2188:52;2259:29;2278:9;2259:29;:::i;2299:160::-;2364:20;;2420:13;;2413:21;2403:32;;2393:60;;2449:1;2446;2439:12;2464:254;2529:6;2537;2590:2;2578:9;2569:7;2565:23;2561:32;2558:52;;;2606:1;2603;2596:12;2558:52;2629:29;2648:9;2629:29;:::i;:::-;2619:39;;2677:35;2708:2;2697:9;2693:18;2677:35;:::i;:::-;2667:45;;2464:254;;;;;:::o;2723:316::-;2794:6;2802;2810;2863:2;2851:9;2842:7;2838:23;2834:32;2831:52;;;2879:1;2876;2869:12;2831:52;2902:26;2918:9;2902:26;:::i;:::-;2892:36;;2975:2;2964:9;2960:18;2947:32;2937:42;;2998:35;3029:2;3018:9;3014:18;2998:35;:::i;:::-;2988:45;;2723:316;;;;;:::o;3044:260::-;3112:6;3120;3173:2;3161:9;3152:7;3148:23;3144:32;3141:52;;;3189:1;3186;3179:12;3141:52;3212:29;3231:9;3212:29;:::i;:::-;3202:39;;3260:38;3294:2;3283:9;3279:18;3260:38;:::i;3535:380::-;3614:1;3610:12;;;;3657;;;3678:61;;3732:4;3724:6;3720:17;3710:27;;3678:61;3785:2;3777:6;3774:14;3754:18;3751:38;3748:161;;3831:10;3826:3;3822:20;3819:1;3812:31;3866:4;3863:1;3856:15;3894:4;3891:1;3884:15;3748:161;;3535:380;;;:::o;4489:356::-;4691:2;4673:21;;;4710:18;;;4703:30;4769:34;4764:2;4749:18;;4742:62;4836:2;4821:18;;4489:356::o;5446:306::-;5534:6;5542;5550;5603:2;5591:9;5582:7;5578:23;5574:32;5571:52;;;5619:1;5616;5609:12;5571:52;5648:9;5642:16;5632:26;;5698:2;5687:9;5683:18;5677:25;5667:35;;5742:2;5731:9;5727:18;5721:25;5711:35;;5446:306;;;;;:::o;6164:127::-;6225:10;6220:3;6216:20;6213:1;6206:31;6256:4;6253:1;6246:15;6280:4;6277:1;6270:15;6296:128;6363:9;;;6384:11;;;6381:37;;;6398:18;;:::i;6429:125::-;6494:9;;;6515:10;;;6512:36;;;6528:18;;:::i;7039:127::-;7100:10;7095:3;7091:20;7088:1;7081:31;7131:4;7128:1;7121:15;7155:4;7152:1;7145:15;7171:980;7433:4;7481:3;7470:9;7466:19;7512:6;7501:9;7494:25;7538:2;7576:6;7571:2;7560:9;7556:18;7549:34;7619:3;7614:2;7603:9;7599:18;7592:31;7643:6;7678;7672:13;7709:6;7701;7694:22;7747:3;7736:9;7732:19;7725:26;;7786:2;7778:6;7774:15;7760:29;;7807:1;7817:195;7831:6;7828:1;7825:13;7817:195;;;7896:13;;-1:-1:-1;;;;;7892:39:1;7880:52;;7987:15;;;;7952:12;;;;7928:1;7846:9;7817:195;;;-1:-1:-1;;;;;;;8068:32:1;;;;8063:2;8048:18;;8041:60;-1:-1:-1;;;8132:3:1;8117:19;8110:35;8029:3;7171:980;-1:-1:-1;;;7171:980:1:o;8512:168::-;8585:9;;;8616;;8633:15;;;8627:22;;8613:37;8603:71;;8654:18;;:::i;8685:217::-;8725:1;8751;8741:132;;8795:10;8790:3;8786:20;8783:1;8776:31;8830:4;8827:1;8820:15;8858:4;8855:1;8848:15;8741:132;-1:-1:-1;8887:9:1;;8685:217::o

Swarm Source

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