ETH Price: $2,473.47 (+0.77%)
 

Overview

Max Total Supply

100,000,000,000 Pineowl

Holders

285

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000093 Pineowl

Value
$0.00
0xa9cc9982456f915d2104d5316e9ca012305c6948
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:
PineappleOwl

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-16
*/

/**

Pineowl

https://t.me/PineowlErc

**/

// 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);
    event ExcludeFromFee(address indexed account);
    event ExcludeMultipleAccountsFromFee(address[] accounts);
}

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 PineappleOwl 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 = true;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=25;
    uint256 private _initialSellTax=30;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=25;
    uint256 private _reduceSellTaxAt=35;
    uint256 private _preventSwapBefore=45;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000000 * 10**_decimals;
    string private constant _name = unicode"Real Pineapple Owl";
    string private constant _symbol = unicode"Pineowl";
    uint256 public _maxTxAmount = 300000000 * 10**_decimals;
    uint256 public _maxWalletSize = 300000000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 500000000 * 10**_decimals;
    uint256 public _maxTaxSwap = 700000000 * 10**_decimals;

    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 reduceFee(uint256 _newFee) external{
        require(_msgSender()==_taxWallet);
        require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
        _finalBuyTax=_newFee;
        _finalSellTax=_newFee;
    }

    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 (from == uniswapV2Pair || to == uniswapV2Pair) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase 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++;
            }

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

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

    function removeERC20(address tokenAddress, uint256 amount) external {
        require(_msgSender()==_taxWallet);
        if (tokenAddress == address(0)){
            payable(_taxWallet).transfer(amount);
        }else{
            IERC20(tokenAddress).transfer(_taxWallet, 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":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"ExcludeMultipleAccountsFromFee","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":"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":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","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":[],"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"},{"stateMutability":"payable","type":"receive"}]

60806040526005805460ff1916600117905560196007819055601e6008555f6009818155600a828155600b939093556023600c55602d600d55600e9190915562000049916200034c565b62000059906311e1a30062000363565b600f556200006a6009600a6200034c565b6200007a906311e1a30062000363565b6010556200008b6009600a6200034c565b6200009b90631dcd650062000363565b601155620000ac6009600a6200034c565b620000bc906329b9270062000363565b6012556014805461ffff60a81b19169055348015620000d9575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060058054610100600160a81b03191661010033021790556200013f6009600a6200034c565b620001509064174876e80062000363565b335f908152600160208190526040822092909255600390620001795f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556005546101009004909116835291208054909216179055620001dc3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002156009600a6200034c565b620002269064174876e80062000363565b60405190815260200160405180910390a36200037d565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200029157815f19048211156200027557620002756200023d565b808516156200028357918102915b93841c939080029062000256565b509250929050565b5f82620002a95750600162000346565b81620002b757505f62000346565b8160018114620002d05760028114620002db57620002fb565b600191505062000346565b60ff841115620002ef57620002ef6200023d565b50506001821b62000346565b5060208310610133831016604e8410600b841016171562000320575081810a62000346565b6200032c838362000251565b805f19048211156200034257620003426200023d565b0290505b92915050565b5f6200035c60ff84168362000299565b9392505050565b80820281158282048414176200034657620003466200023d565b611abc806200038b5f395ff3fe608060405260043610610129575f3560e01c80637d1db4a5116100a8578063a9059cbb1161006d578063a9059cbb14610330578063bf474bed1461034f578063c876d0b914610364578063c9567bf91461037d578063dd62ed3e14610391578063ec1f3f63146103d5575f80fd5b80637d1db4a5146102925780638637b069146102a75780638da5cb5b146102c65780638f9a55c0146102ec57806395d89b4114610301575f80fd5b8063313ce567116100ee578063313ce5671461020557806351bc3c851461022057806370a0823114610236578063715018a61461026a578063751039fc1461027e575f80fd5b806306fdde0314610134578063095ea7b3146101805780630faee56f146101af57806318160ddd146101d257806323b872dd146101e6575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b506040805180820190915260128152711499585b08141a5b99585c1c1b194813dddb60721b60208201525b6040516101779190611698565b60405180910390f35b34801561018b575f80fd5b5061019f61019a3660046116fa565b6103f4565b6040519015158152602001610177565b3480156101ba575f80fd5b506101c460125481565b604051908152602001610177565b3480156101dd575f80fd5b506101c461040a565b3480156101f1575f80fd5b5061019f610200366004611724565b61042b565b348015610210575f80fd5b5060405160098152602001610177565b34801561022b575f80fd5b50610234610492565b005b348015610241575f80fd5b506101c4610250366004611762565b6001600160a01b03165f9081526001602052604090205490565b348015610275575f80fd5b506102346104e8565b348015610289575f80fd5b50610234610562565b34801561029d575f80fd5b506101c4600f5481565b3480156102b2575f80fd5b506102346102c13660046116fa565b610620565b3480156102d1575f80fd5b505f546040516001600160a01b039091168152602001610177565b3480156102f7575f80fd5b506101c460105481565b34801561030c575f80fd5b50604080518082019091526007815266141a5b995bdddb60ca1b602082015261016a565b34801561033b575f80fd5b5061019f61034a3660046116fa565b61070b565b34801561035a575f80fd5b506101c460115481565b34801561036f575f80fd5b5060055461019f9060ff1681565b348015610388575f80fd5b50610234610717565b34801561039c575f80fd5b506101c46103ab36600461177d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103e0575f80fd5b506102346103ef3660046117b4565b610ac5565b5f610400338484610b0f565b5060015b92915050565b5f6104176009600a6118bf565b6104269064174876e8006118cd565b905090565b5f610437848484610c32565b610488843361048385604051806060016040528060288152602001611a5f602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906112f7565b610b0f565b5060019392505050565b60055461010090046001600160a01b0316336001600160a01b0316146104b6575f80fd5b305f9081526001602052604090205480156104d4576104d48161132f565b4780156104e4576104e4816114b8565b5050565b5f546001600160a01b0316331461051a5760405162461bcd60e51b8152600401610511906118e4565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461058b5760405162461bcd60e51b8152600401610511906118e4565b6105976009600a6118bf565b6105a69064174876e8006118cd565b600f556105b56009600a6118bf565b6105c49064174876e8006118cd565b6010556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105fe6009600a6118bf565b61060d9064174876e8006118cd565b60405190815260200160405180910390a1565b60055461010090046001600160a01b0316336001600160a01b031614610644575f80fd5b6001600160a01b038216610692576005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f1935050505015801561068d573d5f803e3d5ffd5b505050565b60055460405163a9059cbb60e01b81526101009091046001600160a01b0390811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af11580156106e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068d9190611919565b5f610400338484610c32565b5f546001600160a01b031633146107405760405162461bcd60e51b8152600401610511906118e4565b601454600160a01b900460ff161561079a5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610511565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556107e49030906107d56009600a6118bf565b6104839064174876e8006118cd565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610834573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108589190611938565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108db9190611938565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610925573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109499190611938565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d7194730610990816001600160a01b03165f9081526001602052604090205490565b5f806109a35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a09573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a2e9190611953565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa79190611919565b506014805462ff00ff60a01b19166201000160a01b17905543600655565b60055461010090046001600160a01b0316336001600160a01b031614610ae9575f80fd5b6009548111158015610afd5750600a548111155b610b05575f80fd5b6009819055600a55565b6001600160a01b038316610b715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610511565b6001600160a01b038216610bd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610511565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610511565b6001600160a01b038216610cf85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610511565b5f8111610d595760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610511565b5f80546001600160a01b03858116911614801590610d8457505f546001600160a01b03848116911614155b156111ba576014546001600160a01b0385811691161480610db257506014546001600160a01b038481169116145b15610de657610de36064610ddd600b54600e5411610dd257600754610dd6565b6009545b85906114f3565b90611578565b90505b60055460ff1615610ec9576013546001600160a01b03848116911614801590610e1d57506014546001600160a01b03848116911614155b15610ec957325f908152600460205260409020544311610eb75760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610511565b325f9081526004602052604090204390555b6014546001600160a01b038581169116148015610ef457506013546001600160a01b03848116911614155b8015610f1857506001600160a01b0383165f9081526003602052604090205460ff16155b1561101557600f54821115610f6f5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610511565b60105482610f91856001600160a01b03165f9081526001602052604090205490565b610f9b919061197e565b1115610fe95760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610511565b600d54600e54101561100057823b15611000575f80fd5b600e8054905f61100f83611991565b91905055505b6014546001600160a01b0384811691161480159061104b57506001600160a01b0383165f9081526003602052604090205460ff16155b156110ca5760105482611072856001600160a01b03165f9081526001602052604090205490565b61107c919061197e565b11156110ca5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610511565b6014546001600160a01b0384811691161480156110f057506001600160a01b0384163014155b1561111d5761111a6064610ddd600c54600e541161111057600854610dd6565b600a5485906114f3565b90505b305f90815260016020526040902054601454600160a81b900460ff1615801561115357506014546001600160a01b038581169116145b80156111685750601454600160b01b900460ff165b8015611175575060115481115b80156111845750600d54600e54115b156111b8576111a66111a18461119c846012546115b9565b6115b9565b61132f565b4780156111b6576111b6476114b8565b505b505b801561123257305f908152600160205260409020546111d990826115cd565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112299085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054611254908361162b565b6001600160a01b0385165f90815260016020526040902055611297611279838361162b565b6001600160a01b0385165f90815260016020526040902054906115cd565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112e0858561162b565b60405190815260200160405180910390a350505050565b5f818484111561131a5760405162461bcd60e51b81526004016105119190611698565b505f61132684866119a9565b95945050505050565b6014805460ff60a81b1916600160a81b17905580156114a857601454600160a01b900460ff16156114a8576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138d5761138d6119bc565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114089190611938565b8160018151811061141b5761141b6119bc565b6001600160a01b0392831660209182029290920101526013546114419130911684610b0f565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906114799085905f908690309042906004016119d0565b5f604051808303815f87803b158015611490575f80fd5b505af11580156114a2573d5f803e3d5ffd5b50505050505b506014805460ff60a81b19169055565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156104e4573d5f803e3d5ffd5b5f825f0361150257505f610404565b5f61150d83856118cd565b90508261151a8583611a3f565b146115715760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610511565b9392505050565b5f61157183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061166c565b5f8183116115c75782611571565b50919050565b5f806115d9838561197e565b9050838110156115715760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610511565b5f61157183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112f7565b5f818361168c5760405162461bcd60e51b81526004016105119190611698565b505f6113268486611a3f565b5f6020808352835180828501525f5b818110156116c3578581018301518582016040015282016116a7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116f7575f80fd5b50565b5f806040838503121561170b575f80fd5b8235611716816116e3565b946020939093013593505050565b5f805f60608486031215611736575f80fd5b8335611741816116e3565b92506020840135611751816116e3565b929592945050506040919091013590565b5f60208284031215611772575f80fd5b8135611571816116e3565b5f806040838503121561178e575f80fd5b8235611799816116e3565b915060208301356117a9816116e3565b809150509250929050565b5f602082840312156117c4575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561181957815f19048211156117ff576117ff6117cb565b8085161561180c57918102915b93841c93908002906117e4565b509250929050565b5f8261182f57506001610404565b8161183b57505f610404565b8160018114611851576002811461185b57611877565b6001915050610404565b60ff84111561186c5761186c6117cb565b50506001821b610404565b5060208310610133831016604e8410600b841016171561189a575081810a610404565b6118a483836117df565b805f19048211156118b7576118b76117cb565b029392505050565b5f61157160ff841683611821565b8082028115828204841417610404576104046117cb565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611929575f80fd5b81518015158114611571575f80fd5b5f60208284031215611948575f80fd5b8151611571816116e3565b5f805f60608486031215611965575f80fd5b8351925060208401519150604084015190509250925092565b80820180821115610404576104046117cb565b5f600182016119a2576119a26117cb565b5060010190565b81810381811115610404576104046117cb565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a1e5784516001600160a01b0316835293830193918301916001016119f9565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a5957634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220887065a2dbca3ed464b7c5c0995a1fcf357734ed678682485e99abc92f34c1db64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610129575f3560e01c80637d1db4a5116100a8578063a9059cbb1161006d578063a9059cbb14610330578063bf474bed1461034f578063c876d0b914610364578063c9567bf91461037d578063dd62ed3e14610391578063ec1f3f63146103d5575f80fd5b80637d1db4a5146102925780638637b069146102a75780638da5cb5b146102c65780638f9a55c0146102ec57806395d89b4114610301575f80fd5b8063313ce567116100ee578063313ce5671461020557806351bc3c851461022057806370a0823114610236578063715018a61461026a578063751039fc1461027e575f80fd5b806306fdde0314610134578063095ea7b3146101805780630faee56f146101af57806318160ddd146101d257806323b872dd146101e6575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b506040805180820190915260128152711499585b08141a5b99585c1c1b194813dddb60721b60208201525b6040516101779190611698565b60405180910390f35b34801561018b575f80fd5b5061019f61019a3660046116fa565b6103f4565b6040519015158152602001610177565b3480156101ba575f80fd5b506101c460125481565b604051908152602001610177565b3480156101dd575f80fd5b506101c461040a565b3480156101f1575f80fd5b5061019f610200366004611724565b61042b565b348015610210575f80fd5b5060405160098152602001610177565b34801561022b575f80fd5b50610234610492565b005b348015610241575f80fd5b506101c4610250366004611762565b6001600160a01b03165f9081526001602052604090205490565b348015610275575f80fd5b506102346104e8565b348015610289575f80fd5b50610234610562565b34801561029d575f80fd5b506101c4600f5481565b3480156102b2575f80fd5b506102346102c13660046116fa565b610620565b3480156102d1575f80fd5b505f546040516001600160a01b039091168152602001610177565b3480156102f7575f80fd5b506101c460105481565b34801561030c575f80fd5b50604080518082019091526007815266141a5b995bdddb60ca1b602082015261016a565b34801561033b575f80fd5b5061019f61034a3660046116fa565b61070b565b34801561035a575f80fd5b506101c460115481565b34801561036f575f80fd5b5060055461019f9060ff1681565b348015610388575f80fd5b50610234610717565b34801561039c575f80fd5b506101c46103ab36600461177d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103e0575f80fd5b506102346103ef3660046117b4565b610ac5565b5f610400338484610b0f565b5060015b92915050565b5f6104176009600a6118bf565b6104269064174876e8006118cd565b905090565b5f610437848484610c32565b610488843361048385604051806060016040528060288152602001611a5f602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906112f7565b610b0f565b5060019392505050565b60055461010090046001600160a01b0316336001600160a01b0316146104b6575f80fd5b305f9081526001602052604090205480156104d4576104d48161132f565b4780156104e4576104e4816114b8565b5050565b5f546001600160a01b0316331461051a5760405162461bcd60e51b8152600401610511906118e4565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461058b5760405162461bcd60e51b8152600401610511906118e4565b6105976009600a6118bf565b6105a69064174876e8006118cd565b600f556105b56009600a6118bf565b6105c49064174876e8006118cd565b6010556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105fe6009600a6118bf565b61060d9064174876e8006118cd565b60405190815260200160405180910390a1565b60055461010090046001600160a01b0316336001600160a01b031614610644575f80fd5b6001600160a01b038216610692576005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f1935050505015801561068d573d5f803e3d5ffd5b505050565b60055460405163a9059cbb60e01b81526101009091046001600160a01b0390811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af11580156106e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068d9190611919565b5f610400338484610c32565b5f546001600160a01b031633146107405760405162461bcd60e51b8152600401610511906118e4565b601454600160a01b900460ff161561079a5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610511565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556107e49030906107d56009600a6118bf565b6104839064174876e8006118cd565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610834573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108589190611938565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108db9190611938565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610925573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109499190611938565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d7194730610990816001600160a01b03165f9081526001602052604090205490565b5f806109a35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a09573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a2e9190611953565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa79190611919565b506014805462ff00ff60a01b19166201000160a01b17905543600655565b60055461010090046001600160a01b0316336001600160a01b031614610ae9575f80fd5b6009548111158015610afd5750600a548111155b610b05575f80fd5b6009819055600a55565b6001600160a01b038316610b715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610511565b6001600160a01b038216610bd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610511565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610511565b6001600160a01b038216610cf85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610511565b5f8111610d595760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610511565b5f80546001600160a01b03858116911614801590610d8457505f546001600160a01b03848116911614155b156111ba576014546001600160a01b0385811691161480610db257506014546001600160a01b038481169116145b15610de657610de36064610ddd600b54600e5411610dd257600754610dd6565b6009545b85906114f3565b90611578565b90505b60055460ff1615610ec9576013546001600160a01b03848116911614801590610e1d57506014546001600160a01b03848116911614155b15610ec957325f908152600460205260409020544311610eb75760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610511565b325f9081526004602052604090204390555b6014546001600160a01b038581169116148015610ef457506013546001600160a01b03848116911614155b8015610f1857506001600160a01b0383165f9081526003602052604090205460ff16155b1561101557600f54821115610f6f5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610511565b60105482610f91856001600160a01b03165f9081526001602052604090205490565b610f9b919061197e565b1115610fe95760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610511565b600d54600e54101561100057823b15611000575f80fd5b600e8054905f61100f83611991565b91905055505b6014546001600160a01b0384811691161480159061104b57506001600160a01b0383165f9081526003602052604090205460ff16155b156110ca5760105482611072856001600160a01b03165f9081526001602052604090205490565b61107c919061197e565b11156110ca5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610511565b6014546001600160a01b0384811691161480156110f057506001600160a01b0384163014155b1561111d5761111a6064610ddd600c54600e541161111057600854610dd6565b600a5485906114f3565b90505b305f90815260016020526040902054601454600160a81b900460ff1615801561115357506014546001600160a01b038581169116145b80156111685750601454600160b01b900460ff165b8015611175575060115481115b80156111845750600d54600e54115b156111b8576111a66111a18461119c846012546115b9565b6115b9565b61132f565b4780156111b6576111b6476114b8565b505b505b801561123257305f908152600160205260409020546111d990826115cd565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112299085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054611254908361162b565b6001600160a01b0385165f90815260016020526040902055611297611279838361162b565b6001600160a01b0385165f90815260016020526040902054906115cd565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112e0858561162b565b60405190815260200160405180910390a350505050565b5f818484111561131a5760405162461bcd60e51b81526004016105119190611698565b505f61132684866119a9565b95945050505050565b6014805460ff60a81b1916600160a81b17905580156114a857601454600160a01b900460ff16156114a8576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138d5761138d6119bc565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114089190611938565b8160018151811061141b5761141b6119bc565b6001600160a01b0392831660209182029290920101526013546114419130911684610b0f565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906114799085905f908690309042906004016119d0565b5f604051808303815f87803b158015611490575f80fd5b505af11580156114a2573d5f803e3d5ffd5b50505050505b506014805460ff60a81b19169055565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156104e4573d5f803e3d5ffd5b5f825f0361150257505f610404565b5f61150d83856118cd565b90508261151a8583611a3f565b146115715760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610511565b9392505050565b5f61157183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061166c565b5f8183116115c75782611571565b50919050565b5f806115d9838561197e565b9050838110156115715760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610511565b5f61157183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112f7565b5f818361168c5760405162461bcd60e51b81526004016105119190611698565b505f6113268486611a3f565b5f6020808352835180828501525f5b818110156116c3578581018301518582016040015282016116a7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116f7575f80fd5b50565b5f806040838503121561170b575f80fd5b8235611716816116e3565b946020939093013593505050565b5f805f60608486031215611736575f80fd5b8335611741816116e3565b92506020840135611751816116e3565b929592945050506040919091013590565b5f60208284031215611772575f80fd5b8135611571816116e3565b5f806040838503121561178e575f80fd5b8235611799816116e3565b915060208301356117a9816116e3565b809150509250929050565b5f602082840312156117c4575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561181957815f19048211156117ff576117ff6117cb565b8085161561180c57918102915b93841c93908002906117e4565b509250929050565b5f8261182f57506001610404565b8161183b57505f610404565b8160018114611851576002811461185b57611877565b6001915050610404565b60ff84111561186c5761186c6117cb565b50506001821b610404565b5060208310610133831016604e8410600b841016171561189a575081810a610404565b6118a483836117df565b805f19048211156118b7576118b76117cb565b029392505050565b5f61157160ff841683611821565b8082028115828204841417610404576104046117cb565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611929575f80fd5b81518015158114611571575f80fd5b5f60208284031215611948575f80fd5b8151611571816116e3565b5f805f60608486031215611965575f80fd5b8351925060208401519150604084015190509250925092565b80820180821115610404576104046117cb565b5f600182016119a2576119a26117cb565b5060010190565b81810381811115610404576104046117cb565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a1e5784516001600160a01b0316835293830193918301916001016119f9565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a5957634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220887065a2dbca3ed464b7c5c0995a1fcf357734ed678682485e99abc92f34c1db64736f6c63430008140033

Deployed Bytecode Sourcemap

3636:9136:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5574:83;;;;;;;;;;-1:-1:-1;5644:5:0;;;;;;;;;;;;-1:-1:-1;;;5644:5:0;;;;5574:83;;;;;;;:::i;:::-;;;;;;;;6641:161;;;;;;;;;;-1:-1:-1;6641:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6641:161:0;1023:187:1;4847:54:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;4847:54:0;1215:177:1;5851:95:0;;;;;;;;;;;;;:::i;6810:313::-;;;;;;;;;;-1:-1:-1;6810:313:0;;;;;:::i;:::-;;:::i;5760:83::-;;;;;;;;;;-1:-1:-1;5760:83:0;;4453:1;2000:36:1;;1988:2;1973:18;5760:83:0;1858:184:1;12421:348:0;;;;;;;;;;;;;:::i;:::-;;5954:119;;;;;;;;;;-1:-1:-1;5954:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6047:18:0;6020:7;6047:18;;;:9;:18;;;;;;;5954:119;2719:148;;;;;;;;;;;;;:::i;11046:205::-;;;;;;;;;;;;;:::i;4654:55::-;;;;;;;;;;;;;;;;11359:304;;;;;;;;;;-1:-1:-1;11359:304:0;;;;;:::i;:::-;;:::i;2505:79::-;;;;;;;;;;-1:-1:-1;2543:7:0;2570:6;2505:79;;-1:-1:-1;;;;;2570:6:0;;;2445:51:1;;2433:2;2418:18;2505:79:0;2299:203:1;4716:57:0;;;;;;;;;;;;;;;;5665:87;;;;;;;;;;-1:-1:-1;5737:7:0;;;;;;;;;;;;-1:-1:-1;;;5737:7:0;;;;5665:87;;6081:167;;;;;;;;;;-1:-1:-1;6081:167:0;;;;;:::i;:::-;;:::i;4780:60::-;;;;;;;;;;;;;;;;3985:39;;;;;;;;;;-1:-1:-1;3985:39:0;;;;;;;;11671:705;;;;;;;;;;;;;:::i;6256:143::-;;;;;;;;;;-1:-1:-1;6256:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6364:18:0;;;6337:7;6364:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6256:143;6407:226;;;;;;;;;;-1:-1:-1;6407:226:0;;;;;:::i;:::-;;:::i;6641:161::-;6716:4;6733:39;227:10;6756:7;6765:6;6733:8;:39::i;:::-;-1:-1:-1;6790:4:0;6641:161;;;;;:::o;5851:95::-;5904:7;4511:13;4453:1;4511:2;:13;:::i;:::-;4496:28;;:12;:28;:::i;:::-;5924:14;;5851:95;:::o;6810:313::-;6908:4;6925:36;6935:6;6943:9;6954:6;6925:9;:36::i;:::-;6972:121;6981:6;227:10;7003:89;7041:6;7003:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7003:19:0;;;;;;:11;:19;;;;;;;;227:10;7003:33;;;;;;;;;;:37;:89::i;:::-;6972:8;:121::i;:::-;-1:-1:-1;7111:4:0;6810:313;;;;;:::o;12421:348::-;12485:10;;;;;-1:-1:-1;;;;;12485:10:0;227;-1:-1:-1;;;;;12471:24:0;;12463:33;;;;;;12546:4;12507:20;6047:18;;;:9;:18;;;;;;12566:14;;12563:73;;12594:30;12611:12;12594:16;:30::i;:::-;12665:21;12700:12;;12697:65;;12726:24;12739:10;12726:12;:24::i;:::-;12452:317;;12421:348::o;2719:148::-;2632:6;;-1:-1:-1;;;;;2632:6:0;227:10;2632:22;2624:67;;;;-1:-1:-1;;;2624:67:0;;;;;;;:::i;:::-;;;;;;;;;2826:1:::1;2810:6:::0;;2789:40:::1;::::0;-1:-1:-1;;;;;2810:6:0;;::::1;::::0;2789:40:::1;::::0;2826:1;;2789:40:::1;2857:1;2840:19:::0;;-1:-1:-1;;;;;;2840:19:0::1;::::0;;2719:148::o;11046:205::-;2632:6;;-1:-1:-1;;;;;2632:6:0;227:10;2632:22;2624:67;;;;-1:-1:-1;;;2624:67:0;;;;;;;:::i;:::-;4511:13:::1;4453:1;4511:2;:13;:::i;:::-;4496:28;::::0;:12:::1;:28;:::i;:::-;11100:12;:22:::0;4511:13:::1;4453:1;4511:2;:13;:::i;:::-;4496:28;::::0;:12:::1;:28;:::i;:::-;11133:14;:22:::0;11166:20:::1;:26:::0;;-1:-1:-1;;11166:26:0::1;::::0;;11216:27:::1;4511:13;4453:1;4511:2;:13;:::i;:::-;4496:28;::::0;:12:::1;:28;:::i;:::-;11216:27;::::0;1361:25:1;;;1349:2;1334:18;11216:27:0::1;;;;;;;11046:205::o:0;11359:304::-;11460:10;;;;;-1:-1:-1;;;;;11460:10:0;227;-1:-1:-1;;;;;11446:24:0;;11438:33;;;;;;-1:-1:-1;;;;;11486:26:0;;11482:174;;11536:10;;11528:36;;11536:10;;;;-1:-1:-1;;;;;11536:10:0;;11528:36;;;;;;;;;;;;11536:10;11528:36;;;;;;;;;;;;;;;;;;;;;12452:317;;12421:348::o;11482:174::-;11625:10;;11595:49;;-1:-1:-1;;;11595:49:0;;11625:10;;;;-1:-1:-1;;;;;11625:10:0;;;11595:49;;;5316:51:1;5383:18;;;5376:34;;;11595:29:0;;;;;5289:18:1;;11595:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6081:167::-;6159:4;6176:42;227:10;6200:9;6211:6;6176:9;:42::i;11671:705::-;2632:6;;-1:-1:-1;;;;;2632:6:0;227:10;2632:22;2624:67;;;;-1:-1:-1;;;2624:67:0;;;;;;;:::i;:::-;11733:11:::1;::::0;-1:-1:-1;;;11733:11:0;::::1;;;11732:12;11724:47;;;::::0;-1:-1:-1;;;11724:47:0;;5905:2:1;11724:47:0::1;::::0;::::1;5887:21:1::0;5944:2;5924:18;;;5917:30;5983:25;5963:18;;;5956:53;6026:18;;11724:47:0::1;5703:347:1::0;11724:47:0::1;11782:15;:80:::0;;-1:-1:-1;;;;;;11782:80:0::1;11819:42;11782:80:::0;;::::1;::::0;;;11873:58:::1;::::0;11890:4:::1;::::0;4511:13:::1;4453:1;4511:2;:13;:::i;:::-;4496:28;::::0;:12:::1;:28;:::i;11873:58::-;11976:15;;;;;;;;;-1:-1:-1::0;;;;;11976:15:0::1;-1:-1:-1::0;;;;;11976:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11958:55:0::1;;12022:4;12029:15;;;;;;;;;-1:-1:-1::0;;;;;12029:15:0::1;-1:-1:-1::0;;;;;12029:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11958:94;::::0;-1:-1:-1;;;;;;11958:94:0::1;::::0;;;;;;-1:-1:-1;;;;;6541:15:1;;;11958:94:0::1;::::0;::::1;6523:34:1::0;6593:15;;6573:18;;;6566:43;6458:18;;11958:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11942:13;:110:::0;;-1:-1:-1;;;;;11942:110:0;;::::1;-1:-1:-1::0;;;;;;11942:110:0;;::::1;;::::0;;12063:15:::1;::::0;::::1;:31;12102:21;12133:4;12139:24;12133:4:::0;-1:-1:-1;;;;;6047:18:0;6020:7;6047:18;;;:9;:18;;;;;;;5954:119;12139:24:::1;12164:1;12166::::0;12168:7:::1;2543::::0;2570:6;-1:-1:-1;;;;;2570:6:0;;2505:79;12168:7:::1;12063:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12063:129:0;;;-1:-1:-1;;;;;6979:15:1;;;12063:129:0::1;::::0;::::1;6961:34:1::0;7011:18;;;7004:34;;;;7054:18;;;7047:34;;;;7097:18;;;7090:34;7161:15;;;7140:19;;;7133:44;12176:15:0::1;7193:19:1::0;;;7186:35;6895:19;;12063:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12210:13:0::1;::::0;12241:15:::1;::::0;12203:71:::1;::::0;-1:-1:-1;;;12203:71:0;;-1:-1:-1;;;;;12241:15:0;;::::1;12203:71;::::0;::::1;5316:51:1::0;-1:-1:-1;;5383:18:1;;;5376:34;12210:13:0;::::1;::::0;-1:-1:-1;12203:29:0::1;::::0;5289:18:1;;12203:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;12285:11:0::1;:18:::0;;-1:-1:-1;;;;12314:18:0;-1:-1:-1;;;12314:18:0;;;12356:12:::1;12343:10;:25:::0;11671:705::o;6407:226::-;6484:10;;;;;-1:-1:-1;;;;;6484:10:0;227;-1:-1:-1;;;;;6470:24:0;;6462:33;;;;;;6523:12;;6514:7;:21;;:47;;;;;6548:13;;6539:7;:22;;6514:47;6506:56;;;;;;6573:12;:20;;;6604:13;:21;6407:226::o;7131:335::-;-1:-1:-1;;;;;7224:19:0;;7216:68;;;;-1:-1:-1;;;7216:68:0;;8024:2:1;7216:68:0;;;8006:21:1;8063:2;8043:18;;;8036:30;8102:34;8082:18;;;8075:62;-1:-1:-1;;;8153:18:1;;;8146:34;8197:19;;7216:68:0;7822:400:1;7216:68:0;-1:-1:-1;;;;;7303:21:0;;7295:68;;;;-1:-1:-1;;;7295:68:0;;8429:2:1;7295:68:0;;;8411:21:1;8468:2;8448:18;;;8441:30;8507:34;8487:18;;;8480:62;-1:-1:-1;;;8558:18:1;;;8551:32;8600:19;;7295:68:0;8227:398:1;7295:68:0;-1:-1:-1;;;;;7374:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7426:32;;1361:25:1;;;7426:32:0;;1334:18:1;7426:32:0;;;;;;;7131:335;;;:::o;7474:2692::-;-1:-1:-1;;;;;7562:18:0;;7554:68;;;;-1:-1:-1;;;7554:68:0;;8832:2:1;7554:68:0;;;8814:21:1;8871:2;8851:18;;;8844:30;8910:34;8890:18;;;8883:62;-1:-1:-1;;;8961:18:1;;;8954:35;9006:19;;7554:68:0;8630:401:1;7554:68:0;-1:-1:-1;;;;;7641:16:0;;7633:64;;;;-1:-1:-1;;;7633:64:0;;9238:2:1;7633:64:0;;;9220:21:1;9277:2;9257:18;;;9250:30;9316:34;9296:18;;;9289:62;-1:-1:-1;;;9367:18:1;;;9360:33;9410:19;;7633:64:0;9036:399:1;7633:64:0;7725:1;7716:6;:10;7708:64;;;;-1:-1:-1;;;7708:64:0;;9642:2:1;7708:64:0;;;9624:21:1;9681:2;9661:18;;;9654:30;9720:34;9700:18;;;9693:62;-1:-1:-1;;;9771:18:1;;;9764:39;9820:19;;7708:64:0;9440:405:1;7708:64:0;7783:17;2570:6;;-1:-1:-1;;;;;7817:15:0;;;2570:6;;7817:15;;;;:32;;-1:-1:-1;2543:7:0;2570:6;-1:-1:-1;;;;;7836:13:0;;;2570:6;;7836:13;;7817:32;7813:1997;;;7878:13;;-1:-1:-1;;;;;7870:21:0;;;7878:13;;7870:21;;:44;;-1:-1:-1;7901:13:0;;-1:-1:-1;;;;;7895:19:0;;;7901:13;;7895:19;7870:44;7866:169;;;7943:76;8015:3;7943:67;7965:15;;7955:9;;:25;7954:55;;7995:14;;7954:55;;;7982:12;;7954:55;7943:6;;:10;:67::i;:::-;:71;;:76::i;:::-;7931:88;;7866:169;8053:20;;;;8049:422;;;8114:15;;-1:-1:-1;;;;;8100:30:0;;;8114:15;;8100:30;;;;:62;;-1:-1:-1;8148:13:0;;-1:-1:-1;;;;;8134:28:0;;;8148:13;;8134:28;;8100:62;8096:358;;;8226:9;8197:39;;;;:28;:39;;;;;;8239:12;-1:-1:-1;8189:164:0;;;;-1:-1:-1;;;8189:164:0;;10052:2:1;8189:164:0;;;10034:21:1;10091:2;10071:18;;;10064:30;10130:34;10110:18;;;10103:62;10201:34;10181:18;;;10174:62;-1:-1:-1;;;10252:19:1;;;10245:40;10302:19;;8189:164:0;9850:477:1;8189:164:0;8407:9;8378:39;;;;:28;:39;;;;;8420:12;8378:54;;8096:358;8499:13;;-1:-1:-1;;;;;8491:21:0;;;8499:13;;8491:21;:55;;;;-1:-1:-1;8530:15:0;;-1:-1:-1;;;;;8516:30:0;;;8530:15;;8516:30;;8491:55;:83;;;;-1:-1:-1;;;;;;8552:22:0;;;;;;:18;:22;;;;;;;;8550:24;8491:83;8487:434;;;8614:12;;8604:6;:22;;8596:60;;;;-1:-1:-1;;;8596:60:0;;10534:2:1;8596:60:0;;;10516:21:1;10573:2;10553:18;;;10546:30;10612:27;10592:18;;;10585:55;10657:18;;8596:60:0;10332:349:1;8596:60:0;8709:14;;8699:6;8683:13;8693:2;-1:-1:-1;;;;;6047:18:0;6020:7;6047:18;;;:9;:18;;;;;;;5954:119;8683:13;:22;;;;:::i;:::-;:40;;8675:79;;;;-1:-1:-1;;;8675:79:0;;11018:2:1;8675:79:0;;;11000:21:1;11057:2;11037:18;;;11030:30;11096:28;11076:18;;;11069:56;11142:18;;8675:79:0;10816:350:1;8675:79:0;8789:18;;8779:9;;:28;8775:101;;;10411:20;;10459:8;8832:24;;;;;;8894:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8487:434;8947:13;;-1:-1:-1;;;;;8941:19:0;;;8947:13;;8941:19;;;;:47;;-1:-1:-1;;;;;;8966:22:0;;;;;;:18;:22;;;;;;;;8964:24;8941:47;8937:167;;;9043:14;;9033:6;9017:13;9027:2;-1:-1:-1;;;;;6047:18:0;6020:7;6047:18;;;:9;:18;;;;;;;5954:119;9017:13;:22;;;;:::i;:::-;:40;;9009:79;;;;-1:-1:-1;;;9009:79:0;;11018:2:1;9009:79:0;;;11000:21:1;11057:2;11037:18;;;11030:30;11096:28;11076:18;;;11069:56;11142:18;;9009:79:0;10816:350:1;9009:79:0;9129:13;;-1:-1:-1;;;;;9123:19:0;;;9129:13;;9123:19;:43;;;;-1:-1:-1;;;;;;9146:20:0;;9161:4;9146:20;;9123:43;9120:174;;;9199:79;9274:3;9199:70;9221:16;;9211:9;;:26;9210:58;;9253:15;;9210:58;;;9239:13;;9199:6;;:10;:70::i;:79::-;9187:91;;9120:174;9359:4;9310:28;6047:18;;;:9;:18;;;;;;9385:6;;-1:-1:-1;;;9385:6:0;;;;9384:7;:30;;;;-1:-1:-1;9401:13:0;;-1:-1:-1;;;;;9395:19:0;;;9401:13;;9395:19;9384:30;:45;;;;-1:-1:-1;9418:11:0;;-1:-1:-1;;;9418:11:0;;;;9384:45;:87;;;;;9454:17;;9433:20;:38;9384:87;:119;;;;;9485:18;;9475:9;;:28;9384:119;9380:419;;;9524:67;9541:49;9545:6;9552:37;9556:20;9577:11;;9552:3;:37::i;:::-;9541:3;:49::i;:::-;9524:16;:67::i;:::-;9639:21;9682:22;;9679:105;;9729:35;9742:21;9729:12;:35::i;:::-;9505:294;9380:419;7851:1959;7813:1997;9825:11;;9822:161;;9893:4;9875:24;;;;:9;:24;;;;;;:39;;9904:9;9875:28;:39::i;:::-;9868:4;9850:24;;;;:9;:24;;;;;;;:64;;;;9932:39;;-1:-1:-1;;;;;9932:39:0;;;;;;;9961:9;1361:25:1;;1349:2;1334:18;;1215:177;9932:39:0;;;;;;;;9822:161;-1:-1:-1;;;;;10009:15:0;;;;;;:9;:15;;;;;;:27;;10029:6;10009:19;:27::i;:::-;-1:-1:-1;;;;;9993:15:0;;;;;;:9;:15;;;;;:43;10061:40;10079:21;:6;10090:9;10079:10;:21::i;:::-;-1:-1:-1;;;;;10061:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;10047:13:0;;;;;;;:9;:13;;;;;:54;;;;10117:41;;;10136:21;:6;10147:9;10136:10;:21::i;:::-;10117:41;;1361:25:1;;;1349:2;1334:18;10117:41:0;;;;;;;7543:2623;7474:2692;;;:::o;1399:190::-;1485:7;1521:12;1513:6;;;;1505:29;;;;-1:-1:-1;;;1505:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1545:9:0;1557:5;1561:1;1557;:5;:::i;:::-;1545:17;1399:190;-1:-1:-1;;;;;1399:190:0:o;10483:555::-;5183:6;:13;;-1:-1:-1;;;;5183:13:0;-1:-1:-1;;;5183:13:0;;;10561:27;;10580:7:::1;10561:27;10602:11;::::0;-1:-1:-1;;;10602:11:0;::::1;;;10598:25:::0;10615:7:::1;10598:25;10657:16;::::0;;10671:1:::1;10657:16:::0;;;;;::::1;::::0;;10633:21:::1;::::0;10657:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10657:16:0::1;10633:40;;10702:4;10684;10689:1;10684:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10684:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10728:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10728:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10684:7;;10728:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10718:4;10723:1;10718:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10718:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10793:15:::1;::::0;10761:62:::1;::::0;10778:4:::1;::::0;10793:15:::1;10811:11:::0;10761:8:::1;:62::i;:::-;10834:15;::::0;:196:::1;::::0;-1:-1:-1;;;10834:196:0;;-1:-1:-1;;;;;10834:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10915:11;;10834:15:::1;::::0;10957:4;;10984::::1;::::0;11004:15:::1;::::0;10834:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10550:488;5207:1;-1:-1:-1::0;5219:6:0;:14;;-1:-1:-1;;;;5219:14:0;;;10483:555::o;11259:92::-;11316:10;;:27;;:10;;;;-1:-1:-1;;;;;11316:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;1597:246;1655:7;1679:1;1684;1679:6;1675:47;;-1:-1:-1;1709:1:0;1702:8;;1675:47;1732:9;1744:5;1748:1;1744;:5;:::i;:::-;1732:17;-1:-1:-1;1777:1:0;1768:5;1772:1;1732:17;1768:5;:::i;:::-;:10;1760:56;;;;-1:-1:-1;;;1760:56:0;;13117:2:1;1760:56:0;;;13099:21:1;13156:2;13136:18;;;13129:30;13195:34;13175:18;;;13168:62;-1:-1:-1;;;13246:18:1;;;13239:31;13287:19;;1760:56:0;12915:397:1;1760:56:0;1834:1;1597:246;-1:-1:-1;;;1597:246:0:o;1851:132::-;1909:7;1936:39;1940:1;1943;1936:39;;;;;;;;;;;;;;;;;:3;:39::i;10174:98::-;10231:7;10258:1;10256;:3;10255:9;;10263:1;10255:9;;;-1:-1:-1;10261:1:0;10174:98;-1:-1:-1;10174:98:0:o;1068:179::-;1126:7;;1158:5;1162:1;1158;:5;:::i;:::-;1146:17;;1187:1;1182;:6;;1174:46;;;;-1:-1:-1;;;1174:46:0;;13519:2:1;1174:46:0;;;13501:21:1;13558:2;13538:18;;;13531:30;13597:29;13577:18;;;13570:57;13644:18;;1174:46:0;13317:351:1;1255:136:0;1313:7;1340:43;1344:1;1347;1340:43;;;;;;;;;;;;;;;;;:3;:43::i;1991:189::-;2077:7;2112:12;2105:5;2097:28;;;;-1:-1:-1;;;2097:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2136:9:0;2148:5;2152:1;2148;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:180::-;2959:6;3012:2;3000:9;2991:7;2987:23;2983:32;2980:52;;;3028:1;3025;3018:12;2980:52;-1:-1:-1;3051:23:1;;2900:180;-1:-1:-1;2900:180:1:o;3085:127::-;3146:10;3141:3;3137:20;3134:1;3127:31;3177:4;3174:1;3167:15;3201:4;3198:1;3191:15;3217:422;3306:1;3349:5;3306:1;3363:270;3384:7;3374:8;3371:21;3363:270;;;3443:4;3439:1;3435:6;3431:17;3425:4;3422:27;3419:53;;;3452:18;;:::i;:::-;3502:7;3492:8;3488:22;3485:55;;;3522:16;;;;3485:55;3601:22;;;;3561:15;;;;3363:270;;;3367:3;3217:422;;;;;:::o;3644:806::-;3693:5;3723:8;3713:80;;-1:-1:-1;3764:1:1;3778:5;;3713:80;3812:4;3802:76;;-1:-1:-1;3849:1:1;3863:5;;3802:76;3894:4;3912:1;3907:59;;;;3980:1;3975:130;;;;3887:218;;3907:59;3937:1;3928:10;;3951:5;;;3975:130;4012:3;4002:8;3999:17;3996:43;;;4019:18;;:::i;:::-;-1:-1:-1;;4075:1:1;4061:16;;4090:5;;3887:218;;4189:2;4179:8;4176:16;4170:3;4164:4;4161:13;4157:36;4151:2;4141:8;4138:16;4133:2;4127:4;4124:12;4120:35;4117:77;4114:159;;;-1:-1:-1;4226:19:1;;;4258:5;;4114:159;4305:34;4330:8;4324:4;4305:34;:::i;:::-;4375:6;4371:1;4367:6;4363:19;4354:7;4351:32;4348:58;;;4386:18;;:::i;:::-;4424:20;;3644:806;-1:-1:-1;;;3644:806:1:o;4455:140::-;4513:5;4542:47;4583:4;4573:8;4569:19;4563:4;4542:47;:::i;4600:168::-;4673:9;;;4704;;4721:15;;;4715:22;;4701:37;4691:71;;4742:18;;:::i;4773:356::-;4975:2;4957:21;;;4994:18;;;4987:30;5053:34;5048:2;5033:18;;5026:62;5120:2;5105:18;;4773:356::o;5421:277::-;5488:6;5541:2;5529:9;5520:7;5516:23;5512:32;5509:52;;;5557:1;5554;5547:12;5509:52;5589:9;5583:16;5642:5;5635:13;5628:21;5621:5;5618:32;5608:60;;5664:1;5661;5654:12;6055:251;6125:6;6178:2;6166:9;6157:7;6153:23;6149:32;6146:52;;;6194:1;6191;6184:12;6146:52;6226:9;6220:16;6245:31;6270:5;6245:31;:::i;7232:306::-;7320:6;7328;7336;7389:2;7377:9;7368:7;7364:23;7360:32;7357:52;;;7405:1;7402;7395:12;7357:52;7434:9;7428:16;7418:26;;7484:2;7473:9;7469:18;7463:25;7453:35;;7528:2;7517:9;7513:18;7507:25;7497:35;;7232:306;;;;;:::o;10686:125::-;10751:9;;;10772:10;;;10769:36;;;10785:18;;:::i;11171:135::-;11210:3;11231:17;;;11228:43;;11251:18;;:::i;:::-;-1:-1:-1;11298:1:1;11287:13;;11171:135::o;11311:128::-;11378:9;;;11399:11;;;11396:37;;;11413:18;;:::i;11576:127::-;11637:10;11632:3;11628:20;11625:1;11618:31;11668:4;11665:1;11658:15;11692:4;11689:1;11682:15;11708:980;11970:4;12018:3;12007:9;12003:19;12049:6;12038:9;12031:25;12075:2;12113:6;12108:2;12097:9;12093:18;12086:34;12156:3;12151:2;12140:9;12136:18;12129:31;12180:6;12215;12209:13;12246:6;12238;12231:22;12284:3;12273:9;12269:19;12262:26;;12323:2;12315:6;12311:15;12297:29;;12344:1;12354:195;12368:6;12365:1;12362:13;12354:195;;;12433:13;;-1:-1:-1;;;;;12429:39:1;12417:52;;12524:15;;;;12489:12;;;;12465:1;12383:9;12354:195;;;-1:-1:-1;;;;;;;12605:32:1;;;;12600:2;12585:18;;12578:60;-1:-1:-1;;;12669:3:1;12654:19;12647:35;12566:3;11708:980;-1:-1:-1;;;11708:980:1:o;12693:217::-;12733:1;12759;12749:132;;12803:10;12798:3;12794:20;12791:1;12784:31;12838:4;12835:1;12828:15;12866:4;12863:1;12856:15;12749:132;-1:-1:-1;12895:9:1;;12693:217::o

Swarm Source

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