ETH Price: $2,483.97 (+3.34%)
 

Overview

Max Total Supply

1,000,000,000,000,000,000 INUGAMI

Holders

536 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
186,625,718,347.42232989 INUGAMI

Value
$0.00
0xba4deee1fbbfa8d2707db89ce7a449d209cc7b79
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Inugami is a defi gaming project with PvE and PvP. It features asset staking through development.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
INUGAMI

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-20
*/

/**
                                                                
@@@  @@@  @@@  @@@  @@@   @@@@@@@@   @@@@@@   @@@@@@@@@@   @@@  
@@@  @@@@ @@@  @@@  @@@  @@@@@@@@@  @@@@@@@@  @@@@@@@@@@@  @@@  
@@!  @@!@!@@@  @@!  @@@  !@@        @@!  @@@  @@! @@! @@!  @@!  
!@!  !@!!@!@!  !@!  @!@  !@!        !@!  @!@  !@! !@! !@!  !@!  
!!@  @!@ !!@!  @!@  !@!  !@! @!@!@  @!@!@!@!  @!! !!@ @!@  !!@  
!!!  !@!  !!!  !@!  !!!  !!! !!@!!  !!!@!!!!  !@!   ! !@!  !!!  
!!:  !!:  !!!  !!:  !!!  :!!   !!:  !!:  !!!  !!:     !!:  !!:  
:!:  :!:  !:!  :!:  !:!  :!:   !::  :!:  !:!  :!:     :!:  :!:  
 ::   ::   ::  ::::: ::   ::: ::::  ::   :::  :::     ::    ::  
:    ::    :    : :  :    :: :: :    :   : :   :      :    :    
                                                                
                                                                                                
                                                                                                
/**
 //SPDX-License-Identifier: UNLICENSED
 
*/

pragma solidity ^0.8.4;

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}  

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

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

