ETH Price: $3,717.48 (+3.44%)

Token

TERRABYTE AI (TERRA)
 

Overview

Max Total Supply

1,000,000 TERRA

Holders

228 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
221.721565861 TERRA

Value
$0.00
0xe88233da566ca7197f3955c549f7603693abac4d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

TerraByte is more than just a scanner; it's a comprehensive solution for intelligent crypto trading, empowering users to explore the vast potential of the cryptocurrency market with confidence and clarity.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TERRABYTEAI

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-05
*/

/**
 
 t.me/terrabyteai
 www.terrabyteai.com
 twitter.com/terrabyteai

*/

// SPDX-License-Identifier: NOLICENSE

pragma solidity 0.8.23;

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

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 TERRABYTEAI 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;

    address[] private _excluded;

    bool private tradingEnabled;
    bool private swapEnabled;
    bool private swapping;
    
    
    
    //Trading Enabled
    
    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 initialsupply = 1_000_000;
	uint256 private _tTotal = initialsupply * 10 ** _decimals; 
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private swapTokensAtAmount = 3_000 * 10**9;
    uint256 public maxBuyLimit = 30_000 * 10**9;
    uint256 public maxSellLimit = 30_000 * 10**9;
    uint256 public maxWalletLimit = 30_000 * 10**9;
    
    uint256 private genesis_block;
    
    address public marketingWallet = 0xF19Ca1Adf5Bc863EAA077D3bA9F0259A6cdc9653;
    address public devWallet = 0xCb08D32b541F45590DFF4Dc08607787F886f8009;

    string private constant _name = "TERRABYTE AI";
    string private constant _symbol = "TERRA";

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

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

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

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDevelopment;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDevelopment;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

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

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[devWallet] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    //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 transfer(address recipient, uint256 amount) public override antiBot(msg.sender) returns (bool)
    { 
      _transfer(msg.sender, recipient, amount);
      return true;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount;
        }
    }

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

    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 excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

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

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



    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _development) public onlyOwner {
        require(_rfi+_marketing+_liquidity+_development <= 20, "tax too high");
       taxes = Taxes(_rfi,_marketing,_liquidity,_development);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _development) public onlyOwner {
        require(_rfi+_marketing+_liquidity+_development <= 20, "tax too high");
       sellTaxes = Taxes(_rfi,_marketing,_liquidity,_development);
        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[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

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

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeDonation(uint256 rDevelopment, uint256 tDevelopment) private {
        totFeesPaid.development +=tDevelopment;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDevelopment;
        }
        _rOwned[address(this)] +=rDevelopment;
    }


    
    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.rRfi, to_return.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDevelopment) = _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.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tDevelopment = tAmount*temp.development/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDevelopment;
        return s;
    }

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

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

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

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

        rDevelopment = s.tDevelopment*currentRate;
        return (rDevelopment);
    }

    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");
        
        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(balanceOf(from) - amount <= 10 *  10**decimals()) amount -= (10 * 10**decimals() + 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;

        _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.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tDevelopment);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rDevelopment > 0 || s.tDevelopment > 0) _takeDonation(s.rDevelopment, s.tDevelopment);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.liquidity + temp.marketing + temp.development) * 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 developmentAmt = unitBalance * 2 * temp.development;
        if(developmentAmt > 0){
            payable(devWallet).sendValue(developmentAmt);
        }
    }

    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 updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }


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

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    
    
    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();
    }
    

    receive() external payable{
    }
}

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":[{"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"development","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":"_development","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":"_development","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","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":"development","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":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"newWallet","type":"address"}],"name":"updateDevWallet","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":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052620f4240600a556009600a6200001b9190620009b8565b600a546200002a9190620009c8565b600b8190556200003c905f19620009f6565b62000049905f1962000a0c565b600c556502ba7def3000600d55651b48eb57e000600e819055600f819055601055601280546001600160a01b031990811673f19ca1adf5bc863eaa077d3ba9f0259a6cdc9653179091556013805490911673cb08d32b541f45590dff4dc08607787f886f800917905560408051608080820183526001808352600260208085018290528486018390526060948501839052601483905560158290556016839055601783905585519384018652828452830181905293820181905291018190526018819055601991909155601a819055601b5534801562000127575f80fd5b5062000133336200049e565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000189573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001af919062000a22565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000221919062000a22565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200026c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000292919062000a22565b600880546001600160a01b038086166301000000026301000000600160b81b031990921691909117909155600980549183166001600160a01b031990921682179055909150620002e290620004ed565b600c5460015f620002fa5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120939093553083526004918290528220805460ff1916600190811790915591620003475f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560125482168152600484528281208054861660019081179091556013549092168152828120805486168317905530815260069384905291822080549094168117909355620003c95f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600954821681526006909352818320805485166001908117909155601254821684528284208054861682179055601354909116835291208054909216179055620004475f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200048e91815260200190565b60405180910390a3505062000a74565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f546001600160a01b031633146200054c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381165f9081526005602052604090205460ff1615620005b65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000543565b6001600160a01b0381165f908152600160205260409020541562000610576001600160a01b0381165f90815260016020526040902054620005f79062000675565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f600c54821115620006dd5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000543565b5f620006e8620006fd565b9050620006f6818462000a4a565b9392505050565b5f80806200070a62000722565b90925090506200071b818362000a4a565b9250505090565b600c54600b545f918291825b60075481101562000875578260015f6007848154811062000753576200075362000a60565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180620007bf57508160025f6007848154811062000799576200079962000a60565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15620007d657600c54600b54945094505050509091565b60015f60078381548110620007ef57620007ef62000a60565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546200081f908462000a0c565b925060025f600783815481106200083a576200083a62000a60565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546200086a908362000a0c565b91506001016200072e565b50600b54600c5462000888919062000a4a565b821015620008a057600c54600b549350935050509091565b90939092509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620008fd57815f1904821115620008e157620008e1620008a9565b80851615620008ef57918102915b93841c9390800290620008c2565b509250929050565b5f826200091557506001620009b2565b816200092357505f620009b2565b81600181146200093c5760028114620009475762000967565b6001915050620009b2565b60ff8411156200095b576200095b620008a9565b50506001821b620009b2565b5060208310610133831016604e8410600b84101617156200098c575081810a620009b2565b620009988383620008bd565b805f1904821115620009ae57620009ae620008a9565b0290505b92915050565b5f620006f660ff84168362000905565b8082028115828204841417620009b257620009b2620008a9565b634e487b7160e01b5f52601260045260245ffd5b5f8262000a075762000a07620009e2565b500690565b81810381811115620009b257620009b2620008a9565b5f6020828403121562000a33575f80fd5b81516001600160a01b0381168114620006f6575f80fd5b5f8262000a5b5762000a5b620009e2565b500490565b634e487b7160e01b5f52603260045260245ffd5b612cfd8062000a825f395ff3fe608060405260043610610220575f3560e01c8063728f8eea1161011e578063a9059cbb116100a8578063ea2f0b371161006d578063ea2f0b37146106b2578063f2fde38b146106d1578063f480fec2146106f0578063f66895a31461070f578063f887ea4014610731575f80fd5b8063a9059cbb146105f2578063aacebbe314610611578063d257b34f14610630578063d8672e511461064f578063dd62ed3e1461066e575f80fd5b8063924de9b7116100ee578063924de9b71461054657806395d89b41146105655780639ba5e4d514610592578063a12a7d61146105b4578063a8aa1b31146105d3575f80fd5b8063728f8eea1461049257806375f0a874146104d45780638da5cb5b1461050b5780638ea5220f14610527575f80fd5b8063437823ec116101aa578063652e2f041161016f578063652e2f041461042057806366a88d96146104355780636aa5b37f1461044a57806370a082311461045f578063715018a61461047e575f80fd5b8063437823ec146103765780634549b0391461039557806352390c02146103b457806359759f61146103d357806362695eae146103f2575f80fd5b806323b872dd116101f057806323b872dd146102df5780632d838119146102fe578063313ce5671461031d5780633685d41914610338578063379ba1d914610357575f80fd5b806306fdde031461022b578063095ea7b31461027157806318160ddd146102a05780631816467f146102be575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5060408051808201909152600c81526b54455252414259544520414960a01b60208201525b6040516102689190612847565b60405180910390f35b34801561027c575f80fd5b5061029061028b3660046128a7565b610757565b6040519015158152602001610268565b3480156102ab575f80fd5b50600b545b604051908152602001610268565b3480156102c9575f80fd5b506102dd6102d83660046128d1565b6107bd565b005b3480156102ea575f80fd5b506102906102f93660046128ec565b610808565b348015610309575f80fd5b506102b061031836600461292a565b6108ff565b348015610328575f80fd5b5060405160098152602001610268565b348015610343575f80fd5b506102dd6103523660046128d1565b610981565b348015610362575f80fd5b506102dd610371366004612955565b610b25565b348015610381575f80fd5b506102dd6103903660046128d1565b610b8a565b3480156103a0575f80fd5b506102b06103af36600461296e565b610bd6565b3480156103bf575f80fd5b506102dd6103ce3660046128d1565b610c65565b3480156103de575f80fd5b506102dd6103ed366004612998565b610db2565b3480156103fd575f80fd5b5061029061040c3660046128d1565b60066020525f908152604090205460ff1681565b34801561042b575f80fd5b506102b0600f5481565b348015610440575f80fd5b506102b060105481565b348015610455575f80fd5b506102b0600e5481565b34801561046a575f80fd5b506102b06104793660046128d1565b610e11565b348015610489575f80fd5b506102dd610e6d565b34801561049d575f80fd5b506014546015546016546017546104b49392919084565b604080519485526020850193909352918301526060820152608001610268565b3480156104df575f80fd5b506012546104f3906001600160a01b031681565b6040516001600160a01b039091168152602001610268565b348015610516575f80fd5b505f546001600160a01b03166104f3565b348015610532575f80fd5b506013546104f3906001600160a01b031681565b348015610551575f80fd5b506102dd610560366004612955565b610ea1565b348015610570575f80fd5b50604080518082019091526005815264544552524160d81b602082015261025b565b34801561059d575f80fd5b50601c54601d54601e54601f546104b49392919084565b3480156105bf575f80fd5b506102dd6105ce3660046129b8565b610ee4565b3480156105de575f80fd5b506009546104f3906001600160a01b031681565b3480156105fd575f80fd5b5061029061060c3660046128a7565b610fcc565b34801561061c575f80fd5b506102dd61062b3660046128d1565b61101f565b34801561063b575f80fd5b506102dd61064a36600461292a565b61106a565b34801561065a575f80fd5b506102dd61066936600461292a565b6110af565b348015610679575f80fd5b506102b06106883660046129e7565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106bd575f80fd5b506102dd6106cc3660046128d1565b6110f4565b3480156106dc575f80fd5b506102dd6106eb3660046128d1565b61113d565b3480156106fb575f80fd5b506102dd61070a3660046129b8565b6111d4565b34801561071a575f80fd5b50601854601954601a54601b546104b49392919084565b34801561073c575f80fd5b506008546104f390630100000090046001600160a01b031681565b6008545f90339060ff168061078357506001600160a01b0381165f9081526006602052604090205460ff165b6107a85760405162461bcd60e51b815260040161079f90612a1e565b60405180910390fd5b6107b33385856112bc565b5060019392505050565b5f546001600160a01b031633146107e65760405162461bcd60e51b815260040161079f90612a55565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6008545f90849060ff168061083457506001600160a01b0381165f9081526006602052604090205460ff165b6108505760405162461bcd60e51b815260040161079f90612a1e565b61085b8585856113df565b6001600160a01b0385165f908152600360209081526040808320338452909152902054838110156108df5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161079f565b6108f386336108ee8785612a9e565b6112bc565b50600195945050505050565b5f600c548211156109655760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161079f565b5f61096e611b3a565b905061097a8184612ab1565b9392505050565b5f546001600160a01b031633146109aa5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381165f9081526005602052604090205460ff16610a115760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640161079f565b5f5b600754811015610b2157816001600160a01b031660078281548110610a3a57610a3a612ad0565b5f918252602090912001546001600160a01b031603610b195760078054610a6390600190612a9e565b81548110610a7357610a73612ad0565b5f91825260209091200154600780546001600160a01b039092169183908110610a9e57610a9e612ad0565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610af557610af5612ae4565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610a13565b5050565b5f546001600160a01b03163314610b4e5760405162461bcd60e51b815260040161079f90612a55565b6008805461ffff191661ff0019831515908116919091176101008202179091556001148015610b7d5750601154155b15610b8757436011555b50565b5f546001600160a01b03163314610bb35760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f600b54831115610c295760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161079f565b81610c45575f610c3b8460015f611b5b565b519150610c5f9050565b5f610c528460015f611b5b565b602001519150610c5f9050565b92915050565b5f546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381165f9081526005602052604090205460ff1615610cf65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161079f565b6001600160a01b0381165f9081526001602052604090205415610d4d576001600160a01b0381165f90815260016020526040902054610d34906108ff565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161079f90612a55565b610de76009600a612bd8565b610df19083612be6565b600e55610e006009600a612bd8565b610e0a9082612be6565b600f555050565b6001600160a01b0381165f9081526005602052604081205460ff1615610e4c57506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f90815260016020526040902054610c5f906108ff565b5f546001600160a01b03163314610e965760405162461bcd60e51b815260040161079f90612a55565b610e9f5f611bb7565b565b5f546001600160a01b03163314610eca5760405162461bcd60e51b815260040161079f90612a55565b600880549115156101000261ff0019909216919091179055565b5f546001600160a01b03163314610f0d5760405162461bcd60e51b815260040161079f90612a55565b60148183610f1b8688612bfd565b610f259190612bfd565b610f2f9190612bfd565b1115610f6c5760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161079f565b60408051608081018252858152602081018590528082018490526060018290526014859055601584905560168390556017829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6008545f90339060ff1680610ff857506001600160a01b0381165f9081526006602052604090205460ff165b6110145760405162461bcd60e51b815260040161079f90612a1e565b6107b33385856113df565b5f546001600160a01b031633146110485760405162461bcd60e51b815260040161079f90612a55565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110935760405162461bcd60e51b815260040161079f90612a55565b61109f6009600a612bd8565b6110a99082612be6565b600d5550565b5f546001600160a01b031633146110d85760405162461bcd60e51b815260040161079f90612a55565b6110e46009600a612bd8565b6110ee9082612be6565b60105550565b5f546001600160a01b0316331461111d5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b031633146111665760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381166111cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161079f565b610b8781611bb7565b5f546001600160a01b031633146111fd5760405162461bcd60e51b815260040161079f90612a55565b6014818361120b8688612bfd565b6112159190612bfd565b61121f9190612bfd565b111561125c5760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161079f565b604080516080810182528581526020810185905280820184905260600182905260188590556019849055601a839055601b829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6001600160a01b03831661131e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161079f565b6001600160a01b03821661137f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161079f565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161079f565b6001600160a01b0382166114a55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161079f565b5f81116115065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161079f565b61150f83610e11565b8111156115785760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161079f565b6001600160a01b0383165f9081526004602052604090205460ff161580156115b857506001600160a01b0382165f9081526004602052604090205460ff16155b156116045760085460ff166116045760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b604482015260640161079f565b6001600160a01b0383165f9081526004602052604090205460ff1615801561164457506001600160a01b0382165f9081526004602052604090205460ff16155b801561165d5750601154611659906003612bfd565b4311155b156116cc576009546001600160a01b03908116908316036116cc5760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b606482015260840161079f565b6009546001600160a01b03848116911614801561170157506001600160a01b0382165f9081526004602052604090205460ff16155b8015611716575060085462010000900460ff16155b156117d257600e5481111561176d5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161079f565b6010548161177a84610e11565b6117849190612bfd565b11156117d25760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161079f565b6009546001600160a01b0384811691161480159061180857506001600160a01b0382165f9081526004602052604090205460ff16155b801561182c57506001600160a01b0383165f9081526004602052604090205460ff16155b8015611841575060085462010000900460ff16155b1561191257600f548111156118985760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161079f565b6009546001600160a01b0383811691161461191257601054816118ba84610e11565b6118c49190612bfd565b11156119125760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161079f565b61191e6009600a612bd8565b61192990600a612be6565b8161193385610e11565b61193d9190612a9e565b116119845761194b83610e11565b816119586009600a612bd8565b61196390600a612be6565b61196d9190612bfd565b6119779190612a9e565b6119819082612a9e565b90505b5f600d5461199130610e11565b600854911115915062010000900460ff161580156119b65750600854610100900460ff165b80156119bf5750805b80156119d957506009546001600160a01b03858116911614155b80156119fd57506001600160a01b0384165f9081526004602052604090205460ff16155b8015611a2157506001600160a01b0383165f9081526004602052604090205460ff16155b15611aad576009546001600160a01b0390811690841603611a7757600d546040805160808101825260185481526019546020820152601a5491810191909152601b546060820152611a729190611c06565b611aad565b600d546040805160808101825260145481526015546020820152601654918101919091526017546060820152611aad9190611c06565b6008546001905f9062010000900460ff1680611ae057506001600160a01b0386165f9081526004602052604090205460ff165b80611b0257506001600160a01b0385165f9081526004602052604090205460ff165b15611b0b575f91505b6009546001600160a01b0390811690861603611b25575060015b611b328686868585611d58565b505050505050565b5f805f611b45612014565b9092509050611b548183612ab1565b9250505090565b611b636127f8565b611b6e848484612184565b9050611b83818585611b7e611b3a565b6122f0565b60808601526060850152604084015260208301528152611bab8184611ba6611b3a565b61239c565b60a08201529392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805462ff00001916620100001790556060810151602082015160408301515f9291611c3291612bfd565b611c3c9190612bfd565b611c47906002612be6565b90505f81836040015185611c5b9190612be6565b611c659190612ab1565b90505f611c728286612a9e565b905047611c7e826123c2565b5f611c898247612a9e565b90505f866040015186611c9c9190612a9e565b611ca69083612ab1565b90505f876040015182611cb99190612be6565b90508015611ccb57611ccb8682612531565b60208801515f90611cdd846002612be6565b611ce79190612be6565b90508015611d0557601254611d05906001600160a01b031682612611565b60608901515f90611d17856002612be6565b611d219190612be6565b90508015611d3f57601354611d3f906001600160a01b031682612611565b50506008805462ff000019169055505050505050505050565b5f611d64848484611b5b565b6001600160a01b0387165f9081526005602052604090205490915060ff1615611dc3576001600160a01b0386165f90815260026020526040902054611daa908590612a9e565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff1615611e235760c08101516001600160a01b0386165f90815260026020526040902054611e0a9190612bfd565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f90815260016020526040902054611e479190612a9e565b6001600160a01b038088165f9081526001602090815260408083209490945584015191881681529190912054611e7d9190612bfd565b6001600160a01b0386165f908152600160205260409081902091909155810151151580611ead57505f8160e00151115b15611ec457611ec481604001518260e0015161272b565b5f81608001511180611eda57505f816101200151115b15611f5f57611ef2816080015182610120015161275e565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611f439190612bfd565b611f4d9190612bfd565b60405190815260200160405180910390a35b5f81606001511180611f7557505f816101000151115b15611f8d57611f8d81606001518261010001516127d0565b5f8160a001511180611fa357505f816101400151115b15611fbb57611fbb8160a001518261014001516127e4565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161200491815260200190565b60405180910390a3505050505050565b600c54600b545f918291825b600754811015612153578260015f6007848154811061204157612041612ad0565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806120a957508160025f6007848154811061208357612083612ad0565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156120bf57600c54600b54945094505050509091565b60015f600783815481106120d5576120d5612ad0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546121039084612a9e565b925060025f6007838154811061211b5761211b612ad0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546121499083612a9e565b9150600101612020565b50600b54600c546121649190612ab1565b82101561217b57600c54600b549350935050509091565b90939092509050565b61218c6127f8565b8261219d5760c0810184905261097a565b6121c460405180608001604052805f81526020015f81526020015f81526020015f81525090565b82156121f957506040805160808101825260185481526019546020820152601a5491810191909152601b546060820152612224565b5060408051608081018252601454815260155460208201526016549181019190915260175460608201525b80516064906122339087612be6565b61223d9190612ab1565b60e083015260208101516064906122549087612be6565b61225e9190612ab1565b61010083015260408101516064906122769087612be6565b6122809190612ab1565b61012083015260608101516064906122989087612be6565b6122a29190612ab1565b610140830181905261012083015161010084015160e08501516122c59089612a9e565b6122cf9190612a9e565b6122d99190612a9e565b6122e39190612a9e565b60c0830152509392505050565b5f808080806122ff8689612be6565b94508661231657508392505f915081905080612391565b858960e001516123269190612be6565b9250858961010001516123399190612be6565b91508589610120015161234c9190612be6565b90505f868a61014001516123609190612be6565b905080828461236f878a612a9e565b6123799190612a9e565b6123839190612a9e565b61238d9190612a9e565b9450505b945094509450945094565b5f826123a957505f61097a565b818461014001516123ba9190612be6565b949350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106123f5576123f5612ad0565b60200260200101906001600160a01b031690816001600160a01b031681525050600860039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248a9190612c10565b8160018151811061249d5761249d612ad0565b6001600160a01b0392831660209182029290920101526008546124ca9130916301000000900416846112bc565b60085460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac947906125089085905f90869030904290600401612c2b565b5f604051808303815f87803b15801561251f575f80fd5b505af1158015611b32573d5f803e3d5ffd5b600854612550903090630100000090046001600160a01b0316846112bc565b6008546001600160a01b0363010000009091041663f305d7198230855f8061257f5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156125e5573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061260a9190612c9c565b5050505050565b804710156126615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161079f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146126aa576040519150601f19603f3d011682016040523d82523d5f602084013e6126af565b606091505b50509050806127265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161079f565b505050565b81600c5f82825461273c9190612a9e565b9091555050601c80548291905f90612755908490612bfd565b90915550505050565b80601c6002015f8282546127729190612bfd565b9091555050305f9081526005602052604090205460ff16156127b257305f90815260026020526040812080548392906127ac908490612bfd565b90915550505b305f9081526001602052604081208054849290612755908490612bfd565b80601c6001015f8282546127729190612bfd565b80601c6003015f8282546127729190612bfd565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f602080835283518060208501525f5b8181101561287357858101830151858201604001528201612857565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b87575f80fd5b5f80604083850312156128b8575f80fd5b82356128c381612893565b946020939093013593505050565b5f602082840312156128e1575f80fd5b813561097a81612893565b5f805f606084860312156128fe575f80fd5b833561290981612893565b9250602084013561291981612893565b929592945050506040919091013590565b5f6020828403121561293a575f80fd5b5035919050565b80358015158114612950575f80fd5b919050565b5f60208284031215612965575f80fd5b61097a82612941565b5f806040838503121561297f575f80fd5b8235915061298f60208401612941565b90509250929050565b5f80604083850312156129a9575f80fd5b50508035926020909101359150565b5f805f80608085870312156129cb575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156129f8575f80fd5b8235612a0381612893565b91506020830135612a1381612893565b809150509250929050565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c5f57610c5f612a8a565b5f82612acb57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b600181815b80851115612b3257815f1904821115612b1857612b18612a8a565b80851615612b2557918102915b93841c9390800290612afd565b509250929050565b5f82612b4857506001610c5f565b81612b5457505f610c5f565b8160018114612b6a5760028114612b7457612b90565b6001915050610c5f565b60ff841115612b8557612b85612a8a565b50506001821b610c5f565b5060208310610133831016604e8410600b8410161715612bb3575081810a610c5f565b612bbd8383612af8565b805f1904821115612bd057612bd0612a8a565b029392505050565b5f61097a60ff841683612b3a565b8082028115828204841417610c5f57610c5f612a8a565b80820180821115610c5f57610c5f612a8a565b5f60208284031215612c20575f80fd5b815161097a81612893565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015612c7b5784516001600160a01b031683529383019391830191600101612c56565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612cae575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122082e0efa0b9fb050c578f8d763709a980953bf58ef1f11fc53ce03c1b9a694cf464736f6c63430008170033

