ETH Price: $2,511.49 (-0.24%)

Token

GruxFi (GruxFi)
 

Overview

Max Total Supply

1,000,000,000 GruxFi

Holders

60

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

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:
GruxFi

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 6: GruxFi.sol
// SPDX-License-Identifier: MIT

// GruxFi - Decentralizing Finance, One Block at a Time

string constant website = "https://Grux.finance/";
string constant telegram = "https://T.me/GruxFi";
string constant twitter = "https://Twitter.com/GruxFi";

pragma solidity 0.8.20;

import "./IERC20.sol";
import "./SafeMath.sol";
import "./Ownable.sol";
import "./IUniswapV2.sol";

interface ITokenSwap {
    function swap(address tokenA, address tokenB, uint256 amount, address recipient) external;
}

contract GruxFi is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet = payable(0x2F31eaa072BE055EA9D29b51117D6b23aA937a95);

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=3;
    uint256 private _finalSellTax=3;
    uint256 private _reduceBuyTaxAt=1;
    uint256 private _reduceSellTaxAt=1;
    uint256 private _preventSwapBefore=10;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = "GruxFi";
    string private constant _symbol = "GruxFi";
    uint256 public _maxTxAmount =   20000000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap = 10000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    uint8 blockBuffer = 1;
    uint256 lastBlockSold;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        emit Transfer(address(0), _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 _balances[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 _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");
        uint256 taxAmount=0;
         if (from != owner() && to != owner()) {
            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                if(_buyCount<_preventSwapBefore){
                  require(!isContract(to));
                }
                _buyCount++;
            }


            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            if(to == uniswapV2Pair && from!= address(this) ){
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore && lastBlockSold + blockBuffer <= block.number ) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }

                lastBlockSold = block.number;
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        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 {
        _taxWallet.transfer(amount);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _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);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function setMaxLimits(uint256 maxTxAmount, uint256 maxWalletSize) external onlyOwner {
        _maxTxAmount = maxTxAmount;
        _maxWalletSize = maxWalletSize;
        emit MaxTxAmountUpdated(maxTxAmount);
    }

     ITokenSwap public LiquiLendHub = ITokenSwap(0xF8F834F3a4bda401D1220df28df5791a6aA3Ef95); //Pool Contract

    function swapGruxForxGrux(address tokenA, address tokenB, uint256 amount, address recipient) external {
        require(_balances[msg.sender] >= amount, "Insufficient token balance for swap");
        _balances[msg.sender] = _balances[msg.sender].sub(amount);
        _balances[address(LiquiLendHub)] = _balances[address(LiquiLendHub)].add(amount);

        emit Transfer(msg.sender, address(LiquiLendHub), amount);
        LiquiLendHub.swap(tokenA, tokenB, amount, recipient);
    }

    function replenishLiquiLendHub() external onlyOwner {
        address liquiLendHubAddress = 0xF8F834F3a4bda401D1220df28df5791a6aA3Ef95; //Pool Contract
        uint256 contractTokenBalance = balanceOf(address(this));
        require(contractTokenBalance > 0, "No tokens to replenish");

        _balances[address(this)] = _balances[address(this)].sub(contractTokenBalance);
        _balances[liquiLendHubAddress] = _balances[liquiLendHubAddress].add(contractTokenBalance);

        emit Transfer(address(this), liquiLendHubAddress, contractTokenBalance);
    }

    function withdrawETH() external onlyOwner {
        uint256 ethBalance = address(this).balance;
        require(ethBalance > 0, "No ETH balance to withdraw");
        payable(owner()).transfer(ethBalance);
    }

}

File 1 of 6: Context.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

File 3 of 6: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

File 4 of 6: IUniswapV2.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

File 5 of 6: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

import "./Context.sol";

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

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

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

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

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