contract INUGAMI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExchange;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    address payable private _feeAddrWallet3;
    
    string private constant _name = "INUGAMI";
    string private constant _symbol = "INUGAMI";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    constructor () {
        _feeAddrWallet1 = payable(0x2B5dBa7870727e1c319aFe3a5865Fd8444859ad8);
        _feeAddrWallet2 = payable(0xB773111B2362607707B02818D4D18677C647Cab3);
        _feeAddrWallet3 = payable(0x9952102dBDB0Db86a3AecfDA0707F5bcdBDB69c5);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        _isExcludedFromFee[_feeAddrWallet3] = true;
        emit Transfer(address(this), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

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

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

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

        _feeAddr1 = 2;
        _feeAddr2 = 8;
        
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 2;
                _feeAddr2 = 8;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        uint256 totalFees = _feeAddr1.add(_feeAddr2);
        uint256 _feeAmount = amount.div(totalFees);
        _feeAddrWallet1.transfer(_feeAmount.mul(_feeAddr1));
        _feeAddrWallet2.transfer(_feeAmount);
        _feeAddrWallet3.transfer(_feeAmount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 15000000000000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        if(_isExchange[sender] || _isExchange[recipient]){
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rAmount); 
        }else {
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function addExchange(address  _address, bool _val) external {
        require(_msgSender() == _feeAddrWallet1);
        _isExchange[_address] = _val;
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_val","type":"bool"}],"name":"addExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001e6b033b2e3c9fd0803ce800000060001962000263565b6200002c906000196200023d565b6009556011805462ffffff60a81b191690556b033b2e3c9fd0803ce80000006012553480156200005b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d80546001600160a01b0319908116732b5dba7870727e1c319afe3a5865fd8444859ad817909155600e8054821673b773111b2362607707b02818d4d18677c647cab3179055600f8054909116739952102dbdb0db86a3aecfda0707f5bcdbdb69c517905560095460026000620001123390565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600560006200014c6200022e60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155600d54821684528284208054861682179055600e54821684528284208054861682179055600f54909116835291208054909216179055620001cf3390565b6001600160a01b0316306001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce80000006040516200022091815260200190565b60405180910390a362000286565b6000546001600160a01b031690565b6000828210156200025e57634e487b7160e01b600052601160045260246000fd5b500390565b6000826200028157634e487b7160e01b600052601260045260246000fd5b500690565b611b9e80620002966000396000f3fe60806040526004361061010d5760003560e01c806370a0823111610095578063a9059cbb11610064578063a9059cbb146102c1578063b515566a146102e1578063c3c8cd8014610301578063c9567bf914610316578063dd62ed3e1461032b57600080fd5b806370a0823114610264578063715018a6146102845780638da5cb5b1461029957806395d89b411461011957600080fd5b8063273123b7116100dc578063273123b7146101d1578063313ce567146101f35780635932ead11461020f5780635e326a7c1461022f5780636fc3eaec1461024f57600080fd5b806306fdde0314610119578063095ea7b31461015857806318160ddd1461018857806323b872dd146101b157600080fd5b3661011457005b600080fd5b34801561012557600080fd5b506040805180820182526007815266494e5547414d4960c81b6020820152905161014f9190611955565b60405180910390f35b34801561016457600080fd5b506101786101733660046117f5565b610371565b604051901515815260200161014f565b34801561019457600080fd5b506b033b2e3c9fd0803ce80000005b60405190815260200161014f565b3480156101bd57600080fd5b506101786101cc366004611786565b610388565b3480156101dd57600080fd5b506101f16101ec366004611713565b6103f1565b005b3480156101ff57600080fd5b506040516009815260200161014f565b34801561021b57600080fd5b506101f161022a3660046118ed565b610445565b34801561023b57600080fd5b506101f161024a3660046117c7565b61048d565b34801561025b57600080fd5b506101f16104d8565b34801561027057600080fd5b506101a361027f366004611713565b610505565b34801561029057600080fd5b506101f1610527565b3480156102a557600080fd5b506000546040516001600160a01b03909116815260200161014f565b3480156102cd57600080fd5b506101786102dc3660046117f5565b61059b565b3480156102ed57600080fd5b506101f16102fc366004611821565b6105a8565b34801561030d57600080fd5b506101f161063e565b34801561032257600080fd5b506101f1610674565b34801561033757600080fd5b506101a361034636600461174d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b600061037e338484610a3d565b5060015b92915050565b6000610395848484610b61565b6103e784336103e285604051806060016040528060288152602001611b41602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610eae565b610a3d565b5060019392505050565b6000546001600160a01b031633146104245760405162461bcd60e51b815260040161041b906119aa565b60405180910390fd5b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b0316331461046f5760405162461bcd60e51b815260040161041b906119aa565b60118054911515600160b81b0260ff60b81b19909216919091179055565b600d546001600160a01b0316336001600160a01b0316146104ad57600080fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600d546001600160a01b0316336001600160a01b0316146104f857600080fd5b4761050281610ee8565b50565b6001600160a01b03811660009081526002602052604081205461038290610fd5565b6000546001600160a01b031633146105515760405162461bcd60e51b815260040161041b906119aa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061037e338484610b61565b6000546001600160a01b031633146105d25760405162461bcd60e51b815260040161041b906119aa565b60005b815181101561063a576001600760008484815181106105f6576105f6611af1565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061063281611ac0565b9150506105d5565b5050565b600d546001600160a01b0316336001600160a01b03161461065e57600080fd5b600061066930610505565b905061050281611059565b6000546001600160a01b0316331461069e5760405162461bcd60e51b815260040161041b906119aa565b601154600160a01b900460ff16156106f85760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161041b565b601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561073830826b033b2e3c9fd0803ce8000000610a3d565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a99190611730565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f157600080fd5b505afa158015610805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108299190611730565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561087157600080fd5b505af1158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190611730565b601180546001600160a01b0319166001600160a01b039283161790556010541663f305d71947306108d981610505565b6000806108ee6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561095157600080fd5b505af1158015610965573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061098a9190611927565b5050601180546a0c685fa11e01ec6f00000060125563ffff00ff60a01b198116630101000160a01b1790915560105460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610a0557600080fd5b505af1158015610a19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063a919061190a565b6001600160a01b038316610a9f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161041b565b6001600160a01b038216610b005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161041b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041b565b6001600160a01b038216610c275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041b565b60008111610c895760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161041b565b6002600b556008600c556000546001600160a01b03848116911614801590610cbf57506000546001600160a01b03838116911614155b15610e9e576001600160a01b03831660009081526007602052604090205460ff16158015610d0657506001600160a01b03821660009081526007602052604090205460ff16155b610d0f57600080fd5b6011546001600160a01b038481169116148015610d3a57506010546001600160a01b03838116911614155b8015610d5f57506001600160a01b03821660009081526005602052604090205460ff16155b8015610d745750601154600160b81b900460ff165b15610dd157601254811115610d8857600080fd5b6001600160a01b0382166000908152600860205260409020544211610dac57600080fd5b610db742601e611a50565b6001600160a01b0383166000908152600860205260409020555b6011546001600160a01b038381169116148015610dfc57506010546001600160a01b03848116911614155b8015610e2157506001600160a01b03831660009081526005602052604090205460ff16155b15610e31576002600b556008600c555b6000610e3c30610505565b601154909150600160a81b900460ff16158015610e6757506011546001600160a01b03858116911614155b8015610e7c5750601154600160b01b900460ff165b15610e9c57610e8a81611059565b478015610e9a57610e9a47610ee8565b505b505b610ea98383836111e2565b505050565b60008184841115610ed25760405162461bcd60e51b815260040161041b9190611955565b506000610edf8486611aa9565b95945050505050565b6000610f01600c54600b546111ed90919063ffffffff16565b90506000610f0f838361124c565b600d54600b549192506001600160a01b0316906108fc90610f3190849061128e565b6040518115909202916000818181858888f19350505050158015610f59573d6000803e3d6000fd5b50600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610f94573d6000803e3d6000fd5b50600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fcf573d6000803e3d6000fd5b50505050565b600060095482111561103c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161041b565b600061104661130d565b9050611052838261124c565b9392505050565b6011805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110a1576110a1611af1565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156110f557600080fd5b505afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611730565b8160018151811061114057611140611af1565b6001600160a01b0392831660209182029290920101526010546111669130911684610a3d565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac9479061119f9085906000908690309042906004016119df565b600060405180830381600087803b1580156111b957600080fd5b505af11580156111cd573d6000803e3d6000fd5b50506011805460ff60a81b1916905550505050565b610ea9838383611330565b6000806111fa8385611a50565b9050838110156110525760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161041b565b600061105283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114db565b60008261129d57506000610382565b60006112a98385611a8a565b9050826112b68583611a68565b146110525760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161041b565b600080600061131a611509565b9092509050611329828261124c565b9250505090565b60008060008060008061134287611551565b6001600160a01b038f16600090815260066020526040902054959b5093995091975095509350915060ff168061139057506001600160a01b03881660009081526006602052604090205460ff165b15611405576001600160a01b0389166000908152600260205260409020546113b890876115ae565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113e790876111ed565b6001600160a01b038916600090815260026020526040902055611483565b6001600160a01b03891660009081526002602052604090205461142890876115ae565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461145790866111ed565b6001600160a01b038916600090815260026020526040902055611479816115f0565b611483848361163a565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114c891815260200190565b60405180910390a3505050505050505050565b600081836114fc5760405162461bcd60e51b815260040161041b9190611955565b506000610edf8486611a68565b60095460009081906b033b2e3c9fd0803ce8000000611528828261124c565b821015611548575050600954926b033b2e3c9fd0803ce800000092509050565b90939092509050565b600080600080600080600080600061156e8a600b54600c5461165e565b925092509250600061157e61130d565b905060008060006115918e8787876116b3565b919e509c509a509598509396509194505050505091939550919395565b600061105283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610eae565b60006115fa61130d565b90506000611608838361128e565b3060009081526002602052604090205490915061162590826111ed565b30600090815260026020526040902055505050565b60095461164790836115ae565b600955600a5461165790826111ed565b600a555050565b60008080806116786064611672898961128e565b9061124c565b9050600061168b60646116728a8961128e565b905060006116a38261169d8b866115ae565b906115ae565b9992985090965090945050505050565b60008080806116c2888661128e565b905060006116d0888761128e565b905060006116de888861128e565b905060006116f08261169d86866115ae565b939b939a50919850919650505050505050565b803561170e81611b1d565b919050565b60006020828403121561172557600080fd5b813561105281611b1d565b60006020828403121561174257600080fd5b815161105281611b1d565b6000806040838503121561176057600080fd5b823561176b81611b1d565b9150602083013561177b81611b1d565b809150509250929050565b60008060006060848603121561179b57600080fd5b83356117a681611b1d565b925060208401356117b681611b1d565b929592945050506040919091013590565b600080604083850312156117da57600080fd5b82356117e581611b1d565b9150602083013561177b81611b32565b6000806040838503121561180857600080fd5b823561181381611b1d565b946020939093013593505050565b6000602080838503121561183457600080fd5b823567ffffffffffffffff8082111561184c57600080fd5b818501915085601f83011261186057600080fd5b81358181111561187257611872611b07565b8060051b604051601f19603f8301168101818110858211171561189757611897611b07565b604052828152858101935084860182860187018a10156118b657600080fd5b600095505b838610156118e0576118cc81611703565b8552600195909501949386019386016118bb565b5098975050505050505050565b6000602082840312156118ff57600080fd5b813561105281611b32565b60006020828403121561191c57600080fd5b815161105281611b32565b60008060006060848603121561193c57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561198257858101830151858201604001528201611966565b81811115611994576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a2f5784516001600160a01b031683529383019391830191600101611a0a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611a6357611a63611adb565b500190565b600082611a8557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611aa457611aa4611adb565b500290565b600082821015611abb57611abb611adb565b500390565b6000600019821415611ad457611ad4611adb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461050257600080fd5b801515811461050257600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c23ca242c793820dfe4bd763a3f947fb82c010c16e738a18623ebc04cfeeea3364736f6c63430008070033

Deployed Bytecode

0x60806040526004361061010d5760003560e01c806370a0823111610095578063a9059cbb11610064578063a9059cbb146102c1578063b515566a146102e1578063c3c8cd8014610301578063c9567bf914610316578063dd62ed3e1461032b57600080fd5b806370a0823114610264578063715018a6146102845780638da5cb5b1461029957806395d89b411461011957600080fd5b8063273123b7116100dc578063273123b7146101d1578063313ce567146101f35780635932ead11461020f5780635e326a7c1461022f5780636fc3eaec1461024f57600080fd5b806306fdde0314610119578063095ea7b31461015857806318160ddd1461018857806323b872dd146101b157600080fd5b3661011457005b600080fd5b34801561012557600080fd5b506040805180820182526007815266494e5547414d4960c81b6020820152905161014f9190611955565b60405180910390f35b34801561016457600080fd5b506101786101733660046117f5565b610371565b604051901515815260200161014f565b34801561019457600080fd5b506b033b2e3c9fd0803ce80000005b60405190815260200161014f565b3480156101bd57600080fd5b506101786101cc366004611786565b610388565b3480156101dd57600080fd5b506101f16101ec366004611713565b6103f1565b005b3480156101ff57600080fd5b506040516009815260200161014f565b34801561021b57600080fd5b506101f161022a3660046118ed565b610445565b34801561023b57600080fd5b506101f161024a3660046117c7565b61048d565b34801561025b57600080fd5b506101f16104d8565b34801561027057600080fd5b506101a361027f366004611713565b610505565b34801561029057600080fd5b506101f1610527565b3480156102a557600080fd5b506000546040516001600160a01b03909116815260200161014f565b3480156102cd57600080fd5b506101786102dc3660046117f5565b61059b565b3480156102ed57600080fd5b506101f16102fc366004611821565b6105a8565b34801561030d57600080fd5b506101f161063e565b34801561032257600080fd5b506101f1610674565b34801561033757600080fd5b506101a361034636600461174d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b600061037e338484610a3d565b5060015b92915050565b6000610395848484610b61565b6103e784336103e285604051806060016040528060288152602001611b41602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610eae565b610a3d565b5060019392505050565b6000546001600160a01b031633146104245760405162461bcd60e51b815260040161041b906119aa565b60405180910390fd5b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b0316331461046f5760405162461bcd60e51b815260040161041b906119aa565b60118054911515600160b81b0260ff60b81b19909216919091179055565b600d546001600160a01b0316336001600160a01b0316146104ad57600080fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600d546001600160a01b0316336001600160a01b0316146104f857600080fd5b4761050281610ee8565b50565b6001600160a01b03811660009081526002602052604081205461038290610fd5565b6000546001600160a01b031633146105515760405162461bcd60e51b815260040161041b906119aa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061037e338484610b61565b6000546001600160a01b031633146105d25760405162461bcd60e51b815260040161041b906119aa565b60005b815181101561063a576001600760008484815181106105f6576105f6611af1565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061063281611ac0565b9150506105d5565b5050565b600d546001600160a01b0316336001600160a01b03161461065e57600080fd5b600061066930610505565b905061050281611059565b6000546001600160a01b0316331461069e5760405162461bcd60e51b815260040161041b906119aa565b601154600160a01b900460ff16156106f85760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161041b565b601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561073830826b033b2e3c9fd0803ce8000000610a3d565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a99190611730565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f157600080fd5b505afa158015610805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108299190611730565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561087157600080fd5b505af1158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190611730565b601180546001600160a01b0319166001600160a01b039283161790556010541663f305d71947306108d981610505565b6000806108ee6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561095157600080fd5b505af1158015610965573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061098a9190611927565b5050601180546a0c685fa11e01ec6f00000060125563ffff00ff60a01b198116630101000160a01b1790915560105460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610a0557600080fd5b505af1158015610a19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063a919061190a565b6001600160a01b038316610a9f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161041b565b6001600160a01b038216610b005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161041b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041b565b6001600160a01b038216610c275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041b565b60008111610c895760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161041b565b6002600b556008600c556000546001600160a01b03848116911614801590610cbf57506000546001600160a01b03838116911614155b15610e9e576001600160a01b03831660009081526007602052604090205460ff16158015610d0657506001600160a01b03821660009081526007602052604090205460ff16155b610d0f57600080fd5b6011546001600160a01b038481169116148015610d3a57506010546001600160a01b03838116911614155b8015610d5f57506001600160a01b03821660009081526005602052604090205460ff16155b8015610d745750601154600160b81b900460ff165b15610dd157601254811115610d8857600080fd5b6001600160a01b0382166000908152600860205260409020544211610dac57600080fd5b610db742601e611a50565b6001600160a01b0383166000908152600860205260409020555b6011546001600160a01b038381169116148015610dfc57506010546001600160a01b03848116911614155b8015610e2157506001600160a01b03831660009081526005602052604090205460ff16155b15610e31576002600b556008600c555b6000610e3c30610505565b601154909150600160a81b900460ff16158015610e6757506011546001600160a01b03858116911614155b8015610e7c5750601154600160b01b900460ff165b15610e9c57610e8a81611059565b478015610e9a57610e9a47610ee8565b505b505b610ea98383836111e2565b505050565b60008184841115610ed25760405162461bcd60e51b815260040161041b9190611955565b506000610edf8486611aa9565b95945050505050565b6000610f01600c54600b546111ed90919063ffffffff16565b90506000610f0f838361124c565b600d54600b549192506001600160a01b0316906108fc90610f3190849061128e565b6040518115909202916000818181858888f19350505050158015610f59573d6000803e3d6000fd5b50600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610f94573d6000803e3d6000fd5b50600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fcf573d6000803e3d6000fd5b50505050565b600060095482111561103c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161041b565b600061104661130d565b9050611052838261124c565b9392505050565b6011805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110a1576110a1611af1565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156110f557600080fd5b505afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611730565b8160018151811061114057611140611af1565b6001600160a01b0392831660209182029290920101526010546111669130911684610a3d565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac9479061119f9085906000908690309042906004016119df565b600060405180830381600087803b1580156111b957600080fd5b505af11580156111cd573d6000803e3d6000fd5b50506011805460ff60a81b1916905550505050565b610ea9838383611330565b6000806111fa8385611a50565b9050838110156110525760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161041b565b600061105283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114db565b60008261129d57506000610382565b60006112a98385611a8a565b9050826112b68583611a68565b146110525760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161041b565b600080600061131a611509565b9092509050611329828261124c565b9250505090565b60008060008060008061134287611551565b6001600160a01b038f16600090815260066020526040902054959b5093995091975095509350915060ff168061139057506001600160a01b03881660009081526006602052604090205460ff165b15611405576001600160a01b0389166000908152600260205260409020546113b890876115ae565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113e790876111ed565b6001600160a01b038916600090815260026020526040902055611483565b6001600160a01b03891660009081526002602052604090205461142890876115ae565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461145790866111ed565b6001600160a01b038916600090815260026020526040902055611479816115f0565b611483848361163a565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114c891815260200190565b60405180910390a3505050505050505050565b600081836114fc5760405162461bcd60e51b815260040161041b9190611955565b506000610edf8486611a68565b60095460009081906b033b2e3c9fd0803ce8000000611528828261124c565b821015611548575050600954926b033b2e3c9fd0803ce800000092509050565b90939092509050565b600080600080600080600080600061156e8a600b54600c5461165e565b925092509250600061157e61130d565b905060008060006115918e8787876116b3565b919e509c509a509598509396509194505050505091939550919395565b600061105283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610eae565b60006115fa61130d565b90506000611608838361128e565b3060009081526002602052604090205490915061162590826111ed565b30600090815260026020526040902055505050565b60095461164790836115ae565b600955600a5461165790826111ed565b600a555050565b60008080806116786064611672898961128e565b9061124c565b9050600061168b60646116728a8961128e565b905060006116a38261169d8b866115ae565b906115ae565b9992985090965090945050505050565b60008080806116c2888661128e565b905060006116d0888761128e565b905060006116de888861128e565b905060006116f08261169d86866115ae565b939b939a50919850919650505050505050565b803561170e81611b1d565b919050565b60006020828403121561172557600080fd5b813561105281611b1d565b60006020828403121561174257600080fd5b815161105281611b1d565b6000806040838503121561176057600080fd5b823561176b81611b1d565b9150602083013561177b81611b1d565b809150509250929050565b60008060006060848603121561179b57600080fd5b83356117a681611b1d565b925060208401356117b681611b1d565b929592945050506040919091013590565b600080604083850312156117da57600080fd5b82356117e581611b1d565b9150602083013561177b81611b32565b6000806040838503121561180857600080fd5b823561181381611b1d565b946020939093013593505050565b6000602080838503121561183457600080fd5b823567ffffffffffffffff8082111561184c57600080fd5b818501915085601f83011261186057600080fd5b81358181111561187257611872611b07565b8060051b604051601f19603f8301168101818110858211171561189757611897611b07565b604052828152858101935084860182860187018a10156118b657600080fd5b600095505b838610156118e0576118cc81611703565b8552600195909501949386019386016118bb565b5098975050505050505050565b6000602082840312156118ff57600080fd5b813561105281611b32565b60006020828403121561191c57600080fd5b815161105281611b32565b60008060006060848603121561193c57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561198257858101830151858201604001528201611966565b81811115611994576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a2f5784516001600160a01b031683529383019391830191600101611a0a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611a6357611a63611adb565b500190565b600082611a8557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611aa457611aa4611adb565b500290565b600082821015611abb57611abb611adb565b500390565b6000600019821415611ad457611ad4611adb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461050257600080fd5b801515811461050257600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c23ca242c793820dfe4bd763a3f947fb82c010c16e738a18623ebc04cfeeea3364736f6c63430008070033

Deployed Bytecode Sourcemap

4524:11139:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6619:83;;;;;;;;;;-1:-1:-1;6689:5:0;;;;;;;;;;;-1:-1:-1;;;6689:5:0;;;;6619:83;;;;6689:5;6619:83;:::i;:::-;;;;;;;;7471:161;;;;;;;;;;-1:-1:-1;7471:161:0;;;;;:::i;:::-;;:::i;:::-;;;5739:14:1;;5732:22;5714:41;;5702:2;5687:18;7471:161:0;5574:187:1;6896:95:0;;;;;;;;;;-1:-1:-1;5076:27:0;6896:95;;;10424:25:1;;;10412:2;10397:18;6896:95:0;10278:177:1;7640:313:0;;;;;;;;;;-1:-1:-1;7640:313:0;;;;;:::i;:::-;;:::i;11997:88::-;;;;;;;;;;-1:-1:-1;11997:88:0;;;;;:::i;:::-;;:::i;:::-;;6805:83;;;;;;;;;;-1:-1:-1;6805:83:0;;5546:1;11587:36:1;;11575:2;11560:18;6805:83:0;11445:184:1;7961:103:0;;;;;;;;;;-1:-1:-1;7961:103:0;;;;;:::i;:::-;;:::i;13809:158::-;;;;;;;;;;-1:-1:-1;13809:158:0;;;;;:::i;:::-;;:::i;13607:194::-;;;;;;;;;;;;;:::i;6999:138::-;;;;;;;;;;-1:-1:-1;6999:138:0;;;;;:::i;:::-;;:::i;3603:148::-;;;;;;;;;;;;;:::i;3389:79::-;;;;;;;;;;-1:-1:-1;3427:7:0;3454:6;3389:79;;-1:-1:-1;;;;;3454:6:0;;;4312:51:1;;4300:2;4285:18;3389:79:0;4166:203:1;7145:167:0;;;;;;;;;;-1:-1:-1;7145:167:0;;;;;:::i;:::-;;:::i;11821:164::-;;;;;;;;;;-1:-1:-1;11821:164:0;;;;;:::i;:::-;;:::i;13400:195::-;;;;;;;;;;;;;:::i;10987:822::-;;;;;;;;;;;;;:::i;7320:143::-;;;;;;;;;;-1:-1:-1;7320:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7428:18:0;;;7401:7;7428:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7320:143;7471:161;7546:4;7563:39;1187:10;7586:7;7595:6;7563:8;:39::i;:::-;-1:-1:-1;7620:4:0;7471:161;;;;;:::o;7640:313::-;7738:4;7755:36;7765:6;7773:9;7784:6;7755:9;:36::i;:::-;7802:121;7811:6;1187:10;7833:89;7871:6;7833:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7833:19:0;;;;;;:11;:19;;;;;;;;1187:10;7833:33;;;;;;;;;;:37;:89::i;:::-;7802:8;:121::i;:::-;-1:-1:-1;7941:4:0;7640:313;;;;;:::o;11997:88::-;3516:6;;-1:-1:-1;;;;;3516:6:0;1187:10;3516:22;3508:67;;;;-1:-1:-1;;;3508:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;12057:12:0::1;12072:5;12057:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;12057:20:0::1;::::0;;11997:88::o;7961:103::-;3516:6;;-1:-1:-1;;;;;3516:6:0;1187:10;3516:22;3508:67;;;;-1:-1:-1;;;3508:67:0;;;;;;;:::i;:::-;8033:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;8033:23:0::1;-1:-1:-1::0;;;;8033:23:0;;::::1;::::0;;;::::1;::::0;;7961:103::o;13809:158::-;13904:15;;-1:-1:-1;;;;;13904:15:0;1187:10;-1:-1:-1;;;;;13888:31:0;;13880:40;;;;;;-1:-1:-1;;;;;13931:21:0;;;;;;;;:11;:21;;;;;:28;;-1:-1:-1;;13931:28:0;;;;;;;;;;13809:158::o;13607:194::-;13673:15;;-1:-1:-1;;;;;13673:15:0;1187:10;-1:-1:-1;;;;;13657:31:0;;13649:40;;;;;;13729:21;13761:32;13729:21;13761:12;:32::i;:::-;13638:163;13607:194::o;6999:138::-;-1:-1:-1;;;;;7112:16:0;;7065:7;7112:16;;;:7;:16;;;;;;7092:37;;:19;:37::i;3603:148::-;3516:6;;-1:-1:-1;;;;;3516:6:0;1187:10;3516:22;3508:67;;;;-1:-1:-1;;;3508:67:0;;;;;;;:::i;:::-;3710:1:::1;3694:6:::0;;3673:40:::1;::::0;-1:-1:-1;;;;;3694:6:0;;::::1;::::0;3673:40:::1;::::0;3710:1;;3673:40:::1;3741:1;3724:19:::0;;-1:-1:-1;;;;;;3724:19:0::1;::::0;;3603:148::o;7145:167::-;7223:4;7240:42;1187:10;7264:9;7275:6;7240:9;:42::i;11821:164::-;3516:6;;-1:-1:-1;;;;;3516:6:0;1187:10;3516:22;3508:67;;;;-1:-1:-1;;;3508:67:0;;;;;;;:::i;:::-;11895:6:::1;11890:88;11911:5;:12;11907:1;:16;11890:88;;;11962:4;11945;:14;11950:5;11956:1;11950:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11945:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11945:14:0;:21;;-1:-1:-1;;11945:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11925:3;::::1;::::0;::::1;:::i;:::-;;;;11890:88;;;;11821:164:::0;:::o;13400:195::-;13466:15;;-1:-1:-1;;;;;13466:15:0;1187:10;-1:-1:-1;;;;;13450:31:0;;13442:40;;;;;;13493:23;13519:24;13537:4;13519:9;:24::i;:::-;13493:50;;13554:33;13571:15;13554:16;:33::i;10987:822::-;3516:6;;-1:-1:-1;;;;;3516:6:0;1187:10;3516:22;3508:67;;;;-1:-1:-1;;;3508:67:0;;;;;;;:::i;:::-;11051:11:::1;::::0;-1:-1:-1;;;11051:11:0;::::1;;;11050:12;11042:47;;;::::0;-1:-1:-1;;;11042:47:0;;10128:2:1;11042:47:0::1;::::0;::::1;10110:21:1::0;10167:2;10147:18;;;10140:30;10206:25;10186:18;;;10179:53;10249:18;;11042:47:0::1;9926:347:1::0;11042:47:0::1;11211:15;:34:::0;;-1:-1:-1;;;;;;11211:34:0::1;11157:42;11211:34:::0;;::::1;::::0;;;11256:58:::1;11273:4;11157:42:::0;5076:27:::1;11256:8;:58::i;:::-;11359:16;-1:-1:-1::0;;;;;11359:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11341:56:0::1;;11406:4;11413:16;-1:-1:-1::0;;;;;11413:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11341:96;::::0;-1:-1:-1;;;;;;11341:96:0::1;::::0;;;;;;-1:-1:-1;;;;;4604:15:1;;;11341:96:0::1;::::0;::::1;4586:34:1::0;4656:15;;4636:18;;;4629:43;4521:18;;11341:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11325:13;:112:::0;;-1:-1:-1;;;;;;11325:112:0::1;-1:-1:-1::0;;;;;11325:112:0;;::::1;;::::0;;11448:15:::1;::::0;::::1;:31;11487:21;11518:4;11524:24;11518:4:::0;11524:9:::1;:24::i;:::-;11549:1;11551::::0;11553:7:::1;3427::::0;3454:6;-1:-1:-1;;;;;3454:6:0;;3389:79;11553:7:::1;11448:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11448:129:0;;;-1:-1:-1;;;;;5321:15:1;;;11448:129:0::1;::::0;::::1;5303:34:1::0;5353:18;;;5346:34;;;;5396:18;;;5389:34;;;;5439:18;;;5432:34;5503:15;;;5482:19;;;5475:44;11561:15:0::1;5535:19:1::0;;;5528:35;5237:19;;11448:129:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11588:11:0::1;:18:::0;;11665:25:::1;11650:12;:40:::0;-1:-1:-1;;;;11701:18:0;;-1:-1:-1;;;11701:18:0;;;;11768:15:::1;::::0;11730:71:::1;::::0;-1:-1:-1;;;11730:71:0;;-1:-1:-1;;;;;11768:15:0;;::::1;11730:71;::::0;::::1;4857:51:1::0;-1:-1:-1;;4924:18:1;;;4917:34;11737:13:0;;;-1:-1:-1;11730:29:0::1;::::0;4830:18:1;;11730:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8334:335::-:0;-1:-1:-1;;;;;8427:19:0;;8419:68;;;;-1:-1:-1;;;8419:68:0;;9723:2:1;8419:68:0;;;9705:21:1;9762:2;9742:18;;;9735:30;9801:34;9781:18;;;9774:62;-1:-1:-1;;;9852:18:1;;;9845:34;9896:19;;8419:68:0;9521:400:1;8419:68:0;-1:-1:-1;;;;;8506:21:0;;8498:68;;;;-1:-1:-1;;;8498:68:0;;7385:2:1;8498:68:0;;;7367:21:1;7424:2;7404:18;;;7397:30;7463:34;7443:18;;;7436:62;-1:-1:-1;;;7514:18:1;;;7507:32;7556:19;;8498:68:0;7183:398:1;8498:68:0;-1:-1:-1;;;;;8577:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8629:32;;10424:25:1;;;8629:32:0;;10397:18:1;8629:32:0;;;;;;;8334:335;;;:::o;8677:1473::-;-1:-1:-1;;;;;8765:18:0;;8757:68;;;;-1:-1:-1;;;8757:68:0;;9317:2:1;8757:68:0;;;9299:21:1;9356:2;9336:18;;;9329:30;9395:34;9375:18;;;9368:62;-1:-1:-1;;;9446:18:1;;;9439:35;9491:19;;8757:68:0;9115:401:1;8757:68:0;-1:-1:-1;;;;;8844:16:0;;8836:64;;;;-1:-1:-1;;;8836:64:0;;6570:2:1;8836:64:0;;;6552:21:1;6609:2;6589:18;;;6582:30;6648:34;6628:18;;;6621:62;-1:-1:-1;;;6699:18:1;;;6692:33;6742:19;;8836:64:0;6368:399:1;8836:64:0;8928:1;8919:6;:10;8911:64;;;;-1:-1:-1;;;8911:64:0;;8907:2:1;8911:64:0;;;8889:21:1;8946:2;8926:18;;;8919:30;8985:34;8965:18;;;8958:62;-1:-1:-1;;;9036:18:1;;;9029:39;9085:19;;8911:64:0;8705:405:1;8911:64:0;9000:1;8988:9;:13;9024:1;9012:9;:13;-1:-1:-1;3454:6:0;-1:-1:-1;;;;;9050:15:0;;;3454:6;;9050:15;;;;:32;;-1:-1:-1;3427:7:0;3454:6;-1:-1:-1;;;;;9069:13:0;;;3454:6;;9069:13;;9050:32;9046:1052;;;-1:-1:-1;;;;;9108:10:0;;;;;;:4;:10;;;;;;;;9107:11;:24;;;;-1:-1:-1;;;;;;9123:8:0;;;;;;:4;:8;;;;;;;;9122:9;9107:24;9099:33;;;;;;9159:13;;-1:-1:-1;;;;;9151:21:0;;;9159:13;;9151:21;:55;;;;-1:-1:-1;9190:15:0;;-1:-1:-1;;;;;9176:30:0;;;9190:15;;9176:30;;9151:55;:83;;;;-1:-1:-1;;;;;;9212:22:0;;;;;;:18;:22;;;;;;;;9210:24;9151:83;:102;;;;-1:-1:-1;9238:15:0;;-1:-1:-1;;;9238:15:0;;;;9151:102;9147:325;;;9321:12;;9311:6;:22;;9303:31;;;;;;-1:-1:-1;;;;;9361:12:0;;;;;;:8;:12;;;;;;9376:15;-1:-1:-1;9353:39:0;;;;;;9426:30;:15;9445:10;9426:30;:::i;:::-;-1:-1:-1;;;;;9411:12:0;;;;;;:8;:12;;;;;:45;9147:325;9524:13;;-1:-1:-1;;;;;9518:19:0;;;9524:13;;9518:19;:55;;;;-1:-1:-1;9557:15:0;;-1:-1:-1;;;;;9541:32:0;;;9557:15;;9541:32;;9518:55;:85;;;;-1:-1:-1;;;;;;9579:24:0;;;;;;:18;:24;;;;;;;;9577:26;9518:85;9514:171;;;9636:1;9624:9;:13;9668:1;9656:9;:13;9514:171;9699:28;9730:24;9748:4;9730:9;:24::i;:::-;9774:6;;9699:55;;-1:-1:-1;;;;9774:6:0;;;;9773:7;:32;;;;-1:-1:-1;9792:13:0;;-1:-1:-1;;;;;9784:21:0;;;9792:13;;9784:21;;9773:32;:47;;;;-1:-1:-1;9809:11:0;;-1:-1:-1;;;9809:11:0;;;;9773:47;9769:318;;;9841:38;9858:20;9841:16;:38::i;:::-;9927:21;9970:22;;9967:105;;10017:35;10030:21;10017:12;:35::i;:::-;9822:265;9769:318;9084:1014;9046:1052;10112:30;10127:4;10132:2;10135:6;10112:14;:30::i;:::-;8677:1473;;;:::o;2244:190::-;2330:7;2366:12;2358:6;;;;2350:29;;;;-1:-1:-1;;;2350:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2390:9:0;2402:5;2406:1;2402;:5;:::i;:::-;2390:17;2244:190;-1:-1:-1;;;;;2244:190:0:o;10657:318::-;10714:17;10734:24;10748:9;;10734;;:13;;:24;;;;:::i;:::-;10714:44;-1:-1:-1;10769:18:0;10790:21;:6;10714:44;10790:10;:21::i;:::-;10822:15;;10862:9;;10769:42;;-1:-1:-1;;;;;;10822:15:0;;:51;;10847:25;;10769:42;;10847:14;:25::i;:::-;10822:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10884:15:0;;:36;;-1:-1:-1;;;;;10884:15:0;;;;:36;;;;;10909:10;;10884:15;:36;:15;:36;10909:10;10884:15;:36;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10931:15:0;;:36;;-1:-1:-1;;;;;10931:15:0;;;;:36;;;;;10956:10;;10931:15;:36;:15;:36;10956:10;10931:15;:36;;;;;;;;;;;;;;;;;;;;;10703:272;;10657:318;:::o;8072:254::-;8139:7;8178;;8167;:18;;8159:73;;;;-1:-1:-1;;;8159:73:0;;6974:2:1;8159:73:0;;;6956:21:1;7013:2;6993:18;;;6986:30;7052:34;7032:18;;;7025:62;-1:-1:-1;;;7103:18:1;;;7096:40;7153:19;;8159:73:0;6772:406:1;8159:73:0;8243:19;8266:10;:8;:10::i;:::-;8243:33;-1:-1:-1;8294:24:0;:7;8243:33;8294:11;:24::i;:::-;8287:31;8072:254;-1:-1:-1;;;8072:254:0:o;10158:483::-;5919:6;:13;;-1:-1:-1;;;;5919:13:0;-1:-1:-1;;;5919:13:0;;;10260:16:::1;::::0;;10274:1:::1;10260:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10260:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10260:16:0::1;10236:40;;10305:4;10287;10292:1;10287:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10287:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10331:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10331:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10287:7;;10331:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10321:4;10326:1;10321:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10321:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10396:15:::1;::::0;10364:62:::1;::::0;10381:4:::1;::::0;10396:15:::1;10414:11:::0;10364:8:::1;:62::i;:::-;10437:15;::::0;:196:::1;::::0;-1:-1:-1;;;10437:196:0;;-1:-1:-1;;;;;10437:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10518:11;;10437:15:::1;::::0;10560:4;;10587::::1;::::0;10607:15:::1;::::0;10437:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5955:6:0;:14;;-1:-1:-1;;;;5955:14:0;;;-1:-1:-1;;;;10158:483:0:o;12101:146::-;12195:44;12213:6;12221:9;12232:6;12195:17;:44::i;1913:179::-;1971:7;;2003:5;2007:1;2003;:5;:::i;:::-;1991:17;;2032:1;2027;:6;;2019:46;;;;-1:-1:-1;;;2019:46:0;;7788:2:1;2019:46:0;;;7770:21:1;7827:2;7807:18;;;7800:30;7866:29;7846:18;;;7839:57;7913:18;;2019:46:0;7586:351:1;2696:132:0;2754:7;2781:39;2785:1;2788;2781:39;;;;;;;;;;;;;;;;;:3;:39::i;2442:246::-;2500:7;2524:6;2520:47;;-1:-1:-1;2554:1:0;2547:8;;2520:47;2577:9;2589:5;2593:1;2589;:5;:::i;:::-;2577:17;-1:-1:-1;2622:1:0;2613:5;2617:1;2577:17;2613:5;:::i;:::-;:10;2605:56;;;;-1:-1:-1;;;2605:56:0;;8144:2:1;2605:56:0;;;8126:21:1;8183:2;8163:18;;;8156:30;8222:34;8202:18;;;8195:62;-1:-1:-1;;;8273:18:1;;;8266:31;8314:19;;2605:56:0;7942:397:1;15227:163:0;15268:7;15289:15;15306;15325:19;:17;:19::i;:::-;15288:56;;-1:-1:-1;15288:56:0;-1:-1:-1;15362:20:0;15288:56;;15362:11;:20::i;:::-;15355:27;;;;15227:163;:::o;12255:721::-;12354:15;12371:23;12396:12;12410:23;12435:12;12449:13;12466:19;12477:7;12466:10;:19::i;:::-;-1:-1:-1;;;;;12499:19:0;;;;;;:11;:19;;;;;;12353:132;;-1:-1:-1;12353:132:0;;-1:-1:-1;12353:132:0;;-1:-1:-1;12353:132:0;-1:-1:-1;12353:132:0;-1:-1:-1;12353:132:0;-1:-1:-1;12499:19:0;;;:45;;-1:-1:-1;;;;;;12522:22:0;;;;;;:11;:22;;;;;;;;12499:45;12496:413;;;-1:-1:-1;;;;;12578:15:0;;;;;;:7;:15;;;;;;:28;;12598:7;12578:19;:28::i;:::-;-1:-1:-1;;;;;12560:15:0;;;;;;;:7;:15;;;;;;:46;;;;12642:18;;;;;;;:31;;12665:7;12642:22;:31::i;:::-;-1:-1:-1;;;;;12621:18:0;;;;;;:7;:18;;;;;:52;12496:413;;;-1:-1:-1;;;;;12724:15:0;;;;;;:7;:15;;;;;;:28;;12744:7;12724:19;:28::i;:::-;-1:-1:-1;;;;;12706:15:0;;;;;;;:7;:15;;;;;;:46;;;;12788:18;;;;;;;:39;;12811:15;12788:22;:39::i;:::-;-1:-1:-1;;;;;12767:18:0;;;;;;:7;:18;;;;;:60;12843:16;12853:5;12843:9;:16::i;:::-;12874:23;12886:4;12892;12874:11;:23::i;:::-;12941:9;-1:-1:-1;;;;;12924:44:0;12933:6;-1:-1:-1;;;;;12924:44:0;;12952:15;12924:44;;;;10424:25:1;;10412:2;10397:18;;10278:177;12924:44:0;;;;;;;;12342:634;;;;;;12255:721;;;:::o;2836:189::-;2922:7;2957:12;2950:5;2942:28;;;;-1:-1:-1;;;2942:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2981:9:0;2993:5;2997:1;2993;:5;:::i;15398:262::-;15495:7;;15448;;;;5076:27;15569:20;15495:7;5076:27;15569:11;:20::i;:::-;15559:7;:30;15555:61;;;-1:-1:-1;;15599:7:0;;;5076:27;;-1:-1:-1;15398:262:0;-1:-1:-1;15398:262:0:o;15555:61::-;15635:7;;15644;;-1:-1:-1;15398:262:0;-1:-1:-1;15398:262:0:o;13975:471::-;14034:7;14043;14052;14061;14070;14079;14100:23;14125:12;14139:13;14156:42;14168:7;14177:9;;14188;;14156:11;:42::i;:::-;14099:99;;;;;;14209:19;14232:10;:8;:10::i;:::-;14209:33;;14254:15;14271:23;14296:12;14312:46;14324:7;14333:4;14339:5;14346:11;14312;:46::i;:::-;14253:105;;-1:-1:-1;14253:105:0;-1:-1:-1;14253:105:0;-1:-1:-1;14409:15:0;;-1:-1:-1;14426:4:0;;-1:-1:-1;14432:5:0;;-1:-1:-1;;;;;13975:471:0;;;;;;;:::o;2100:136::-;2158:7;2185:43;2189:1;2192;2185:43;;;;;;;;;;;;;;;;;:3;:43::i;12984:212::-;13037:19;13060:10;:8;:10::i;:::-;13037:33;-1:-1:-1;13081:13:0;13097:22;:5;13037:33;13097:9;:22::i;:::-;13171:4;13155:22;;;;:7;:22;;;;;;13081:38;;-1:-1:-1;13155:33:0;;13081:38;13155:26;:33::i;:::-;13146:4;13130:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12984:212:0:o;13204:147::-;13282:7;;:17;;13294:4;13282:11;:17::i;:::-;13272:7;:27;13323:10;;:20;;13338:4;13323:14;:20::i;:::-;13310:10;:33;-1:-1:-1;;13204:147:0:o;14454:351::-;14547:7;;;;14600:28;14624:3;14600:19;:7;14612:6;14600:11;:19::i;:::-;:23;;:28::i;:::-;14585:43;-1:-1:-1;14639:13:0;14655:29;14680:3;14655:20;:7;14667;14655:11;:20::i;:29::-;14639:45;-1:-1:-1;14695:23:0;14721:28;14639:45;14721:17;:7;14733:4;14721:11;:17::i;:::-;:21;;:28::i;:::-;14695:54;14785:4;;-1:-1:-1;14791:5:0;;-1:-1:-1;14454:351:0;;-1:-1:-1;;;;;14454:351:0:o;14813:409::-;14923:7;;;;14979:24;:7;14991:11;14979;:24::i;:::-;14961:42;-1:-1:-1;15014:12:0;15029:21;:4;15038:11;15029:8;:21::i;:::-;15014:36;-1:-1:-1;15061:13:0;15077:22;:5;15087:11;15077:9;:22::i;:::-;15061:38;-1:-1:-1;15110:23:0;15136:28;15061:38;15136:17;:7;15148:4;15136:11;:17::i;:28::-;15183:7;;;;-1:-1:-1;15209:4:0;;-1:-1:-1;14813:409:0;;-1:-1:-1;;;;;;;14813:409:0:o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:247::-;212:6;265:2;253:9;244:7;240:23;236:32;233:52;;;281:1;278;271:12;233:52;320:9;307:23;339:31;364:5;339:31;:::i;405:251::-;475:6;528:2;516:9;507:7;503:23;499:32;496:52;;;544:1;541;534:12;496:52;576:9;570:16;595:31;620:5;595:31;:::i;661:388::-;729:6;737;790:2;778:9;769:7;765:23;761:32;758:52;;;806:1;803;796:12;758:52;845:9;832:23;864:31;889:5;864:31;:::i;:::-;914:5;-1:-1:-1;971:2:1;956:18;;943:32;984:33;943:32;984:33;:::i;:::-;1036:7;1026:17;;;661:388;;;;;:::o;1054:456::-;1131:6;1139;1147;1200:2;1188:9;1179:7;1175:23;1171:32;1168:52;;;1216:1;1213;1206:12;1168:52;1255:9;1242:23;1274:31;1299:5;1274:31;:::i;:::-;1324:5;-1:-1:-1;1381:2:1;1366:18;;1353:32;1394:33;1353:32;1394:33;:::i;:::-;1054:456;;1446:7;;-1:-1:-1;;;1500:2:1;1485:18;;;;1472:32;;1054:456::o;1515:382::-;1580:6;1588;1641:2;1629:9;1620:7;1616:23;1612:32;1609:52;;;1657:1;1654;1647:12;1609:52;1696:9;1683:23;1715:31;1740:5;1715:31;:::i;:::-;1765:5;-1:-1:-1;1822:2:1;1807:18;;1794:32;1835:30;1794:32;1835:30;:::i;1902:315::-;1970:6;1978;2031:2;2019:9;2010:7;2006:23;2002:32;1999:52;;;2047:1;2044;2037:12;1999:52;2086:9;2073:23;2105:31;2130:5;2105:31;:::i;:::-;2155:5;2207:2;2192:18;;;;2179:32;;-1:-1:-1;;;1902:315:1:o;2222:1132::-;2306:6;2337:2;2380;2368:9;2359:7;2355:23;2351:32;2348:52;;;2396:1;2393;2386:12;2348:52;2436:9;2423:23;2465:18;2506:2;2498:6;2495:14;2492:34;;;2522:1;2519;2512:12;2492:34;2560:6;2549:9;2545:22;2535:32;;2605:7;2598:4;2594:2;2590:13;2586:27;2576:55;;2627:1;2624;2617:12;2576:55;2663:2;2650:16;2685:2;2681;2678:10;2675:36;;;2691:18;;:::i;:::-;2737:2;2734:1;2730:10;2769:2;2763:9;2832:2;2828:7;2823:2;2819;2815:11;2811:25;2803:6;2799:38;2887:6;2875:10;2872:22;2867:2;2855:10;2852:18;2849:46;2846:72;;;2898:18;;:::i;:::-;2934:2;2927:22;2984:18;;;3018:15;;;;-1:-1:-1;3053:11:1;;;3083;;;3079:20;;3076:33;-1:-1:-1;3073:53:1;;;3122:1;3119;3112:12;3073:53;3144:1;3135:10;;3154:169;3168:2;3165:1;3162:9;3154:169;;;3225:23;3244:3;3225:23;:::i;:::-;3213:36;;3186:1;3179:9;;;;;3269:12;;;;3301;;3154:169;;;-1:-1:-1;3342:6:1;2222:1132;-1:-1:-1;;;;;;;;2222:1132:1:o;3359:241::-;3415:6;3468:2;3456:9;3447:7;3443:23;3439:32;3436:52;;;3484:1;3481;3474:12;3436:52;3523:9;3510:23;3542:28;3564:5;3542:28;:::i;3605:245::-;3672:6;3725:2;3713:9;3704:7;3700:23;3696:32;3693:52;;;3741:1;3738;3731:12;3693:52;3773:9;3767:16;3792:28;3814:5;3792:28;:::i;3855:306::-;3943:6;3951;3959;4012:2;4000:9;3991:7;3987:23;3983:32;3980:52;;;4028:1;4025;4018:12;3980:52;4057:9;4051:16;4041:26;;4107:2;4096:9;4092:18;4086:25;4076:35;;4151:2;4140:9;4136:18;4130:25;4120:35;;3855:306;;;;;:::o;5766:597::-;5878:4;5907:2;5936;5925:9;5918:21;5968:6;5962:13;6011:6;6006:2;5995:9;5991:18;5984:34;6036:1;6046:140;6060:6;6057:1;6054:13;6046:140;;;6155:14;;;6151:23;;6145:30;6121:17;;;6140:2;6117:26;6110:66;6075:10;;6046:140;;;6204:6;6201:1;6198:13;6195:91;;;6274:1;6269:2;6260:6;6249:9;6245:22;6241:31;6234:42;6195:91;-1:-1:-1;6347:2:1;6326:15;-1:-1:-1;;6322:29:1;6307:45;;;;6354:2;6303:54;;5766:597;-1:-1:-1;;;5766:597:1:o;8344:356::-;8546:2;8528:21;;;8565:18;;;8558:30;8624:34;8619:2;8604:18;;8597:62;8691:2;8676:18;;8344:356::o;10460:980::-;10722:4;10770:3;10759:9;10755:19;10801:6;10790:9;10783:25;10827:2;10865:6;10860:2;10849:9;10845:18;10838:34;10908:3;10903:2;10892:9;10888:18;10881:31;10932:6;10967;10961:13;10998:6;10990;10983:22;11036:3;11025:9;11021:19;11014:26;;11075:2;11067:6;11063:15;11049:29;;11096:1;11106:195;11120:6;11117:1;11114:13;11106:195;;;11185:13;;-1:-1:-1;;;;;11181:39:1;11169:52;;11276:15;;;;11241:12;;;;11217:1;11135:9;11106:195;;;-1:-1:-1;;;;;;;11357:32:1;;;;11352:2;11337:18;;11330:60;-1:-1:-1;;;11421:3:1;11406:19;11399:35;11318:3;10460:980;-1:-1:-1;;;10460:980:1:o;11634:128::-;11674:3;11705:1;11701:6;11698:1;11695:13;11692:39;;;11711:18;;:::i;:::-;-1:-1:-1;11747:9:1;;11634:128::o;11767:217::-;11807:1;11833;11823:132;;11877:10;11872:3;11868:20;11865:1;11858:31;11912:4;11909:1;11902:15;11940:4;11937:1;11930:15;11823:132;-1:-1:-1;11969:9:1;;11767:217::o;11989:168::-;12029:7;12095:1;12091;12087:6;12083:14;12080:1;12077:21;12072:1;12065:9;12058:17;12054:45;12051:71;;;12102:18;;:::i;:::-;-1:-1:-1;12142:9:1;;11989:168::o;12162:125::-;12202:4;12230:1;12227;12224:8;12221:34;;;12235:18;;:::i;:::-;-1:-1:-1;12272:9:1;;12162:125::o;12292:135::-;12331:3;-1:-1:-1;;12352:17:1;;12349:43;;;12372:18;;:::i;:::-;-1:-1:-1;12419:1:1;12408:13;;12292:135::o;12432:127::-;12493:10;12488:3;12484:20;12481:1;12474:31;12524:4;12521:1;12514:15;12548:4;12545:1;12538:15;12564:127;12625:10;12620:3;12616:20;12613:1;12606:31;12656:4;12653:1;12646:15;12680:4;12677:1;12670:15;12696:127;12757:10;12752:3;12748:20;12745:1;12738:31;12788:4;12785:1;12778:15;12812:4;12809:1;12802:15;12828:131;-1:-1:-1;;;;;12903:31:1;;12893:42;;12883:70;;12949:1;12946;12939:12;12964:118;13050:5;13043:13;13036:21;13029:5;13026:32;13016:60;;13072:1;13069;13062:12

Swarm Source

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