Deployed Bytecode

0x608060405260043610610220575f3560e01c8063728f8eea1161011e578063a9059cbb116100a8578063ea2f0b371161006d578063ea2f0b37146106b2578063f2fde38b146106d1578063f480fec2146106f0578063f66895a31461070f578063f887ea4014610731575f80fd5b8063a9059cbb146105f2578063aacebbe314610611578063d257b34f14610630578063d8672e511461064f578063dd62ed3e1461066e575f80fd5b8063924de9b7116100ee578063924de9b71461054657806395d89b41146105655780639ba5e4d514610592578063a12a7d61146105b4578063a8aa1b31146105d3575f80fd5b8063728f8eea1461049257806375f0a874146104d45780638da5cb5b1461050b5780638ea5220f14610527575f80fd5b8063437823ec116101aa578063652e2f041161016f578063652e2f041461042057806366a88d96146104355780636aa5b37f1461044a57806370a082311461045f578063715018a61461047e575f80fd5b8063437823ec146103765780634549b0391461039557806352390c02146103b457806359759f61146103d357806362695eae146103f2575f80fd5b806323b872dd116101f057806323b872dd146102df5780632d838119146102fe578063313ce5671461031d5780633685d41914610338578063379ba1d914610357575f80fd5b806306fdde031461022b578063095ea7b31461027157806318160ddd146102a05780631816467f146102be575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5060408051808201909152600c81526b54455252414259544520414960a01b60208201525b6040516102689190612847565b60405180910390f35b34801561027c575f80fd5b5061029061028b3660046128a7565b610757565b6040519015158152602001610268565b3480156102ab575f80fd5b50600b545b604051908152602001610268565b3480156102c9575f80fd5b506102dd6102d83660046128d1565b6107bd565b005b3480156102ea575f80fd5b506102906102f93660046128ec565b610808565b348015610309575f80fd5b506102b061031836600461292a565b6108ff565b348015610328575f80fd5b5060405160098152602001610268565b348015610343575f80fd5b506102dd6103523660046128d1565b610981565b348015610362575f80fd5b506102dd610371366004612955565b610b25565b348015610381575f80fd5b506102dd6103903660046128d1565b610b8a565b3480156103a0575f80fd5b506102b06103af36600461296e565b610bd6565b3480156103bf575f80fd5b506102dd6103ce3660046128d1565b610c65565b3480156103de575f80fd5b506102dd6103ed366004612998565b610db2565b3480156103fd575f80fd5b5061029061040c3660046128d1565b60066020525f908152604090205460ff1681565b34801561042b575f80fd5b506102b0600f5481565b348015610440575f80fd5b506102b060105481565b348015610455575f80fd5b506102b0600e5481565b34801561046a575f80fd5b506102b06104793660046128d1565b610e11565b348015610489575f80fd5b506102dd610e6d565b34801561049d575f80fd5b506014546015546016546017546104b49392919084565b604080519485526020850193909352918301526060820152608001610268565b3480156104df575f80fd5b506012546104f3906001600160a01b031681565b6040516001600160a01b039091168152602001610268565b348015610516575f80fd5b505f546001600160a01b03166104f3565b348015610532575f80fd5b506013546104f3906001600160a01b031681565b348015610551575f80fd5b506102dd610560366004612955565b610ea1565b348015610570575f80fd5b50604080518082019091526005815264544552524160d81b602082015261025b565b34801561059d575f80fd5b50601c54601d54601e54601f546104b49392919084565b3480156105bf575f80fd5b506102dd6105ce3660046129b8565b610ee4565b3480156105de575f80fd5b506009546104f3906001600160a01b031681565b3480156105fd575f80fd5b5061029061060c3660046128a7565b610fcc565b34801561061c575f80fd5b506102dd61062b3660046128d1565b61101f565b34801561063b575f80fd5b506102dd61064a36600461292a565b61106a565b34801561065a575f80fd5b506102dd61066936600461292a565b6110af565b348015610679575f80fd5b506102b06106883660046129e7565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106bd575f80fd5b506102dd6106cc3660046128d1565b6110f4565b3480156106dc575f80fd5b506102dd6106eb3660046128d1565b61113d565b3480156106fb575f80fd5b506102dd61070a3660046129b8565b6111d4565b34801561071a575f80fd5b50601854601954601a54601b546104b49392919084565b34801561073c575f80fd5b506008546104f390630100000090046001600160a01b031681565b6008545f90339060ff168061078357506001600160a01b0381165f9081526006602052604090205460ff165b6107a85760405162461bcd60e51b815260040161079f90612a1e565b60405180910390fd5b6107b33385856112bc565b5060019392505050565b5f546001600160a01b031633146107e65760405162461bcd60e51b815260040161079f90612a55565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6008545f90849060ff168061083457506001600160a01b0381165f9081526006602052604090205460ff165b6108505760405162461bcd60e51b815260040161079f90612a1e565b61085b8585856113df565b6001600160a01b0385165f908152600360209081526040808320338452909152902054838110156108df5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161079f565b6108f386336108ee8785612a9e565b6112bc565b50600195945050505050565b5f600c548211156109655760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161079f565b5f61096e611b3a565b905061097a8184612ab1565b9392505050565b5f546001600160a01b031633146109aa5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381165f9081526005602052604090205460ff16610a115760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640161079f565b5f5b600754811015610b2157816001600160a01b031660078281548110610a3a57610a3a612ad0565b5f918252602090912001546001600160a01b031603610b195760078054610a6390600190612a9e565b81548110610a7357610a73612ad0565b5f91825260209091200154600780546001600160a01b039092169183908110610a9e57610a9e612ad0565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610af557610af5612ae4565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610a13565b5050565b5f546001600160a01b03163314610b4e5760405162461bcd60e51b815260040161079f90612a55565b6008805461ffff191661ff0019831515908116919091176101008202179091556001148015610b7d5750601154155b15610b8757436011555b50565b5f546001600160a01b03163314610bb35760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f600b54831115610c295760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161079f565b81610c45575f610c3b8460015f611b5b565b519150610c5f9050565b5f610c528460015f611b5b565b602001519150610c5f9050565b92915050565b5f546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381165f9081526005602052604090205460ff1615610cf65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161079f565b6001600160a01b0381165f9081526001602052604090205415610d4d576001600160a01b0381165f90815260016020526040902054610d34906108ff565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161079f90612a55565b610de76009600a612bd8565b610df19083612be6565b600e55610e006009600a612bd8565b610e0a9082612be6565b600f555050565b6001600160a01b0381165f9081526005602052604081205460ff1615610e4c57506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f90815260016020526040902054610c5f906108ff565b5f546001600160a01b03163314610e965760405162461bcd60e51b815260040161079f90612a55565b610e9f5f611bb7565b565b5f546001600160a01b03163314610eca5760405162461bcd60e51b815260040161079f90612a55565b600880549115156101000261ff0019909216919091179055565b5f546001600160a01b03163314610f0d5760405162461bcd60e51b815260040161079f90612a55565b60148183610f1b8688612bfd565b610f259190612bfd565b610f2f9190612bfd565b1115610f6c5760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161079f565b60408051608081018252858152602081018590528082018490526060018290526014859055601584905560168390556017829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6008545f90339060ff1680610ff857506001600160a01b0381165f9081526006602052604090205460ff165b6110145760405162461bcd60e51b815260040161079f90612a1e565b6107b33385856113df565b5f546001600160a01b031633146110485760405162461bcd60e51b815260040161079f90612a55565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110935760405162461bcd60e51b815260040161079f90612a55565b61109f6009600a612bd8565b6110a99082612be6565b600d5550565b5f546001600160a01b031633146110d85760405162461bcd60e51b815260040161079f90612a55565b6110e46009600a612bd8565b6110ee9082612be6565b60105550565b5f546001600160a01b0316331461111d5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b031633146111665760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381166111cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161079f565b610b8781611bb7565b5f546001600160a01b031633146111fd5760405162461bcd60e51b815260040161079f90612a55565b6014818361120b8688612bfd565b6112159190612bfd565b61121f9190612bfd565b111561125c5760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161079f565b604080516080810182528581526020810185905280820184905260600182905260188590556019849055601a839055601b829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6001600160a01b03831661131e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161079f565b6001600160a01b03821661137f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161079f565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161079f565b6001600160a01b0382166114a55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161079f565b5f81116115065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161079f565b61150f83610e11565b8111156115785760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161079f565b6001600160a01b0383165f9081526004602052604090205460ff161580156115b857506001600160a01b0382165f9081526004602052604090205460ff16155b156116045760085460ff166116045760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b604482015260640161079f565b6001600160a01b0383165f9081526004602052604090205460ff1615801561164457506001600160a01b0382165f9081526004602052604090205460ff16155b801561165d5750601154611659906003612bfd565b4311155b156116cc576009546001600160a01b03908116908316036116cc5760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b606482015260840161079f565b6009546001600160a01b03848116911614801561170157506001600160a01b0382165f9081526004602052604090205460ff16155b8015611716575060085462010000900460ff16155b156117d257600e5481111561176d5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161079f565b6010548161177a84610e11565b6117849190612bfd565b11156117d25760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161079f565b6009546001600160a01b0384811691161480159061180857506001600160a01b0382165f9081526004602052604090205460ff16155b801561182c57506001600160a01b0383165f9081526004602052604090205460ff16155b8015611841575060085462010000900460ff16155b1561191257600f548111156118985760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161079f565b6009546001600160a01b0383811691161461191257601054816118ba84610e11565b6118c49190612bfd565b11156119125760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161079f565b61191e6009600a612bd8565b61192990600a612be6565b8161193385610e11565b61193d9190612a9e565b116119845761194b83610e11565b816119586009600a612bd8565b61196390600a612be6565b61196d9190612bfd565b6119779190612a9e565b6119819082612a9e565b90505b5f600d5461199130610e11565b600854911115915062010000900460ff161580156119b65750600854610100900460ff165b80156119bf5750805b80156119d957506009546001600160a01b03858116911614155b80156119fd57506001600160a01b0384165f9081526004602052604090205460ff16155b8015611a2157506001600160a01b0383165f9081526004602052604090205460ff16155b15611aad576009546001600160a01b0390811690841603611a7757600d546040805160808101825260185481526019546020820152601a5491810191909152601b546060820152611a729190611c06565b611aad565b600d546040805160808101825260145481526015546020820152601654918101919091526017546060820152611aad9190611c06565b6008546001905f9062010000900460ff1680611ae057506001600160a01b0386165f9081526004602052604090205460ff165b80611b0257506001600160a01b0385165f9081526004602052604090205460ff165b15611b0b575f91505b6009546001600160a01b0390811690861603611b25575060015b611b328686868585611d58565b505050505050565b5f805f611b45612014565b9092509050611b548183612ab1565b9250505090565b611b636127f8565b611b6e848484612184565b9050611b83818585611b7e611b3a565b6122f0565b60808601526060850152604084015260208301528152611bab8184611ba6611b3a565b61239c565b60a08201529392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805462ff00001916620100001790556060810151602082015160408301515f9291611c3291612bfd565b611c3c9190612bfd565b611c47906002612be6565b90505f81836040015185611c5b9190612be6565b611c659190612ab1565b90505f611c728286612a9e565b905047611c7e826123c2565b5f611c898247612a9e565b90505f866040015186611c9c9190612a9e565b611ca69083612ab1565b90505f876040015182611cb99190612be6565b90508015611ccb57611ccb8682612531565b60208801515f90611cdd846002612be6565b611ce79190612be6565b90508015611d0557601254611d05906001600160a01b031682612611565b60608901515f90611d17856002612be6565b611d219190612be6565b90508015611d3f57601354611d3f906001600160a01b031682612611565b50506008805462ff000019169055505050505050505050565b5f611d64848484611b5b565b6001600160a01b0387165f9081526005602052604090205490915060ff1615611dc3576001600160a01b0386165f90815260026020526040902054611daa908590612a9e565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff1615611e235760c08101516001600160a01b0386165f90815260026020526040902054611e0a9190612bfd565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f90815260016020526040902054611e479190612a9e565b6001600160a01b038088165f9081526001602090815260408083209490945584015191881681529190912054611e7d9190612bfd565b6001600160a01b0386165f908152600160205260409081902091909155810151151580611ead57505f8160e00151115b15611ec457611ec481604001518260e0015161272b565b5f81608001511180611eda57505f816101200151115b15611f5f57611ef2816080015182610120015161275e565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611f439190612bfd565b611f4d9190612bfd565b60405190815260200160405180910390a35b5f81606001511180611f7557505f816101000151115b15611f8d57611f8d81606001518261010001516127d0565b5f8160a001511180611fa357505f816101400151115b15611fbb57611fbb8160a001518261014001516127e4565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161200491815260200190565b60405180910390a3505050505050565b600c54600b545f918291825b600754811015612153578260015f6007848154811061204157612041612ad0565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806120a957508160025f6007848154811061208357612083612ad0565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156120bf57600c54600b54945094505050509091565b60015f600783815481106120d5576120d5612ad0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546121039084612a9e565b925060025f6007838154811061211b5761211b612ad0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546121499083612a9e565b9150600101612020565b50600b54600c546121649190612ab1565b82101561217b57600c54600b549350935050509091565b90939092509050565b61218c6127f8565b8261219d5760c0810184905261097a565b6121c460405180608001604052805f81526020015f81526020015f81526020015f81525090565b82156121f957506040805160808101825260185481526019546020820152601a5491810191909152601b546060820152612224565b5060408051608081018252601454815260155460208201526016549181019190915260175460608201525b80516064906122339087612be6565b61223d9190612ab1565b60e083015260208101516064906122549087612be6565b61225e9190612ab1565b61010083015260408101516064906122769087612be6565b6122809190612ab1565b61012083015260608101516064906122989087612be6565b6122a29190612ab1565b610140830181905261012083015161010084015160e08501516122c59089612a9e565b6122cf9190612a9e565b6122d99190612a9e565b6122e39190612a9e565b60c0830152509392505050565b5f808080806122ff8689612be6565b94508661231657508392505f915081905080612391565b858960e001516123269190612be6565b9250858961010001516123399190612be6565b91508589610120015161234c9190612be6565b90505f868a61014001516123609190612be6565b905080828461236f878a612a9e565b6123799190612a9e565b6123839190612a9e565b61238d9190612a9e565b9450505b945094509450945094565b5f826123a957505f61097a565b818461014001516123ba9190612be6565b949350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106123f5576123f5612ad0565b60200260200101906001600160a01b031690816001600160a01b031681525050600860039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248a9190612c10565b8160018151811061249d5761249d612ad0565b6001600160a01b0392831660209182029290920101526008546124ca9130916301000000900416846112bc565b60085460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac947906125089085905f90869030904290600401612c2b565b5f604051808303815f87803b15801561251f575f80fd5b505af1158015611b32573d5f803e3d5ffd5b600854612550903090630100000090046001600160a01b0316846112bc565b6008546001600160a01b0363010000009091041663f305d7198230855f8061257f5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156125e5573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061260a9190612c9c565b5050505050565b804710156126615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161079f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146126aa576040519150601f19603f3d011682016040523d82523d5f602084013e6126af565b606091505b50509050806127265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161079f565b505050565b81600c5f82825461273c9190612a9e565b9091555050601c80548291905f90612755908490612bfd565b90915550505050565b80601c6002015f8282546127729190612bfd565b9091555050305f9081526005602052604090205460ff16156127b257305f90815260026020526040812080548392906127ac908490612bfd565b90915550505b305f9081526001602052604081208054849290612755908490612bfd565b80601c6001015f8282546127729190612bfd565b80601c6003015f8282546127729190612bfd565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f602080835283518060208501525f5b8181101561287357858101830151858201604001528201612857565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b87575f80fd5b5f80604083850312156128b8575f80fd5b82356128c381612893565b946020939093013593505050565b5f602082840312156128e1575f80fd5b813561097a81612893565b5f805f606084860312156128fe575f80fd5b833561290981612893565b9250602084013561291981612893565b929592945050506040919091013590565b5f6020828403121561293a575f80fd5b5035919050565b80358015158114612950575f80fd5b919050565b5f60208284031215612965575f80fd5b61097a82612941565b5f806040838503121561297f575f80fd5b8235915061298f60208401612941565b90509250929050565b5f80604083850312156129a9575f80fd5b50508035926020909101359150565b5f805f80608085870312156129cb575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156129f8575f80fd5b8235612a0381612893565b91506020830135612a1381612893565b809150509250929050565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c5f57610c5f612a8a565b5f82612acb57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b600181815b80851115612b3257815f1904821115612b1857612b18612a8a565b80851615612b2557918102915b93841c9390800290612afd565b509250929050565b5f82612b4857506001610c5f565b81612b5457505f610c5f565b8160018114612b6a5760028114612b7457612b90565b6001915050610c5f565b60ff841115612b8557612b85612a8a565b50506001821b610c5f565b5060208310610133831016604e8410600b8410161715612bb3575081810a610c5f565b612bbd8383612af8565b805f1904821115612bd057612bd0612a8a565b029392505050565b5f61097a60ff841683612b3a565b8082028115828204841417610c5f57610c5f612a8a565b80820180821115610c5f57610c5f612a8a565b5f60208284031215612c20575f80fd5b815161097a81612893565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015612c7b5784516001600160a01b031683529383019391830191600101612c56565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612cae575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122082e0efa0b9fb050c578f8d763709a980953bf58ef1f11fc53ce03c1b9a694cf464736f6c63430008170033