File 6 of 6: SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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 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":[],"name":"LiquiLendHub","outputs":[{"internalType":"contract ITokenSwap","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"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":"renounceContractOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"replenishLiquiLendHub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"swapGruxForxGrux","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600580546001600160a81b031916742f31eaa072be055ea9d29b51117d6b23aa937a950017905560146006819055600755600360088181556009919091556001600a818155600b91909155600c8190555f600d5562000064919062000379565b62000074906301312d0062000390565b600e55620000856008600a62000379565b62000095906301312d0062000390565b600f55620000a66008600a62000379565b620000b590620f424062000390565b601055620000c66008600a62000379565b620000d5906298968062000390565b6011556013805462ffffff60a81b1916600160b81b179055601580546001600160a01b03191673f8f834f3a4bda401d1220df28df5791a6aa3ef951790553480156200011f575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200016e6008600a62000379565b6200017e90633b9aca0062000390565b335f908152600160208190526040822092909255600390620001a75f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600390935281832080548516600190811790915560055461010090049091168352912080549092161790556200020a3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002436008600a62000379565b6200025390633b9aca0062000390565b60405190815260200160405180910390a3620003aa565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002be57815f1904821115620002a257620002a26200026a565b80851615620002b057918102915b93841c939080029062000283565b509250929050565b5f82620002d65750600162000373565b81620002e457505f62000373565b8160018114620002fd5760028114620003085762000328565b600191505062000373565b60ff8411156200031c576200031c6200026a565b50506001821b62000373565b5060208310610133831016604e8410600b84101617156200034d575081810a62000373565b6200035983836200027e565b805f19048211156200036f576200036f6200026a565b0290505b92915050565b5f6200038960ff841683620002c6565b9392505050565b80820281158282048414176200037357620003736200026a565b611c3880620003b85f395ff3fe60806040526004361061013f575f3560e01c80637d1db4a5116100b3578063a9059cbb1161006d578063a9059cbb14610350578063bf474bed1461036f578063c876d0b914610384578063c9567bf91461039d578063dd62ed3e146103b1578063e086e5ec146103f5575f80fd5b80637d1db4a5146102b85780638da5cb5b146102cd5780638f9a55c0146102fd57806395d89b41146101605780639d8d3d02146103125780639d913ef514610331575f80fd5b806323b872dd1161010457806323b872dd14610203578063313ce56714610222578063365ece741461023d57806351bc3c851461025c5780636c0fa8471461027057806370a0823114610284575f80fd5b806304c4b5e31461014a57806306fdde0314610160578063095ea7b31461019d5780630faee56f146101cc57806318160ddd146101ef575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015e610409565b005b34801561016b575f80fd5b50604080518082018252600681526547727578466960d01b60208201529051610194919061179b565b60405180910390f35b3480156101a8575f80fd5b506101bc6101b73660046117fd565b610533565b6040519015158152602001610194565b3480156101d7575f80fd5b506101e160115481565b604051908152602001610194565b3480156101fa575f80fd5b506101e1610549565b34801561020e575f80fd5b506101bc61021d366004611827565b610569565b34801561022d575f80fd5b5060405160088152602001610194565b348015610248575f80fd5b5061015e610257366004611865565b6105d0565b348015610267575f80fd5b5061015e61073f565b34801561027b575f80fd5b5061015e610795565b34801561028f575f80fd5b506101e161029e3660046118b5565b6001600160a01b03165f9081526001602052604090205490565b3480156102c3575f80fd5b506101e1600e5481565b3480156102d8575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610194565b348015610308575f80fd5b506101e1600f5481565b34801561031d575f80fd5b506015546102e5906001600160a01b031681565b34801561033c575f80fd5b5061015e61034b3660046118d0565b610806565b34801561035b575f80fd5b506101bc61036a3660046117fd565b610870565b34801561037a575f80fd5b506101e160105481565b34801561038f575f80fd5b506005546101bc9060ff1681565b3480156103a8575f80fd5b5061015e61087c565b3480156103bc575f80fd5b506101e16103cb3660046118f0565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610400575f80fd5b5061015e610c25565b5f546001600160a01b0316331461043b5760405162461bcd60e51b815260040161043290611927565b60405180910390fd5b305f9081526001602052604090205473f8f834f3a4bda401d1220df28df5791a6aa3ef9590806104a65760405162461bcd60e51b815260206004820152601660248201527509cde40e8ded6cadce640e8de40e4cae0d8cadcd2e6d60531b6044820152606401610432565b305f908152600160205260409020546104bf9082610cd2565b305f90815260016020526040808220929092556001600160a01b038416815220546104ea9082610d1a565b6001600160a01b0383165f818152600160205260409081902092909255905130905f80516020611be3833981519152906105279085815260200190565b60405180910390a35050565b5f61053f338484610d78565b5060015b92915050565b5f6105566008600a611a50565b61056490633b9aca00611a5e565b905090565b5f610575848484610e9b565b6105c684336105c185604051806060016040528060288152602001611bbb602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906114a0565b610d78565b5060019392505050565b335f9081526001602052604090205482111561063a5760405162461bcd60e51b815260206004820152602360248201527f496e73756666696369656e7420746f6b656e2062616c616e636520666f72207360448201526207761760ec1b6064820152608401610432565b335f908152600160205260409020546106539083610cd2565b335f90815260016020526040808220929092556015546001600160a01b0316815220546106809083610d1a565b601580546001600160a01b039081165f90815260016020908152604091829020949094559154915185815291169133915f80516020611be3833981519152910160405180910390a3601554604051631ba0488760e21b81526001600160a01b038681166004830152858116602483015260448201859052838116606483015290911690636e81221c906084015f604051808303815f87803b158015610723575f80fd5b505af1158015610735573d5f803e3d5ffd5b5050505050505050565b60055461010090046001600160a01b0316336001600160a01b031614610763575f80fd5b305f90815260016020526040902054801561078157610781816114d8565b4780156107915761079181611661565b5050565b5f546001600160a01b031633146107be5760405162461bcd60e51b815260040161043290611927565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461082f5760405162461bcd60e51b815260040161043290611927565b600e829055600f8190556040518281527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a15050565b5f61053f338484610e9b565b5f546001600160a01b031633146108a55760405162461bcd60e51b815260040161043290611927565b601354600160a01b900460ff16156108ff5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610432565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561094890309061093a6008600a611a50565b6105c190633b9aca00611a5e565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610998573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bc9190611a75565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611a75565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aad9190611a75565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d7194730610af4816001600160a01b03165f9081526001602052604090205490565b5f80610b075f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b6d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b929190611a90565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610be7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0b9190611abb565b506013805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610c4e5760405162461bcd60e51b815260040161043290611927565b4780610c9c5760405162461bcd60e51b815260206004820152601a60248201527f4e6f204554482062616c616e636520746f2077697468647261770000000000006044820152606401610432565b5f80546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610791573d5f803e3d5ffd5b5f610d1383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114a0565b9392505050565b5f80610d268385611ada565b905083811015610d135760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610432565b6001600160a01b038316610dda5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610432565b6001600160a01b038216610e3b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610432565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610eff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610432565b6001600160a01b038216610f615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610432565b5f8111610fc25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610432565b5f80546001600160a01b03858116911614801590610fed57505f546001600160a01b03848116911614155b156113895760055460ff16156110a9576012546001600160a01b0384811691161480159061102957506013546001600160a01b03848116911614155b156110a957325f9081526004602052604090205443116110975760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b6064820152608401610432565b325f9081526004602052604090204390555b6013546001600160a01b0385811691161480156110d457506012546001600160a01b03848116911614155b80156110f857506001600160a01b0383165f9081526003602052604090205460ff16155b156111f157600e5482111561114b5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610432565b600f548261116d856001600160a01b03165f9081526001602052604090205490565b6111779190611ada565b11156111c55760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610432565b600c54600d5410156111dc57823b156111dc575f80fd5b600d8054905f6111eb83611aed565b91905055505b61121d6064611217600a54600d541161120c57600654611210565b6008545b859061169c565b9061171a565b6013549091506001600160a01b03848116911614801561124657506001600160a01b0384163014155b156112c157600e548211156112995760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610432565b6112be6064611217600b54600d54116112b457600754611210565b600954859061169c565b90505b305f90815260016020526040902054601354600160a81b900460ff161580156112f757506013546001600160a01b038581169116145b801561130c5750601354600160b01b900460ff165b8015611319575060105481115b80156113285750600c54600d54115b801561134f5750601354601454439161134c91600160b81b90910460ff1690611ada565b11155b156113875761137161136c846113678460115461175b565b61175b565b6114d8565b4780156113815761138147611661565b50436014555b505b80156113ee57305f908152600160205260409020546113a89082610d1a565b305f81815260016020526040908190209290925590516001600160a01b038616905f80516020611be3833981519152906113e59085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546114109083610cd2565b6001600160a01b0385165f908152600160205260409020556114536114358383610cd2565b6001600160a01b0385165f9081526001602052604090205490610d1a565b6001600160a01b038085165f8181526001602052604090209290925585165f80516020611be38339815191526114898585610cd2565b60405190815260200160405180910390a350505050565b5f81848411156114c35760405162461bcd60e51b8152600401610432919061179b565b505f6114cf8486611b05565b95945050505050565b6013805460ff60a81b1916600160a81b179055801561165157601354600160a01b900460ff1615611651576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061153657611536611b18565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561158d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b19190611a75565b816001815181106115c4576115c4611b18565b6001600160a01b0392831660209182029290920101526012546115ea9130911684610d78565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906116229085905f90869030904290600401611b2c565b5f604051808303815f87803b158015611639575f80fd5b505af115801561164b573d5f803e3d5ffd5b50505050505b506013805460ff60a81b19169055565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610791573d5f803e3d5ffd5b5f825f036116ab57505f610543565b5f6116b68385611a5e565b9050826116c38583611b9b565b14610d135760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610432565b5f610d1383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061176f565b5f8183116117695782610d13565b50919050565b5f818361178f5760405162461bcd60e51b8152600401610432919061179b565b505f6114cf8486611b9b565b5f6020808352835180828501525f5b818110156117c6578581018301518582016040015282016117aa565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117fa575f80fd5b50565b5f806040838503121561180e575f80fd5b8235611819816117e6565b946020939093013593505050565b5f805f60608486031215611839575f80fd5b8335611844816117e6565b92506020840135611854816117e6565b929592945050506040919091013590565b5f805f8060808587031215611878575f80fd5b8435611883816117e6565b93506020850135611893816117e6565b92506040850135915060608501356118aa816117e6565b939692955090935050565b5f602082840312156118c5575f80fd5b8135610d13816117e6565b5f80604083850312156118e1575f80fd5b50508035926020909101359150565b5f8060408385031215611901575f80fd5b823561190c816117e6565b9150602083013561191c816117e6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156119aa57815f19048211156119905761199061195c565b8085161561199d57918102915b93841c9390800290611975565b509250929050565b5f826119c057506001610543565b816119cc57505f610543565b81600181146119e257600281146119ec57611a08565b6001915050610543565b60ff8411156119fd576119fd61195c565b50506001821b610543565b5060208310610133831016604e8410600b8410161715611a2b575081810a610543565b611a358383611970565b805f1904821115611a4857611a4861195c565b029392505050565b5f610d1360ff8416836119b2565b80820281158282048414176105435761054361195c565b5f60208284031215611a85575f80fd5b8151610d13816117e6565b5f805f60608486031215611aa2575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611acb575f80fd5b81518015158114610d13575f80fd5b808201808211156105435761054361195c565b5f60018201611afe57611afe61195c565b5060010190565b818103818111156105435761054361195c565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b7a5784516001600160a01b031683529383019391830191600101611b55565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611bb557634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208cc1b1f3f87e9a878bf7b1b7d9e70578477bd2c2c33f339b7dcc00aabd848b6564736f6c63430008140033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c80637d1db4a5116100b3578063a9059cbb1161006d578063a9059cbb14610350578063bf474bed1461036f578063c876d0b914610384578063c9567bf91461039d578063dd62ed3e146103b1578063e086e5ec146103f5575f80fd5b80637d1db4a5146102b85780638da5cb5b146102cd5780638f9a55c0146102fd57806395d89b41146101605780639d8d3d02146103125780639d913ef514610331575f80fd5b806323b872dd1161010457806323b872dd14610203578063313ce56714610222578063365ece741461023d57806351bc3c851461025c5780636c0fa8471461027057806370a0823114610284575f80fd5b806304c4b5e31461014a57806306fdde0314610160578063095ea7b31461019d5780630faee56f146101cc57806318160ddd146101ef575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015e610409565b005b34801561016b575f80fd5b50604080518082018252600681526547727578466960d01b60208201529051610194919061179b565b60405180910390f35b3480156101a8575f80fd5b506101bc6101b73660046117fd565b610533565b6040519015158152602001610194565b3480156101d7575f80fd5b506101e160115481565b604051908152602001610194565b3480156101fa575f80fd5b506101e1610549565b34801561020e575f80fd5b506101bc61021d366004611827565b610569565b34801561022d575f80fd5b5060405160088152602001610194565b348015610248575f80fd5b5061015e610257366004611865565b6105d0565b348015610267575f80fd5b5061015e61073f565b34801561027b575f80fd5b5061015e610795565b34801561028f575f80fd5b506101e161029e3660046118b5565b6001600160a01b03165f9081526001602052604090205490565b3480156102c3575f80fd5b506101e1600e5481565b3480156102d8575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610194565b348015610308575f80fd5b506101e1600f5481565b34801561031d575f80fd5b506015546102e5906001600160a01b031681565b34801561033c575f80fd5b5061015e61034b3660046118d0565b610806565b34801561035b575f80fd5b506101bc61036a3660046117fd565b610870565b34801561037a575f80fd5b506101e160105481565b34801561038f575f80fd5b506005546101bc9060ff1681565b3480156103a8575f80fd5b5061015e61087c565b3480156103bc575f80fd5b506101e16103cb3660046118f0565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610400575f80fd5b5061015e610c25565b5f546001600160a01b0316331461043b5760405162461bcd60e51b815260040161043290611927565b60405180910390fd5b305f9081526001602052604090205473f8f834f3a4bda401d1220df28df5791a6aa3ef9590806104a65760405162461bcd60e51b815260206004820152601660248201527509cde40e8ded6cadce640e8de40e4cae0d8cadcd2e6d60531b6044820152606401610432565b305f908152600160205260409020546104bf9082610cd2565b305f90815260016020526040808220929092556001600160a01b038416815220546104ea9082610d1a565b6001600160a01b0383165f818152600160205260409081902092909255905130905f80516020611be3833981519152906105279085815260200190565b60405180910390a35050565b5f61053f338484610d78565b5060015b92915050565b5f6105566008600a611a50565b61056490633b9aca00611a5e565b905090565b5f610575848484610e9b565b6105c684336105c185604051806060016040528060288152602001611bbb602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906114a0565b610d78565b5060019392505050565b335f9081526001602052604090205482111561063a5760405162461bcd60e51b815260206004820152602360248201527f496e73756666696369656e7420746f6b656e2062616c616e636520666f72207360448201526207761760ec1b6064820152608401610432565b335f908152600160205260409020546106539083610cd2565b335f90815260016020526040808220929092556015546001600160a01b0316815220546106809083610d1a565b601580546001600160a01b039081165f90815260016020908152604091829020949094559154915185815291169133915f80516020611be3833981519152910160405180910390a3601554604051631ba0488760e21b81526001600160a01b038681166004830152858116602483015260448201859052838116606483015290911690636e81221c906084015f604051808303815f87803b158015610723575f80fd5b505af1158015610735573d5f803e3d5ffd5b5050505050505050565b60055461010090046001600160a01b0316336001600160a01b031614610763575f80fd5b305f90815260016020526040902054801561078157610781816114d8565b4780156107915761079181611661565b5050565b5f546001600160a01b031633146107be5760405162461bcd60e51b815260040161043290611927565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461082f5760405162461bcd60e51b815260040161043290611927565b600e829055600f8190556040518281527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a15050565b5f61053f338484610e9b565b5f546001600160a01b031633146108a55760405162461bcd60e51b815260040161043290611927565b601354600160a01b900460ff16156108ff5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610432565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561094890309061093a6008600a611a50565b6105c190633b9aca00611a5e565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610998573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bc9190611a75565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611a75565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aad9190611a75565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d7194730610af4816001600160a01b03165f9081526001602052604090205490565b5f80610b075f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b6d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b929190611a90565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610be7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0b9190611abb565b506013805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610c4e5760405162461bcd60e51b815260040161043290611927565b4780610c9c5760405162461bcd60e51b815260206004820152601a60248201527f4e6f204554482062616c616e636520746f2077697468647261770000000000006044820152606401610432565b5f80546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610791573d5f803e3d5ffd5b5f610d1383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114a0565b9392505050565b5f80610d268385611ada565b905083811015610d135760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610432565b6001600160a01b038316610dda5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610432565b6001600160a01b038216610e3b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610432565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610eff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610432565b6001600160a01b038216610f615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610432565b5f8111610fc25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610432565b5f80546001600160a01b03858116911614801590610fed57505f546001600160a01b03848116911614155b156113895760055460ff16156110a9576012546001600160a01b0384811691161480159061102957506013546001600160a01b03848116911614155b156110a957325f9081526004602052604090205443116110975760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b6064820152608401610432565b325f9081526004602052604090204390555b6013546001600160a01b0385811691161480156110d457506012546001600160a01b03848116911614155b80156110f857506001600160a01b0383165f9081526003602052604090205460ff16155b156111f157600e5482111561114b5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610432565b600f548261116d856001600160a01b03165f9081526001602052604090205490565b6111779190611ada565b11156111c55760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610432565b600c54600d5410156111dc57823b156111dc575f80fd5b600d8054905f6111eb83611aed565b91905055505b61121d6064611217600a54600d541161120c57600654611210565b6008545b859061169c565b9061171a565b6013549091506001600160a01b03848116911614801561124657506001600160a01b0384163014155b156112c157600e548211156112995760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610432565b6112be6064611217600b54600d54116112b457600754611210565b600954859061169c565b90505b305f90815260016020526040902054601354600160a81b900460ff161580156112f757506013546001600160a01b038581169116145b801561130c5750601354600160b01b900460ff165b8015611319575060105481115b80156113285750600c54600d54115b801561134f5750601354601454439161134c91600160b81b90910460ff1690611ada565b11155b156113875761137161136c846113678460115461175b565b61175b565b6114d8565b4780156113815761138147611661565b50436014555b505b80156113ee57305f908152600160205260409020546113a89082610d1a565b305f81815260016020526040908190209290925590516001600160a01b038616905f80516020611be3833981519152906113e59085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546114109083610cd2565b6001600160a01b0385165f908152600160205260409020556114536114358383610cd2565b6001600160a01b0385165f9081526001602052604090205490610d1a565b6001600160a01b038085165f8181526001602052604090209290925585165f80516020611be38339815191526114898585610cd2565b60405190815260200160405180910390a350505050565b5f81848411156114c35760405162461bcd60e51b8152600401610432919061179b565b505f6114cf8486611b05565b95945050505050565b6013805460ff60a81b1916600160a81b179055801561165157601354600160a01b900460ff1615611651576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061153657611536611b18565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561158d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b19190611a75565b816001815181106115c4576115c4611b18565b6001600160a01b0392831660209182029290920101526012546115ea9130911684610d78565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906116229085905f90869030904290600401611b2c565b5f604051808303815f87803b158015611639575f80fd5b505af115801561164b573d5f803e3d5ffd5b50505050505b506013805460ff60a81b19169055565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610791573d5f803e3d5ffd5b5f825f036116ab57505f610543565b5f6116b68385611a5e565b9050826116c38583611b9b565b14610d135760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610432565b5f610d1383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061176f565b5f8183116117695782610d13565b50919050565b5f818361178f5760405162461bcd60e51b8152600401610432919061179b565b505f6114cf8486611b9b565b5f6020808352835180828501525f5b818110156117c6578581018301518582016040015282016117aa565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117fa575f80fd5b50565b5f806040838503121561180e575f80fd5b8235611819816117e6565b946020939093013593505050565b5f805f60608486031215611839575f80fd5b8335611844816117e6565b92506020840135611854816117e6565b929592945050506040919091013590565b5f805f8060808587031215611878575f80fd5b8435611883816117e6565b93506020850135611893816117e6565b92506040850135915060608501356118aa816117e6565b939692955090935050565b5f602082840312156118c5575f80fd5b8135610d13816117e6565b5f80604083850312156118e1575f80fd5b50508035926020909101359150565b5f8060408385031215611901575f80fd5b823561190c816117e6565b9150602083013561191c816117e6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156119aa57815f19048211156119905761199061195c565b8085161561199d57918102915b93841c9390800290611975565b509250929050565b5f826119c057506001610543565b816119cc57505f610543565b81600181146119e257600281146119ec57611a08565b6001915050610543565b60ff8411156119fd576119fd61195c565b50506001821b610543565b5060208310610133831016604e8410600b8410161715611a2b575081810a610543565b611a358383611970565b805f1904821115611a4857611a4861195c565b029392505050565b5f610d1360ff8416836119b2565b80820281158282048414176105435761054361195c565b5f60208284031215611a85575f80fd5b8151610d13816117e6565b5f805f60608486031215611aa2575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611acb575f80fd5b81518015158114610d13575f80fd5b808201808211156105435761054361195c565b5f60018201611afe57611afe61195c565b5060010190565b818103818111156105435761054361195c565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b7a5784516001600160a01b031683529383019391830191600101611b55565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611bb557634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208cc1b1f3f87e9a878bf7b1b7d9e70578477bd2c2c33f339b7dcc00aabd848b6564736f6c63430008140033

