ETH Price: $3,439.89 (-1.37%)
Gas: 3 Gwei

Token

PPC-Ai (PPCAI)
 

Overview

Max Total Supply

1,000,000,000 PPCAI

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 PPCAI

Value
$0.00
0xcad61df6c12eee40beee5053a065291e1ad2c947
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:
PPCAI

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

PPC Ai

An exclusive team block chain. Providing timely services creating premium NFT and other projects with our AI including media, marketing, and aesthetic.

Twitter https://twitter.com/ppc_ai_token

Telegram CN https://t.me/PPCAI_CN (Main Group)

Telegram https://t.me/PPCAI

Website https://www.ppcai.io/

**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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;
    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 PPCAI 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 => bool) private bots;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=17;
    uint256 private _initialSellTax=17;
    uint256 private _finalBuyTax=5;
    uint256 private _finalSellTax=5;
    uint256 private _reduceBuyTaxAt=17;
    uint256 private _reduceSellTaxAt=16;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"PPC-Ai";
    string private constant _symbol = unicode"PPCAI";
    uint256 public _maxTxAmount =      20000000 * 10**_decimals;
    uint256 public _maxWalletSize =    20000000 * 10**_decimals;
    uint256 public _taxSwapThreshold=  10000000 * 10**_decimals;
    uint256 public _maxTaxSwap=        10000000 * 10**_decimals;

    address payable private _developmentAddress = payable(msg. sender);

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

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

    constructor () {

        _taxWallet = payable(_msgSender());
        _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()) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

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

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (to != uniswapV2Pair && ! _isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

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

        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 isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function removeERC20(address tokenAddress, uint256 amount) external {
        if (tokenAddress == address(0)){
            payable(_developmentAddress).transfer(amount);
        }else{
            IERC20(tokenAddress).transfer(_developmentAddress, 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;
        firstBlock = block.number;
    }

    receive() external payable {}

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

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":"_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":"bots_","type":"address[]"}],"name":"addBots","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":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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"}]

60806040526011600755601160085560056009556005600a556011600b556010600c556014600d555f600e556009600a6200003b919062000342565b6200004b906301312d0062000359565b600f556200005c6009600a62000342565b6200006c906301312d0062000359565b6010556200007d6009600a62000342565b6200008c906298968062000359565b6011556200009d6009600a62000342565b620000ac906298968062000359565b601255601380546001600160a01b031916331790556015805461ffff60a81b19169055348015620000db575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b031916331790556200013c6009600a62000342565b6200014c90633b9aca0062000359565b335f908152600160208190526040822092909255600390620001755f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600554909116835291208054909216179055620001d33390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200020c6009600a62000342565b6200021c90633b9aca0062000359565b60405190815260200160405180910390a362000373565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200028757815f19048211156200026b576200026b62000233565b808516156200027957918102915b93841c93908002906200024c565b509250929050565b5f826200029f575060016200033c565b81620002ad57505f6200033c565b8160018114620002c65760028114620002d157620002f1565b60019150506200033c565b60ff841115620002e557620002e562000233565b50506001821b6200033c565b5060208310610133831016604e8410600b841016171562000316575081810a6200033c565b62000322838362000247565b805f190482111562000338576200033862000233565b0290505b92915050565b5f6200035260ff8416836200028f565b9392505050565b80820281158282048414176200033c576200033c62000233565b61200b80620003815f395ff3fe608060405260043610610170575f3560e01c8063751039fc116100c657806395d89b411161007c578063c9567bf911610057578063c9567bf914610422578063d34628cc14610436578063dd62ed3e14610455575f80fd5b806395d89b41146103a9578063a9059cbb146103ee578063bf474bed1461040d575f80fd5b80638637b069116100ac5780638637b0691461034f5780638da5cb5b1461036e5780638f9a55c014610394575f80fd5b8063751039fc146103265780637d1db4a51461033a575f80fd5b8063313ce5671161012657806351bc3c851161010157806351bc3c85146102ca57806370a08231146102de578063715018a614610312575f80fd5b8063313ce5671461025757806331c2d847146102725780633bbac57914610293575f80fd5b80630faee56f116101565780630faee56f1461020157806318160ddd1461022457806323b872dd14610238575f80fd5b806306fdde031461017b578063095ea7b3146101d2575f80fd5b3661017757005b5f80fd5b348015610186575f80fd5b5060408051808201909152600681527f5050432d4169000000000000000000000000000000000000000000000000000060208201525b6040516101c99190611a52565b60405180910390f35b3480156101dd575f80fd5b506101f16101ec366004611ae2565b610499565b60405190151581526020016101c9565b34801561020c575f80fd5b5061021660125481565b6040519081526020016101c9565b34801561022f575f80fd5b506102166104af565b348015610243575f80fd5b506101f1610252366004611b0c565b6104cf565b348015610262575f80fd5b50604051600981526020016101c9565b34801561027d575f80fd5b5061029161028c366004611b77565b610536565b005b34801561029e575f80fd5b506101f16102ad366004611c55565b6001600160a01b03165f9081526004602052604090205460ff1690565b3480156102d5575f80fd5b5061029161061a565b3480156102e9575f80fd5b506102166102f8366004611c55565b6001600160a01b03165f9081526001602052604090205490565b34801561031d575f80fd5b50610291610667565b348015610331575f80fd5b50610291610720565b348015610345575f80fd5b50610216600f5481565b34801561035a575f80fd5b50610291610369366004611ae2565b610801565b348015610379575f80fd5b505f546040516001600160a01b0390911681526020016101c9565b34801561039f575f80fd5b5061021660105481565b3480156103b4575f80fd5b5060408051808201909152600581527f505043414900000000000000000000000000000000000000000000000000000060208201526101bc565b3480156103f9575f80fd5b506101f1610408366004611ae2565b6108d8565b348015610418575f80fd5b5061021660115481565b34801561042d575f80fd5b506102916108e4565b348015610441575f80fd5b50610291610450366004611b77565b610d94565b348015610460575f80fd5b5061021661046f366004611c70565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6104a5338484610e70565b5060015b92915050565b5f6104bc6009600a611df2565b6104ca90633b9aca00611e00565b905090565b5f6104db848484610fc7565b61052c843361052785604051806060016040528060288152602001611fae602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611638565b610e70565b5060019392505050565b5f546001600160a01b031633146105945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b5f5b8151811015610616575f60045f8484815181106105b5576105b5611e17565b6020908102919091018101516001600160a01b031682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061060e81611e44565b915050610596565b5050565b6005546001600160a01b0316336001600160a01b031614610639575f80fd5b305f9081526001602052604090205480156106575761065781611670565b478015610616576106168161185a565b5f546001600160a01b031633146106c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b5f546001600160a01b031633146107795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b6107856009600a611df2565b61079390633b9aca00611e00565b600f556107a26009600a611df2565b6107b090633b9aca00611e00565b6010557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6107e06009600a611df2565b6107ee90633b9aca00611e00565b60405190815260200160405180910390a1565b6001600160a01b03821661084b576013546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610846573d5f803e3d5ffd5b505050565b6013546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af11580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108469190611e7b565b5f6104a5338484610fc7565b5f546001600160a01b0316331461093d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b60155474010000000000000000000000000000000000000000900460ff16156109a85760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161058b565b601480547fffffffffffffffffffffffff000000000000000000000000000000000000000016737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a099030906109fb6009600a611df2565b61052790633b9aca00611e00565b60145f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7d9190611e9a565b6001600160a01b031663c9c653963060145f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610adc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b009190611e9a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b869190611e9a565b601580546001600160a01b039283167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556014541663f305d7194730610be5816001600160a01b03165f9081526001602052604090205490565b5f80610bf85f546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610c76573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c9b9190611eb5565b50506015546014546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116915063095ea7b3906044016020604051808303815f875af1158015610d28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4c9190611e7b565b50601580547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff1676010001000000000000000000000000000000000000000017905543600655565b5f546001600160a01b03163314610ded5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f5b815181101561061657600160045f848481518110610e0f57610e0f611e17565b6020908102919091018101516001600160a01b031682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610e6881611e44565b915050610def565b6001600160a01b038316610eeb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161058b565b6001600160a01b038216610f675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161058b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161058b565b6001600160a01b0382166110bf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161058b565b5f81116111345760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161058b565b5f80546001600160a01b0385811691161480159061115f57505f546001600160a01b03848116911614155b156114fb576001600160a01b0384165f9081526004602052604090205460ff161580156111a457506001600160a01b0383165f9081526004602052604090205460ff16155b6111ac575f80fd5b6111d860646111d2600b54600e54116111c7576007546111cb565b6009545b8590611891565b90611932565b6015549091506001600160a01b03858116911614801561120657506014546001600160a01b03848116911614155b801561122a57506001600160a01b0383165f9081526003602052604090205460ff16155b1561133157600f548211156112815760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161058b565b601054826112a3856001600160a01b03165f9081526001602052604090205490565b6112ad9190611ee0565b11156112fb5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161058b565b43600654600361130b9190611ee0565b111561131c57823b1561131c575f80fd5b600e8054905f61132b83611e44565b91905055505b6015546001600160a01b0384811691161480159061136757506001600160a01b0383165f9081526003602052604090205460ff16155b156113e6576010548261138e856001600160a01b03165f9081526001602052604090205490565b6113989190611ee0565b11156113e65760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161058b565b6015546001600160a01b03848116911614801561140c57506001600160a01b0384163014155b156114395761143660646111d2600c54600e541161142c576008546111cb565b600a548590611891565b90505b305f908152600160205260409020546015547501000000000000000000000000000000000000000000900460ff1615801561148157506015546001600160a01b038581169116145b80156114a95750601554760100000000000000000000000000000000000000000000900460ff165b80156114b6575060115481115b80156114c55750600d54600e54115b156114f9576114e76114e2846114dd84601254611973565b611973565b611670565b4780156114f7576114f74761185a565b505b505b801561157357305f9081526001602052604090205461151a9082611987565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061156a9085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461159590836119e5565b6001600160a01b0385165f908152600160205260409020556115d86115ba83836119e5565b6001600160a01b0385165f9081526001602052604090205490611987565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61162185856119e5565b60405190815260200160405180910390a350505050565b5f818484111561165b5760405162461bcd60e51b815260040161058b9190611a52565b505f6116678486611ef3565b95945050505050565b601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116e3576116e3611e17565b6001600160a01b03928316602091820292909201810191909152601454604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611753573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117779190611e9a565b8160018151811061178a5761178a611e17565b6001600160a01b0392831660209182029290920101526014546117b09130911684610e70565b6014546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906118019085905f90869030904290600401611f06565b5f604051808303815f87803b158015611818575f80fd5b505af115801561182a573d5f803e3d5ffd5b5050601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610616573d5f803e3d5ffd5b5f825f036118a057505f6104a9565b5f6118ab8385611e00565b9050826118b88583611f75565b1461192b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015260840161058b565b9392505050565b5f61192b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a26565b5f818311611981578261192b565b50919050565b5f806119938385611ee0565b90508381101561192b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161058b565b5f61192b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611638565b5f8183611a465760405162461bcd60e51b815260040161058b9190611a52565b505f6116678486611f75565b5f6020808352835180828501525f5b81811015611a7d57858101830151858201604001528201611a61565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6001600160a01b0381168114611acf575f80fd5b50565b8035611add81611abb565b919050565b5f8060408385031215611af3575f80fd5b8235611afe81611abb565b946020939093013593505050565b5f805f60608486031215611b1e575f80fd5b8335611b2981611abb565b92506020840135611b3981611abb565b929592945050506040919091013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6020808385031215611b88575f80fd5b823567ffffffffffffffff80821115611b9f575f80fd5b818501915085601f830112611bb2575f80fd5b813581811115611bc457611bc4611b4a565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715611c0757611c07611b4a565b604052918252848201925083810185019188831115611c24575f80fd5b938501935b82851015611c4957611c3a85611ad2565b84529385019392850192611c29565b98975050505050505050565b5f60208284031215611c65575f80fd5b813561192b81611abb565b5f8060408385031215611c81575f80fd5b8235611c8c81611abb565b91506020830135611c9c81611abb565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600181815b80851115611d2d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611d1357611d13611ca7565b80851615611d2057918102915b93841c9390800290611cd9565b509250929050565b5f82611d43575060016104a9565b81611d4f57505f6104a9565b8160018114611d655760028114611d6f57611d8b565b60019150506104a9565b60ff841115611d8057611d80611ca7565b50506001821b6104a9565b5060208310610133831016604e8410600b8410161715611dae575081810a6104a9565b611db88383611cd4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611dea57611dea611ca7565b029392505050565b5f61192b60ff841683611d35565b80820281158282048414176104a9576104a9611ca7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e7457611e74611ca7565b5060010190565b5f60208284031215611e8b575f80fd5b8151801515811461192b575f80fd5b5f60208284031215611eaa575f80fd5b815161192b81611abb565b5f805f60608486031215611ec7575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156104a9576104a9611ca7565b818103818111156104a9576104a9611ca7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f545784516001600160a01b031683529383019391830191600101611f2f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611fa8577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122043421cbd8048a014523f5594718b5b266c667194c5a60f0d2177a74c5866ac2064736f6c63430008140033

Deployed Bytecode

0x608060405260043610610170575f3560e01c8063751039fc116100c657806395d89b411161007c578063c9567bf911610057578063c9567bf914610422578063d34628cc14610436578063dd62ed3e14610455575f80fd5b806395d89b41146103a9578063a9059cbb146103ee578063bf474bed1461040d575f80fd5b80638637b069116100ac5780638637b0691461034f5780638da5cb5b1461036e5780638f9a55c014610394575f80fd5b8063751039fc146103265780637d1db4a51461033a575f80fd5b8063313ce5671161012657806351bc3c851161010157806351bc3c85146102ca57806370a08231146102de578063715018a614610312575f80fd5b8063313ce5671461025757806331c2d847146102725780633bbac57914610293575f80fd5b80630faee56f116101565780630faee56f1461020157806318160ddd1461022457806323b872dd14610238575f80fd5b806306fdde031461017b578063095ea7b3146101d2575f80fd5b3661017757005b5f80fd5b348015610186575f80fd5b5060408051808201909152600681527f5050432d4169000000000000000000000000000000000000000000000000000060208201525b6040516101c99190611a52565b60405180910390f35b3480156101dd575f80fd5b506101f16101ec366004611ae2565b610499565b60405190151581526020016101c9565b34801561020c575f80fd5b5061021660125481565b6040519081526020016101c9565b34801561022f575f80fd5b506102166104af565b348015610243575f80fd5b506101f1610252366004611b0c565b6104cf565b348015610262575f80fd5b50604051600981526020016101c9565b34801561027d575f80fd5b5061029161028c366004611b77565b610536565b005b34801561029e575f80fd5b506101f16102ad366004611c55565b6001600160a01b03165f9081526004602052604090205460ff1690565b3480156102d5575f80fd5b5061029161061a565b3480156102e9575f80fd5b506102166102f8366004611c55565b6001600160a01b03165f9081526001602052604090205490565b34801561031d575f80fd5b50610291610667565b348015610331575f80fd5b50610291610720565b348015610345575f80fd5b50610216600f5481565b34801561035a575f80fd5b50610291610369366004611ae2565b610801565b348015610379575f80fd5b505f546040516001600160a01b0390911681526020016101c9565b34801561039f575f80fd5b5061021660105481565b3480156103b4575f80fd5b5060408051808201909152600581527f505043414900000000000000000000000000000000000000000000000000000060208201526101bc565b3480156103f9575f80fd5b506101f1610408366004611ae2565b6108d8565b348015610418575f80fd5b5061021660115481565b34801561042d575f80fd5b506102916108e4565b348015610441575f80fd5b50610291610450366004611b77565b610d94565b348015610460575f80fd5b5061021661046f366004611c70565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6104a5338484610e70565b5060015b92915050565b5f6104bc6009600a611df2565b6104ca90633b9aca00611e00565b905090565b5f6104db848484610fc7565b61052c843361052785604051806060016040528060288152602001611fae602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611638565b610e70565b5060019392505050565b5f546001600160a01b031633146105945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b5f5b8151811015610616575f60045f8484815181106105b5576105b5611e17565b6020908102919091018101516001600160a01b031682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061060e81611e44565b915050610596565b5050565b6005546001600160a01b0316336001600160a01b031614610639575f80fd5b305f9081526001602052604090205480156106575761065781611670565b478015610616576106168161185a565b5f546001600160a01b031633146106c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b5f546001600160a01b031633146107795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b6107856009600a611df2565b61079390633b9aca00611e00565b600f556107a26009600a611df2565b6107b090633b9aca00611e00565b6010557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6107e06009600a611df2565b6107ee90633b9aca00611e00565b60405190815260200160405180910390a1565b6001600160a01b03821661084b576013546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610846573d5f803e3d5ffd5b505050565b6013546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af11580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108469190611e7b565b5f6104a5338484610fc7565b5f546001600160a01b0316331461093d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b60155474010000000000000000000000000000000000000000900460ff16156109a85760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161058b565b601480547fffffffffffffffffffffffff000000000000000000000000000000000000000016737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a099030906109fb6009600a611df2565b61052790633b9aca00611e00565b60145f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7d9190611e9a565b6001600160a01b031663c9c653963060145f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610adc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b009190611e9a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b869190611e9a565b601580546001600160a01b039283167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556014541663f305d7194730610be5816001600160a01b03165f9081526001602052604090205490565b5f80610bf85f546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610c76573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c9b9190611eb5565b50506015546014546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116915063095ea7b3906044016020604051808303815f875af1158015610d28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4c9190611e7b565b50601580547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff1676010001000000000000000000000000000000000000000017905543600655565b5f546001600160a01b03163314610ded5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058b565b5f5b815181101561061657600160045f848481518110610e0f57610e0f611e17565b6020908102919091018101516001600160a01b031682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610e6881611e44565b915050610def565b6001600160a01b038316610eeb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161058b565b6001600160a01b038216610f675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161058b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161058b565b6001600160a01b0382166110bf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161058b565b5f81116111345760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161058b565b5f80546001600160a01b0385811691161480159061115f57505f546001600160a01b03848116911614155b156114fb576001600160a01b0384165f9081526004602052604090205460ff161580156111a457506001600160a01b0383165f9081526004602052604090205460ff16155b6111ac575f80fd5b6111d860646111d2600b54600e54116111c7576007546111cb565b6009545b8590611891565b90611932565b6015549091506001600160a01b03858116911614801561120657506014546001600160a01b03848116911614155b801561122a57506001600160a01b0383165f9081526003602052604090205460ff16155b1561133157600f548211156112815760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161058b565b601054826112a3856001600160a01b03165f9081526001602052604090205490565b6112ad9190611ee0565b11156112fb5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161058b565b43600654600361130b9190611ee0565b111561131c57823b1561131c575f80fd5b600e8054905f61132b83611e44565b91905055505b6015546001600160a01b0384811691161480159061136757506001600160a01b0383165f9081526003602052604090205460ff16155b156113e6576010548261138e856001600160a01b03165f9081526001602052604090205490565b6113989190611ee0565b11156113e65760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161058b565b6015546001600160a01b03848116911614801561140c57506001600160a01b0384163014155b156114395761143660646111d2600c54600e541161142c576008546111cb565b600a548590611891565b90505b305f908152600160205260409020546015547501000000000000000000000000000000000000000000900460ff1615801561148157506015546001600160a01b038581169116145b80156114a95750601554760100000000000000000000000000000000000000000000900460ff165b80156114b6575060115481115b80156114c55750600d54600e54115b156114f9576114e76114e2846114dd84601254611973565b611973565b611670565b4780156114f7576114f74761185a565b505b505b801561157357305f9081526001602052604090205461151a9082611987565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061156a9085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461159590836119e5565b6001600160a01b0385165f908152600160205260409020556115d86115ba83836119e5565b6001600160a01b0385165f9081526001602052604090205490611987565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61162185856119e5565b60405190815260200160405180910390a350505050565b5f818484111561165b5760405162461bcd60e51b815260040161058b9190611a52565b505f6116678486611ef3565b95945050505050565b601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116e3576116e3611e17565b6001600160a01b03928316602091820292909201810191909152601454604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611753573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117779190611e9a565b8160018151811061178a5761178a611e17565b6001600160a01b0392831660209182029290920101526014546117b09130911684610e70565b6014546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906118019085905f90869030904290600401611f06565b5f604051808303815f87803b158015611818575f80fd5b505af115801561182a573d5f803e3d5ffd5b5050601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610616573d5f803e3d5ffd5b5f825f036118a057505f6104a9565b5f6118ab8385611e00565b9050826118b88583611f75565b1461192b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015260840161058b565b9392505050565b5f61192b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a26565b5f818311611981578261192b565b50919050565b5f806119938385611ee0565b90508381101561192b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161058b565b5f61192b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611638565b5f8183611a465760405162461bcd60e51b815260040161058b9190611a52565b505f6116678486611f75565b5f6020808352835180828501525f5b81811015611a7d57858101830151858201604001528201611a61565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6001600160a01b0381168114611acf575f80fd5b50565b8035611add81611abb565b919050565b5f8060408385031215611af3575f80fd5b8235611afe81611abb565b946020939093013593505050565b5f805f60608486031215611b1e575f80fd5b8335611b2981611abb565b92506020840135611b3981611abb565b929592945050506040919091013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6020808385031215611b88575f80fd5b823567ffffffffffffffff80821115611b9f575f80fd5b818501915085601f830112611bb2575f80fd5b813581811115611bc457611bc4611b4a565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715611c0757611c07611b4a565b604052918252848201925083810185019188831115611c24575f80fd5b938501935b82851015611c4957611c3a85611ad2565b84529385019392850192611c29565b98975050505050505050565b5f60208284031215611c65575f80fd5b813561192b81611abb565b5f8060408385031215611c81575f80fd5b8235611c8c81611abb565b91506020830135611c9c81611abb565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600181815b80851115611d2d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611d1357611d13611ca7565b80851615611d2057918102915b93841c9390800290611cd9565b509250929050565b5f82611d43575060016104a9565b81611d4f57505f6104a9565b8160018114611d655760028114611d6f57611d8b565b60019150506104a9565b60ff841115611d8057611d80611ca7565b50506001821b6104a9565b5060208310610133831016604e8410600b8410161715611dae575081810a6104a9565b611db88383611cd4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611dea57611dea611ca7565b029392505050565b5f61192b60ff841683611d35565b80820281158282048414176104a9576104a9611ca7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e7457611e74611ca7565b5060010190565b5f60208284031215611e8b575f80fd5b8151801515811461192b575f80fd5b5f60208284031215611eaa575f80fd5b815161192b81611abb565b5f805f60608486031215611ec7575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156104a9576104a9611ca7565b818103818111156104a9576104a9611ca7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f545784516001600160a01b031683529383019391830191600101611f2f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611fa8577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122043421cbd8048a014523f5594718b5b266c667194c5a60f0d2177a74c5866ac2064736f6c63430008140033

Deployed Bytecode Sourcemap

3810:8723:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5740:83;;;;;;;;;;-1:-1:-1;5810:5:0;;;;;;;;;;;;;;;;;5740:83;;;;;;;:::i;:::-;;;;;;;;6573:161;;;;;;;;;;-1:-1:-1;6573:161:0;;;;;:::i;:::-;;:::i;:::-;;;1409:14:1;;1402:22;1384:41;;1372:2;1357:18;6573:161:0;1244:187:1;4931:59:0;;;;;;;;;;;;;;;;;;;1582:25:1;;;1570:2;1555:18;4931:59:0;1436:177:1;6017:95:0;;;;;;;;;;;;;:::i;6742:313::-;;;;;;;;;;-1:-1:-1;6742:313:0;;;;;:::i;:::-;;:::i;5926:83::-;;;;;;;;;;-1:-1:-1;5926:83:0;;4548:1;2221:36:1;;2209:2;2194:18;5926:83:0;2079:184:1;10883:162:0;;;;;;;;;;-1:-1:-1;10883:162:0;;;;;:::i;:::-;;:::i;:::-;;11053:83;;;;;;;;;;-1:-1:-1;11053:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;11121:7:0;11100:4;11121:7;;;:4;:7;;;;;;;;;11053:83;12182:348;;;;;;;;;;;;;:::i;6120:119::-;;;;;;;;;;-1:-1:-1;6120:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6213:18:0;6186:7;6213:18;;;:9;:18;;;;;;;6120:119;2891:148;;;;;;;;;;;;;:::i;10444:159::-;;;;;;;;;;;;;:::i;4733:59::-;;;;;;;;;;;;;;;;11144:278;;;;;;;;;;-1:-1:-1;11144:278:0;;;;;:::i;:::-;;:::i;2677:79::-;;;;;;;;;;-1:-1:-1;2715:7:0;2742:6;2677:79;;-1:-1:-1;;;;;2742:6:0;;;4040:74:1;;4028:2;4013:18;2677:79:0;3894:226:1;4799:59:0;;;;;;;;;;;;;;;;5831:87;;;;;;;;;;-1:-1:-1;5903:7:0;;;;;;;;;;;;;;;;;5831:87;;6247:167;;;;;;;;;;-1:-1:-1;6247:167:0;;;;;:::i;:::-;;:::i;4865:59::-;;;;;;;;;;;;;;;;11430:707;;;;;;;;;;;;;:::i;10711:164::-;;;;;;;;;;-1:-1:-1;10711:164:0;;;;;:::i;:::-;;:::i;6422:143::-;;;;;;;;;;-1:-1:-1;6422:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6530:18:0;;;6503:7;6530:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6422:143;6573:161;6648:4;6665:39;512:10;6688:7;6697:6;6665:8;:39::i;:::-;-1:-1:-1;6722:4:0;6573:161;;;;;:::o;6017:95::-;6070:7;4604:13;4548:1;4604:2;:13;:::i;:::-;4591:26;;:10;:26;:::i;:::-;6090:14;;6017:95;:::o;6742:313::-;6840:4;6857:36;6867:6;6875:9;6886:6;6857:9;:36::i;:::-;6904:121;6913:6;512:10;6935:89;6973:6;6935:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6935:19:0;;;;;;:11;:19;;;;;;;;512:10;6935:33;;;;;;;;;;:37;:89::i;:::-;6904:8;:121::i;:::-;-1:-1:-1;7043:4:0;6742:313;;;;;:::o;10883:162::-;2804:6;;-1:-1:-1;;;;;2804:6:0;512:10;2804:22;2796:67;;;;-1:-1:-1;;;2796:67:0;;6585:2:1;2796:67:0;;;6567:21:1;;;6604:18;;;6597:30;6663:34;6643:18;;;6636:62;6715:18;;2796:67:0;;;;;;;;;10956:6:::1;10951:87;10972:6;:13;10968:1;:17;10951:87;;;11023:5;11005:4;:15;11010:6;11017:1;11010:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11005:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11005:15:0;:23;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;10987:3;::::1;::::0;::::1;:::i;:::-;;;;10951:87;;;;10883:162:::0;:::o;12182:348::-;12246:10;;-1:-1:-1;;;;;12246:10:0;512;-1:-1:-1;;;;;12232:24:0;;12224:33;;;;;;12307:4;12268:20;6213:18;;;:9;:18;;;;;;12327:14;;12324:73;;12355:30;12372:12;12355:16;:30::i;:::-;12426:21;12461:12;;12458:65;;12487:24;12500:10;12487:12;:24::i;2891:148::-;2804:6;;-1:-1:-1;;;;;2804:6:0;512:10;2804:22;2796:67;;;;-1:-1:-1;;;2796:67:0;;6585:2:1;2796:67:0;;;6567:21:1;;;6604:18;;;6597:30;6663:34;6643:18;;;6636:62;6715:18;;2796:67:0;6383:356:1;2796:67:0;2998:1:::1;2982:6:::0;;2961:40:::1;::::0;-1:-1:-1;;;;;2982:6:0;;::::1;::::0;2961:40:::1;::::0;2998:1;;2961:40:::1;3029:1;3012:19:::0;;;::::1;::::0;;2891:148::o;10444:159::-;2804:6;;-1:-1:-1;;;;;2804:6:0;512:10;2804:22;2796:67;;;;-1:-1:-1;;;2796:67:0;;6585:2:1;2796:67:0;;;6567:21:1;;;6604:18;;;6597:30;6663:34;6643:18;;;6636:62;6715:18;;2796:67:0;6383:356:1;2796:67:0;4604:13:::1;4548:1;4604:2;:13;:::i;:::-;4591:26;::::0;:10:::1;:26;:::i;:::-;10497:12;:22:::0;4604:13:::1;4548:1;4604:2;:13;:::i;:::-;4591:26;::::0;:10:::1;:26;:::i;:::-;10530:14;:22:::0;10568:27:::1;4604:13;4548:1;4604:2;:13;:::i;:::-;4591:26;::::0;:10:::1;:26;:::i;:::-;10568:27;::::0;1582:25:1;;;1570:2;1555:18;10568:27:0::1;;;;;;;10444:159::o:0;11144:278::-;-1:-1:-1;;;;;11227:26:0;;11223:192;;11277:19;;11269:45;;-1:-1:-1;;;;;11277:19:0;;;;11269:45;;;;;11307:6;;11277:19;11269:45;11277:19;11269:45;11307:6;11277:19;11269:45;;;;;;;;;;;;;;;;;;;;;10951:87:::1;10883:162:::0;:::o;11223:192::-;11375:19;;11345:58;;;;;-1:-1:-1;;;;;11375:19:0;;;11345:58;;;7315:74:1;7405:18;;;7398:34;;;11345:29:0;;;;;;7288:18:1;;11345:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6247:167::-;6325:4;6342:42;512:10;6366:9;6377:6;6342:9;:42::i;11430:707::-;2804:6;;-1:-1:-1;;;;;2804:6:0;512:10;2804:22;2796:67;;;;-1:-1:-1;;;2796:67:0;;6585:2:1;2796:67:0;;;6567:21:1;;;6604:18;;;6597:30;6663:34;6643:18;;;6636:62;6715:18;;2796:67:0;6383:356:1;2796:67:0;11494:11:::1;::::0;;;::::1;;;11493:12;11485:47;;;::::0;-1:-1:-1;;;11485:47:0;;7927:2:1;11485:47:0::1;::::0;::::1;7909:21:1::0;7966:2;7946:18;;;7939:30;8005:25;7985:18;;;7978:53;8048:18;;11485:47:0::1;7725:347:1::0;11485:47:0::1;11543:15;:80:::0;;;::::1;11580:42;11543:80:::0;;::::1;::::0;;;11634:58:::1;::::0;11651:4:::1;::::0;4604:13:::1;4548:1;4604:2;:13;:::i;:::-;4591:26;::::0;:10:::1;:26;:::i;11634:58::-;11737:15;;;;;;;;;-1:-1:-1::0;;;;;11737:15:0::1;-1:-1:-1::0;;;;;11737:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11719:55:0::1;;11783:4;11790:15;;;;;;;;;-1:-1:-1::0;;;;;11790:15:0::1;-1:-1:-1::0;;;;;11790:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11719:94;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;8586:15:1;;;11719:94:0::1;::::0;::::1;8568:34:1::0;8638:15;;8618:18;;;8611:43;8480:18;;11719:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11703:13;:110:::0;;-1:-1:-1;;;;;11703:110:0;;::::1;::::0;;;::::1;;::::0;;11824:15:::1;::::0;::::1;:31;11863:21;11894:4;11900:24;11894:4:::0;-1:-1:-1;;;;;6213:18:0;6186:7;6213:18;;;:9;:18;;;;;;;6120:119;11900:24:::1;11925:1;11927::::0;11929:7:::1;2715::::0;2742:6;-1:-1:-1;;;;;2742:6:0;;2677:79;11929:7:::1;11824:129;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;9047:15:1;;;11824:129:0::1;::::0;::::1;9029:34:1::0;9079:18;;;9072:34;;;;9122:18;;;9115:34;;;;9165:18;;;9158:34;9229:15;;;9208:19;;;9201:44;11937:15:0::1;9261:19:1::0;;;9254:35;8940:19;;11824:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11971:13:0::1;::::0;12002:15:::1;::::0;11964:71:::1;::::0;;;;-1:-1:-1;;;;;12002:15:0;;::::1;11964:71;::::0;::::1;7315:74:1::0;12020:14:0::1;7405:18:1::0;;;7398:34;11971:13:0;::::1;::::0;-1:-1:-1;11964:29:0::1;::::0;7288:18:1;;11964:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;12046:11:0::1;:18:::0;;12075;;;;;;12117:12:::1;12104:10;:25:::0;11430:707::o;10711:164::-;2804:6;;-1:-1:-1;;;;;2804:6:0;512:10;2804:22;2796:67;;;;-1:-1:-1;;;2796:67:0;;6585:2:1;2796:67:0;;;6567:21:1;;;6604:18;;;6597:30;6663:34;6643:18;;;6636:62;6715:18;;2796:67:0;6383:356:1;2796:67:0;10785:6:::1;10780:88;10801:5;:12;10797:1;:16;10780:88;;;10852:4;10835;:14;10840:5;10846:1;10840:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10835:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;10835:14:0;:21;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;10815:3;::::1;::::0;::::1;:::i;:::-;;;;10780:88;;7063:335:::0;-1:-1:-1;;;;;7156:19:0;;7148:68;;;;-1:-1:-1;;;7148:68:0;;10115:2:1;7148:68:0;;;10097:21:1;10154:2;10134:18;;;10127:30;10193:34;10173:18;;;10166:62;10264:6;10244:18;;;10237:34;10288:19;;7148:68:0;9913:400:1;7148:68:0;-1:-1:-1;;;;;7235:21:0;;7227:68;;;;-1:-1:-1;;;7227:68:0;;10520:2:1;7227:68:0;;;10502:21:1;10559:2;10539:18;;;10532:30;10598:34;10578:18;;;10571:62;10669:4;10649:18;;;10642:32;10691:19;;7227:68:0;10318:398:1;7227:68:0;-1:-1:-1;;;;;7306:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7358:32;;1582:25:1;;;7358:32:0;;1555:18:1;7358:32:0;;;;;;;7063:335;;;:::o;7406:2228::-;-1:-1:-1;;;;;7494:18:0;;7486:68;;;;-1:-1:-1;;;7486:68:0;;10923:2:1;7486:68:0;;;10905:21:1;10962:2;10942:18;;;10935:30;11001:34;10981:18;;;10974:62;11072:7;11052:18;;;11045:35;11097:19;;7486:68:0;10721:401:1;7486:68:0;-1:-1:-1;;;;;7573:16:0;;7565:64;;;;-1:-1:-1;;;7565:64:0;;11329:2:1;7565:64:0;;;11311:21:1;11368:2;11348:18;;;11341:30;11407:34;11387:18;;;11380:62;11478:5;11458:18;;;11451:33;11501:19;;7565:64:0;11127:399:1;7565:64:0;7657:1;7648:6;:10;7640:64;;;;-1:-1:-1;;;7640:64:0;;11733:2:1;7640:64:0;;;11715:21:1;11772:2;11752:18;;;11745:30;11811:34;11791:18;;;11784:62;11882:11;11862:18;;;11855:39;11911:19;;7640:64:0;11531:405:1;7640:64:0;7715:17;2742:6;;-1:-1:-1;;;;;7749:15:0;;;2742:6;;7749:15;;;;:32;;-1:-1:-1;2715:7:0;2742:6;-1:-1:-1;;;;;7768:13:0;;;2742:6;;7768:13;;7749:32;7745:1533;;;-1:-1:-1;;;;;7807:10:0;;;;;;:4;:10;;;;;;;;7806:11;:24;;;;-1:-1:-1;;;;;;7822:8:0;;;;;;:4;:8;;;;;;;;7821:9;7806:24;7798:33;;;;;;7858:76;7930:3;7858:67;7880:15;;7870:9;;:25;7869:55;;7910:14;;7869:55;;;7897:12;;7869:55;7858:6;;:10;:67::i;:::-;:71;;:76::i;:::-;7963:13;;7846:88;;-1:-1:-1;;;;;;7955:21:0;;;7963:13;;7955:21;:55;;;;-1:-1:-1;7994:15:0;;-1:-1:-1;;;;;7980:30:0;;;7994:15;;7980:30;;7955:55;:83;;;;-1:-1:-1;;;;;;8016:22:0;;;;;;:18;:22;;;;;;;;8014:24;7955:83;7951:436;;;8078:12;;8068:6;:22;;8060:60;;;;-1:-1:-1;;;8060:60:0;;12143:2:1;8060:60:0;;;12125:21:1;12182:2;12162:18;;;12155:30;12221:27;12201:18;;;12194:55;12266:18;;8060:60:0;11941:349:1;8060:60:0;8173:14;;8163:6;8147:13;8157:2;-1:-1:-1;;;;;6213:18:0;6186:7;6213:18;;;:9;:18;;;;;;;6120:119;8147:13;:22;;;;:::i;:::-;:40;;8139:79;;;;-1:-1:-1;;;8139:79:0;;12627:2:1;8139:79:0;;;12609:21:1;12666:2;12646:18;;;12639:30;12705:28;12685:18;;;12678:56;12751:18;;8139:79:0;12425:350:1;8139:79:0;8261:12;8243:10;;8256:1;8243:14;;;;:::i;:::-;:30;8239:103;;;9881:20;;9929:8;8298:24;;;;;;8360:9;:11;;;:9;:11;;;:::i;:::-;;;;;;7951:436;8413:13;;-1:-1:-1;;;;;8407:19:0;;;8413:13;;8407:19;;;;:47;;-1:-1:-1;;;;;;8432:22:0;;;;;;:18;:22;;;;;;;;8430:24;8407:47;8403:167;;;8509:14;;8499:6;8483:13;8493:2;-1:-1:-1;;;;;6213:18:0;6186:7;6213:18;;;:9;:18;;;;;;;6120:119;8483:13;:22;;;;:::i;:::-;:40;;8475:79;;;;-1:-1:-1;;;8475:79:0;;12627:2:1;8475:79:0;;;12609:21:1;12666:2;12646:18;;;12639:30;12705:28;12685:18;;;12678:56;12751:18;;8475:79:0;12425:350:1;8475:79:0;8595:13;;-1:-1:-1;;;;;8589:19:0;;;8595:13;;8589:19;:43;;;;-1:-1:-1;;;;;;8612:20:0;;8627:4;8612:20;;8589:43;8586:174;;;8665:79;8740:3;8665:70;8687:16;;8677:9;;:26;8676:58;;8719:15;;8676:58;;;8705:13;;8665:6;;:10;:70::i;:79::-;8653:91;;8586:174;8825:4;8776:28;6213:18;;;:9;:18;;;;;;8851:6;;;;;;;8850:7;:32;;;;-1:-1:-1;8869:13:0;;-1:-1:-1;;;;;8861:21:0;;;8869:13;;8861:21;8850:32;:47;;;;-1:-1:-1;8886:11:0;;;;;;;8850:47;:89;;;;;8922:17;;8901:20;:38;8850:89;:121;;;;;8953:18;;8943:9;;:28;8850:121;8846:421;;;8992:67;9009:49;9013:6;9020:37;9024:20;9045:11;;9020:3;:37::i;:::-;9009:3;:49::i;:::-;8992:16;:67::i;:::-;9107:21;9150:22;;9147:105;;9197:35;9210:21;9197:12;:35::i;:::-;8973:294;8846:421;7783:1495;7745:1533;9293:11;;9290:161;;9361:4;9343:24;;;;:9;:24;;;;;;:39;;9372:9;9343:28;:39::i;:::-;9336:4;9318:24;;;;:9;:24;;;;;;;:64;;;;9400:39;;-1:-1:-1;;;;;9400:39:0;;;;;;;9429:9;1582:25:1;;1570:2;1555:18;;1436:177;9400:39:0;;;;;;;;9290:161;-1:-1:-1;;;;;9477:15:0;;;;;;:9;:15;;;;;;:27;;9497:6;9477:19;:27::i;:::-;-1:-1:-1;;;;;9461:15:0;;;;;;:9;:15;;;;;:43;9529:40;9547:21;:6;9558:9;9547:10;:21::i;:::-;-1:-1:-1;;;;;9529:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9515:13:0;;;;;;;:9;:13;;;;;:54;;;;9585:41;;;9604:21;:6;9615:9;9604:10;:21::i;:::-;9585:41;;1582:25:1;;;1570:2;1555:18;9585:41:0;;;;;;;7475:2159;7406:2228;;;:::o;1569:190::-;1655:7;1691:12;1683:6;;;;1675:29;;;;-1:-1:-1;;;1675:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1715:9:0;1727:5;1731:1;1727;:5;:::i;:::-;1715:17;1569:190;-1:-1:-1;;;;;1569:190:0:o;9953:483::-;5347:6;:13;;;;;;;;10055:16:::1;::::0;;10069:1:::1;10055:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10055:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10055:16:0::1;10031:40;;10100:4;10082;10087:1;10082:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10082:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10126:15:::1;::::0;:22:::1;::::0;;;;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10082:7;;10126:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10116:4;10121:1;10116:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10116:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10191:15:::1;::::0;10159:62:::1;::::0;10176:4:::1;::::0;10191:15:::1;10209:11:::0;10159:8:::1;:62::i;:::-;10232:15;::::0;:196:::1;::::0;;;;-1:-1:-1;;;;;10232:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10313:11;;10232:15:::1;::::0;10355:4;;10382::::1;::::0;10402:15:::1;::::0;10232:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5383:6:0;:14;;;;;;-1:-1:-1;;;;9953:483:0:o;10611:92::-;10668:10;;:27;;-1:-1:-1;;;;;10668:10:0;;;;:27;;;;;10688:6;;10668:10;:27;:10;:27;10688:6;10668:10;:27;;;;;;;;;;;;;;;;;;;1767:246;1825:7;1849:1;1854;1849:6;1845:47;;-1:-1:-1;1879:1:0;1872:8;;1845:47;1902:9;1914:5;1918:1;1914;:5;:::i;:::-;1902:17;-1:-1:-1;1947:1:0;1938:5;1942:1;1902:17;1938:5;:::i;:::-;:10;1930:56;;;;-1:-1:-1;;;1930:56:0;;14425:2:1;1930:56:0;;;14407:21:1;14464:2;14444:18;;;14437:30;14503:34;14483:18;;;14476:62;14574:3;14554:18;;;14547:31;14595:19;;1930:56:0;14223:397:1;1930:56:0;2004:1;1767:246;-1:-1:-1;;;1767:246:0:o;2021:132::-;2079:7;2106:39;2110:1;2113;2106:39;;;;;;;;;;;;;;;;;:3;:39::i;9644:98::-;9701:7;9728:1;9726;:3;9725:9;;9733:1;9725:9;;;-1:-1:-1;9731:1:0;9644:98;-1:-1:-1;9644:98:0:o;1238:179::-;1296:7;;1328:5;1332:1;1328;:5;:::i;:::-;1316:17;;1357:1;1352;:6;;1344:46;;;;-1:-1:-1;;;1344:46:0;;14827:2:1;1344:46:0;;;14809:21:1;14866:2;14846:18;;;14839:30;14905:29;14885:18;;;14878:57;14952:18;;1344:46:0;14625:351:1;1425:136:0;1483:7;1510:43;1514:1;1517;1510:43;;;;;;;;;;;;;;;;;:3;:43::i;2161:189::-;2247:7;2282:12;2275:5;2267:28;;;;-1:-1:-1;;;2267:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2306:9:0;2318:5;2322:1;2318;:5;:::i;14:607:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:154::-;-1:-1:-1;;;;;705:5:1;701:54;694:5;691:65;681:93;;770:1;767;760:12;681:93;626:154;:::o;785:134::-;853:20;;882:31;853:20;882:31;:::i;:::-;785:134;;;:::o;924:315::-;992:6;1000;1053:2;1041:9;1032:7;1028:23;1024:32;1021:52;;;1069:1;1066;1059:12;1021:52;1108:9;1095:23;1127:31;1152:5;1127:31;:::i;:::-;1177:5;1229:2;1214:18;;;;1201:32;;-1:-1:-1;;;924:315:1:o;1618:456::-;1695:6;1703;1711;1764:2;1752:9;1743:7;1739:23;1735:32;1732:52;;;1780:1;1777;1770:12;1732:52;1819:9;1806:23;1838:31;1863:5;1838:31;:::i;:::-;1888:5;-1:-1:-1;1945:2:1;1930:18;;1917:32;1958:33;1917:32;1958:33;:::i;:::-;1618:456;;2010:7;;-1:-1:-1;;;2064:2:1;2049:18;;;;2036:32;;1618:456::o;2268:184::-;2320:77;2317:1;2310:88;2417:4;2414:1;2407:15;2441:4;2438:1;2431:15;2457:1180;2541:6;2572:2;2615;2603:9;2594:7;2590:23;2586:32;2583:52;;;2631:1;2628;2621:12;2583:52;2671:9;2658:23;2700:18;2741:2;2733:6;2730:14;2727:34;;;2757:1;2754;2747:12;2727:34;2795:6;2784:9;2780:22;2770:32;;2840:7;2833:4;2829:2;2825:13;2821:27;2811:55;;2862:1;2859;2852:12;2811:55;2898:2;2885:16;2920:2;2916;2913:10;2910:36;;;2926:18;;:::i;:::-;2972:2;2969:1;2965:10;3004:2;2998:9;3063:66;3058:2;3054;3050:11;3046:84;3038:6;3034:97;3181:6;3169:10;3166:22;3161:2;3149:10;3146:18;3143:46;3140:72;;;3192:18;;:::i;:::-;3228:2;3221:22;3278:18;;;3312:15;;;;-1:-1:-1;3354:11:1;;;3350:20;;;3382:19;;;3379:39;;;3414:1;3411;3404:12;3379:39;3438:11;;;;3458:148;3474:6;3469:3;3466:15;3458:148;;;3540:23;3559:3;3540:23;:::i;:::-;3528:36;;3491:12;;;;3584;;;;3458:148;;;3625:6;2457:1180;-1:-1:-1;;;;;;;;2457:1180:1:o;3642:247::-;3701:6;3754:2;3742:9;3733:7;3729:23;3725:32;3722:52;;;3770:1;3767;3760:12;3722:52;3809:9;3796:23;3828:31;3853:5;3828:31;:::i;4125:388::-;4193:6;4201;4254:2;4242:9;4233:7;4229:23;4225:32;4222:52;;;4270:1;4267;4260:12;4222:52;4309:9;4296:23;4328:31;4353:5;4328:31;:::i;:::-;4378:5;-1:-1:-1;4435:2:1;4420:18;;4407:32;4448:33;4407:32;4448:33;:::i;:::-;4500:7;4490:17;;;4125:388;;;;;:::o;4518:184::-;4570:77;4567:1;4560:88;4667:4;4664:1;4657:15;4691:4;4688:1;4681:15;4707:482;4796:1;4839:5;4796:1;4853:330;4874:7;4864:8;4861:21;4853:330;;;4993:4;4925:66;4921:77;4915:4;4912:87;4909:113;;;5002:18;;:::i;:::-;5052:7;5042:8;5038:22;5035:55;;;5072:16;;;;5035:55;5151:22;;;;5111:15;;;;4853:330;;;4857:3;4707:482;;;;;:::o;5194:866::-;5243:5;5273:8;5263:80;;-1:-1:-1;5314:1:1;5328:5;;5263:80;5362:4;5352:76;;-1:-1:-1;5399:1:1;5413:5;;5352:76;5444:4;5462:1;5457:59;;;;5530:1;5525:130;;;;5437:218;;5457:59;5487:1;5478:10;;5501:5;;;5525:130;5562:3;5552:8;5549:17;5546:43;;;5569:18;;:::i;:::-;-1:-1:-1;;5625:1:1;5611:16;;5640:5;;5437:218;;5739:2;5729:8;5726:16;5720:3;5714:4;5711:13;5707:36;5701:2;5691:8;5688:16;5683:2;5677:4;5674:12;5670:35;5667:77;5664:159;;;-1:-1:-1;5776:19:1;;;5808:5;;5664:159;5855:34;5880:8;5874:4;5855:34;:::i;:::-;5985:6;5917:66;5913:79;5904:7;5901:92;5898:118;;;5996:18;;:::i;:::-;6034:20;;5194:866;-1:-1:-1;;;5194:866:1:o;6065:140::-;6123:5;6152:47;6193:4;6183:8;6179:19;6173:4;6152:47;:::i;6210:168::-;6283:9;;;6314;;6331:15;;;6325:22;;6311:37;6301:71;;6352:18;;:::i;6744:184::-;6796:77;6793:1;6786:88;6893:4;6890:1;6883:15;6917:4;6914:1;6907:15;6933:195;6972:3;7003:66;6996:5;6993:77;6990:103;;7073:18;;:::i;:::-;-1:-1:-1;7120:1:1;7109:13;;6933:195::o;7443:277::-;7510:6;7563:2;7551:9;7542:7;7538:23;7534:32;7531:52;;;7579:1;7576;7569:12;7531:52;7611:9;7605:16;7664:5;7657:13;7650:21;7643:5;7640:32;7630:60;;7686:1;7683;7676:12;8077:251;8147:6;8200:2;8188:9;8179:7;8175:23;8171:32;8168:52;;;8216:1;8213;8206:12;8168:52;8248:9;8242:16;8267:31;8292:5;8267:31;:::i;9300:306::-;9388:6;9396;9404;9457:2;9445:9;9436:7;9432:23;9428:32;9425:52;;;9473:1;9470;9463:12;9425:52;9502:9;9496:16;9486:26;;9552:2;9541:9;9537:18;9531:25;9521:35;;9596:2;9585:9;9581:18;9575:25;9565:35;;9300:306;;;;;:::o;12295:125::-;12360:9;;;12381:10;;;12378:36;;;12394:18;;:::i;12780:128::-;12847:9;;;12868:11;;;12865:37;;;12882:18;;:::i;12913:1026::-;13175:4;13223:3;13212:9;13208:19;13254:6;13243:9;13236:25;13280:2;13318:6;13313:2;13302:9;13298:18;13291:34;13361:3;13356:2;13345:9;13341:18;13334:31;13385:6;13420;13414:13;13451:6;13443;13436:22;13489:3;13478:9;13474:19;13467:26;;13528:2;13520:6;13516:15;13502:29;;13549:1;13559:218;13573:6;13570:1;13567:13;13559:218;;;13638:13;;-1:-1:-1;;;;;13634:62:1;13622:75;;13752:15;;;;13717:12;;;;13595:1;13588:9;13559:218;;;-1:-1:-1;;;;;;;13833:55:1;;;;13828:2;13813:18;;13806:83;-1:-1:-1;;;13920:3:1;13905:19;13898:35;13794:3;12913:1026;-1:-1:-1;;;12913:1026:1:o;13944:274::-;13984:1;14010;14000:189;;14045:77;14042:1;14035:88;14146:4;14143:1;14136:15;14174:4;14171:1;14164:15;14000:189;-1:-1:-1;14203:9:1;;13944:274::o

Swarm Source

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