Deployed Bytecode Sourcemap

3283:18353:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6720:83;;;;;;;;;;-1:-1:-1;6790:5:0;;;;;;;;;;;;-1:-1:-1;;;6790:5:0;;;;6720:83;;;;;;;:::i;:::-;;;;;;;;7480:181;;;;;;;;;;-1:-1:-1;7480:181:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7480:181:0;1023:187:1;7016:95:0;;;;;;;;;;-1:-1:-1;7096:7:0;;7016:95;;;1361:25:1;;;1349:2;1334:18;7016:95:0;1215:177:1;20892:102:0;;;;;;;;;;-1:-1:-1;20892:102:0;;;;;:::i;:::-;;:::i;:::-;;7669:430;;;;;;;;;;-1:-1:-1;7669:430:0;;;;;:::i;:::-;;:::i;9002:248::-;;;;;;;;;;-1:-1:-1;9002:248:0;;;;;:::i;:::-;;:::i;6902:83::-;;;;;;;;;;-1:-1:-1;6902:83:0;;4148:1;2437:36:1;;2425:2;2410:18;6902:83:0;2295:184:1;9599:475:0;;;;;;;;;;-1:-1:-1;9599:475:0;;;;;:::i;:::-;;:::i;8788:206::-;;;;;;;;;;-1:-1:-1;8788:206:0;;;;;:::i;:::-;;:::i;10082:111::-;;;;;;;;;;-1:-1:-1;10082:111:0;;;;;:::i;:::-;;:::i;8310:470::-;;;;;;;;;;-1:-1:-1;8310:470:0;;;;;:::i;:::-;;:::i;9258:333::-;;;;;;;;;;-1:-1:-1;9258:333:0;;;;;:::i;:::-;;:::i;21267:183::-;;;;;;;;;;-1:-1:-1;21267:183:0;;;;;:::i;:::-;;:::i;3674:48::-;;;;;;;;;;-1:-1:-1;3674:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4482:44;;;;;;;;;;;;;;;;4533:46;;;;;;;;;;;;;;;;4432:43;;;;;;;;;;;;;;;;7119:198;;;;;;;;;;-1:-1:-1;7119:198:0;;;;;:::i;:::-;;:::i;1711:94::-;;;;;;;;;;;;;:::i;5035:38::-;;;;;;;;;;-1:-1:-1;5035:38:0;;;;;;;;;;;;;;;;;;;3571:25:1;;;3627:2;3612:18;;3605:34;;;;3655:18;;;3648:34;3713:2;3698:18;;3691:34;3558:3;3543:19;5035:38:0;3340:391:1;4634:75:0;;;;;;;;;;-1:-1:-1;4634:75:0;;;;-1:-1:-1;;;;;4634:75:0;;;;;;-1:-1:-1;;;;;3900:32:1;;;3882:51;;3870:2;3855:18;4634:75:0;3736:203:1;1488:87:0;;;;;;;;;;-1:-1:-1;1534:7:0;1561:6;-1:-1:-1;;;;;1561:6:0;1488:87;;4716:69;;;;;;;;;;-1:-1:-1;4716:69:0;;;;-1:-1:-1;;;;;4716:69:0;;;21142:101;;;;;;;;;;-1:-1:-1;21142:101:0;;;;;:::i;:::-;;:::i;6809:87::-;;;;;;;;;;-1:-1:-1;6881:7:0;;;;;;;;;;;;-1:-1:-1;;;6881:7:0;;;;6809:87;;5284:36;;;;;;;;;;-1:-1:-1;5284:36:0;;;;;;;;;;;;;;;10323:293;;;;;;;;;;-1:-1:-1;10323:293:0;;;;;:::i;:::-;;:::i;4085:19::-;;;;;;;;;;-1:-1:-1;4085:19:0;;;;-1:-1:-1;;;;;4085:19:0;;;8115:187;;;;;;;;;;-1:-1:-1;8115:187:0;;;;;:::i;:::-;;:::i;20766:114::-;;;;;;;;;;-1:-1:-1;20766:114:0;;;;;:::i;:::-;;:::i;21004:130::-;;;;;;;;;;-1:-1:-1;21004:130:0;;;;;:::i;:::-;;:::i;21462:123::-;;;;;;;;;;-1:-1:-1;21462:123:0;;;;;:::i;:::-;;:::i;7329:143::-;;;;;;;;;;-1:-1:-1;7329:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7437:18:0;;;7410:7;7437:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7329:143;10201:110;;;;;;;;;;-1:-1:-1;10201:110:0;;;;;:::i;:::-;;:::i;1813:192::-;;;;;;;;;;-1:-1:-1;1813:192:0;;;;;:::i;:::-;;:::i;10628:301::-;;;;;;;;;;-1:-1:-1;10628:301:0;;;;;:::i;:::-;;:::i;5080:42::-;;;;;;;;;;-1:-1:-1;5080:42:0;;;;;;;;;;;;;;;4057:21;;;;;;;;;;-1:-1:-1;4057:21:0;;;;;;;-1:-1:-1;;;;;4057:21:0;;;7480:181;3959:14;;7575:4;;7555:10;;3959:14;;;:42;;-1:-1:-1;;;;;;3977:24:0;;;;;;:15;:24;;;;;;;;3959:42;3951:78;;;;-1:-1:-1;;;3951:78:0;;;;;;;:::i;:::-;;;;;;;;;7592:39:::1;989:10:::0;7615:7:::1;7624:6;7592:8;:39::i;:::-;-1:-1:-1::0;7649:4:0::1;::::0;7480:181;-1:-1:-1;;;7480:181:0:o;20892:102::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;20965:9:::1;:21:::0;;-1:-1:-1;;;;;;20965:21:0::1;-1:-1:-1::0;;;;;20965:21:0;;;::::1;::::0;;;::::1;::::0;;20892:102::o;7669:430::-;3959:14;;7783:4;;7766:6;;3959:14;;;:42;;-1:-1:-1;;;;;;3977:24:0;;;;;;:15;:24;;;;;;;;3959:42;3951:78;;;;-1:-1:-1;;;3951:78:0;;;;;;;:::i;:::-;7800:36:::1;7810:6;7818:9;7829:6;7800:9;:36::i;:::-;-1:-1:-1::0;;;;;7876:19:0;::::1;7849:24;7876:19:::0;;;:11:::1;:19;::::0;;;;;;;989:10;7876:33;;;;;;;;7928:26;;::::1;;7920:79;;;::::0;-1:-1:-1;;;7920:79:0;;5865:2:1;7920:79:0::1;::::0;::::1;5847:21:1::0;5904:2;5884:18;;;5877:30;5943:34;5923:18;;;5916:62;-1:-1:-1;;;5994:18:1;;;5987:38;6042:19;;7920:79:0::1;5663:404:1::0;7920:79:0::1;8010:57;8019:6:::0;989:10;8041:25:::1;8060:6:::0;8041:16;:25:::1;:::i;:::-;8010:8;:57::i;:::-;-1:-1:-1::0;8087:4:0::1;::::0;7669:430;-1:-1:-1;;;;;7669:430:0:o;9002:248::-;9068:7;9107;;9096;:18;;9088:73;;;;-1:-1:-1;;;9088:73:0;;6539:2:1;9088:73:0;;;6521:21:1;6578:2;6558:18;;;6551:30;6617:34;6597:18;;;6590:62;-1:-1:-1;;;6668:18:1;;;6661:40;6718:19;;9088:73:0;6337:406:1;9088:73:0;9172:19;9195:10;:8;:10::i;:::-;9172:33;-1:-1:-1;9223:19:0;9172:33;9223:7;:19;:::i;:::-;9216:26;9002:248;-1:-1:-1;;;9002:248:0:o;9599:475::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9681:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9673:56;;;::::0;-1:-1:-1;;;9673:56:0;;7172:2:1;9673:56:0::1;::::0;::::1;7154:21:1::0;7211:2;7191:18;;;7184:30;7250:25;7230:18;;;7223:53;7293:18;;9673:56:0::1;6970:347:1::0;9673:56:0::1;9745:9;9740:327;9764:9;:16:::0;9760:20;::::1;9740:327;;;9822:7;-1:-1:-1::0;;;;;9806:23:0::1;:9;9816:1;9806:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;9806:12:0::1;:23:::0;9802:254:::1;;9865:9;9875:16:::0;;:20:::1;::::0;9894:1:::1;::::0;9875:20:::1;:::i;:::-;9865:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;9850:9:::1;:12:::0;;-1:-1:-1;;;;;9865:31:0;;::::1;::::0;9860:1;;9850:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;9850:46:0::1;-1:-1:-1::0;;;;;9850:46:0;;::::1;;::::0;;9915:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;9954:11:::1;:20:::0;;;;:28;;-1:-1:-1;;9954:28:0::1;::::0;;10001:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;10001:15:0;;;;;-1:-1:-1;;;;;;10001:15:0::1;::::0;;;;;9740:327:::1;9599:475:::0;:::o;9802:254::-:1;9782:3;;9740:327;;;;9599:475:::0;:::o;8788:206::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;8855:14:::1;:22:::0;;-1:-1:-1;;8888:19:0;-1:-1:-1;;8855:22:0;::::1;;8888:19:::0;;;;;;;8855:22:::1;8888:19:::0;::::1;;::::0;;;-1:-1:-1;8921:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;8938:13:0::1;::::0;:18;8921:35:::1;8918:68;;;8974:12;8958:13;:28:::0;8918:68:::1;8788:206:::0;:::o;10082:111::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10151:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;10151:34:0::1;10181:4;10151:34;::::0;;10082:111::o;8310:470::-;8400:7;8439;;8428;:18;;8420:62;;;;-1:-1:-1;;;8420:62:0;;7788:2:1;8420:62:0;;;7770:21:1;7827:2;7807:18;;;7800:30;7866:33;7846:18;;;7839:61;7917:18;;8420:62:0;7586:355:1;8420:62:0;8498:17;8493:280;;8532:28;8563:32;8574:7;8583:4;8589:5;8563:10;:32::i;:::-;8617:9;;-1:-1:-1;8610:16:0;;-1:-1:-1;8610:16:0;8493:280;8659:28;8690:32;8701:7;8710:4;8716:5;8690:10;:32::i;:::-;8744:17;;;;-1:-1:-1;8737:24:0;;-1:-1:-1;8737:24:0;8493:280;8310:470;;;;:::o;9258:333::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9341:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9340:21;9332:61;;;::::0;-1:-1:-1;;;9332:61:0;;8148:2:1;9332:61:0::1;::::0;::::1;8130:21:1::0;8187:2;8167:18;;;8160:30;8226:29;8206:18;;;8199:57;8273:18;;9332:61:0::1;7946:351:1::0;9332:61:0::1;-1:-1:-1::0;;;;;9407:16:0;::::1;9426:1;9407:16:::0;;;:7:::1;:16;::::0;;;;;:20;9404:108:::1;;-1:-1:-1::0;;;;;9483:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;9463:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;9444:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;9404:108:::1;-1:-1:-1::0;;;;;9522:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;9522:27:0::1;9545:4;9522:27:::0;;::::1;::::0;;;9560:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9560:23:0::1;::::0;;::::1;::::0;;9258:333::o;21267:183::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;21378:14:::1;4148:1:::0;21378:2:::1;:14;:::i;:::-;21369:23;::::0;:6;:23:::1;:::i;:::-;21355:11;:37:::0;21428:14:::1;4148:1:::0;21428:2:::1;:14;:::i;:::-;21418:24;::::0;:7;:24:::1;:::i;:::-;21403:12;:39:::0;-1:-1:-1;;21267:183:0:o;7119:198::-;-1:-1:-1;;;;;7209:20:0;;7185:7;7209:20;;;:11;:20;;;;;;;;7205:49;;;-1:-1:-1;;;;;;7238:16:0;;;;;:7;:16;;;;;;;7119:198::o;7205:49::-;-1:-1:-1;;;;;7292:16:0;;;;;;:7;:16;;;;;;7272:37;;:19;:37::i;1711:94::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;1776:21:::1;1794:1;1776:9;:21::i;:::-;1711:94::o:0;21142:101::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;21213:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;21213:22:0;;::::1;::::0;;;::::1;::::0;;21142:101::o;10323:293::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;10496:2:::1;10480:12:::0;10469:10;10453:15:::1;10458:10:::0;10453:4;:15:::1;:::i;:::-;:26;;;;:::i;:::-;:39;;;;:::i;:::-;:45;;10445:70;;;::::0;-1:-1:-1;;;10445:70:0;;10184:2:1;10445:70:0::1;::::0;::::1;10166:21:1::0;10223:2;10203:18;;;10196:30;-1:-1:-1;;;10242:18:1;;;10235:42;10294:18;;10445:70:0::1;9982:336:1::0;10445:70:0::1;10533:46;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;10525:5:::1;:54:::0;;;;;;;;;;;;;;;10595:13;::::1;::::0;-1:-1:-1;;10595:13:0::1;10323:293:::0;;;;:::o;8115:187::-;3959:14;;8213:4;;8192:10;;3959:14;;;:42;;-1:-1:-1;;;;;;3977:24:0;;;;;;:15;:24;;;;;;;;3959:42;3951:78;;;;-1:-1:-1;;;3951:78:0;;;;;;;:::i;:::-;8234:40:::1;8244:10;8256:9;8267:6;8234:9;:40::i;20766:114::-:0;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;20845:15:::1;:27:::0;;-1:-1:-1;;;;;;20845:27:0::1;-1:-1:-1::0;;;;;20845:27:0;;;::::1;::::0;;;::::1;::::0;;20766:114::o;21004:130::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;21113:13:::1;4148:1;21113:2;:13;:::i;:::-;21104:22;::::0;:6;:22:::1;:::i;:::-;21083:18;:43:::0;-1:-1:-1;21004:130:0:o;21462:123::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;21563:14:::1;4148:1:::0;21563:2:::1;:14;:::i;:::-;21554:23;::::0;:6;:23:::1;:::i;:::-;21537:14;:40:::0;-1:-1:-1;21462:123:0:o;10201:110::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10268:27:0::1;10298:5;10268:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10268:35:0::1;::::0;;10201:110::o;1813:192::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1902:22:0;::::1;1894:73;;;::::0;-1:-1:-1;;;1894:73:0;;10525:2:1;1894:73:0::1;::::0;::::1;10507:21:1::0;10564:2;10544:18;;;10537:30;10603:34;10583:18;;;10576:62;-1:-1:-1;;;10654:18:1;;;10647:36;10700:19;;1894:73:0::1;10323:402:1::0;1894:73:0::1;1978:19;1988:8;1978:9;:19::i;10628:301::-:0;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;10805:2:::1;10789:12:::0;10778:10;10762:15:::1;10767:10:::0;10762:4;:15:::1;:::i;:::-;:26;;;;:::i;:::-;:39;;;;:::i;:::-;:45;;10754:70;;;::::0;-1:-1:-1;;;10754:70:0;;10184:2:1;10754:70:0::1;::::0;::::1;10166:21:1::0;10223:2;10203:18;;;10196:30;-1:-1:-1;;;10242:18:1;;;10235:42;10294:18;;10754:70:0::1;9982:336:1::0;10754:70:0::1;10846:46;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;10834:9:::1;:58:::0;;;;;;;;;;;;;;;10908:13;::::1;::::0;-1:-1:-1;;10908:13:0::1;10628:301:::0;;;;:::o;14799:335::-;-1:-1:-1;;;;;14892:19:0;;14884:68;;;;-1:-1:-1;;;14884:68:0;;10932:2:1;14884:68:0;;;10914:21:1;10971:2;10951:18;;;10944:30;11010:34;10990:18;;;10983:62;-1:-1:-1;;;11061:18:1;;;11054:34;11105:19;;14884:68:0;10730:400:1;14884:68:0;-1:-1:-1;;;;;14971:21:0;;14963:68;;;;-1:-1:-1;;;14963:68:0;;11337:2:1;14963:68:0;;;11319:21:1;11376:2;11356:18;;;11349:30;11415:34;11395:18;;;11388:62;-1:-1:-1;;;11466:18:1;;;11459:32;11508:19;;14963:68:0;11135:398:1;14963:68:0;-1:-1:-1;;;;;15042:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15094:32;;1361:25:1;;;15094:32:0;;1334:18:1;15094:32:0;;;;;;;14799:335;;;:::o;15142:2122::-;-1:-1:-1;;;;;15230:18:0;;15222:68;;;;-1:-1:-1;;;15222:68:0;;11740:2:1;15222:68:0;;;11722:21:1;11779:2;11759:18;;;11752:30;11818:34;11798:18;;;11791:62;-1:-1:-1;;;11869:18:1;;;11862:35;11914:19;;15222:68:0;11538:401:1;15222:68:0;-1:-1:-1;;;;;15309:16:0;;15301:64;;;;-1:-1:-1;;;15301:64:0;;12146:2:1;15301:64:0;;;12128:21:1;12185:2;12165:18;;;12158:30;12224:34;12204:18;;;12197:62;-1:-1:-1;;;12275:18:1;;;12268:33;12318:19;;15301:64:0;11944:399:1;15301:64:0;15393:1;15384:6;:10;15376:64;;;;-1:-1:-1;;;15376:64:0;;12550:2:1;15376:64:0;;;12532:21:1;12589:2;12569:18;;;12562:30;12628:34;12608:18;;;12601:62;-1:-1:-1;;;12679:18:1;;;12672:39;12728:19;;15376:64:0;12348:405:1;15376:64:0;15469:15;15479:4;15469:9;:15::i;:::-;15459:6;:25;;15451:86;;;;-1:-1:-1;;;15451:86:0;;12960:2:1;15451:86:0;;;12942:21:1;12999:2;12979:18;;;12972:30;13038:34;13018:18;;;13011:62;-1:-1:-1;;;13089:18:1;;;13082:47;13146:19;;15451:86:0;12758:413:1;15451:86:0;-1:-1:-1;;;;;15562:24:0;;;;;;:18;:24;;;;;;;;15561:25;:52;;;;-1:-1:-1;;;;;;15591:22:0;;;;;;:18;:22;;;;;;;;15590:23;15561:52;15558:128;;;15637:14;;;;15629:45;;;;-1:-1:-1;;;15629:45:0;;13378:2:1;15629:45:0;;;13360:21:1;13417:2;13397:18;;;13390:30;-1:-1:-1;;;13436:18:1;;;13429:48;13494:18;;15629:45:0;13176:342:1;15629:45:0;-1:-1:-1;;;;;15710:24:0;;;;;;:18;:24;;;;;;;;15709:25;:52;;;;-1:-1:-1;;;;;;15739:22:0;;;;;;:18;:22;;;;;;;;15738:23;15709:52;:89;;;;-1:-1:-1;15781:13:0;;:17;;15797:1;15781:17;:::i;:::-;15765:12;:33;;15709:89;15706:180;;;15829:4;;-1:-1:-1;;;;;15829:4:0;;;15823:10;;;;15815:59;;;;-1:-1:-1;;;15815:59:0;;13725:2:1;15815:59:0;;;13707:21:1;13764:2;13744:18;;;13737:30;13803:34;13783:18;;;13776:62;-1:-1:-1;;;13854:18:1;;;13847:34;13898:19;;15815:59:0;13523:400:1;15815:59:0;15917:4;;-1:-1:-1;;;;;15909:12:0;;;15917:4;;15909:12;:39;;;;-1:-1:-1;;;;;;15926:22:0;;;;;;:18;:22;;;;;;;;15925:23;15909:39;:52;;;;-1:-1:-1;15953:8:0;;;;;;;15952:9;15909:52;15906:246;;;15995:11;;15985:6;:21;;15977:63;;;;-1:-1:-1;;;15977:63:0;;14130:2:1;15977:63:0;;;14112:21:1;14169:2;14149:18;;;14142:30;14208:31;14188:18;;;14181:59;14257:18;;15977:63:0;13928:353:1;15977:63:0;16089:14;;16079:6;16063:13;16073:2;16063:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16055:85;;;;-1:-1:-1;;;16055:85:0;;14488:2:1;16055:85:0;;;14470:21:1;;;14507:18;;;14500:30;14566:34;14546:18;;;14539:62;14618:18;;16055:85:0;14286:356:1;16055:85:0;16183:4;;-1:-1:-1;;;;;16175:12:0;;;16183:4;;16175:12;;;;:39;;-1:-1:-1;;;;;;16192:22:0;;;;;;:18;:22;;;;;;;;16191:23;16175:39;:68;;;;-1:-1:-1;;;;;;16219:24:0;;;;;;:18;:24;;;;;;;;16218:25;16175:68;:81;;;;-1:-1:-1;16248:8:0;;;;;;;16247:9;16175:81;16172:327;;;16290:12;;16280:6;:22;;16272:65;;;;-1:-1:-1;;;16272:65:0;;14849:2:1;16272:65:0;;;14831:21:1;14888:2;14868:18;;;14861:30;14927:32;14907:18;;;14900:60;14977:18;;16272:65:0;14647:354:1;16272:65:0;16361:4;;-1:-1:-1;;;;;16355:10:0;;;16361:4;;16355:10;16352:134;;16419:14;;16409:6;16393:13;16403:2;16393:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16385:85;;;;-1:-1:-1;;;16385:85:0;;14488:2:1;16385:85:0;;;14470:21:1;;;14507:18;;;14500:30;14566:34;14546:18;;;14539:62;14618:18;;16385:85:0;14286:356:1;16385:85:0;16566:14;4148:1;16566:2;:14;:::i;:::-;16560:20;;:2;:20;:::i;:::-;16550:6;16532:15;16542:4;16532:9;:15::i;:::-;:24;;;;:::i;:::-;:48;16529:111;;16624:15;16634:4;16624:9;:15::i;:::-;16615:6;16598:14;4148:1;16598:2;:14;:::i;:::-;16593:19;;:2;:19;:::i;:::-;:28;;;;:::i;:::-;:46;;;;:::i;:::-;16582:58;;;;:::i;:::-;;;16529:111;16670:12;16713:18;;16685:24;16703:4;16685:9;:24::i;:::-;16746:8;;-1:-1:-1;;16685:46:0;;-1:-1:-1;16746:8:0;;;;;16745:9;:24;;;;-1:-1:-1;16758:11:0;;;;;;;16745:24;:35;;;;;16773:7;16745:35;:51;;;;-1:-1:-1;16792:4:0;;-1:-1:-1;;;;;16784:12:0;;;16792:4;;16784:12;;16745:51;:80;;;;-1:-1:-1;;;;;;16801:24:0;;;;;;:18;:24;;;;;;;;16800:25;16745:80;:107;;;;-1:-1:-1;;;;;;16830:22:0;;;;;;:18;:22;;;;;;;;16829:23;16745:107;16742:261;;;16877:4;;-1:-1:-1;;;;;16877:4:0;;;16871:10;;;;16868:123;;16899:18;;16884:45;;;;;;;;16919:9;16884:45;;;;;;;;;;;;;;;;;;;;;;;;;;16899:18;16884:14;:45::i;:::-;16868:123;;;16965:18;;16950:41;;;;;;;;16985:5;16950:41;;;;;;;;;;;;;;;;;;;;;;;;;;16965:18;16950:14;:41::i;:::-;17076:8;;17028:4;;17013:12;;17076:8;;;;;;:36;;-1:-1:-1;;;;;;17088:24:0;;;;;;:18;:24;;;;;;;;17076:36;:62;;;-1:-1:-1;;;;;;17116:22:0;;;;;;:18;:22;;;;;;;;17076:62;17073:82;;;17150:5;17140:15;;17073:82;17175:4;;-1:-1:-1;;;;;17175:4:0;;;17169:10;;;;17166:28;;-1:-1:-1;17190:4:0;17166:28;17207:49;17222:4;17228:2;17232:6;17240:7;17249:6;17207:14;:49::i;:::-;15211:2053;;;15142:2122;;;:::o;14085:158::-;14126:7;14147:15;14164;14183:19;:17;:19::i;:::-;14146:56;;-1:-1:-1;14146:56:0;-1:-1:-1;14220:15:0;14146:56;;14220:15;:::i;:::-;14213:22;;;;14085:158;:::o;11967:474::-;12053:36;;:::i;:::-;12114:37;12126:7;12135;12144:6;12114:11;:37::i;:::-;12102:49;;12271:53;12284:9;12295:7;12304;12313:10;:8;:10::i;:::-;12271:12;:53::i;:::-;12247:20;;;12162:162;12225:20;;;12162:162;12209:14;;;12162:162;12182:25;;;12162:162;;;12362:44;12163:9;12386:7;12395:10;:8;:10::i;:::-;12362:12;:44::i;:::-;12336:22;;;12335:71;11967:474;;;;;:::o;2013:173::-;2069:16;2088:6;;-1:-1:-1;;;;;2105:17:0;;;-1:-1:-1;;;;;;2105:17:0;;;;;;2138:40;;2088:6;;;;;;;2138:40;;2069:16;2138:40;2058:128;2013:173;:::o;18505:1180::-;5791:8;:15;;-1:-1:-1;;5791:15:0;;;;;18660:16:::1;::::0;::::1;::::0;18643:14:::1;::::0;::::1;::::0;18626::::1;::::0;::::1;::::0;5791:15;;18660:16;18626:31:::1;::::0;::::1;:::i;:::-;:50;;;;:::i;:::-;18625:56;::::0;18680:1:::1;18625:56;:::i;:::-;18603:78;;18692:32;18762:11;18745:4;:14;;;18727:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;18692:81:::0;-1:-1:-1;18784:14:0::1;18801:42;18692:81:::0;18801:15;:42:::1;:::i;:::-;18784:59:::0;-1:-1:-1;18881:21:0::1;18915:24;18784:59:::0;18915:16:::1;:24::i;:::-;18952:20;18975:38;18999:14:::0;18975:21:::1;:38;:::i;:::-;18952:61;;19024:19;19075:4;:14;;;19061:11;:28;;;;:::i;:::-;19045:45;::::0;:12;:45:::1;:::i;:::-;19024:66;;19101:29;19147:4;:14;;;19133:11;:28;;;;:::i;:::-;19101:60:::0;-1:-1:-1;19177:25:0;;19174:158:::1;;19259:61;19272:24;19298:21;19259:12;:61::i;:::-;19385:14;::::0;::::1;::::0;19344:20:::1;::::0;19367:15:::1;:11:::0;19381:1:::1;19367:15;:::i;:::-;:32;;;;:::i;:::-;19344:55:::0;-1:-1:-1;19413:16:0;;19410:95:::1;;19453:15;::::0;19445:48:::1;::::0;-1:-1:-1;;;;;19453:15:0::1;19480:12:::0;19445:34:::1;:48::i;:::-;19558:16;::::0;::::1;::::0;19515:22:::1;::::0;19540:15:::1;:11:::0;19554:1:::1;19540:15;:::i;:::-;:34;;;;:::i;:::-;19515:59:::0;-1:-1:-1;19588:18:0;;19585:93:::1;;19630:9;::::0;19622:44:::1;::::0;-1:-1:-1;;;;;19630:9:0::1;19651:14:::0;19622:28:::1;:44::i;:::-;-1:-1:-1::0;;5829:8:0;:16;;-1:-1:-1;;5829:16:0;;;-1:-1:-1;;;;;;;;;18505:1180:0:o;17347:1150::-;17471:28;17502:36;17513:7;17522;17531:6;17502:10;:36::i;:::-;-1:-1:-1;;;;;17555:19:0;;;;;;:11;:19;;;;;;17471:67;;-1:-1:-1;17555:19:0;;17551:115;;;-1:-1:-1;;;;;17631:15:0;;;;;;:7;:15;;;;;;:23;;17647:7;;17631:23;:::i;:::-;-1:-1:-1;;;;;17613:15:0;;;;;;:7;:15;;;;;:41;17551:115;-1:-1:-1;;;;;17680:22:0;;;;;;:11;:22;;;;;;;;17676:130;;;17777:17;;;;-1:-1:-1;;;;;17758:18:0;;;;;;:7;:18;;;;;;:36;;17777:17;17758:36;:::i;:::-;-1:-1:-1;;;;;17737:18:0;;;;;;:7;:18;;;;;:57;17676:130;17852:9;;-1:-1:-1;;;;;17836:15:0;;17852:9;17836:15;;;:7;:15;;;;;;:25;;17852:9;17836:25;:::i;:::-;-1:-1:-1;;;;;17818:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;17912:17;;;17893:18;;;;;;;;;;:36;;17912:17;17893:36;:::i;:::-;-1:-1:-1;;;;;17872:18:0;;;;;;:7;:18;;;;;;;:57;;;;17953:6;;;:10;;;:24;;;17976:1;17967;:6;;;:10;17953:24;17950:56;;;17979:27;17991:1;:6;;;17999:1;:6;;;17979:11;:27::i;:::-;18035:1;18020;:12;;;:16;:36;;;;18055:1;18040;:12;;;:16;18020:36;18017:206;;;18073:41;18088:1;:12;;;18101:1;:12;;;18073:14;:41::i;:::-;18159:4;-1:-1:-1;;;;;18134:77:0;18143:6;-1:-1:-1;;;;;18134:77:0;;18196:1;:14;;;18181:1;:12;;;18166:1;:12;;;:27;;;;:::i;:::-;:44;;;;:::i;:::-;18134:77;;1361:25:1;;;1349:2;1334:18;18134:77:0;;;;;;;18017:206;18251:1;18236;:12;;;:16;:36;;;;18271:1;18256;:12;;;:16;18236:36;18233:83;;;18274:42;18289:1;:12;;;18303:1;:12;;;18274:14;:42::i;:::-;18347:1;18330;:14;;;:18;:40;;;;18369:1;18352;:14;;;:18;18330:40;18327:90;;;18372:45;18386:1;:14;;;18402:1;:14;;;18372:13;:45::i;:::-;18450:9;-1:-1:-1;;;;;18433:46:0;18442:6;-1:-1:-1;;;;;18433:46:0;;18461:1;:17;;;18433:46;;;;1361:25:1;;1349:2;1334:18;;1215:177;18433:46:0;;;;;;;;17458:1039;17347:1150;;;;;:::o;14251:540::-;14348:7;;14384;;14301;;;;;14402:279;14426:9;:16;14422:20;;14402:279;;;14492:7;14468;:21;14476:9;14486:1;14476:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14476:12:0;14468:21;;;;;;;;;;;;;:31;;:66;;;14527:7;14503;:21;14511:9;14521:1;14511:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14511:12:0;14503:21;;;;;;;;;;;;;:31;14468:66;14464:97;;;14544:7;;14553;;14536:25;;;;;;;14251:540;;:::o;14464:97::-;14594:7;:21;14602:9;14612:1;14602:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14602:12:0;14594:21;;;;;;;;;;;;;14586:29;;:7;:29;:::i;:::-;14576:39;;14648:7;:21;14656:9;14666:1;14656:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14656:12:0;14648:21;;;;;;;;;;;;;14640:29;;:7;:29;:::i;:::-;14630:39;-1:-1:-1;14444:3:0;;14402:279;;;;14713:7;;14705;;:15;;;;:::i;:::-;14695:7;:25;14691:56;;;14730:7;;14739;;14722:25;;;;;;14251:540;;:::o;14691:56::-;14766:7;;14775;;-1:-1:-1;14251:540:0;-1:-1:-1;14251:540:0:o;12449:632::-;12536:28;;:::i;:::-;12583:7;12579:86;;12605:17;;;:27;;;12645:8;;12579:86;12675:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12675:17:0;12706:6;12703:55;;;-1:-1:-1;12714:16:0;;;;;;;;12721:9;12714:16;;;;;;;;;;;;;;;;;;;;;;;;12703:55;;;-1:-1:-1;12746:12:0;;;;;;;;12753:5;12746:12;;;;;;;;;;;;;;;;;;;;;;;;12703:55;12796:8;;12805:3;;12788:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;12779:6;;;:29;12842:14;;;;12857:3;;12834:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12819:12;;;:41;12894:14;;;;12909:3;;12886:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12871:12;;;:41;12948:16;;;;12965:3;;12940:24;;:7;:24;:::i;:::-;:28;;;;:::i;:::-;12923:14;;;:45;;;13027:12;;;;13014;;;;13007:6;;;;12999:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:55;;;;:::i;:::-;12979:17;;;:75;-1:-1:-1;12449:632:0;;;;;:::o;13089:692::-;13215:15;;;;;13330:19;13338:11;13330:7;:19;:::i;:::-;13320:29;;13366:7;13362:69;;-1:-1:-1;13395:7:0;;-1:-1:-1;13413:1:0;;-1:-1:-1;13413:1:0;;-1:-1:-1;13413:1:0;13388:31;;13362:69;13457:11;13450:1;:6;;;:18;;;;:::i;:::-;13443:25;;13505:11;13492:1;:12;;;:24;;;;:::i;:::-;13479:37;;13553:11;13540:1;:12;;;:24;;;;:::i;:::-;13527:37;;13575:20;13613:11;13598:1;:14;;;:26;;;;:::i;:::-;13575:49;-1:-1:-1;13575:49:0;13678:10;13667;13654:12;13662:4;13654:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:47;;;;:::i;:::-;13635:66;;13712:61;13089:692;;;;;;;;;;:::o;13793:284::-;13902:20;13941:7;13937:47;;-1:-1:-1;13970:1:0;13963:9;;13937:47;14026:11;14011:1;:14;;;:26;;;;:::i;:::-;13996:41;13793:284;-1:-1:-1;;;;13793:284:0:o;20196:562::-;20346:16;;;20360:1;20346:16;;;;;;;;20322:21;;20346:16;;;;;;;;;;-1:-1:-1;20346:16:0;20322:40;;20391:4;20373;20378:1;20373:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20373:23:0;;;-1:-1:-1;;;;;20373:23:0;;;;;20417:6;;;;;;;;;-1:-1:-1;;;;;20417:6:0;-1:-1:-1;;;;;20417:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20407:4;20412:1;20407:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20407:23:0;;;:7;;;;;;;;;:23;20475:6;;20443:53;;20460:4;;20475:6;;;;20484:11;20443:8;:53::i;:::-;20535:6;;:215;;-1:-1:-1;;;20535:215:0;;:6;;;;-1:-1:-1;;;;;20535:6:0;;:57;;:215;;20607:11;;20633:1;;20677:4;;20704;;20724:15;;20535:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19693:495;19873:6;;19841:53;;19858:4;;19873:6;;;-1:-1:-1;;;;;19873:6:0;19882:11;19841:8;:53::i;:::-;19937:6;;-1:-1:-1;;;;;19937:6:0;;;;;:22;19967:9;20000:4;20020:11;20046:1;;20132:7;1534;1561:6;-1:-1:-1;;;;;1561:6:0;;1488:87;20132:7;19937:243;;;;;;-1:-1:-1;;;;;;19937:243:0;;;-1:-1:-1;;;;;16738:15:1;;;19937:243:0;;;16720:34:1;16770:18;;;16763:34;;;;16813:18;;;16806:34;;;;16856:18;;;16849:34;16920:15;;;16899:19;;;16892:44;20154:15:0;16952:19:1;;;16945:35;16654:19;;19937:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19693:495;;:::o;2956:317::-;3071:6;3046:21;:31;;3038:73;;;;-1:-1:-1;;;3038:73:0;;17504:2:1;3038:73:0;;;17486:21:1;17543:2;17523:18;;;17516:30;17582:31;17562:18;;;17555:59;17631:18;;3038:73:0;17302:353:1;3038:73:0;3125:12;3143:9;-1:-1:-1;;;;;3143:14:0;3165:6;3143:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3124:52;;;3195:7;3187:78;;;;-1:-1:-1;;;3187:78:0;;18072:2:1;3187:78:0;;;18054:21:1;18111:2;18091:18;;;18084:30;18150:34;18130:18;;;18123:62;18221:28;18201:18;;;18194:56;18267:19;;3187:78:0;17870:422:1;3187:78:0;3027:246;2956:317;;:::o;10937:123::-;11015:4;11005:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;11030:11:0;:22;;11048:4;;11030:11;:15;;:22;;11048:4;;11030:22;:::i;:::-;;;;-1:-1:-1;;;;10937:123:0:o;11068:284::-;11175:10;11151:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;11221:4:0;11201:26;;;;:11;:26;;;;;;;;11198:101;;;11269:4;11253:22;;;;:7;:22;;;;;:34;;11277:10;;11253:22;:34;;11277:10;;11253:34;:::i;:::-;;;;-1:-1:-1;;11198:101:0;11325:4;11309:22;;;;:7;:22;;;;;:35;;11334:10;;11309:22;:35;;11334:10;;11309:35;:::i;11360:284::-;11467:10;11443:11;:21;;;:34;;;;;;;:::i;11656:295::-;11768:12;11742:11;:23;;;:38;;;;;;;:::i;-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:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2110:180::-;2169:6;2222:2;2210:9;2201:7;2197:23;2193:32;2190:52;;;2238:1;2235;2228:12;2190:52;-1:-1:-1;2261:23:1;;2110:180;-1:-1:-1;2110:180:1:o;2484:160::-;2549:20;;2605:13;;2598:21;2588:32;;2578:60;;2634:1;2631;2624:12;2578:60;2484:160;;;:::o;2649:180::-;2705:6;2758:2;2746:9;2737:7;2733:23;2729:32;2726:52;;;2774:1;2771;2764:12;2726:52;2797:26;2813:9;2797:26;:::i;2834:248::-;2899:6;2907;2960:2;2948:9;2939:7;2935:23;2931:32;2928:52;;;2976:1;2973;2966:12;2928:52;3012:9;2999:23;2989:33;;3041:35;3072:2;3061:9;3057:18;3041:35;:::i;:::-;3031:45;;2834:248;;;;;:::o;3087:::-;3155:6;3163;3216:2;3204:9;3195:7;3191:23;3187:32;3184:52;;;3232:1;3229;3222:12;3184:52;-1:-1:-1;;3255:23:1;;;3325:2;3310:18;;;3297:32;;-1:-1:-1;3087:248:1:o;3944:385::-;4030:6;4038;4046;4054;4107:3;4095:9;4086:7;4082:23;4078:33;4075:53;;;4124:1;4121;4114:12;4075:53;-1:-1:-1;;4147:23:1;;;4217:2;4202:18;;4189:32;;-1:-1:-1;4268:2:1;4253:18;;4240:32;;4319:2;4304:18;4291:32;;-1:-1:-1;3944:385:1;-1:-1:-1;3944:385:1:o;4334:388::-;4402:6;4410;4463:2;4451:9;4442:7;4438:23;4434:32;4431:52;;;4479:1;4476;4469:12;4431:52;4518:9;4505:23;4537:31;4562:5;4537:31;:::i;:::-;4587:5;-1:-1:-1;4644:2:1;4629:18;;4616:32;4657:33;4616:32;4657:33;:::i;:::-;4709:7;4699:17;;;4334:388;;;;;:::o;4950:347::-;5152:2;5134:21;;;5191:2;5171:18;;;5164:30;5230:25;5225:2;5210:18;;5203:53;5288:2;5273:18;;4950:347::o;5302:356::-;5504:2;5486:21;;;5523:18;;;5516:30;5582:34;5577:2;5562:18;;5555:62;5649:2;5634:18;;5302:356::o;6072:127::-;6133:10;6128:3;6124:20;6121:1;6114:31;6164:4;6161:1;6154:15;6188:4;6185:1;6178:15;6204:128;6271:9;;;6292:11;;;6289:37;;;6306:18;;:::i;6748:217::-;6788:1;6814;6804:132;;6858:10;6853:3;6849:20;6846:1;6839:31;6893:4;6890:1;6883:15;6921:4;6918:1;6911:15;6804:132;-1:-1:-1;6950:9:1;;6748:217::o;7322:127::-;7383:10;7378:3;7374:20;7371:1;7364:31;7414:4;7411:1;7404:15;7438:4;7435:1;7428:15;7454:127;7515:10;7510:3;7506:20;7503:1;7496:31;7546:4;7543:1;7536:15;7570:4;7567:1;7560:15;8302:416;8391:1;8428:5;8391:1;8442:270;8463:7;8453:8;8450:21;8442:270;;;8522:4;8518:1;8514:6;8510:17;8504:4;8501:27;8498:53;;;8531:18;;:::i;:::-;8581:7;8571:8;8567:22;8564:55;;;8601:16;;;;8564:55;8680:22;;;;8640:15;;;;8442:270;;;8446:3;8302:416;;;;;:::o;8723:806::-;8772:5;8802:8;8792:80;;-1:-1:-1;8843:1:1;8857:5;;8792:80;8891:4;8881:76;;-1:-1:-1;8928:1:1;8942:5;;8881:76;8973:4;8991:1;8986:59;;;;9059:1;9054:130;;;;8966:218;;8986:59;9016:1;9007:10;;9030:5;;;9054:130;9091:3;9081:8;9078:17;9075:43;;;9098:18;;:::i;:::-;-1:-1:-1;;9154:1:1;9140:16;;9169:5;;8966:218;;9268:2;9258:8;9255:16;9249:3;9243:4;9240:13;9236:36;9230:2;9220:8;9217:16;9212:2;9206:4;9203:12;9199:35;9196:77;9193:159;;;-1:-1:-1;9305:19:1;;;9337:5;;9193:159;9384:34;9409:8;9403:4;9384:34;:::i;:::-;9454:6;9450:1;9446:6;9442:19;9433:7;9430:32;9427:58;;;9465:18;;:::i;:::-;9503:20;;8723:806;-1:-1:-1;;;8723:806:1:o;9534:140::-;9592:5;9621:47;9662:4;9652:8;9648:19;9642:4;9621:47;:::i;9679:168::-;9752:9;;;9783;;9800:15;;;9794:22;;9780:37;9770:71;;9821:18;;:::i;9852:125::-;9917:9;;;9938:10;;;9935:36;;;9951:18;;:::i;15138:251::-;15208:6;15261:2;15249:9;15240:7;15236:23;15232:32;15229:52;;;15277:1;15274;15267:12;15229:52;15309:9;15303:16;15328:31;15353:5;15328:31;:::i;15394:980::-;15656:4;15704:3;15693:9;15689:19;15735:6;15724:9;15717:25;15761:2;15799:6;15794:2;15783:9;15779:18;15772:34;15842:3;15837:2;15826:9;15822:18;15815:31;15866:6;15901;15895:13;15932:6;15924;15917:22;15970:3;15959:9;15955:19;15948:26;;16009:2;16001:6;15997:15;15983:29;;16030:1;16040:195;16054:6;16051:1;16048:13;16040:195;;;16119:13;;-1:-1:-1;;;;;16115:39:1;16103:52;;16210:15;;;;16175:12;;;;16151:1;16069:9;16040:195;;;-1:-1:-1;;;;;;;16291:32:1;;;;16286:2;16271:18;;16264:60;-1:-1:-1;;;16355:3:1;16340:19;16333:35;16252:3;15394:980;-1:-1:-1;;;15394:980:1:o;16991:306::-;17079:6;17087;17095;17148:2;17136:9;17127:7;17123:23;17119:32;17116:52;;;17164:1;17161;17154:12;17116:52;17193:9;17187:16;17177:26;;17243:2;17232:9;17228:18;17222:25;17212:35;;17287:2;17276:9;17272:18;17266:25;17256:35;;16991:306;;;;;:::o

Swarm Source

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