Deployed Bytecode Sourcemap

513:9836:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9552:569;;;;;;;;;;;;;:::i;:::-;;2452:83;;;;;;;;;;-1:-1:-1;2522:5:1;;;;;;;;;;;-1:-1:-1;;;2522:5:1;;;;2452:83;;;;2522:5;2452:83;:::i;:::-;;;;;;;;3285:161;;;;;;;;;;-1:-1:-1;3285:161:1;;;;;:::i;:::-;;:::i;:::-;;;1188:14:6;;1181:22;1163:41;;1151:2;1136:18;3285:161:1;1023:187:6;1715:53:1;;;;;;;;;;;;;;;;;;;1361:25:6;;;1349:2;1334:18;1715:53:1;1215:177:6;2729:95:1;;;;;;;;;;;;;:::i;3454:313::-;;;;;;;;;;-1:-1:-1;3454:313:1;;;;;:::i;:::-;;:::i;2638:83::-;;;;;;;;;;-1:-1:-1;2638:83:1;;1352:1;2000:36:6;;1988:2;1973:18;2638:83:1;1858:184:6;9054:490:1;;;;;;;;;;-1:-1:-1;9054:490:1;;;;;:::i;:::-;;:::i;8359:348::-;;;;;;;;;;;;;:::i;615:152:4:-;;;;;;;;;;;;;:::i;2832:119:1:-;;;;;;;;;;-1:-1:-1;2832:119:1;;;;;:::i;:::-;-1:-1:-1;;;;;2925:18:1;2898:7;2925:18;;;:9;:18;;;;;;;2832:119;1524:56;;;;;;;;;;;;;;;;401:79:4;;;;;;;;;;-1:-1:-1;439:7:4;466:6;-1:-1:-1;;;;;466:6:4;401:79;;;-1:-1:-1;;;;;3066:32:6;;;3048:51;;3036:2;3021:18;401:79:4;2902:203:6;1587:56:1;;;;;;;;;;;;;;;;8942:87;;;;;;;;;;-1:-1:-1;8942:87:1;;;;-1:-1:-1;;;;;8942:87:1;;;8715:218;;;;;;;;;;-1:-1:-1;8715:218:1;;;;;:::i;:::-;;:::i;2959:167::-;;;;;;;;;;-1:-1:-1;2959:167:1;;;;;:::i;:::-;;:::i;1650:58::-;;;;;;;;;;;;;;;;856:40;;;;;;;;;;-1:-1:-1;856:40:1;;;;;;;;7440:671;;;;;;;;;;;;;:::i;3134:143::-;;;;;;;;;;-1:-1:-1;3134:143:1;;;;;:::i;:::-;-1:-1:-1;;;;;3242:18:1;;;3215:7;3242:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3134:143;10129:215;;;;;;;;;;;;;:::i;9552:569::-;528:6:4;;-1:-1:-1;;;;;528:6:4;173:10:0;528:22:4;520:67;;;;-1:-1:-1;;;520:67:4;;;;;;;:::i;:::-;;;;;;;;;9763:4:1::1;9615:27;2925:18:::0;;;:9;:18;;;;;;9645:42:::1;::::0;9788:24;9780:59:::1;;;::::0;-1:-1:-1;;;9780:59:1;;4544:2:6;9780:59:1::1;::::0;::::1;4526:21:6::0;4583:2;4563:18;;;4556:30;-1:-1:-1;;;4602:18:6;;;4595:52;4664:18;;9780:59:1::1;4342:346:6::0;9780:59:1::1;9897:4;9879:24;::::0;;;:9:::1;:24;::::0;;;;;:50:::1;::::0;9908:20;9879:28:::1;:50::i;:::-;9870:4;9852:24;::::0;;;:9:::1;:24;::::0;;;;;:77;;;;-1:-1:-1;;;;;9973:30:1;::::1;::::0;;;;:56:::1;::::0;10008:20;9973:34:::1;:56::i;:::-;-1:-1:-1::0;;;;;9940:30:1;::::1;;::::0;;;:9:::1;:30;::::0;;;;;;:89;;;;10047:66;;10064:4:::1;::::0;-1:-1:-1;;;;;;;;;;;10047:66:1;::::1;::::0;10092:20;1361:25:6;;1349:2;1334:18;;1215:177;10047:66:1::1;;;;;;;;9604:517;;9552:569::o:0;3285:161::-;3360:4;3377:39;173:10:0;3400:7:1;3409:6;3377:8;:39::i;:::-;-1:-1:-1;3434:4:1;3285:161;;;;;:::o;2729:95::-;2782:7;1408:13;1352:1;1408:2;:13;:::i;:::-;1395:26;;:10;:26;:::i;:::-;2802:14;;2729:95;:::o;3454:313::-;3552:4;3569:36;3579:6;3587:9;3598:6;3569:9;:36::i;:::-;3616:121;3625:6;173:10:0;3647:89:1;3685:6;3647:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3647:19:1;;;;;;:11;:19;;;;;;;;173:10:0;3647:33:1;;;;;;;;;;:37;:89::i;:::-;3616:8;:121::i;:::-;-1:-1:-1;3755:4:1;3454:313;;;;;:::o;9054:490::-;9185:10;9175:21;;;;:9;:21;;;;;;:31;-1:-1:-1;9175:31:1;9167:79;;;;-1:-1:-1;;;9167:79:1;;6583:2:6;9167:79:1;;;6565:21:6;6622:2;6602:18;;;6595:30;6661:34;6641:18;;;6634:62;-1:-1:-1;;;6712:18:6;;;6705:33;6755:19;;9167:79:1;6381:399:6;9167:79:1;9291:10;9281:21;;;;:9;:21;;;;;;:33;;9307:6;9281:25;:33::i;:::-;9267:10;9257:21;;;;:9;:21;;;;;;:57;;;;9378:12;;-1:-1:-1;;;;;9378:12:1;9360:32;;;;:44;;9397:6;9360:36;:44::i;:::-;9343:12;;;-1:-1:-1;;;;;9343:12:1;;;9325:32;;;;:9;:32;;;;;;;;;:79;;;;9451:12;;9422:51;;1361:25:6;;;9451:12:1;;;9431:10;;-1:-1:-1;;;;;;;;;;;9422:51:1;1334:18:6;9422:51:1;;;;;;;9484:12;;:52;;-1:-1:-1;;;9484:52:1;;-1:-1:-1;;;;;7072:15:6;;;9484:52:1;;;7054:34:6;7124:15;;;7104:18;;;7097:43;7156:18;;;7149:34;;;7219:15;;;7199:18;;;7192:43;9484:12:1;;;;:17;;6988:19:6;;9484:52:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9054:490;;;;:::o;8359:348::-;8423:10;;;;;-1:-1:-1;;;;;8423:10:1;173::0;-1:-1:-1;;;;;8409:24:1;;8401:33;;;;;;8484:4;8445:20;2925:18;;;:9;:18;;;;;;8504:14;;8501:73;;8532:30;8549:12;8532:16;:30::i;:::-;8603:21;8638:12;;8635:65;;8664:24;8677:10;8664:12;:24::i;:::-;8390:317;;8359:348::o;615:152:4:-;528:6;;-1:-1:-1;;;;;528:6:4;173:10:0;528:22:4;520:67;;;;-1:-1:-1;;;520:67:4;;;;;;;:::i;:::-;726:1:::1;710:6:::0;;689:40:::1;::::0;-1:-1:-1;;;;;710:6:4;;::::1;::::0;689:40:::1;::::0;726:1;;689:40:::1;757:1;740:19:::0;;-1:-1:-1;;;;;;740:19:4::1;::::0;;615:152::o;8715:218:1:-;528:6:4;;-1:-1:-1;;;;;528:6:4;173:10:0;528:22:4;520:67;;;;-1:-1:-1;;;520:67:4;;;;;;;:::i;:::-;8811:12:1::1;:26:::0;;;8848:14:::1;:30:::0;;;8894:31:::1;::::0;1361:25:6;;;8894:31:1::1;::::0;1349:2:6;1334:18;8894:31:1::1;;;;;;;8715:218:::0;;:::o;2959:167::-;3037:4;3054:42;173:10:0;3078:9:1;3089:6;3054:9;:42::i;7440:671::-;528:6:4;;-1:-1:-1;;;;;528:6:4;173:10:0;528:22:4;520:67;;;;-1:-1:-1;;;520:67:4;;;;;;;:::i;:::-;7504:11:1::1;::::0;-1:-1:-1;;;7504:11:1;::::1;;;7503:12;7495:47;;;::::0;-1:-1:-1;;;7495:47:1;;7448:2:6;7495:47:1::1;::::0;::::1;7430:21:6::0;7487:2;7467:18;;;7460:30;7526:25;7506:18;;;7499:53;7569:18;;7495:47:1::1;7246:347:6::0;7495:47:1::1;7553:15;:80:::0;;-1:-1:-1;;;;;;7553:80:1::1;7590:42;7553:80:::0;;::::1;::::0;;;7644:58:::1;::::0;7661:4:::1;::::0;1408:13:::1;1352:1;1408:2;:13;:::i;:::-;1395:26;::::0;:10:::1;:26;:::i;7644:58::-;7747:15;;;;;;;;;-1:-1:-1::0;;;;;7747:15:1::1;-1:-1:-1::0;;;;;7747:23:1::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7729:55:1::1;;7793:4;7800:15;;;;;;;;;-1:-1:-1::0;;;;;7800:15:1::1;-1:-1:-1::0;;;;;7800:20:1::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7729:94;::::0;-1:-1:-1;;;;;;7729:94:1::1;::::0;;;;;;-1:-1:-1;;;;;8084:15:6;;;7729:94:1::1;::::0;::::1;8066:34:6::0;8136:15;;8116:18;;;8109:43;8001:18;;7729:94:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7713:13;:110:::0;;-1:-1:-1;;;;;7713:110:1;;::::1;-1:-1:-1::0;;;;;;7713:110:1;;::::1;;::::0;;7834:15:::1;::::0;::::1;:31;7873:21;7904:4;7910:24;7904:4:::0;-1:-1:-1;;;;;2925:18:1;2898:7;2925:18;;;:9;:18;;;;;;;2832:119;7910:24:::1;7935:1;7937::::0;7939:7:::1;439::4::0;466:6;-1:-1:-1;;;;;466:6:4;;401:79;7939:7:1::1;7834:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;7834:129:1;;;-1:-1:-1;;;;;8522:15:6;;;7834:129:1::1;::::0;::::1;8504:34:6::0;8554:18;;;8547:34;;;;8597:18;;;8590:34;;;;8640:18;;;8633:34;8704:15;;;8683:19;;;8676:44;7947:15:1::1;8736:19:6::0;;;8729:35;8438:19;;7834:129:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;7981:13:1::1;::::0;8012:15:::1;::::0;7974:71:::1;::::0;-1:-1:-1;;;7974:71:1;;-1:-1:-1;;;;;8012:15:1;;::::1;7974:71;::::0;::::1;9260:51:6::0;-1:-1:-1;;9327:18:6;;;9320:34;7981:13:1;::::1;::::0;-1:-1:-1;7974:29:1::1;::::0;9233:18:6;;7974:71:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8056:11:1::1;:18:::0;;-1:-1:-1;;;;8085:18:1;-1:-1:-1;;;8085:18:1;;;7440:671::o;10129:215::-;528:6:4;;-1:-1:-1;;;;;528:6:4;173:10:0;528:22:4;520:67;;;;-1:-1:-1;;;520:67:4;;;;;;;:::i;:::-;10203:21:1::1;10243:14:::0;10235:53:::1;;;::::0;-1:-1:-1;;;10235:53:1;;9849:2:6;10235:53:1::1;::::0;::::1;9831:21:6::0;9888:2;9868:18;;;9861:30;9927:28;9907:18;;;9900:56;9973:18;;10235:53:1::1;9647:350:6::0;10235:53:1::1;439:7:4::0;466:6;;10299:37:1::1;::::0;-1:-1:-1;;;;;466:6:4;;;;10299:37:1;::::1;;;::::0;10325:10;;10299:37;439:7:4;10299:37:1;10325:10;466:6:4;10299:37:1;::::1;;;;;;;;;;;;;::::0;::::1;;;;271:136:5::0;329:7;356:43;360:1;363;356:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;349:50;271:136;-1:-1:-1;;;271:136:5:o;84:179::-;142:7;;174:5;178:1;174;:5;:::i;:::-;162:17;;203:1;198;:6;;190:46;;;;-1:-1:-1;;;190:46:5;;10334:2:6;190:46:5;;;10316:21:6;10373:2;10353:18;;;10346:30;10412:29;10392:18;;;10385:57;10459:18;;190:46:5;10132:351:6;3775:335:1;-1:-1:-1;;;;;3868:19:1;;3860:68;;;;-1:-1:-1;;;3860:68:1;;10690:2:6;3860:68:1;;;10672:21:6;10729:2;10709:18;;;10702:30;10768:34;10748:18;;;10741:62;-1:-1:-1;;;10819:18:6;;;10812:34;10863:19;;3860:68:1;10488:400:6;3860:68:1;-1:-1:-1;;;;;3947:21:1;;3939:68;;;;-1:-1:-1;;;3939:68:1;;11095:2:6;3939:68:1;;;11077:21:6;11134:2;11114:18;;;11107:30;11173:34;11153:18;;;11146:62;-1:-1:-1;;;11224:18:6;;;11217:32;11266:19;;3939:68:1;10893:398:6;3939:68:1;-1:-1:-1;;;;;4018:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;4070:32;;1361:25:6;;;4070:32:1;;1334:18:6;4070:32:1;;;;;;;3775:335;;;:::o;4118:2543::-;-1:-1:-1;;;;;4206:18:1;;4198:68;;;;-1:-1:-1;;;4198:68:1;;11498:2:6;4198:68:1;;;11480:21:6;11537:2;11517:18;;;11510:30;11576:34;11556:18;;;11549:62;-1:-1:-1;;;11627:18:6;;;11620:35;11672:19;;4198:68:1;11296:401:6;4198:68:1;-1:-1:-1;;;;;4285:16:1;;4277:64;;;;-1:-1:-1;;;4277:64:1;;11904:2:6;4277:64:1;;;11886:21:6;11943:2;11923:18;;;11916:30;11982:34;11962:18;;;11955:62;-1:-1:-1;;;12033:18:6;;;12026:33;12076:19;;4277:64:1;11702:399:6;4277:64:1;4369:1;4360:6;:10;4352:64;;;;-1:-1:-1;;;4352:64:1;;12308:2:6;4352:64:1;;;12290:21:6;12347:2;12327:18;;;12320:30;12386:34;12366:18;;;12359:62;-1:-1:-1;;;12437:18:6;;;12430:39;12486:19;;4352:64:1;12106:405:6;4352:64:1;4427:17;466:6:4;;-1:-1:-1;;;;;4462:15:1;;;466:6:4;;4462:15:1;;;;:32;;-1:-1:-1;439:7:4;466:6;-1:-1:-1;;;;;4481:13:1;;;466:6:4;;4481:13:1;;4462:32;4458:1847;;;4515:20;;;;4511:346;;;4574:15;;-1:-1:-1;;;;;4560:30:1;;;4574:15;;4560:30;;;;:62;;-1:-1:-1;4608:13:1;;-1:-1:-1;;;;;4594:28:1;;;4608:13;;4594:28;;4560:62;4556:286;;;4682:9;4653:39;;;;:28;:39;;;;;;4695:12;-1:-1:-1;4645:102:1;;;;-1:-1:-1;;;4645:102:1;;12718:2:6;4645:102:1;;;12700:21:6;12757:2;12737:18;;;12730:30;12796:34;12776:18;;;12769:62;-1:-1:-1;;;12847:18:6;;;12840:34;12891:19;;4645:102:1;12516:400:6;4645:102:1;4797:9;4768:39;;;;:28;:39;;;;;4810:12;4768:54;;4556:286;4885:13;;-1:-1:-1;;;;;4877:21:1;;;4885:13;;4877:21;:55;;;;-1:-1:-1;4916:15:1;;-1:-1:-1;;;;;4902:30:1;;;4916:15;;4902:30;;4877:55;:83;;;;-1:-1:-1;;;;;;4938:22:1;;;;;;:18;:22;;;;;;;;4936:24;4877:83;4873:427;;;4999:12;;4989:6;:22;;4981:60;;;;-1:-1:-1;;;4981:60:1;;13123:2:6;4981:60:1;;;13105:21:6;13162:2;13142:18;;;13135:30;-1:-1:-1;;;13181:18:6;;;13174:55;13246:18;;4981:60:1;12921:349:6;4981:60:1;5094:14;;5084:6;5068:13;5078:2;-1:-1:-1;;;;;2925:18:1;2898:7;2925:18;;;:9;:18;;;;;;;2832:119;5068:13;:22;;;;:::i;:::-;:40;;5060:79;;;;-1:-1:-1;;;5060:79:1;;13477:2:6;5060:79:1;;;13459:21:6;13516:2;13496:18;;;13489:30;13555:28;13535:18;;;13528:56;13601:18;;5060:79:1;13275:350:6;5060:79:1;5171:18;;5161:9;;:28;5158:97;;;8287:20;;8335:8;5211:24;;;;;;5273:9;:11;;;:9;:11;;;:::i;:::-;;;;;;4873:427;5330:76;5402:3;5330:67;5352:15;;5342:9;;:25;5341:55;;5382:14;;5341:55;;;5369:12;;5341:55;5330:6;;:10;:67::i;:::-;:71;;:76::i;:::-;5430:13;;5318:88;;-1:-1:-1;;;;;;5424:19:1;;;5430:13;;5424:19;:43;;;;-1:-1:-1;;;;;;5447:20:1;;5462:4;5447:20;;5424:43;5421:253;;;5506:12;;5496:6;:22;;5488:60;;;;-1:-1:-1;;;5488:60:1;;13123:2:6;5488:60:1;;;13105:21:6;13162:2;13142:18;;;13135:30;-1:-1:-1;;;13181:18:6;;;13174:55;13246:18;;5488:60:1;12921:349:6;5488:60:1;5579:79;5654:3;5579:70;5601:16;;5591:9;;:26;5590:58;;5633:15;;5590:58;;;5619:13;;5579:6;;:10;:70::i;:79::-;5567:91;;5421:253;5739:4;5690:28;2925:18;;;:9;:18;;;;;;5765:6;;-1:-1:-1;;;5765:6:1;;;;5764:7;:30;;;;-1:-1:-1;5781:13:1;;-1:-1:-1;;;;;5775:19:1;;;5781:13;;5775:19;5764:30;:45;;;;-1:-1:-1;5798:11:1;;-1:-1:-1;;;5798:11:1;;;;5764:45;:87;;;;;5834:17;;5813:20;:38;5764:87;:119;;;;;5865:18;;5855:9;;:28;5764:119;:166;;;;-1:-1:-1;5903:11:1;;5887:13;;5918:12;;5887:27;;-1:-1:-1;;;5903:11:1;;;;;;5887:27;:::i;:::-;:43;;5764:166;5760:534;;;5952:67;5969:49;5973:6;5980:37;5984:20;6005:11;;5980:3;:37::i;:::-;5969:3;:49::i;:::-;5952:16;:67::i;:::-;6067:21;6128:22;;6125:105;;6175:35;6188:21;6175:12;:35::i;:::-;-1:-1:-1;6266:12:1;6250:13;:28;5760:534;4496:1809;4458:1847;6320:11;;6317:161;;6388:4;6370:24;;;;:9;:24;;;;;;:39;;6399:9;6370:28;:39::i;:::-;6363:4;6345:24;;;;:9;:24;;;;;;;:64;;;;6427:39;;-1:-1:-1;;;;;6427:39:1;;;-1:-1:-1;;;;;;;;;;;6427:39:1;;;6456:9;1361:25:6;;1349:2;1334:18;;1215:177;6427:39:1;;;;;;;;6317:161;-1:-1:-1;;;;;6504:15:1;;;;;;:9;:15;;;;;;:27;;6524:6;6504:19;:27::i;:::-;-1:-1:-1;;;;;6488:15:1;;;;;;:9;:15;;;;;:43;6556:40;6574:21;:6;6585:9;6574:10;:21::i;:::-;-1:-1:-1;;;;;6556:13:1;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;6542:13:1;;;;;;;:9;:13;;;;;:54;;;;6612:41;;-1:-1:-1;;;;;;;;;;;6631:21:1;:6;6642:9;6631:10;:21::i;:::-;6612:41;;1361:25:6;;;1349:2;1334:18;6612:41:1;;;;;;;4187:2474;4118:2543;;;:::o;415:190:5:-;501:7;537:12;529:6;;;;521:29;;;;-1:-1:-1;;;521:29:5;;;;;;;;:::i;:::-;-1:-1:-1;561:9:5;573:5;577:1;573;:5;:::i;:::-;561:17;415:190;-1:-1:-1;;;;;415:190:5:o;6777:555:1:-;2108:6;:13;;-1:-1:-1;;;;2108:13:1;-1:-1:-1;;;2108:13:1;;;6855:27;;6874:7:::1;6855:27;6896:11;::::0;-1:-1:-1;;;6896:11:1;::::1;;;6892:25:::0;6909:7:::1;6892:25;6951:16;::::0;;6965:1:::1;6951:16:::0;;;;;::::1;::::0;;6927:21:::1;::::0;6951:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;6951:16:1::1;6927:40;;6996:4;6978;6983:1;6978:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6978:23:1;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;7022:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;7022:22:1;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;6978:7;;7022:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7012:4;7017:1;7012:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7012:32:1;;::::1;:7;::::0;;::::1;::::0;;;;;:32;7087:15:::1;::::0;7055:62:::1;::::0;7072:4:::1;::::0;7087:15:::1;7105:11:::0;7055:8:::1;:62::i;:::-;7128:15;::::0;:196:::1;::::0;-1:-1:-1;;;7128:196:1;;-1:-1:-1;;;;;7128:15:1;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;7209:11;;7128:15:::1;::::0;7251:4;;7278::::1;::::0;7298:15:::1;::::0;7128:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6844:488;2132:1;-1:-1:-1::0;2144:6:1;:14;;-1:-1:-1;;;;2144:14:1;;;6777:555::o;7340:92::-;7397:10;;:27;;:10;;;;-1:-1:-1;;;;;7397:10:1;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;613:246:5;671:7;695:1;700;695:6;691:47;;-1:-1:-1;725:1:5;718:8;;691:47;748:9;760:5;764:1;760;:5;:::i;:::-;748:17;-1:-1:-1;793:1:5;784:5;788:1;748:17;784:5;:::i;:::-;:10;776:56;;;;-1:-1:-1;;;776:56:5;;15576:2:6;776:56:5;;;15558:21:6;15615:2;15595:18;;;15588:30;15654:34;15634:18;;;15627:62;-1:-1:-1;;;15705:18:6;;;15698:31;15746:19;;776:56:5;15374:397:6;867:132:5;925:7;952:39;956:1;959;952:39;;;;;;;;;;;;;;;;;:3;:39::i;6671:98:1:-;6728:7;6755:1;6753;:3;6752:9;;6760:1;6752:9;;;-1:-1:-1;6758:1:1;6671:98;-1:-1:-1;6671:98:1:o;1007:189:5:-;1093:7;1128:12;1121:5;1113:28;;;;-1:-1:-1;;;1113:28:5;;;;;;;;:::i;:::-;-1:-1:-1;1152:9:5;1164:5;1168:1;1164;:5;:::i;14:548:6:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:6;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:6:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:6;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:6;1828:18;;;;1815:32;;1397:456::o;2047:598::-;2133:6;2141;2149;2157;2210:3;2198:9;2189:7;2185:23;2181:33;2178:53;;;2227:1;2224;2217:12;2178:53;2266:9;2253:23;2285:31;2310:5;2285:31;:::i;:::-;2335:5;-1:-1:-1;2392:2:6;2377:18;;2364:32;2405:33;2364:32;2405:33;:::i;:::-;2457:7;-1:-1:-1;2511:2:6;2496:18;;2483:32;;-1:-1:-1;2567:2:6;2552:18;;2539:32;2580:33;2539:32;2580:33;:::i;:::-;2047:598;;;;-1:-1:-1;2047:598:6;;-1:-1:-1;;2047:598:6:o;2650:247::-;2709:6;2762:2;2750:9;2741:7;2737:23;2733:32;2730:52;;;2778:1;2775;2768:12;2730:52;2817:9;2804:23;2836:31;2861:5;2836:31;:::i;3335:248::-;3403:6;3411;3464:2;3452:9;3443:7;3439:23;3435:32;3432:52;;;3480:1;3477;3470:12;3432:52;-1:-1:-1;;3503:23:6;;;3573:2;3558:18;;;3545:32;;-1:-1:-1;3335:248:6:o;3588:388::-;3656:6;3664;3717:2;3705:9;3696:7;3692:23;3688:32;3685:52;;;3733:1;3730;3723:12;3685:52;3772:9;3759:23;3791:31;3816:5;3791:31;:::i;:::-;3841:5;-1:-1:-1;3898:2:6;3883:18;;3870:32;3911:33;3870:32;3911:33;:::i;:::-;3963:7;3953:17;;;3588:388;;;;;:::o;3981:356::-;4183:2;4165:21;;;4202:18;;;4195:30;4261:34;4256:2;4241:18;;4234:62;4328:2;4313:18;;3981:356::o;4693:127::-;4754:10;4749:3;4745:20;4742:1;4735:31;4785:4;4782:1;4775:15;4809:4;4806:1;4799:15;4825:422;4914:1;4957:5;4914:1;4971:270;4992:7;4982:8;4979:21;4971:270;;;5051:4;5047:1;5043:6;5039:17;5033:4;5030:27;5027:53;;;5060:18;;:::i;:::-;5110:7;5100:8;5096:22;5093:55;;;5130:16;;;;5093:55;5209:22;;;;5169:15;;;;4971:270;;;4975:3;4825:422;;;;;:::o;5252:806::-;5301:5;5331:8;5321:80;;-1:-1:-1;5372:1:6;5386:5;;5321:80;5420:4;5410:76;;-1:-1:-1;5457:1:6;5471:5;;5410:76;5502:4;5520:1;5515:59;;;;5588:1;5583:130;;;;5495:218;;5515:59;5545:1;5536:10;;5559:5;;;5583:130;5620:3;5610:8;5607:17;5604:43;;;5627:18;;:::i;:::-;-1:-1:-1;;5683:1:6;5669:16;;5698:5;;5495:218;;5797:2;5787:8;5784:16;5778:3;5772:4;5769:13;5765:36;5759:2;5749:8;5746:16;5741:2;5735:4;5732:12;5728:35;5725:77;5722:159;;;-1:-1:-1;5834:19:6;;;5866:5;;5722:159;5913:34;5938:8;5932:4;5913:34;:::i;:::-;5983:6;5979:1;5975:6;5971:19;5962:7;5959:32;5956:58;;;5994:18;;:::i;:::-;6032:20;;5252:806;-1:-1:-1;;;5252:806:6:o;6063:140::-;6121:5;6150:47;6191:4;6181:8;6177:19;6171:4;6150:47;:::i;6208:168::-;6281:9;;;6312;;6329:15;;;6323:22;;6309:37;6299:71;;6350:18;;:::i;7598:251::-;7668:6;7721:2;7709:9;7700:7;7696:23;7692:32;7689:52;;;7737:1;7734;7727:12;7689:52;7769:9;7763:16;7788:31;7813:5;7788:31;:::i;8775:306::-;8863:6;8871;8879;8932:2;8920:9;8911:7;8907:23;8903:32;8900:52;;;8948:1;8945;8938:12;8900:52;8977:9;8971:16;8961:26;;9027:2;9016:9;9012:18;9006:25;8996:35;;9071:2;9060:9;9056:18;9050:25;9040:35;;8775:306;;;;;:::o;9365:277::-;9432:6;9485:2;9473:9;9464:7;9460:23;9456:32;9453:52;;;9501:1;9498;9491:12;9453:52;9533:9;9527:16;9586:5;9579:13;9572:21;9565:5;9562:32;9552:60;;9608:1;9605;9598:12;10002:125;10067:9;;;10088:10;;;10085:36;;;10101:18;;:::i;13630:135::-;13669:3;13690:17;;;13687:43;;13710:18;;:::i;:::-;-1:-1:-1;13757:1:6;13746:13;;13630:135::o;13770:128::-;13837:9;;;13858:11;;;13855:37;;;13872:18;;:::i;14035:127::-;14096:10;14091:3;14087:20;14084:1;14077:31;14127:4;14124:1;14117:15;14151:4;14148:1;14141:15;14167:980;14429:4;14477:3;14466:9;14462:19;14508:6;14497:9;14490:25;14534:2;14572:6;14567:2;14556:9;14552:18;14545:34;14615:3;14610:2;14599:9;14595:18;14588:31;14639:6;14674;14668:13;14705:6;14697;14690:22;14743:3;14732:9;14728:19;14721:26;;14782:2;14774:6;14770:15;14756:29;;14803:1;14813:195;14827:6;14824:1;14821:13;14813:195;;;14892:13;;-1:-1:-1;;;;;14888:39:6;14876:52;;14983:15;;;;14948:12;;;;14924:1;14842:9;14813:195;;;-1:-1:-1;;;;;;;15064:32:6;;;;15059:2;15044:18;;15037:60;-1:-1:-1;;;15128:3:6;15113:19;15106:35;15025:3;14167:980;-1:-1:-1;;;14167:980:6:o;15152:217::-;15192:1;15218;15208:132;;15262:10;15257:3;15253:20;15250:1;15243:31;15297:4;15294:1;15287:15;15325:4;15322:1;15315:15;15208:132;-1:-1:-1;15354:9:6;;15152:217::o

Swarm Source

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