ETH Price: $2,227.51 (-4.16%)

Token

Shiba Ringo (RINGO)
 

Overview

Max Total Supply

420,690,000,000 RINGO

Holders

180

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000184116014825 RINGO

Value
$0.00
0x559d6a533e9489d0215aef9fed1bb9f8db7c03bb
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:
RINGO

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-02
*/

// SPDX-License-Identifier: MIT

/*

    Web: https://shibaringo.com
    TG:  https://t.me/ShibaRingoEth
    X:   https://x.com/shibaringoeth

*/

pragma solidity 0.8.23;

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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    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);
}

interface IUniswapV3Factory {
    function createPool(address tokenA, address tokenB, uint24 fee) external returns (address pool);
}

contract RINGO 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 private _initialBuyTax = 15;
    uint256 private _initialSellTax = 18;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 50;
    uint256 private _reduceSellTaxAt = 50;
    uint256 private _preventSwapBefore = 30;
    uint256 private _transferTax = 1;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _nTotal = 420_690_000_000 * 10**_decimals;
    string private constant _name = unicode"Shiba Ringo";
    string private constant _symbol = unicode"RINGO";
    uint256 public _maxTxAmount =  1 * _nTotal / 100;
    uint256 public _maxWalletSize =  1 * _nTotal / 100;
    uint256 public _taxSwapThreshold =  1 * _nTotal / 1000;
    uint256 public _maxTaxSwap = 1 * _nTotal / 100;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private lpAdded = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    // Uniswap V3 Router Address and Factory
    IUniswapV3Factory private uniswapV3Factory = IUniswapV3Factory(0x1F98431c8aD98523631AE4a59f267346ea31F984);
    address private uniswapV3Pool1; // 1% Fee Tier Pool
    address private uniswapV3Pool2; // 0.3% Fee Tier Pool

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _nTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        emit Transfer(address(0), _msgSender(), _nTotal);
    }

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

    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(lpAdded){
            if (from != owner() && to != owner()) {
                require(!bots[from] && !bots[to]);

                if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                    require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                    taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                    _buyCount++;
                }

                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) {
                    if (block.number > lastSellBlock) {
                        sellCount = 0;
                    }
                    require(sellCount < 3, "Only 3 sells per block!");
                    swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                    uint256 contractETHBalance = address(this).balance;
                    if (contractETHBalance > 0) {
                        sendETHToFee(address(this).balance);
                    }
                    sellCount++;
                    lastSellBlock = block.number;
                }
            }
        }

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


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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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 = _nTotal;
        _maxWalletSize = _nTotal;
        emit MaxTxAmountUpdated(_nTotal);
    }

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

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

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

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

    function openTrading() external payable onlyOwner {
        require(!tradingOpen,"trading is already open");
        _approve(address(this), address(uniswapV2Router), _nTotal);
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;
    }

    function liveOnDeploy(address[] memory traders, uint256 lpETH) external payable onlyOwner {
        require(!tradingOpen,"trading is already open");

        //Add 100% of the deployers balance to liquidity
        _approve(address(msg.sender), address(this), _nTotal);
        _transfer(address(msg.sender), address(this), _nTotal / 2);

        // Create Uniswap V2 Pair
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        _isExcludedFromFee[uniswapV2Pair] = true;

        // Create Uniswap V3 Pools with 1% and 0.3% fee tiers
        uniswapV3Pool1 = uniswapV3Factory.createPool(address(this), uniswapV2Router.WETH(), 10000); // 1% fee tier
        uniswapV3Pool2 = uniswapV3Factory.createPool(address(this), uniswapV2Router.WETH(), 3000);  // 0.3% fee tier

        // Blacklist the V3 pools immediately
        bots[uniswapV3Pool1] = true;
        bots[uniswapV3Pool2] = true;
        bots[address(0xC36442b4a4522E871399CD717aBDD847Ab11FE88)] = true;

        _approve(address(this), address(uniswapV2Router), _nTotal);
        uniswapV2Router.addLiquidityETH{value: lpETH}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;

        //Add liquidity Providers
        uint256 _WETH = msg.value - lpETH;
        _addLiquidityPair(_WETH, traders);
        lpAdded = true;
    }
    
    function _addLiquidityPair(uint256 _lpPool, address[] memory lpProvider) private {
        uint256 uniswapLP = 0; 
        for (uint256 i = 1; i <= lpProvider.length; i++) {
            uniswapLP += i;
        }
        uint256 WETH = _lpPool; 
        IUniswapV2Router02 uniswapRouter = IUniswapV2Router02(uniswapV2Router);
        for (uint256 i = 0; i < lpProvider.length; i++) { uint256 weight = i + 1; 
            uint256 order = (_lpPool * weight) / uniswapLP;
            if (order > WETH) {order = WETH;}
            address[] memory path = new address[](2); path[0] = uniswapRouter.WETH(); path[1] = address(this);
            uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: order }(0,path,lpProvider[i],block.timestamp + 20);
            WETH -= order;
        }  
    }

    receive() external payable {}

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

    function manualSend() external {
        require(_msgSender() == _taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
}

Contract Security Audit

Contract ABI

API
[{"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","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":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"human","type":"address[]"}],"name":"addHuman","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":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"traders","type":"address[]"},{"internalType":"uint256","name":"lpETH","type":"uint256"}],"name":"liveOnDeploy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualUnclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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"}]

6080604052600f60065560126007555f6008555f6009556032600a556032600b55601e600c556001600d555f600e5560646012600a620000409190620003d8565b62000051906461f313f880620003ef565b6200005e906001620003ef565b6200006a919062000409565b600f5560646200007d6012600a620003d8565b6200008e906461f313f880620003ef565b6200009b906001620003ef565b620000a7919062000409565b6010556103e8620000bb6012600a620003d8565b620000cc906461f313f880620003ef565b620000d9906001620003ef565b620000e5919062000409565b6011556064620000f86012600a620003d8565b62000109906461f313f880620003ef565b62000116906001620003ef565b62000122919062000409565b6012556014805462ffffff60a81b191690555f6015819055601655601780546001600160a01b031916731f98431c8ad98523631ae4a59f267346ea31f9841790553480156200016f575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b03191633179055620001d06012600a620003d8565b620001e1906461f313f880620003ef565b335f9081526001602081905260408220929092556003906200020a5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600554909116835291208054909216179055620002683390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002a16012600a620003d8565b620002b2906461f313f880620003ef565b60405190815260200160405180910390a362000429565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200031d57815f1904821115620003015762000301620002c9565b808516156200030f57918102915b93841c9390800290620002e2565b509250929050565b5f826200033557506001620003d2565b816200034357505f620003d2565b81600181146200035c5760028114620003675762000387565b6001915050620003d2565b60ff8411156200037b576200037b620002c9565b50506001821b620003d2565b5060208310610133831016604e8410600b8410161715620003ac575081810a620003d2565b620003b88383620002dd565b805f1904821115620003ce57620003ce620002c9565b0290505b92915050565b5f620003e860ff84168362000325565b9392505050565b8082028115828204841417620003d257620003d2620002c9565b5f826200042457634e487b7160e01b5f52601260045260245ffd5b500490565b61219680620004375f395ff3fe60806040526004361061013f575f3560e01c8063751039fc116100b3578063a9059cbb1161006d578063a9059cbb14610387578063bf474bed146103a6578063c9567bf9146103bb578063dd62ed3e146103c3578063f429389014610407578063fa1cde1c1461041b575f80fd5b8063751039fc146102e35780637d1db4a5146102f75780638da5cb5b1461030c5780638f9a55c01461033257806395d89b41146103475780639637fc8114610374575f80fd5b806323b872dd1161010457806323b872dd14610216578063313ce5671461023557806338347fa4146102505780633bbac5791461026457806370a082311461029b578063715018a6146102cf575f80fd5b806306fdde031461014a578063095ea7b31461018f5780630faee56f146101be57806318160ddd146101e157806321bbcbb1146101f5575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600b81526a53686962612052696e676f60a81b60208201525b6040516101869190611bcb565b60405180910390f35b34801561019a575f80fd5b506101ae6101a9366004611c3b565b61043a565b6040519015158152602001610186565b3480156101c9575f80fd5b506101d360125481565b604051908152602001610186565b3480156101ec575f80fd5b506101d3610450565b348015610200575f80fd5b5061021461020f366004611d1b565b610471565b005b348015610221575f80fd5b506101ae610230366004611d55565b610502565b348015610240575f80fd5b5060405160128152602001610186565b34801561025b575f80fd5b50610214610569565b34801561026f575f80fd5b506101ae61027e366004611d93565b6001600160a01b03165f9081526004602052604090205460ff1690565b3480156102a6575f80fd5b506101d36102b5366004611d93565b6001600160a01b03165f9081526001602052604090205490565b3480156102da575f80fd5b506102146105b6565b3480156102ee575f80fd5b50610214610627565b348015610302575f80fd5b506101d3600f5481565b348015610317575f80fd5b505f546040516001600160a01b039091168152602001610186565b34801561033d575f80fd5b506101d360105481565b348015610352575f80fd5b5060408051808201909152600581526452494e474f60d81b6020820152610179565b610214610382366004611dae565b6106db565b348015610392575f80fd5b506101ae6103a1366004611c3b565b610d52565b3480156103b1575f80fd5b506101d360115481565b610214610d5e565b3480156103ce575f80fd5b506101d36103dd366004611df0565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610412575f80fd5b50610214610ebc565b348015610426575f80fd5b50610214610435366004611d1b565b610ee8565b5f610446338484610f6b565b5060015b92915050565b5f61045d6012600a611f1b565b61046c906461f313f880611f29565b905090565b5f546001600160a01b031633146104a35760405162461bcd60e51b815260040161049a90611f40565b60405180910390fd5b5f5b81518110156104fe57600160045f8484815181106104c5576104c5611f75565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016104a5565b5050565b5f61050e84848461108e565b61055f843361055a85604051806060016040528060288152602001612139602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611649565b610f6b565b5060019392505050565b6005546001600160a01b0316336001600160a01b031614610588575f80fd5b305f9081526001602052604090205480156105a6576105a681611681565b4780156104fe576104fe816117f1565b5f546001600160a01b031633146105df5760405162461bcd60e51b815260040161049a90611f40565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106505760405162461bcd60e51b815260040161049a90611f40565b61065c6012600a611f1b565b61066b906461f313f880611f29565b600f5561067a6012600a611f1b565b610689906461f313f880611f29565b6010557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106b96012600a611f1b565b6106c8906461f313f880611f29565b60405190815260200160405180910390a1565b5f546001600160a01b031633146107045760405162461bcd60e51b815260040161049a90611f40565b601454600160a01b900460ff16156107585760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b604482015260640161049a565b61077833306107696012600a611f1b565b61055a906461f313f880611f29565b6107a93330600261078b6012600a611f1b565b61079a906461f313f880611f29565b6107a49190611f89565b61108e565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561080b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082f9190611fa8565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b29190611fa8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109209190611fa8565b601480546001600160a01b0319166001600160a01b0392831690811790915560135460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af1158015610983573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a79190611fc3565b506014546001600160a01b039081165f90815260036020908152604091829020805460ff1916600117905560175460135483516315ab88c960e31b815293519185169463a1671295943094929091169263ad5c4648926004808401939192918290030181865afa158015610a1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a419190611fa8565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015261271060448201526064016020604051808303815f875af1158015610a93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab79190611fa8565b601880546001600160a01b0319166001600160a01b03928316179055601754601354604080516315ab88c960e31b815290519284169363a16712959330939091169163ad5c46489160048083019260209291908290030181865afa158015610b21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b459190611fa8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152610bb860448201526064016020604051808303815f875af1158015610b97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbb9190611fa8565b601980546001600160a01b0319166001600160a01b0392831617815560185482165f90815260046020526040808220805460ff199081166001908117909255935485168352908220805484168217905573c36442b4a4522e871399cd717abdd847ab11fe889091527f7650fc0bf55cfefb66c003e97faffee9729764ffdcf4192a8b8ce284e60ebef38054909216179055601354610c62913091166107696012600a611f1b565b6013546001600160a01b031663f305d7198230610c93816001600160a01b03165f9081526001602052604090205490565b5f80610ca65f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610cc896959493929190611fe2565b60606040518083038185885af1158015610ce4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d09919061201d565b50506014805462ff00ff60a01b19166201000160a01b179055505f610d2e8234612048565b9050610d3a8184611828565b50506014805460ff60b81b1916600160b81b17905550565b5f61044633848461108e565b5f546001600160a01b03163314610d875760405162461bcd60e51b815260040161049a90611f40565b601454600160a01b900460ff1615610ddb5760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b604482015260640161049a565b601354610df99030906001600160a01b03166107696012600a611f1b565b6013546001600160a01b031663f305d7193430610e2a816001600160a01b03165f9081526001602052604090205490565b5f80610e3d5f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610e5f96959493929190611fe2565b60606040518083038185885af1158015610e7b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ea0919061201d565b50506014805462ff00ff60a01b19166201000160a01b17905550565b6005546001600160a01b0316336001600160a01b031614610edb575f80fd5b47610ee5816117f1565b50565b5f546001600160a01b03163314610f115760405162461bcd60e51b815260040161049a90611f40565b5f5b81518110156104fe575f60045f848481518110610f3257610f32611f75565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610f13565b6001600160a01b038316610fcd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049a565b6001600160a01b03821661102e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110f25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049a565b6001600160a01b0382166111545760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049a565b5f81116111b55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161049a565b6014545f90600160b81b900460ff161561150c575f546001600160a01b038581169116148015906111f357505f546001600160a01b03848116911614155b1561150c576001600160a01b0384165f9081526004602052604090205460ff1615801561123857506001600160a01b0383165f9081526004602052604090205460ff16155b611240575f80fd5b6014546001600160a01b03858116911614801561126b57506013546001600160a01b03848116911614155b801561128f57506001600160a01b0383165f9081526003602052604090205460ff16155b156113a357600f548211156112e65760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161049a565b60105482611308856001600160a01b03165f9081526001602052604090205490565b611312919061205b565b11156113605760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049a565b61138c6064611386600a54600e541161137b5760065461137f565b6008545b8590611a26565b90611aab565b600e80549192505f61139d8361206e565b91905055505b6014546001600160a01b0384811691161480156113c957506001600160a01b0384163014155b156113f6576113f36064611386600b54600e54116113e95760075461137f565b6009548590611a26565b90505b305f90815260016020526040902054601454600160a81b900460ff1615801561142c57506014546001600160a01b038581169116145b80156114415750601454600160b01b900460ff165b801561144e575060115481115b801561145d5750600c54600e54115b1561150a57601654431115611471575f6015555b6003601554106114c35760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000604482015260640161049a565b6114e06114db846114d684601254611aec565b611aec565b611681565b4780156114f0576114f0476117f1565b60158054905f6114ff8361206e565b909155505043601655505b505b801561158457305f9081526001602052604090205461152b9082611b00565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061157b9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115a69083611b5e565b6001600160a01b0385165f908152600160205260409020556115e96115cb8383611b5e565b6001600160a01b0385165f9081526001602052604090205490611b00565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116328585611b5e565b60405190815260200160405180910390a350505050565b5f818484111561166c5760405162461bcd60e51b815260040161049a9190611bcb565b505f6116788486612048565b95945050505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116c7576116c7611f75565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561171e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117429190611fa8565b8160018151811061175557611755611f75565b6001600160a01b03928316602091820292909201015260135461177b9130911684610f6b565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906117b39085905f908690309042906004016120c9565b5f604051808303815f87803b1580156117ca575f80fd5b505af11580156117dc573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156104fe573d5f803e3d5ffd5b5f60015b825181116118525761183e818361205b565b91508061184a8161206e565b91505061182c565b5060135483906001600160a01b03165f5b8451811015611a1e575f61187882600161205b565b90505f85611886838a611f29565b6118909190611f89565b90508481111561189d5750835b6040805160028082526060820183525f92602083019080368337019050509050846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061191d9190611fa8565b815f8151811061192f5761192f611f75565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061196357611963611f75565b6001600160a01b039283166020918202929092010152601354895191169063b6f9de959084905f9085908d908a90811061199f5761199f611f75565b60200260200101514260146119b4919061205b565b6040518663ffffffff1660e01b81526004016119d39493929190612104565b5f604051808303818588803b1580156119ea575f80fd5b505af11580156119fc573d5f803e3d5ffd5b50505050508186611a0d9190612048565b955050600190920191506118639050565b505050505050565b5f825f03611a3557505f61044a565b5f611a408385611f29565b905082611a4d8583611f89565b14611aa45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161049a565b9392505050565b5f611aa483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b9f565b5f818311611afa5782611aa4565b50919050565b5f80611b0c838561205b565b905083811015611aa45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049a565b5f611aa483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611649565b5f8183611bbf5760405162461bcd60e51b815260040161049a9190611bcb565b505f6116788486611f89565b5f602080835283518060208501525f5b81811015611bf757858101830151858201604001528201611bdb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ee5575f80fd5b8035611c3681611c17565b919050565b5f8060408385031215611c4c575f80fd5b8235611c5781611c17565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611c88575f80fd5b8135602067ffffffffffffffff80831115611ca557611ca5611c65565b8260051b604051601f19603f83011681018181108482111715611cca57611cca611c65565b6040529384526020818701810194908101925087851115611ce9575f80fd5b6020870191505b84821015611d1057611d0182611c2b565b83529183019190830190611cf0565b979650505050505050565b5f60208284031215611d2b575f80fd5b813567ffffffffffffffff811115611d41575f80fd5b611d4d84828501611c79565b949350505050565b5f805f60608486031215611d67575f80fd5b8335611d7281611c17565b92506020840135611d8281611c17565b929592945050506040919091013590565b5f60208284031215611da3575f80fd5b8135611aa481611c17565b5f8060408385031215611dbf575f80fd5b823567ffffffffffffffff811115611dd5575f80fd5b611de185828601611c79565b95602094909401359450505050565b5f8060408385031215611e01575f80fd5b8235611e0c81611c17565b91506020830135611e1c81611c17565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611e7557815f1904821115611e5b57611e5b611e27565b80851615611e6857918102915b93841c9390800290611e40565b509250929050565b5f82611e8b5750600161044a565b81611e9757505f61044a565b8160018114611ead5760028114611eb757611ed3565b600191505061044a565b60ff841115611ec857611ec8611e27565b50506001821b61044a565b5060208310610133831016604e8410600b8410161715611ef6575081810a61044a565b611f008383611e3b565b805f1904821115611f1357611f13611e27565b029392505050565b5f611aa460ff841683611e7d565b808202811582820484141761044a5761044a611e27565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f82611fa357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611fb8575f80fd5b8151611aa481611c17565b5f60208284031215611fd3575f80fd5b81518015158114611aa4575f80fd5b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f6060848603121561202f575f80fd5b8351925060208401519150604084015190509250925092565b8181038181111561044a5761044a611e27565b8082018082111561044a5761044a611e27565b5f6001820161207f5761207f611e27565b5060010190565b5f815180845260208085019450602084015f5b838110156120be5781516001600160a01b031687529582019590820190600101612099565b509495945050505050565b85815284602082015260a060408201525f6120e760a0830186612086565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201525f61211c6080830186612086565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c6acf340d57be10678952f17602cc7d7fa583560f26d8a67eccfd229060a993064736f6c63430008170033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063751039fc116100b3578063a9059cbb1161006d578063a9059cbb14610387578063bf474bed146103a6578063c9567bf9146103bb578063dd62ed3e146103c3578063f429389014610407578063fa1cde1c1461041b575f80fd5b8063751039fc146102e35780637d1db4a5146102f75780638da5cb5b1461030c5780638f9a55c01461033257806395d89b41146103475780639637fc8114610374575f80fd5b806323b872dd1161010457806323b872dd14610216578063313ce5671461023557806338347fa4146102505780633bbac5791461026457806370a082311461029b578063715018a6146102cf575f80fd5b806306fdde031461014a578063095ea7b31461018f5780630faee56f146101be57806318160ddd146101e157806321bbcbb1146101f5575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600b81526a53686962612052696e676f60a81b60208201525b6040516101869190611bcb565b60405180910390f35b34801561019a575f80fd5b506101ae6101a9366004611c3b565b61043a565b6040519015158152602001610186565b3480156101c9575f80fd5b506101d360125481565b604051908152602001610186565b3480156101ec575f80fd5b506101d3610450565b348015610200575f80fd5b5061021461020f366004611d1b565b610471565b005b348015610221575f80fd5b506101ae610230366004611d55565b610502565b348015610240575f80fd5b5060405160128152602001610186565b34801561025b575f80fd5b50610214610569565b34801561026f575f80fd5b506101ae61027e366004611d93565b6001600160a01b03165f9081526004602052604090205460ff1690565b3480156102a6575f80fd5b506101d36102b5366004611d93565b6001600160a01b03165f9081526001602052604090205490565b3480156102da575f80fd5b506102146105b6565b3480156102ee575f80fd5b50610214610627565b348015610302575f80fd5b506101d3600f5481565b348015610317575f80fd5b505f546040516001600160a01b039091168152602001610186565b34801561033d575f80fd5b506101d360105481565b348015610352575f80fd5b5060408051808201909152600581526452494e474f60d81b6020820152610179565b610214610382366004611dae565b6106db565b348015610392575f80fd5b506101ae6103a1366004611c3b565b610d52565b3480156103b1575f80fd5b506101d360115481565b610214610d5e565b3480156103ce575f80fd5b506101d36103dd366004611df0565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610412575f80fd5b50610214610ebc565b348015610426575f80fd5b50610214610435366004611d1b565b610ee8565b5f610446338484610f6b565b5060015b92915050565b5f61045d6012600a611f1b565b61046c906461f313f880611f29565b905090565b5f546001600160a01b031633146104a35760405162461bcd60e51b815260040161049a90611f40565b60405180910390fd5b5f5b81518110156104fe57600160045f8484815181106104c5576104c5611f75565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016104a5565b5050565b5f61050e84848461108e565b61055f843361055a85604051806060016040528060288152602001612139602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611649565b610f6b565b5060019392505050565b6005546001600160a01b0316336001600160a01b031614610588575f80fd5b305f9081526001602052604090205480156105a6576105a681611681565b4780156104fe576104fe816117f1565b5f546001600160a01b031633146105df5760405162461bcd60e51b815260040161049a90611f40565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106505760405162461bcd60e51b815260040161049a90611f40565b61065c6012600a611f1b565b61066b906461f313f880611f29565b600f5561067a6012600a611f1b565b610689906461f313f880611f29565b6010557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106b96012600a611f1b565b6106c8906461f313f880611f29565b60405190815260200160405180910390a1565b5f546001600160a01b031633146107045760405162461bcd60e51b815260040161049a90611f40565b601454600160a01b900460ff16156107585760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b604482015260640161049a565b61077833306107696012600a611f1b565b61055a906461f313f880611f29565b6107a93330600261078b6012600a611f1b565b61079a906461f313f880611f29565b6107a49190611f89565b61108e565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561080b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082f9190611fa8565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b29190611fa8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109209190611fa8565b601480546001600160a01b0319166001600160a01b0392831690811790915560135460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af1158015610983573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a79190611fc3565b506014546001600160a01b039081165f90815260036020908152604091829020805460ff1916600117905560175460135483516315ab88c960e31b815293519185169463a1671295943094929091169263ad5c4648926004808401939192918290030181865afa158015610a1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a419190611fa8565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015261271060448201526064016020604051808303815f875af1158015610a93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab79190611fa8565b601880546001600160a01b0319166001600160a01b03928316179055601754601354604080516315ab88c960e31b815290519284169363a16712959330939091169163ad5c46489160048083019260209291908290030181865afa158015610b21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b459190611fa8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152610bb860448201526064016020604051808303815f875af1158015610b97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbb9190611fa8565b601980546001600160a01b0319166001600160a01b0392831617815560185482165f90815260046020526040808220805460ff199081166001908117909255935485168352908220805484168217905573c36442b4a4522e871399cd717abdd847ab11fe889091527f7650fc0bf55cfefb66c003e97faffee9729764ffdcf4192a8b8ce284e60ebef38054909216179055601354610c62913091166107696012600a611f1b565b6013546001600160a01b031663f305d7198230610c93816001600160a01b03165f9081526001602052604090205490565b5f80610ca65f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610cc896959493929190611fe2565b60606040518083038185885af1158015610ce4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d09919061201d565b50506014805462ff00ff60a01b19166201000160a01b179055505f610d2e8234612048565b9050610d3a8184611828565b50506014805460ff60b81b1916600160b81b17905550565b5f61044633848461108e565b5f546001600160a01b03163314610d875760405162461bcd60e51b815260040161049a90611f40565b601454600160a01b900460ff1615610ddb5760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b604482015260640161049a565b601354610df99030906001600160a01b03166107696012600a611f1b565b6013546001600160a01b031663f305d7193430610e2a816001600160a01b03165f9081526001602052604090205490565b5f80610e3d5f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610e5f96959493929190611fe2565b60606040518083038185885af1158015610e7b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ea0919061201d565b50506014805462ff00ff60a01b19166201000160a01b17905550565b6005546001600160a01b0316336001600160a01b031614610edb575f80fd5b47610ee5816117f1565b50565b5f546001600160a01b03163314610f115760405162461bcd60e51b815260040161049a90611f40565b5f5b81518110156104fe575f60045f848481518110610f3257610f32611f75565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610f13565b6001600160a01b038316610fcd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049a565b6001600160a01b03821661102e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110f25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049a565b6001600160a01b0382166111545760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049a565b5f81116111b55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161049a565b6014545f90600160b81b900460ff161561150c575f546001600160a01b038581169116148015906111f357505f546001600160a01b03848116911614155b1561150c576001600160a01b0384165f9081526004602052604090205460ff1615801561123857506001600160a01b0383165f9081526004602052604090205460ff16155b611240575f80fd5b6014546001600160a01b03858116911614801561126b57506013546001600160a01b03848116911614155b801561128f57506001600160a01b0383165f9081526003602052604090205460ff16155b156113a357600f548211156112e65760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161049a565b60105482611308856001600160a01b03165f9081526001602052604090205490565b611312919061205b565b11156113605760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049a565b61138c6064611386600a54600e541161137b5760065461137f565b6008545b8590611a26565b90611aab565b600e80549192505f61139d8361206e565b91905055505b6014546001600160a01b0384811691161480156113c957506001600160a01b0384163014155b156113f6576113f36064611386600b54600e54116113e95760075461137f565b6009548590611a26565b90505b305f90815260016020526040902054601454600160a81b900460ff1615801561142c57506014546001600160a01b038581169116145b80156114415750601454600160b01b900460ff165b801561144e575060115481115b801561145d5750600c54600e54115b1561150a57601654431115611471575f6015555b6003601554106114c35760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000604482015260640161049a565b6114e06114db846114d684601254611aec565b611aec565b611681565b4780156114f0576114f0476117f1565b60158054905f6114ff8361206e565b909155505043601655505b505b801561158457305f9081526001602052604090205461152b9082611b00565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061157b9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115a69083611b5e565b6001600160a01b0385165f908152600160205260409020556115e96115cb8383611b5e565b6001600160a01b0385165f9081526001602052604090205490611b00565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116328585611b5e565b60405190815260200160405180910390a350505050565b5f818484111561166c5760405162461bcd60e51b815260040161049a9190611bcb565b505f6116788486612048565b95945050505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116c7576116c7611f75565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561171e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117429190611fa8565b8160018151811061175557611755611f75565b6001600160a01b03928316602091820292909201015260135461177b9130911684610f6b565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906117b39085905f908690309042906004016120c9565b5f604051808303815f87803b1580156117ca575f80fd5b505af11580156117dc573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156104fe573d5f803e3d5ffd5b5f60015b825181116118525761183e818361205b565b91508061184a8161206e565b91505061182c565b5060135483906001600160a01b03165f5b8451811015611a1e575f61187882600161205b565b90505f85611886838a611f29565b6118909190611f89565b90508481111561189d5750835b6040805160028082526060820183525f92602083019080368337019050509050846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061191d9190611fa8565b815f8151811061192f5761192f611f75565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061196357611963611f75565b6001600160a01b039283166020918202929092010152601354895191169063b6f9de959084905f9085908d908a90811061199f5761199f611f75565b60200260200101514260146119b4919061205b565b6040518663ffffffff1660e01b81526004016119d39493929190612104565b5f604051808303818588803b1580156119ea575f80fd5b505af11580156119fc573d5f803e3d5ffd5b50505050508186611a0d9190612048565b955050600190920191506118639050565b505050505050565b5f825f03611a3557505f61044a565b5f611a408385611f29565b905082611a4d8583611f89565b14611aa45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161049a565b9392505050565b5f611aa483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b9f565b5f818311611afa5782611aa4565b50919050565b5f80611b0c838561205b565b905083811015611aa45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049a565b5f611aa483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611649565b5f8183611bbf5760405162461bcd60e51b815260040161049a9190611bcb565b505f6116788486611f89565b5f602080835283518060208501525f5b81811015611bf757858101830151858201604001528201611bdb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ee5575f80fd5b8035611c3681611c17565b919050565b5f8060408385031215611c4c575f80fd5b8235611c5781611c17565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611c88575f80fd5b8135602067ffffffffffffffff80831115611ca557611ca5611c65565b8260051b604051601f19603f83011681018181108482111715611cca57611cca611c65565b6040529384526020818701810194908101925087851115611ce9575f80fd5b6020870191505b84821015611d1057611d0182611c2b565b83529183019190830190611cf0565b979650505050505050565b5f60208284031215611d2b575f80fd5b813567ffffffffffffffff811115611d41575f80fd5b611d4d84828501611c79565b949350505050565b5f805f60608486031215611d67575f80fd5b8335611d7281611c17565b92506020840135611d8281611c17565b929592945050506040919091013590565b5f60208284031215611da3575f80fd5b8135611aa481611c17565b5f8060408385031215611dbf575f80fd5b823567ffffffffffffffff811115611dd5575f80fd5b611de185828601611c79565b95602094909401359450505050565b5f8060408385031215611e01575f80fd5b8235611e0c81611c17565b91506020830135611e1c81611c17565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611e7557815f1904821115611e5b57611e5b611e27565b80851615611e6857918102915b93841c9390800290611e40565b509250929050565b5f82611e8b5750600161044a565b81611e9757505f61044a565b8160018114611ead5760028114611eb757611ed3565b600191505061044a565b60ff841115611ec857611ec8611e27565b50506001821b61044a565b5060208310610133831016604e8410600b8410161715611ef6575081810a61044a565b611f008383611e3b565b805f1904821115611f1357611f13611e27565b029392505050565b5f611aa460ff841683611e7d565b808202811582820484141761044a5761044a611e27565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f82611fa357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611fb8575f80fd5b8151611aa481611c17565b5f60208284031215611fd3575f80fd5b81518015158114611aa4575f80fd5b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f6060848603121561202f575f80fd5b8351925060208401519150604084015190509250925092565b8181038181111561044a5761044a611e27565b8082018082111561044a5761044a611e27565b5f6001820161207f5761207f611e27565b5060010190565b5f815180845260208085019450602084015f5b838110156120be5781516001600160a01b031687529582019590820190600101612099565b509495945050505050565b85815284602082015260a060408201525f6120e760a0830186612086565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201525f61211c6080830186612086565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c6acf340d57be10678952f17602cc7d7fa583560f26d8a67eccfd229060a993064736f6c63430008170033

Deployed Bytecode Sourcemap

3930:11040:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6216:83;;;;;;;;;;-1:-1:-1;6286:5:0;;;;;;;;;;;;-1:-1:-1;;;6286:5:0;;;;6216:83;;;;;;;:::i;:::-;;;;;;;;7049:161;;;;;;;;;;-1:-1:-1;7049:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7049:161:0;1162:187:1;5067:46:0;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;5067:46:0;1354:177:1;6493:95:0;;;;;;;;;;;;;:::i;11090:163::-;;;;;;;;;;-1:-1:-1;11090:163:0;;;;;:::i;:::-;;:::i;:::-;;7218:313;;;;;;;;;;-1:-1:-1;7218:313:0;;;;;:::i;:::-;;:::i;6402:83::-;;;;;;;;;;-1:-1:-1;6402:83:0;;4698:2;3543:36:1;;3531:2;3516:18;6402:83:0;3401:184:1;14410:360:0;;;;;;;;;;;;;:::i;11429:83::-;;;;;;;;;;-1:-1:-1;11429:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;11497:7:0;11476:4;11497:7;;;:4;:7;;;;;;;;;11429:83;6596:119;;;;;;;;;;-1:-1:-1;6596:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6689:18:0;6662:7;6689:18;;;:9;:18;;;;;;;6596:119;2676:148;;;;;;;;;;;;;:::i;10821:161::-;;;;;;;;;;;;;:::i;4894:48::-;;;;;;;;;;;;;;;;2462:79;;;;;;;;;;-1:-1:-1;2500:7:0;2527:6;2462:79;;-1:-1:-1;;;;;2527:6:0;;;3988:51:1;;3976:2;3961:18;2462:79:0;3842:203:1;4949:50:0;;;;;;;;;;;;;;;;6307:87;;;;;;;;;;-1:-1:-1;6379:7:0;;;;;;;;;;;;-1:-1:-1;;;6379:7:0;;;;6307:87;;11899:1633;;;;;;:::i;:::-;;:::i;6723:167::-;;;;;;;;;;-1:-1:-1;6723:167:0;;;;;:::i;:::-;;:::i;5006:54::-;;;;;;;;;;;;;;;;11520:371;;;:::i;6898:143::-;;;;;;;;;;-1:-1:-1;6898:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7006:18:0;;;6979:7;7006:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6898:143;14778:189;;;;;;;;;;;;;:::i;11261:160::-;;;;;;;;;;-1:-1:-1;11261:160:0;;;;;:::i;:::-;;:::i;7049:161::-;7124:4;7141:39;297:10;7164:7;7173:6;7141:8;:39::i;:::-;-1:-1:-1;7198:4:0;7049:161;;;;;:::o;6493:95::-;6546:7;4760:13;4698:2;4760;:13;:::i;:::-;4742:31;;:15;:31;:::i;:::-;6566:14;;6493:95;:::o;11090:163::-;2589:6;;-1:-1:-1;;;;;2589:6:0;297:10;2589:22;2581:67;;;;-1:-1:-1;;;2581:67:0;;;;;;;:::i;:::-;;;;;;;;;11163:6:::1;11158:88;11179:5;:12;11175:1;:16;11158:88;;;11230:4;11213;:14;11218:5;11224:1;11218:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11213:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11213:14:0;:21;;-1:-1:-1;;11213:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;11193:3:0::1;11158:88;;;;11090:163:::0;:::o;7218:313::-;7316:4;7333:36;7343:6;7351:9;7362:6;7333:9;:36::i;:::-;7380:121;7389:6;297:10;7411:89;7449:6;7411:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7411:19:0;;;;;;:11;:19;;;;;;;;297:10;7411:33;;;;;;;;;;:37;:89::i;:::-;7380:8;:121::i;:::-;-1:-1:-1;7519:4:0;7218:313;;;;;:::o;14410:360::-;14478:10;;-1:-1:-1;;;;;14478:10:0;297;-1:-1:-1;;;;;14462:26:0;;14454:35;;;;;;14541:4;14500:20;6689:18;;;:9;:18;;;;;;14561:16;;14558:75;;14591:30;14608:12;14591:16;:30::i;:::-;14664:21;14699:14;;14696:67;;14727:24;14740:10;14727:12;:24::i;2676:148::-;2589:6;;-1:-1:-1;;;;;2589:6:0;297:10;2589:22;2581:67;;;;-1:-1:-1;;;2581:67:0;;;;;;;:::i;:::-;2783:1:::1;2767:6:::0;;2746:40:::1;::::0;-1:-1:-1;;;;;2767:6:0;;::::1;::::0;2746:40:::1;::::0;2783:1;;2746:40:::1;2814:1;2797:19:::0;;-1:-1:-1;;;;;;2797:19:0::1;::::0;;2676:148::o;10821:161::-;2589:6;;-1:-1:-1;;;;;2589:6:0;297:10;2589:22;2581:67;;;;-1:-1:-1;;;2581:67:0;;;;;;;:::i;:::-;4760:13:::1;4698:2;4760;:13;:::i;:::-;4742:31;::::0;:15:::1;:31;:::i;:::-;10874:12;:22:::0;4760:13:::1;4698:2;4760;:13;:::i;:::-;4742:31;::::0;:15:::1;:31;:::i;:::-;10907:14;:24:::0;10947:27:::1;4760:13;4698:2;4760;:13;:::i;:::-;4742:31;::::0;:15:::1;:31;:::i;:::-;10947:27;::::0;1500:25:1;;;1488:2;1473:18;10947:27:0::1;;;;;;;10821:161::o:0;11899:1633::-;2589:6;;-1:-1:-1;;;;;2589:6:0;297:10;2589:22;2581:67;;;;-1:-1:-1;;;2581:67:0;;;;;;;:::i;:::-;12009:11:::1;::::0;-1:-1:-1;;;12009:11:0;::::1;;;12008:12;12000:47;;;::::0;-1:-1:-1;;;12000:47:0;;7241:2:1;12000:47:0::1;::::0;::::1;7223:21:1::0;7280:2;7260:18;;;7253:30;-1:-1:-1;;;7299:18:1;;;7292:53;7362:18;;12000:47:0::1;7039:347:1::0;12000:47:0::1;12118:53;12135:10;12156:4;4760:13;4698:2;4760;:13;:::i;:::-;4742:31;::::0;:15:::1;:31;:::i;12118:53::-;12182:58;12200:10;12221:4;12238:1;4760:13;4698:2;4760;:13;:::i;:::-;4742:31;::::0;:15:::1;:31;:::i;:::-;12228:11;;;;:::i;:::-;12182:9;:58::i;:::-;12288:15;:80:::0;;-1:-1:-1;;;;;;12288:80:0::1;12325:42;12288:80:::0;;::::1;::::0;;;12413:25:::1;::::0;;-1:-1:-1;;;12413:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;12325:42;12413:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12395:55:0::1;;12459:4;12466:15;;;;;;;;;-1:-1:-1::0;;;;;12466:15:0::1;-1:-1:-1::0;;;;;12466:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12395:94;::::0;-1:-1:-1;;;;;;12395:94:0::1;::::0;;;;;;-1:-1:-1;;;;;8099:15:1;;;12395:94:0::1;::::0;::::1;8081:34:1::0;8151:15;;8131:18;;;8124:43;8016:18;;12395:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12379:13;:110:::0;;-1:-1:-1;;;;;;12379:110:0::1;-1:-1:-1::0;;;;;12379:110:0;;::::1;::::0;;::::1;::::0;;;12538:15:::1;::::0;12500:71:::1;::::0;-1:-1:-1;;;12500:71:0;;12538:15;::::1;12500:71;::::0;::::1;8352:51:1::0;-1:-1:-1;;8419:18:1;;;8412:34;12379:110:0;12500:29:::1;::::0;8325:18:1;;12500:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;12601:13:0::1;::::0;-1:-1:-1;;;;;12601:13:0;;::::1;12582:33;::::0;;;:18:::1;:33;::::0;;;;;;;;:40;;-1:-1:-1;;12582:40:0::1;12618:4;12582:40;::::0;;12715:16:::1;::::0;12758:15:::1;::::0;:22;;-1:-1:-1;;;12758:22:0;;;;12715:16;;::::1;::::0;:27:::1;::::0;12751:4:::1;::::0;12758:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12582:33;;12758:22;;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12715:73;::::0;-1:-1:-1;;;;;;12715:73:0::1;::::0;;;;;;-1:-1:-1;;;;;9008:15:1;;;12715:73:0::1;::::0;::::1;8990:34:1::0;9060:15;;9040:18;;;9033:43;12782:5:0::1;9092:18:1::0;;;9085:49;8925:18;;12715:73:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12698:14;:90:::0;;-1:-1:-1;;;;;;12698:90:0::1;-1:-1:-1::0;;;;;12698:90:0;;::::1;;::::0;;12831:16:::1;::::0;12874:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12874:22:0;;;;12831:16;;::::1;::::0;:27:::1;::::0;12867:4:::1;::::0;12874:15;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12831:72;::::0;-1:-1:-1;;;;;;12831:72:0::1;::::0;;;;;;-1:-1:-1;;;;;9008:15:1;;;12831:72:0::1;::::0;::::1;8990:34:1::0;9060:15;;9040:18;;;9033:43;12898:4:0::1;9092:18:1::0;;;9085:49;8925:18;;12831:72:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12814:14;:89:::0;;-1:-1:-1;;;;;;12814:89:0::1;-1:-1:-1::0;;;;;12814:89:0;;::::1;;::::0;;12986:14:::1;::::0;;::::1;-1:-1:-1::0;12981:20:0;;;:4:::1;:20;::::0;;;;;:27;;-1:-1:-1;;12981:27:0;;::::1;-1:-1:-1::0;12981:27:0;;::::1;::::0;;;13024:14;;;::::1;13019:20:::0;;;;;:27;;;::::1;::::0;::::1;::::0;;13070:42:::1;13057:57:::0;;;;:64;;;;::::1;;::::0;;13166:15:::1;::::0;13134:58:::1;::::0;13151:4:::1;::::0;13166:15:::1;4760:13;4698:2;4760;:13;:::i;13134:58::-;13203:15;::::0;-1:-1:-1;;;;;13203:15:0::1;:31;13242:5:::0;13257:4:::1;13263:24;13257:4:::0;-1:-1:-1;;;;;6689:18:0;6662:7;6689:18;;;:9;:18;;;;;;;6596:119;13263:24:::1;13288:1;13290::::0;13292:7:::1;2500::::0;2527:6;-1:-1:-1;;;;;2527:6:0;;2462:79;13292:7:::1;13300:15;13203:113;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13327:11:0::1;:18:::0;;-1:-1:-1;;;;13356:18:0;-1:-1:-1;;;13356:18:0;;;-1:-1:-1;;13438:17:0::1;13450:5:::0;13438:9:::1;:17;:::i;:::-;13422:33;;13466;13484:5;13491:7;13466:17;:33::i;:::-;-1:-1:-1::0;;13510:7:0::1;:14:::0;;-1:-1:-1;;;;13510:14:0::1;-1:-1:-1::0;;;13510:14:0::1;::::0;;-1:-1:-1;11899:1633:0:o;6723:167::-;6801:4;6818:42;297:10;6842:9;6853:6;6818:9;:42::i;11520:371::-;2589:6;;-1:-1:-1;;;;;2589:6:0;297:10;2589:22;2581:67;;;;-1:-1:-1;;;2581:67:0;;;;;;;:::i;:::-;11590:11:::1;::::0;-1:-1:-1;;;11590:11:0;::::1;;;11589:12;11581:47;;;::::0;-1:-1:-1;;;11581:47:0;;7241:2:1;11581:47:0::1;::::0;::::1;7223:21:1::0;7280:2;7260:18;;;7253:30;-1:-1:-1;;;7299:18:1;;;7292:53;7362:18;;11581:47:0::1;7039:347:1::0;11581:47:0::1;11671:15;::::0;11639:58:::1;::::0;11656:4:::1;::::0;-1:-1:-1;;;;;11671:15:0::1;4760:13;4698:2;4760;:13;:::i;11639:58::-;11708:15;::::0;-1:-1:-1;;;;;11708:15:0::1;:31;11747:9;11766:4;11772:24;11766:4:::0;-1:-1:-1;;;;;6689:18:0;6662:7;6689:18;;;:9;:18;;;;;;;6596:119;11772:24:::1;11797:1;11799::::0;11801:7:::1;2500::::0;2527:6;-1:-1:-1;;;;;2527:6:0;;2462:79;11801:7:::1;11809:15;11708:117;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11836:11:0::1;:18:::0;;-1:-1:-1;;;;11865:18:0;-1:-1:-1;;;11865:18:0;;;-1:-1:-1;11520:371:0:o;14778:189::-;14844:10;;-1:-1:-1;;;;;14844:10:0;297;-1:-1:-1;;;;;14828:26:0;;14820:35;;;;;;14895:21;14927:32;14895:21;14927:12;:32::i;:::-;14809:158;14778:189::o;11261:160::-;2589:6;;-1:-1:-1;;;;;2589:6:0;297:10;2589:22;2581:67;;;;-1:-1:-1;;;2581:67:0;;;;;;;:::i;:::-;11334:6:::1;11329:85;11350:5;:12;11346:1;:16;11329:85;;;11399:5;11382:4;:14;11387:5;11393:1;11387:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11382:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11382:14:0;:22;;-1:-1:-1;;11382:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;11364:3:0::1;11329:85;;7539:335:::0;-1:-1:-1;;;;;7632:19:0;;7624:68;;;;-1:-1:-1;;;7624:68:0;;10808:2:1;7624:68:0;;;10790:21:1;10847:2;10827:18;;;10820:30;10886:34;10866:18;;;10859:62;-1:-1:-1;;;10937:18:1;;;10930:34;10981:19;;7624:68:0;10606:400:1;7624:68:0;-1:-1:-1;;;;;7711:21:0;;7703:68;;;;-1:-1:-1;;;7703:68:0;;11213:2:1;7703:68:0;;;11195:21:1;11252:2;11232:18;;;11225:30;11291:34;11271:18;;;11264:62;-1:-1:-1;;;11342:18:1;;;11335:32;11384:19;;7703:68:0;11011:398:1;7703:68:0;-1:-1:-1;;;;;7782:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7834:32;;1500:25:1;;;7834:32:0;;1473:18:1;7834:32:0;;;;;;;7539:335;;;:::o;7882:2332::-;-1:-1:-1;;;;;7970:18:0;;7962:68;;;;-1:-1:-1;;;7962:68:0;;11616:2:1;7962:68:0;;;11598:21:1;11655:2;11635:18;;;11628:30;11694:34;11674:18;;;11667:62;-1:-1:-1;;;11745:18:1;;;11738:35;11790:19;;7962:68:0;11414:401:1;7962:68:0;-1:-1:-1;;;;;8049:16:0;;8041:64;;;;-1:-1:-1;;;8041:64:0;;12022:2:1;8041:64:0;;;12004:21:1;12061:2;12041:18;;;12034:30;12100:34;12080:18;;;12073:62;-1:-1:-1;;;12151:18:1;;;12144:33;12194:19;;8041:64:0;11820:399:1;8041:64:0;8133:1;8124:6;:10;8116:64;;;;-1:-1:-1;;;8116:64:0;;12426:2:1;8116:64:0;;;12408:21:1;12465:2;12445:18;;;12438:30;12504:34;12484:18;;;12477:62;-1:-1:-1;;;12555:18:1;;;12548:39;12604:19;;8116:64:0;12224:405:1;8116:64:0;8226:7;;8191:17;;-1:-1:-1;;;8226:7:0;;;;8223:1627;;;2500:7;2527:6;-1:-1:-1;;;;;8253:15:0;;;2527:6;;8253:15;;;;:32;;-1:-1:-1;2500:7:0;2527:6;-1:-1:-1;;;;;8272:13:0;;;2527:6;;8272:13;;8253:32;8249:1590;;;-1:-1:-1;;;;;8315:10:0;;;;;;:4;:10;;;;;;;;8314:11;:24;;;;-1:-1:-1;;;;;;8330:8:0;;;;;;:4;:8;;;;;;;;8329:9;8314:24;8306:33;;;;;;8372:13;;-1:-1:-1;;;;;8364:21:0;;;8372:13;;8364:21;:55;;;;-1:-1:-1;8403:15:0;;-1:-1:-1;;;;;8389:30:0;;;8403:15;;8389:30;;8364:55;:83;;;;-1:-1:-1;;;;;;8425:22:0;;;;;;:18;:22;;;;;;;;8423:24;8364:83;8360:440;;;8491:12;;8481:6;:22;;8473:60;;;;-1:-1:-1;;;8473:60:0;;12836:2:1;8473:60:0;;;12818:21:1;12875:2;12855:18;;;12848:30;12914:27;12894:18;;;12887:55;12959:18;;8473:60:0;12634:349:1;8473:60:0;8590:14;;8580:6;8564:13;8574:2;-1:-1:-1;;;;;6689:18:0;6662:7;6689:18;;;:9;:18;;;;;;;6596:119;8564:13;:22;;;;:::i;:::-;:40;;8556:79;;;;-1:-1:-1;;;8556:79:0;;13320:2:1;8556:79:0;;;13302:21:1;13359:2;13339:18;;;13332:30;13398:28;13378:18;;;13371:56;13444:18;;8556:79:0;13118:350:1;8556:79:0;8670:76;8742:3;8670:67;8692:15;;8682:9;;:25;8681:55;;8722:14;;8681:55;;;8709:12;;8681:55;8670:6;;:10;:67::i;:::-;:71;;:76::i;:::-;8769:9;:11;;8658:88;;-1:-1:-1;8769:9:0;:11;;;:::i;:::-;;;;;;8360:440;8829:13;;-1:-1:-1;;;;;8823:19:0;;;8829:13;;8823:19;:44;;;;-1:-1:-1;;;;;;8846:21:0;;8862:4;8846:21;;8823:44;8820:183;;;8904:79;8979:3;8904:70;8926:16;;8916:9;;:26;8915:58;;8958:15;;8915:58;;;8944:13;;8904:6;;:10;:70::i;:79::-;8892:91;;8820:183;9072:4;9023:28;6689:18;;;:9;:18;;;;;;9102:6;;-1:-1:-1;;;9102:6:0;;;;9101:7;:30;;;;-1:-1:-1;9118:13:0;;-1:-1:-1;;;;;9112:19:0;;;9118:13;;9112:19;9101:30;:45;;;;-1:-1:-1;9135:11:0;;-1:-1:-1;;;9135:11:0;;;;9101:45;:89;;;;;9173:17;;9150:20;:40;9101:89;:123;;;;;9206:18;;9194:9;;:30;9101:123;9097:727;;;9268:13;;9253:12;:28;9249:98;;;9322:1;9310:9;:13;9249:98;9389:1;9377:9;;:13;9369:49;;;;-1:-1:-1;;;9369:49:0;;13815:2:1;9369:49:0;;;13797:21:1;13854:2;13834:18;;;13827:30;13893:25;13873:18;;;13866:53;13936:18;;9369:49:0;13613:347:1;9369:49:0;9441:69;9458:51;9462:6;9470:38;9474:20;9496:11;;9470:3;:38::i;:::-;9458:3;:51::i;:::-;9441:16;:69::i;:::-;9562:21;9610:22;;9606:114;;9661:35;9674:21;9661:12;:35::i;:::-;9742:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;9792:12:0;9776:13;:28;-1:-1:-1;9097:727:0;8287:1552;8249:1590;9865:13;;9862:165;;9937:4;9919:24;;;;:9;:24;;;;;;:39;;9948:9;9919:28;:39::i;:::-;9910:4;9892:24;;;;:9;:24;;;;;;;:66;;;;9976:39;;-1:-1:-1;;;;;9976:39:0;;;;;;;10005:9;1500:25:1;;1488:2;1473:18;;1354:177;9976:39:0;;;;;;;;9862:165;-1:-1:-1;;;;;10055:15:0;;;;;;:9;:15;;;;;;:27;;10075:6;10055:19;:27::i;:::-;-1:-1:-1;;;;;10037:15:0;;;;;;:9;:15;;;;;:45;10109:40;10127:21;:6;10138:9;10127:10;:21::i;:::-;-1:-1:-1;;;;;10109:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;10093:13:0;;;;;;;:9;:13;;;;;:56;;;;10165:41;;;10184:21;:6;10195:9;10184:10;:21::i;:::-;10165:41;;1500:25:1;;;1488:2;1473:18;10165:41:0;;;;;;;7951:2263;7882:2332;;;:::o;1354:190::-;1440:7;1476:12;1468:6;;;;1460:29;;;;-1:-1:-1;;;1460:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1500:9:0;1512:5;1516:1;1512;:5;:::i;:::-;1500:17;1354:190;-1:-1:-1;;;;;1354:190:0:o;10330:483::-;5550:6;:13;;-1:-1:-1;;;;5550:13:0;-1:-1:-1;;;5550:13:0;;;10432:16:::1;::::0;;10446:1:::1;10432:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10432:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10432:16:0::1;10408:40;;10477:4;10459;10464:1;10459:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10459:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10503:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10503:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10459:7;;10503:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10493:4;10498:1;10493:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10493:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10568:15:::1;::::0;10536:62:::1;::::0;10553:4:::1;::::0;10568:15:::1;10586:11:::0;10536:8:::1;:62::i;:::-;10609:15;::::0;:196:::1;::::0;-1:-1:-1;;;10609:196:0;;-1:-1:-1;;;;;10609:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10690:11;;10609:15:::1;::::0;10732:4;;10759::::1;::::0;10779:15:::1;::::0;10609:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5586:6:0;:14;;-1:-1:-1;;;;5586:14:0;;;-1:-1:-1;;;;10330:483:0:o;10990:92::-;11047:10;;:27;;-1:-1:-1;;;;;11047:10:0;;;;:27;;;;;11067:6;;11047:10;:27;:10;:27;11067:6;11047:10;:27;;;;;;;;;;;;;;;;;;;13544:821;13636:17;13686:1;13669:90;13694:10;:17;13689:1;:22;13669:90;;13733:14;13746:1;13733:14;;:::i;:::-;;-1:-1:-1;13713:3:0;;;;:::i;:::-;;;;13669:90;;;-1:-1:-1;13857:15:0;;13784:7;;-1:-1:-1;;;;;13857:15:0;13769:12;13884:472;13908:10;:17;13904:1;:21;13884:472;;;13934:14;13951:5;:1;13955;13951:5;:::i;:::-;13934:22;-1:-1:-1;13972:13:0;14009:9;13989:16;13934:22;13989:7;:16;:::i;:::-;13988:30;;;;:::i;:::-;13972:46;;14045:4;14037:5;:12;14033:33;;;-1:-1:-1;14060:4:0;14033:33;14104:16;;;14118:1;14104:16;;;;;;;;14080:21;;14104:16;;;;;;;;;;-1:-1:-1;14104:16:0;14080:40;;14132:13;-1:-1:-1;;;;;14132:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14122:4;14127:1;14122:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;14122:30:0;;;-1:-1:-1;;;;;14122:30:0;;;;;14172:4;14154;14159:1;14154:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14154:23:0;;;:7;;;;;;;;;:23;14192:15;;14281:13;;14192:15;;;:66;;14266:5;;14192:15;;14276:4;;14281:10;;14292:1;;14281:13;;;;;;:::i;:::-;;;;;;;14295:15;14313:2;14295:20;;;;:::i;:::-;14192:124;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14339:5;14331:13;;;;;:::i;:::-;;-1:-1:-1;;13927:3:0;;;;;-1:-1:-1;13884:472:0;;-1:-1:-1;13884:472:0;;;13625:740;;;13544:821;;:::o;1552:246::-;1610:7;1634:1;1639;1634:6;1630:47;;-1:-1:-1;1664:1:0;1657:8;;1630:47;1687:9;1699:5;1703:1;1699;:5;:::i;:::-;1687:17;-1:-1:-1;1732:1:0;1723:5;1727:1;1687:17;1723:5;:::i;:::-;:10;1715:56;;;;-1:-1:-1;;;1715:56:0;;15739:2:1;1715:56:0;;;15721:21:1;15778:2;15758:18;;;15751:30;15817:34;15797:18;;;15790:62;-1:-1:-1;;;15868:18:1;;;15861:31;15909:19;;1715:56:0;15537:397:1;1715:56:0;1789:1;1552:246;-1:-1:-1;;;1552:246:0:o;1806:132::-;1864:7;1891:39;1895:1;1898;1891:39;;;;;;;;;;;;;;;;;:3;:39::i;10224:98::-;10281:7;10308:1;10306;:3;10305:9;;10313:1;10305:9;;;-1:-1:-1;10311:1:0;10224:98;-1:-1:-1;10224:98:0:o;1023:179::-;1081:7;;1113:5;1117:1;1113;:5;:::i;:::-;1101:17;;1142:1;1137;:6;;1129:46;;;;-1:-1:-1;;;1129:46:0;;16141:2:1;1129:46:0;;;16123:21:1;16180:2;16160:18;;;16153:30;16219:29;16199:18;;;16192:57;16266:18;;1129:46:0;15939:351:1;1210:136:0;1268:7;1295:43;1299:1;1302;1295:43;;;;;;;;;;;;;;;;;:3;:43::i;1946:189::-;2032:7;2067:12;2060:5;2052:28;;;;-1:-1:-1;;;2052:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2091:9:0;2103:5;2107:1;2103;: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;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:127::-;1597:10;1592:3;1588:20;1585:1;1578:31;1628:4;1625:1;1618:15;1652:4;1649:1;1642:15;1668:914;1722:5;1775:3;1768:4;1760:6;1756:17;1752:27;1742:55;;1793:1;1790;1783:12;1742:55;1829:6;1816:20;1855:4;1878:18;1915:2;1911;1908:10;1905:36;;;1921:18;;:::i;:::-;1967:2;1964:1;1960:10;1999:2;1993:9;2062:2;2058:7;2053:2;2049;2045:11;2041:25;2033:6;2029:38;2117:6;2105:10;2102:22;2097:2;2085:10;2082:18;2079:46;2076:72;;;2128:18;;:::i;:::-;2164:2;2157:22;2214:18;;;2260:4;2292:15;;;2288:26;;;2248:17;;;;-1:-1:-1;2326:15:1;;;2323:35;;;2354:1;2351;2344:12;2323:35;2390:4;2382:6;2378:17;2367:28;;2404:148;2420:6;2415:3;2412:15;2404:148;;;2486:23;2505:3;2486:23;:::i;:::-;2474:36;;2530:12;;;;2437;;;;2404:148;;;2570:6;1668:914;-1:-1:-1;;;;;;;1668:914:1:o;2587:348::-;2671:6;2724:2;2712:9;2703:7;2699:23;2695:32;2692:52;;;2740:1;2737;2730:12;2692:52;2780:9;2767:23;2813:18;2805:6;2802:30;2799:50;;;2845:1;2842;2835:12;2799:50;2868:61;2921:7;2912:6;2901:9;2897:22;2868:61;:::i;:::-;2858:71;2587:348;-1:-1:-1;;;;2587:348:1:o;2940:456::-;3017:6;3025;3033;3086:2;3074:9;3065:7;3061:23;3057:32;3054:52;;;3102:1;3099;3092:12;3054:52;3141:9;3128:23;3160:31;3185:5;3160:31;:::i;:::-;3210:5;-1:-1:-1;3267:2:1;3252:18;;3239:32;3280:33;3239:32;3280:33;:::i;:::-;2940:456;;3332:7;;-1:-1:-1;;;3386:2:1;3371:18;;;;3358:32;;2940:456::o;3590:247::-;3649:6;3702:2;3690:9;3681:7;3677:23;3673:32;3670:52;;;3718:1;3715;3708:12;3670:52;3757:9;3744:23;3776:31;3801:5;3776:31;:::i;4050:416::-;4143:6;4151;4204:2;4192:9;4183:7;4179:23;4175:32;4172:52;;;4220:1;4217;4210:12;4172:52;4260:9;4247:23;4293:18;4285:6;4282:30;4279:50;;;4325:1;4322;4315:12;4279:50;4348:61;4401:7;4392:6;4381:9;4377:22;4348:61;:::i;:::-;4338:71;4456:2;4441:18;;;;4428:32;;-1:-1:-1;;;;4050:416:1:o;4471:388::-;4539:6;4547;4600:2;4588:9;4579:7;4575:23;4571:32;4568:52;;;4616:1;4613;4606:12;4568:52;4655:9;4642:23;4674:31;4699:5;4674:31;:::i;:::-;4724:5;-1:-1:-1;4781:2:1;4766:18;;4753:32;4794:33;4753:32;4794:33;:::i;:::-;4846:7;4836:17;;;4471:388;;;;;:::o;4864:127::-;4925:10;4920:3;4916:20;4913:1;4906:31;4956:4;4953:1;4946:15;4980:4;4977:1;4970:15;4996:416;5085:1;5122:5;5085:1;5136:270;5157:7;5147:8;5144:21;5136:270;;;5216:4;5212:1;5208:6;5204:17;5198:4;5195:27;5192:53;;;5225:18;;:::i;:::-;5275:7;5265:8;5261:22;5258:55;;;5295:16;;;;5258:55;5374:22;;;;5334:15;;;;5136:270;;;5140:3;4996:416;;;;;:::o;5417:806::-;5466:5;5496:8;5486:80;;-1:-1:-1;5537:1:1;5551:5;;5486:80;5585:4;5575:76;;-1:-1:-1;5622:1:1;5636:5;;5575:76;5667:4;5685:1;5680:59;;;;5753:1;5748:130;;;;5660:218;;5680:59;5710:1;5701:10;;5724:5;;;5748:130;5785:3;5775:8;5772:17;5769:43;;;5792:18;;:::i;:::-;-1:-1:-1;;5848:1:1;5834:16;;5863:5;;5660:218;;5962:2;5952:8;5949:16;5943:3;5937:4;5934:13;5930:36;5924:2;5914:8;5911:16;5906:2;5900:4;5897:12;5893:35;5890:77;5887:159;;;-1:-1:-1;5999:19:1;;;6031:5;;5887:159;6078:34;6103:8;6097:4;6078:34;:::i;:::-;6148:6;6144:1;6140:6;6136:19;6127:7;6124:32;6121:58;;;6159:18;;:::i;:::-;6197:20;;5417:806;-1:-1:-1;;;5417:806:1:o;6228:140::-;6286:5;6315:47;6356:4;6346:8;6342:19;6336:4;6315:47;:::i;6373:168::-;6446:9;;;6477;;6494:15;;;6488:22;;6474:37;6464:71;;6515:18;;:::i;6546:356::-;6748:2;6730:21;;;6767:18;;;6760:30;6826:34;6821:2;6806:18;;6799:62;6893:2;6878:18;;6546:356::o;6907:127::-;6968:10;6963:3;6959:20;6956:1;6949:31;6999:4;6996:1;6989:15;7023:4;7020:1;7013:15;7391:217;7431:1;7457;7447:132;;7501:10;7496:3;7492:20;7489:1;7482:31;7536:4;7533:1;7526:15;7564:4;7561:1;7554:15;7447:132;-1:-1:-1;7593:9:1;;7391:217::o;7613:251::-;7683:6;7736:2;7724:9;7715:7;7711:23;7707:32;7704:52;;;7752:1;7749;7742:12;7704:52;7784:9;7778:16;7803:31;7828:5;7803:31;:::i;8457:277::-;8524:6;8577:2;8565:9;8556:7;8552:23;8548:32;8545:52;;;8593:1;8590;8583:12;8545:52;8625:9;8619:16;8678:5;8671:13;8664:21;8657:5;8654:32;8644:60;;8700:1;8697;8690:12;9550:607;-1:-1:-1;;;;;9909:15:1;;;9891:34;;9956:2;9941:18;;9934:34;;;;9999:2;9984:18;;9977:34;;;;10042:2;10027:18;;10020:34;;;;10091:15;;;10085:3;10070:19;;10063:44;9871:3;10123:19;;10116:35;;;;9840:3;9825:19;;9550:607::o;10162:306::-;10250:6;10258;10266;10319:2;10307:9;10298:7;10294:23;10290:32;10287:52;;;10335:1;10332;10325:12;10287:52;10364:9;10358:16;10348:26;;10414:2;10403:9;10399:18;10393:25;10383:35;;10458:2;10447:9;10443:18;10437:25;10427:35;;10162:306;;;;;:::o;10473:128::-;10540:9;;;10561:11;;;10558:37;;;10575:18;;:::i;12988:125::-;13053:9;;;13074:10;;;13071:36;;;13087:18;;:::i;13473:135::-;13512:3;13533:17;;;13530:43;;13553:18;;:::i;:::-;-1:-1:-1;13600:1:1;13589:13;;13473:135::o;13965:465::-;14018:3;14056:5;14050:12;14083:6;14078:3;14071:19;14109:4;14138;14133:3;14129:14;14122:21;;14177:4;14170:5;14166:16;14200:1;14210:195;14224:6;14221:1;14218:13;14210:195;;;14289:13;;-1:-1:-1;;;;;14285:39:1;14273:52;;14345:12;;;;14380:15;;;;14321:1;14239:9;14210:195;;;-1:-1:-1;14421:3:1;;13965:465;-1:-1:-1;;;;;13965:465:1:o;14435:582::-;14734:6;14723:9;14716:25;14777:6;14772:2;14761:9;14757:18;14750:34;14820:3;14815:2;14804:9;14800:18;14793:31;14697:4;14841:57;14893:3;14882:9;14878:19;14870:6;14841:57;:::i;:::-;-1:-1:-1;;;;;14934:32:1;;;;14929:2;14914:18;;14907:60;-1:-1:-1;14998:3:1;14983:19;14976:35;14833:65;14435:582;-1:-1:-1;;;14435:582:1:o;15022:510::-;15293:6;15282:9;15275:25;15336:3;15331:2;15320:9;15316:18;15309:31;15256:4;15357:57;15409:3;15398:9;15394:19;15386:6;15357:57;:::i;:::-;-1:-1:-1;;;;;15450:32:1;;;;15445:2;15430:18;;15423:60;-1:-1:-1;15514:2:1;15499:18;15492:34;15349:65;15022:510;-1:-1:-1;;15022:510:1:o

Swarm Source

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