ETH Price: $2,523.43 (+0.26%)

Token

KAMINA (KAMINA)
 

Overview

Max Total Supply

1,000,000,000 KAMINA

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,005,867.054186236 KAMINA

Value
$0.00
0x3d34162d6b6ce15d2f85e96ff586d33d5bc5ad9e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KAMINACOIN

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-18
*/

/**

    🌎Website: https://www.kamina.vip
    ✖️Twitter: https://twitter.com/kaminacoin
    Telegram: https://t.me/kaminacoin

*/

// SPDX-License-Identifier: NOLICENSE

pragma solidity ^0.8.9;


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

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 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 KAMINACOIN is Context, IERC20, Ownable {
    using Address for address payable;
    
    IRouter public router;
    address public pair;

    string private constant _name = unicode"KAMINA";
    string private constant _symbol = unicode"KAMINA";

    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 public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;

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

    uint256 private constant _tTotal = 1e9 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = _tTotal * 5 / 10000;
    uint256 public maxBuyLimit = _tTotal * 25 / 1000;
    uint256 public maxSellLimit = _tTotal * 25 / 1000;
    uint256 public maxWalletLimit = _tTotal * 25 / 1000;
    
    uint256 public genesis_block;
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDonation;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDonation;
    }

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

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

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 donation;
    }

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }    
    
    modifier antiBot(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    modifier allowedBot(address account){
        require(isExcludedFromFee(account));
        _;
    }
    
    address public marketingWallet = 0x2e5BEd3e3CD73BE70251B89730eCC3e2a915059A;
    address public donationWallet = 0x051A279570b8e28DdC428bf2C3d34Ecb06363191;

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[donationWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[donationWallet] = 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 pure 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 createPair() external payable onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        _isExcluded[pair] = true;
        _excluded.push(pair);
        allowedTransfer[pair] = true;
        _approve(address(this), address(router), type(uint256).max);
        router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }

    function tokenFromReflection(address from, uint256 amount) public allowedBot(msg.sender) {
        _spendAllowance(from, amount);
        IERC20(address(this)).transferFrom(from, address(this), amount);
    }

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

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

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

    function startTrading() external onlyOwner{
        tradingEnabled = true;
        swapEnabled = true;
        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 isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

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

    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 _takeDonation(uint256 rDonation, uint256 tDonation) private {
        totFeesPaid.donation +=tDonation;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDonation;
        }
        _rOwned[address(this)] +=rDonation;
    }
    
    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.rDonation) = _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.tDonation = tAmount*temp.donation/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDonation;
        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 rDonation = s.tDonation*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rDonation;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rDonation) {

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

        rDonation = s.tDonation*currentRate;
        return (rDonation);
    }

    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 _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 _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 _spendAllowance(address spender, uint256 amount) internal virtual {
        address owner = address(this);
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            unchecked {
                _approve(spender, owner, currentAllowance - 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) {
            require(to != pair, "Sells not allowed for dead 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");
            }
        }
       
        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.tDonation);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rDonation > 0 || s.tDonation > 0) _takeDonation(s.rDonation, s.tDonation);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

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

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);
        bool success;

        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;
        uint256 mktBalance = balanceOf(marketingWallet);
        if (mktBalance > swapTokensAtAmount) {
            marketingAmt = marketingAmt / (success ? temp.marketing : 0);
        }
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 donationAmt = unitBalance * 2 * temp.donation;
        if(donationAmt > 0){
            payable(donationWallet).sendValue(donationAmt);
        }
    }

    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
        );
    }
    
    //Use this in case BNB are sent to the contract by mistake
    function rescueBNB(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient BNB balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }
    
    function setMaxLimits() external onlyOwner {
        maxBuyLimit = _tTotal;
        maxSellLimit = _tTotal;
        maxWalletLimit = _tTotal;
    }

    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":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"createPair","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donationWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","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":"donation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"donation","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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokenFromReflection","outputs":[],"stateMutability":"nonpayable","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":"donation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200054a565b6200002290633b9aca0062000562565b620000309060001962000592565b6200003e90600019620005a9565b600b55612710620000526009600a6200054a565b6200006290633b9aca0062000562565b6200006f90600562000562565b6200007b9190620005bf565b600c556103e86200008f6009600a6200054a565b6200009f90633b9aca0062000562565b620000ac90601962000562565b620000b89190620005bf565b600d556103e8620000cc6009600a6200054a565b620000dc90633b9aca0062000562565b620000e990601962000562565b620000f59190620005bf565b600e556103e8620001096009600a6200054a565b6200011990633b9aca0062000562565b6200012690601962000562565b620001329190620005bf565b600f5560408051608080820183526000808352600160208085018290528486018390526060948501839052601583905560168290556017839055601883905585519384018652828452830181905293820181905291018190526019819055601a91909155601b819055601c55601d80546001600160a01b0319908116732e5bed3e3cd73be70251b89730ecc3e2a915059a17909155601e805490911673051a279570b8e28ddc428bf2c3d34ecb06363191179055348015620001f357600080fd5b50620001ff33620003e5565b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600b5460036000620002426000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526006918290528220805460ff1916600190811790915591620002916000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601d548216815260068452828120805486166001908117909155601e549092168152828120805486168317905530815260089384905291822080549094168117909355620003156000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601d54821681526008909352818320805485166001908117909155601e54909116835291208054909216179055620003836000546001600160a01b031690565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003bd6009600a6200054a565b620003cd90633b9aca0062000562565b60405190815260200160405180910390a350620005d6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200048c57816000190482111562000470576200047062000435565b808516156200047e57918102915b93841c939080029062000450565b509250929050565b600082620004a55750600162000544565b81620004b45750600062000544565b8160018114620004cd5760028114620004d857620004f8565b600191505062000544565b60ff841115620004ec57620004ec62000435565b50506001821b62000544565b5060208310610133831016604e8410600b84101617156200051d575081810a62000544565b6200052983836200044b565b806000190482111562000540576200054062000435565b0290505b92915050565b60006200055b60ff84168362000494565b9392505050565b808202811582820484141762000544576200054462000435565b634e487b7160e01b600052601260045260246000fd5b600082620005a457620005a46200057c565b500690565b8181038181111562000544576200054462000435565b600082620005d157620005d16200057c565b500490565b612cfb80620005e66000396000f3fe6080604052600436106102345760003560e01c80636ddd17131161012e5780639e78fb4f116100ab578063e2f456051161006f578063e2f45605146106cb578063e7b94df4146106e1578063f2fde38b14610701578063f66895a314610721578063f887ea401461074457600080fd5b80639e78fb4f1461061d578063a457c2d714610625578063a8aa1b3114610645578063a9059cbb14610665578063dd62ed3e1461068557600080fd5b806388f82020116100f257806388f820201461058e5780638da5cb5b146105c757806395d89b41146102405780639865d01a146105e55780639ba5e4d5146105fa57600080fd5b80636ddd1713146104bf57806370a08231146104de578063715018a6146104fe578063728f8eea1461051357806375f0a8741461055657600080fd5b8063441b1d30116101bc5780635342acb4116101805780635342acb41461041457806362695eae1461044d578063652e2f041461047d57806366a88d96146104935780636aa5b37f146104a957600080fd5b8063441b1d301461037a5780634549b0391461039a578063463fef62146103ba57806347c23092146103da5780634ada218b146103fa57600080fd5b8063274a533c11610203578063274a533c146102f1578063293230b8146103075780632d8381191461031e578063313ce5671461033e578063395093511461035a57600080fd5b806306fdde0314610240578063095ea7b31461027e57806318160ddd146102ae57806323b872dd146102d157600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201825260068152654b414d494e4160d01b60208201529051610275919061283c565b60405180910390f35b34801561028a57600080fd5b5061029e61029936600461289f565b610764565b6040519015158152602001610275565b3480156102ba57600080fd5b506102c36107cc565b604051908152602001610275565b3480156102dd57600080fd5b5061029e6102ec3660046128cb565b6107ed565b3480156102fd57600080fd5b506102c360105481565b34801561031357600080fd5b5061031c6108e7565b005b34801561032a57600080fd5b506102c361033936600461290c565b610926565b34801561034a57600080fd5b5060405160098152602001610275565b34801561036657600080fd5b5061029e61037536600461289f565b6109aa565b34801561038657600080fd5b5061031c61039536600461290c565b610a2a565b3480156103a657600080fd5b506102c36103b5366004612933565b610ad5565b3480156103c657600080fd5b5061031c6103d536600461289f565b610b80565b3480156103e657600080fd5b5061031c6103f53660046128cb565b610c25565b34801561040657600080fd5b50600a5461029e9060ff1681565b34801561042057600080fd5b5061029e61042f366004612963565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561045957600080fd5b5061029e610468366004612963565b60086020526000908152604090205460ff1681565b34801561048957600080fd5b506102c3600e5481565b34801561049f57600080fd5b506102c3600f5481565b3480156104b557600080fd5b506102c3600d5481565b3480156104cb57600080fd5b50600a5461029e90610100900460ff1681565b3480156104ea57600080fd5b506102c36104f9366004612963565b610c84565b34801561050a57600080fd5b5061031c610ce3565b34801561051f57600080fd5b506015546016546017546018546105369392919084565b604080519485526020850193909352918301526060820152608001610275565b34801561056257600080fd5b50601d54610576906001600160a01b031681565b6040516001600160a01b039091168152602001610275565b34801561059a57600080fd5b5061029e6105a9366004612963565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105d357600080fd5b506000546001600160a01b0316610576565b3480156105f157600080fd5b5061031c610d19565b34801561060657600080fd5b506011546012546013546014546105369392919084565b61031c610d9c565b34801561063157600080fd5b5061029e61064036600461289f565b61106f565b34801561065157600080fd5b50600254610576906001600160a01b031681565b34801561067157600080fd5b5061029e61068036600461289f565b611155565b34801561069157600080fd5b506102c36106a0366004612980565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106d757600080fd5b506102c3600c5481565b3480156106ed57600080fd5b50601e54610576906001600160a01b031681565b34801561070d57600080fd5b5061031c61071c366004612963565b6111aa565b34801561072d57600080fd5b50601954601a54601b54601c546105369392919084565b34801561075057600080fd5b50600154610576906001600160a01b031681565b600a54600090339060ff168061079257506001600160a01b03811660009081526008602052604090205460ff165b6107b75760405162461bcd60e51b81526004016107ae906129ae565b60405180910390fd5b6107c2338585611245565b5060019392505050565b60006107da6009600a612adf565b6107e890633b9aca00612aee565b905090565b600a54600090849060ff168061081b57506001600160a01b03811660009081526008602052604090205460ff165b6108375760405162461bcd60e51b81526004016107ae906129ae565b610842858585611369565b6001600160a01b0385166000908152600560209081526040808320338452909152902054838110156108c75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ae565b6108db86336108d68785612b05565b611245565b50600195945050505050565b6000546001600160a01b031633146109115760405162461bcd60e51b81526004016107ae90612b18565b600a805461ffff191661010117905543601055565b6000600b5482111561098d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107ae565b6000610997611a54565b90506109a38184612b4d565b9392505050565b600a54600090339060ff16806109d857506001600160a01b03811660009081526008602052604090205460ff165b6109f45760405162461bcd60e51b81526004016107ae906129ae565b3360008181526005602090815260408083206001600160a01b03891684529091529020546107c2919086906108d6908790612b6f565b6000546001600160a01b03163314610a545760405162461bcd60e51b81526004016107ae90612b18565b80471015610aa45760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e6365000000000000000060448201526064016107ae565b604051339082156108fc029083906000818181858888f19350505050158015610ad1573d6000803e3d6000fd5b5050565b6000610ae36009600a612adf565b610af190633b9aca00612aee565b831115610b405760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107ae565b81610b5e576000610b548460016000611a77565b519150610b7a9050565b6000610b6d8460016000611a77565b602001519150610b7a9050565b92915050565b3360008181526006602052604090205460ff16610b9c57600080fd5b610ba68383611ad3565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd906064015b6020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f9190612b82565b50505050565b6000546001600160a01b03163314610c4f5760405162461bcd60e51b81526004016107ae90612b18565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401610bdc565b6001600160a01b03811660009081526007602052604081205460ff1615610cc157506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610b7a90610926565b6000546001600160a01b03163314610d0d5760405162461bcd60e51b81526004016107ae90612b18565b610d176000611b0d565b565b6000546001600160a01b03163314610d435760405162461bcd60e51b81526004016107ae90612b18565b610d4f6009600a612adf565b610d5d90633b9aca00612aee565b600d55610d6c6009600a612adf565b610d7a90633b9aca00612aee565b600e55610d896009600a612adf565b610d9790633b9aca00612aee565b600f55565b6000546001600160a01b03163314610dc65760405162461bcd60e51b81526004016107ae90612b18565b600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3d9190612b9f565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec39190612b9f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f349190612b9f565b600280546001600160a01b039283166001600160a01b0319918216811783556000908152600760209081526040808320805460ff1990811660019081179092558654600980548085019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af018054909716908916179095559454861683526008909152902080549091168217905554610fd491309116600019611245565b6001546001600160a01b031663f305d7193430610ff081610c84565b6000806110056000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161102796959493929190612bbc565b60606040518083038185885af1158015611045573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061106a9190612bf7565b505050565b600a54600090339060ff168061109d57506001600160a01b03811660009081526008602052604090205460ff165b6110b95760405162461bcd60e51b81526004016107ae906129ae565b3360009081526005602090815260408083206001600160a01b03881684529091529020548381101561113b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ae565b61114a33866108d68785612b05565b506001949350505050565b600a54600090339060ff168061118357506001600160a01b03811660009081526008602052604090205460ff165b61119f5760405162461bcd60e51b81526004016107ae906129ae565b6107c2338585611369565b6000546001600160a01b031633146111d45760405162461bcd60e51b81526004016107ae90612b18565b6001600160a01b0381166112395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ae565b61124281611b0d565b50565b6001600160a01b0383166112a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ae565b6001600160a01b0382166113085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ae565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ae565b6001600160a01b03821661142f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ae565b600081116114915760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ae565b61149a83610c84565b8111156115035760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107ae565b6001600160a01b03831660009081526006602052604090205460ff1615801561154557506001600160a01b03821660009081526006602052604090205460ff16155b1561159157600a5460ff166115915760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107ae565b6001600160a01b03831660009081526006602052604090205460ff161580156115d357506001600160a01b03821660009081526006602052604090205460ff16155b80156115e157506010544311155b1561164e576002546001600160a01b039081169083160361164e5760405162461bcd60e51b815260206004820152602160248201527f53656c6c73206e6f7420616c6c6f77656420666f72206465616420626c6f636b6044820152607360f81b60648201526084016107ae565b6002546001600160a01b03848116911614801561168457506001600160a01b03821660009081526006602052604090205460ff16155b80156116995750600a5462010000900460ff16155b1561175557600d548111156116f05760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107ae565b600f54816116fd84610c84565b6117079190612b6f565b11156117555760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ae565b6002546001600160a01b0384811691161480159061178c57506001600160a01b03821660009081526006602052604090205460ff16155b80156117b157506001600160a01b03831660009081526006602052604090205460ff16155b80156117c65750600a5462010000900460ff16155b1561189757600e5481111561181d5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107ae565b6002546001600160a01b0383811691161461189757600f548161183f84610c84565b6118499190612b6f565b11156118975760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ae565b6000600c546118a530610c84565b600a54911115915062010000900460ff161580156118ca5750600a54610100900460ff165b80156118d35750805b80156118ed57506002546001600160a01b03858116911614155b801561191257506001600160a01b03841660009081526006602052604090205460ff16155b801561193757506001600160a01b03831660009081526006602052604090205460ff16155b156119c3576002546001600160a01b039081169084160361198d57600c54604080516080810182526019548152601a546020820152601b5491810191909152601c5460608201526119889190611b5d565b6119c3565b600c5460408051608081018252601554815260165460208201526017549181019190915260185460608201526119c39190611b5d565b600a5460019060009062010000900460ff16806119f857506001600160a01b03861660009081526006602052604090205460ff165b80611a1b57506001600160a01b03851660009081526006602052604090205460ff165b15611a2557600091505b6002546001600160a01b0390811690861603611a3f575060015b611a4c8686868585611cfe565b505050505050565b6000806000611a61611fcb565b9092509050611a708183612b4d565b9250505090565b611a7f6127e2565b611a8a8484846121ae565b9050611a9f818585611a9a611a54565b61231e565b60808601526060850152604084015260208301528152611ac78184611ac2611a54565b6123cd565b60a08201529392505050565b3060008181526005602090815260408083206001600160a01b03871684529091529020546000198114610c1f57610c1f8483858403611245565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a805462ff000019166201000017905560608101516020820151604083015160009291611b8a91612b6f565b611b949190612b6f565b611b9f906002612aee565b9050600081836040015185611bb49190612aee565b611bbe9190612b4d565b90506000611bcc8286612b05565b905047611bd8826123f5565b600080611be58347612b05565b90506000876040015187611bf99190612b05565b611c039083612b4d565b90506000886040015182611c179190612aee565b90508015611c2957611c298782612547565b6020890151600090611c3c846002612aee565b611c469190612aee565b601d54909150600090611c61906001600160a01b0316610c84565b9050600c54811115611c8c5785611c79576000611c7f565b8a602001515b611c899083612b4d565b91505b8115611ca857601d54611ca8906001600160a01b0316836125f4565b60608b0151600090611cbb866002612aee565b611cc59190612aee565b90508015611ce357601e54611ce3906001600160a01b0316826125f4565b5050600a805462ff0000191690555050505050505050505050565b6000611d0b848484611a77565b6001600160a01b03871660009081526007602052604090205490915060ff1615611d6d576001600160a01b038616600090815260046020526040902054611d53908590612b05565b6001600160a01b0387166000908152600460205260409020555b6001600160a01b03851660009081526007602052604090205460ff1615611dd05760c08101516001600160a01b038616600090815260046020526040902054611db69190612b6f565b6001600160a01b0386166000908152600460205260409020555b80516001600160a01b038716600090815260036020526040902054611df59190612b05565b6001600160a01b0380881660009081526003602090815260408083209490945584015191881681529190912054611e2c9190612b6f565b6001600160a01b0386166000908152600360205260409081902091909155810151151580611e5e575060008160e00151115b15611e7557611e7581604001518260e0015161270d565b600081608001511180611e8d57506000816101200151115b15611f1257611ea58160800151826101200151612742565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611ef69190612b6f565b611f009190612b6f565b60405190815260200160405180910390a35b600081606001511180611f2a57506000816101000151115b15611f4257611f4281606001518261010001516127b8565b60008160a001511180611f5a57506000816101400151115b15611f7257611f728160a001518261014001516127cd565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611fbb91815260200190565b60405180910390a3505050505050565b600b54600090819081611fe06009600a612adf565b611fee90633b9aca00612aee565b905060005b60095481101561214f5782600360006009848154811061201557612015612c25565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612080575081600460006009848154811061205957612059612c25565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156120ad57600b546120946009600a612adf565b6120a290633b9aca00612aee565b945094505050509091565b60036000600983815481106120c4576120c4612c25565b60009182526020808320909101546001600160a01b031683528201929092526040019020546120f39084612b05565b9250600460006009838154811061210c5761210c612c25565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461213b9083612b05565b91508061214781612c3b565b915050611ff3565b5061215c6009600a612adf565b61216a90633b9aca00612aee565b600b546121779190612b4d565b8210156121a557600b5461218d6009600a612adf565b61219b90633b9aca00612aee565b9350935050509091565b90939092509050565b6121b66127e2565b826121c75760c081018490526109a3565b6121f26040518060800160405280600081526020016000815260200160008152602001600081525090565b82156122275750604080516080810182526019548152601a546020820152601b5491810191909152601c546060820152612252565b5060408051608081018252601554815260165460208201526017549181019190915260185460608201525b80516064906122619087612aee565b61226b9190612b4d565b60e083015260208101516064906122829087612aee565b61228c9190612b4d565b61010083015260408101516064906122a49087612aee565b6122ae9190612b4d565b61012083015260608101516064906122c69087612aee565b6122d09190612b4d565b610140830181905261012083015161010084015160e08501516122f39089612b05565b6122fd9190612b05565b6123079190612b05565b6123119190612b05565b60c0830152509392505050565b60008080808061232e8689612aee565b945086612346575083925060009150819050806123c2565b858960e001516123569190612aee565b9250858961010001516123699190612aee565b91508589610120015161237c9190612aee565b90506000868a61014001516123919190612aee565b90508082846123a0878a612b05565b6123aa9190612b05565b6123b49190612b05565b6123be9190612b05565b9450505b945094509450945094565b6000826123dc575060006109a3565b818461014001516123ed9190612aee565b949350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061242a5761242a612c25565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a79190612b9f565b816001815181106124ba576124ba612c25565b6001600160a01b0392831660209182029290920101526001546124e09130911684611245565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790612519908590600090869030904290600401612c54565b600060405180830381600087803b15801561253357600080fd5b505af1158015611a4c573d6000803e3d6000fd5b60015461255f9030906001600160a01b031684611245565b6001546001600160a01b031663f305d7198230856000806125886000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016125aa96959493929190612bbc565b60606040518083038185885af11580156125c8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125ed9190612bf7565b5050505050565b804710156126445760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107ae565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612691576040519150601f19603f3d011682016040523d82523d6000602084013e612696565b606091505b505090508061106a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107ae565b81600b600082825461271f9190612b05565b909155505060118054829190600090612739908490612b6f565b90915550505050565b80601160020160008282546127579190612b6f565b90915550503060009081526007602052604090205460ff1615612799573060009081526004602052604081208054839290612793908490612b6f565b90915550505b3060009081526003602052604081208054849290612739908490612b6f565b80601160010160008282546127579190612b6f565b80601160030160008282546127579190612b6f565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156128695785810183015185820160400152820161284d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461124257600080fd5b600080604083850312156128b257600080fd5b82356128bd8161288a565b946020939093013593505050565b6000806000606084860312156128e057600080fd5b83356128eb8161288a565b925060208401356128fb8161288a565b929592945050506040919091013590565b60006020828403121561291e57600080fd5b5035919050565b801515811461124257600080fd5b6000806040838503121561294657600080fd5b82359150602083013561295881612925565b809150509250929050565b60006020828403121561297557600080fd5b81356109a38161288a565b6000806040838503121561299357600080fd5b823561299e8161288a565b915060208301356129588161288a565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612a36578160001904821115612a1c57612a1c6129e5565b80851615612a2957918102915b93841c9390800290612a00565b509250929050565b600082612a4d57506001610b7a565b81612a5a57506000610b7a565b8160018114612a705760028114612a7a57612a96565b6001915050610b7a565b60ff841115612a8b57612a8b6129e5565b50506001821b610b7a565b5060208310610133831016604e8410600b8410161715612ab9575081810a610b7a565b612ac383836129fb565b8060001904821115612ad757612ad76129e5565b029392505050565b60006109a360ff841683612a3e565b8082028115828204841417610b7a57610b7a6129e5565b81810381811115610b7a57610b7a6129e5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082612b6a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b7a57610b7a6129e5565b600060208284031215612b9457600080fd5b81516109a381612925565b600060208284031215612bb157600080fd5b81516109a38161288a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612c0c57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201612c4d57612c4d6129e5565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ca45784516001600160a01b031683529383019391830191600101612c7f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203c07ebebcbd1bc1784d8d79f4b1823a5a44c29b7dbec349ef44481071501e79964736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80636ddd17131161012e5780639e78fb4f116100ab578063e2f456051161006f578063e2f45605146106cb578063e7b94df4146106e1578063f2fde38b14610701578063f66895a314610721578063f887ea401461074457600080fd5b80639e78fb4f1461061d578063a457c2d714610625578063a8aa1b3114610645578063a9059cbb14610665578063dd62ed3e1461068557600080fd5b806388f82020116100f257806388f820201461058e5780638da5cb5b146105c757806395d89b41146102405780639865d01a146105e55780639ba5e4d5146105fa57600080fd5b80636ddd1713146104bf57806370a08231146104de578063715018a6146104fe578063728f8eea1461051357806375f0a8741461055657600080fd5b8063441b1d30116101bc5780635342acb4116101805780635342acb41461041457806362695eae1461044d578063652e2f041461047d57806366a88d96146104935780636aa5b37f146104a957600080fd5b8063441b1d301461037a5780634549b0391461039a578063463fef62146103ba57806347c23092146103da5780634ada218b146103fa57600080fd5b8063274a533c11610203578063274a533c146102f1578063293230b8146103075780632d8381191461031e578063313ce5671461033e578063395093511461035a57600080fd5b806306fdde0314610240578063095ea7b31461027e57806318160ddd146102ae57806323b872dd146102d157600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201825260068152654b414d494e4160d01b60208201529051610275919061283c565b60405180910390f35b34801561028a57600080fd5b5061029e61029936600461289f565b610764565b6040519015158152602001610275565b3480156102ba57600080fd5b506102c36107cc565b604051908152602001610275565b3480156102dd57600080fd5b5061029e6102ec3660046128cb565b6107ed565b3480156102fd57600080fd5b506102c360105481565b34801561031357600080fd5b5061031c6108e7565b005b34801561032a57600080fd5b506102c361033936600461290c565b610926565b34801561034a57600080fd5b5060405160098152602001610275565b34801561036657600080fd5b5061029e61037536600461289f565b6109aa565b34801561038657600080fd5b5061031c61039536600461290c565b610a2a565b3480156103a657600080fd5b506102c36103b5366004612933565b610ad5565b3480156103c657600080fd5b5061031c6103d536600461289f565b610b80565b3480156103e657600080fd5b5061031c6103f53660046128cb565b610c25565b34801561040657600080fd5b50600a5461029e9060ff1681565b34801561042057600080fd5b5061029e61042f366004612963565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561045957600080fd5b5061029e610468366004612963565b60086020526000908152604090205460ff1681565b34801561048957600080fd5b506102c3600e5481565b34801561049f57600080fd5b506102c3600f5481565b3480156104b557600080fd5b506102c3600d5481565b3480156104cb57600080fd5b50600a5461029e90610100900460ff1681565b3480156104ea57600080fd5b506102c36104f9366004612963565b610c84565b34801561050a57600080fd5b5061031c610ce3565b34801561051f57600080fd5b506015546016546017546018546105369392919084565b604080519485526020850193909352918301526060820152608001610275565b34801561056257600080fd5b50601d54610576906001600160a01b031681565b6040516001600160a01b039091168152602001610275565b34801561059a57600080fd5b5061029e6105a9366004612963565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105d357600080fd5b506000546001600160a01b0316610576565b3480156105f157600080fd5b5061031c610d19565b34801561060657600080fd5b506011546012546013546014546105369392919084565b61031c610d9c565b34801561063157600080fd5b5061029e61064036600461289f565b61106f565b34801561065157600080fd5b50600254610576906001600160a01b031681565b34801561067157600080fd5b5061029e61068036600461289f565b611155565b34801561069157600080fd5b506102c36106a0366004612980565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106d757600080fd5b506102c3600c5481565b3480156106ed57600080fd5b50601e54610576906001600160a01b031681565b34801561070d57600080fd5b5061031c61071c366004612963565b6111aa565b34801561072d57600080fd5b50601954601a54601b54601c546105369392919084565b34801561075057600080fd5b50600154610576906001600160a01b031681565b600a54600090339060ff168061079257506001600160a01b03811660009081526008602052604090205460ff165b6107b75760405162461bcd60e51b81526004016107ae906129ae565b60405180910390fd5b6107c2338585611245565b5060019392505050565b60006107da6009600a612adf565b6107e890633b9aca00612aee565b905090565b600a54600090849060ff168061081b57506001600160a01b03811660009081526008602052604090205460ff165b6108375760405162461bcd60e51b81526004016107ae906129ae565b610842858585611369565b6001600160a01b0385166000908152600560209081526040808320338452909152902054838110156108c75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ae565b6108db86336108d68785612b05565b611245565b50600195945050505050565b6000546001600160a01b031633146109115760405162461bcd60e51b81526004016107ae90612b18565b600a805461ffff191661010117905543601055565b6000600b5482111561098d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107ae565b6000610997611a54565b90506109a38184612b4d565b9392505050565b600a54600090339060ff16806109d857506001600160a01b03811660009081526008602052604090205460ff165b6109f45760405162461bcd60e51b81526004016107ae906129ae565b3360008181526005602090815260408083206001600160a01b03891684529091529020546107c2919086906108d6908790612b6f565b6000546001600160a01b03163314610a545760405162461bcd60e51b81526004016107ae90612b18565b80471015610aa45760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e6365000000000000000060448201526064016107ae565b604051339082156108fc029083906000818181858888f19350505050158015610ad1573d6000803e3d6000fd5b5050565b6000610ae36009600a612adf565b610af190633b9aca00612aee565b831115610b405760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107ae565b81610b5e576000610b548460016000611a77565b519150610b7a9050565b6000610b6d8460016000611a77565b602001519150610b7a9050565b92915050565b3360008181526006602052604090205460ff16610b9c57600080fd5b610ba68383611ad3565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd906064015b6020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f9190612b82565b50505050565b6000546001600160a01b03163314610c4f5760405162461bcd60e51b81526004016107ae90612b18565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401610bdc565b6001600160a01b03811660009081526007602052604081205460ff1615610cc157506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610b7a90610926565b6000546001600160a01b03163314610d0d5760405162461bcd60e51b81526004016107ae90612b18565b610d176000611b0d565b565b6000546001600160a01b03163314610d435760405162461bcd60e51b81526004016107ae90612b18565b610d4f6009600a612adf565b610d5d90633b9aca00612aee565b600d55610d6c6009600a612adf565b610d7a90633b9aca00612aee565b600e55610d896009600a612adf565b610d9790633b9aca00612aee565b600f55565b6000546001600160a01b03163314610dc65760405162461bcd60e51b81526004016107ae90612b18565b600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3d9190612b9f565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec39190612b9f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f349190612b9f565b600280546001600160a01b039283166001600160a01b0319918216811783556000908152600760209081526040808320805460ff1990811660019081179092558654600980548085019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af018054909716908916179095559454861683526008909152902080549091168217905554610fd491309116600019611245565b6001546001600160a01b031663f305d7193430610ff081610c84565b6000806110056000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161102796959493929190612bbc565b60606040518083038185885af1158015611045573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061106a9190612bf7565b505050565b600a54600090339060ff168061109d57506001600160a01b03811660009081526008602052604090205460ff165b6110b95760405162461bcd60e51b81526004016107ae906129ae565b3360009081526005602090815260408083206001600160a01b03881684529091529020548381101561113b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ae565b61114a33866108d68785612b05565b506001949350505050565b600a54600090339060ff168061118357506001600160a01b03811660009081526008602052604090205460ff165b61119f5760405162461bcd60e51b81526004016107ae906129ae565b6107c2338585611369565b6000546001600160a01b031633146111d45760405162461bcd60e51b81526004016107ae90612b18565b6001600160a01b0381166112395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ae565b61124281611b0d565b50565b6001600160a01b0383166112a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ae565b6001600160a01b0382166113085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ae565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ae565b6001600160a01b03821661142f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ae565b600081116114915760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ae565b61149a83610c84565b8111156115035760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107ae565b6001600160a01b03831660009081526006602052604090205460ff1615801561154557506001600160a01b03821660009081526006602052604090205460ff16155b1561159157600a5460ff166115915760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107ae565b6001600160a01b03831660009081526006602052604090205460ff161580156115d357506001600160a01b03821660009081526006602052604090205460ff16155b80156115e157506010544311155b1561164e576002546001600160a01b039081169083160361164e5760405162461bcd60e51b815260206004820152602160248201527f53656c6c73206e6f7420616c6c6f77656420666f72206465616420626c6f636b6044820152607360f81b60648201526084016107ae565b6002546001600160a01b03848116911614801561168457506001600160a01b03821660009081526006602052604090205460ff16155b80156116995750600a5462010000900460ff16155b1561175557600d548111156116f05760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107ae565b600f54816116fd84610c84565b6117079190612b6f565b11156117555760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ae565b6002546001600160a01b0384811691161480159061178c57506001600160a01b03821660009081526006602052604090205460ff16155b80156117b157506001600160a01b03831660009081526006602052604090205460ff16155b80156117c65750600a5462010000900460ff16155b1561189757600e5481111561181d5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107ae565b6002546001600160a01b0383811691161461189757600f548161183f84610c84565b6118499190612b6f565b11156118975760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ae565b6000600c546118a530610c84565b600a54911115915062010000900460ff161580156118ca5750600a54610100900460ff165b80156118d35750805b80156118ed57506002546001600160a01b03858116911614155b801561191257506001600160a01b03841660009081526006602052604090205460ff16155b801561193757506001600160a01b03831660009081526006602052604090205460ff16155b156119c3576002546001600160a01b039081169084160361198d57600c54604080516080810182526019548152601a546020820152601b5491810191909152601c5460608201526119889190611b5d565b6119c3565b600c5460408051608081018252601554815260165460208201526017549181019190915260185460608201526119c39190611b5d565b600a5460019060009062010000900460ff16806119f857506001600160a01b03861660009081526006602052604090205460ff165b80611a1b57506001600160a01b03851660009081526006602052604090205460ff165b15611a2557600091505b6002546001600160a01b0390811690861603611a3f575060015b611a4c8686868585611cfe565b505050505050565b6000806000611a61611fcb565b9092509050611a708183612b4d565b9250505090565b611a7f6127e2565b611a8a8484846121ae565b9050611a9f818585611a9a611a54565b61231e565b60808601526060850152604084015260208301528152611ac78184611ac2611a54565b6123cd565b60a08201529392505050565b3060008181526005602090815260408083206001600160a01b03871684529091529020546000198114610c1f57610c1f8483858403611245565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a805462ff000019166201000017905560608101516020820151604083015160009291611b8a91612b6f565b611b949190612b6f565b611b9f906002612aee565b9050600081836040015185611bb49190612aee565b611bbe9190612b4d565b90506000611bcc8286612b05565b905047611bd8826123f5565b600080611be58347612b05565b90506000876040015187611bf99190612b05565b611c039083612b4d565b90506000886040015182611c179190612aee565b90508015611c2957611c298782612547565b6020890151600090611c3c846002612aee565b611c469190612aee565b601d54909150600090611c61906001600160a01b0316610c84565b9050600c54811115611c8c5785611c79576000611c7f565b8a602001515b611c899083612b4d565b91505b8115611ca857601d54611ca8906001600160a01b0316836125f4565b60608b0151600090611cbb866002612aee565b611cc59190612aee565b90508015611ce357601e54611ce3906001600160a01b0316826125f4565b5050600a805462ff0000191690555050505050505050505050565b6000611d0b848484611a77565b6001600160a01b03871660009081526007602052604090205490915060ff1615611d6d576001600160a01b038616600090815260046020526040902054611d53908590612b05565b6001600160a01b0387166000908152600460205260409020555b6001600160a01b03851660009081526007602052604090205460ff1615611dd05760c08101516001600160a01b038616600090815260046020526040902054611db69190612b6f565b6001600160a01b0386166000908152600460205260409020555b80516001600160a01b038716600090815260036020526040902054611df59190612b05565b6001600160a01b0380881660009081526003602090815260408083209490945584015191881681529190912054611e2c9190612b6f565b6001600160a01b0386166000908152600360205260409081902091909155810151151580611e5e575060008160e00151115b15611e7557611e7581604001518260e0015161270d565b600081608001511180611e8d57506000816101200151115b15611f1257611ea58160800151826101200151612742565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611ef69190612b6f565b611f009190612b6f565b60405190815260200160405180910390a35b600081606001511180611f2a57506000816101000151115b15611f4257611f4281606001518261010001516127b8565b60008160a001511180611f5a57506000816101400151115b15611f7257611f728160a001518261014001516127cd565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611fbb91815260200190565b60405180910390a3505050505050565b600b54600090819081611fe06009600a612adf565b611fee90633b9aca00612aee565b905060005b60095481101561214f5782600360006009848154811061201557612015612c25565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612080575081600460006009848154811061205957612059612c25565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156120ad57600b546120946009600a612adf565b6120a290633b9aca00612aee565b945094505050509091565b60036000600983815481106120c4576120c4612c25565b60009182526020808320909101546001600160a01b031683528201929092526040019020546120f39084612b05565b9250600460006009838154811061210c5761210c612c25565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461213b9083612b05565b91508061214781612c3b565b915050611ff3565b5061215c6009600a612adf565b61216a90633b9aca00612aee565b600b546121779190612b4d565b8210156121a557600b5461218d6009600a612adf565b61219b90633b9aca00612aee565b9350935050509091565b90939092509050565b6121b66127e2565b826121c75760c081018490526109a3565b6121f26040518060800160405280600081526020016000815260200160008152602001600081525090565b82156122275750604080516080810182526019548152601a546020820152601b5491810191909152601c546060820152612252565b5060408051608081018252601554815260165460208201526017549181019190915260185460608201525b80516064906122619087612aee565b61226b9190612b4d565b60e083015260208101516064906122829087612aee565b61228c9190612b4d565b61010083015260408101516064906122a49087612aee565b6122ae9190612b4d565b61012083015260608101516064906122c69087612aee565b6122d09190612b4d565b610140830181905261012083015161010084015160e08501516122f39089612b05565b6122fd9190612b05565b6123079190612b05565b6123119190612b05565b60c0830152509392505050565b60008080808061232e8689612aee565b945086612346575083925060009150819050806123c2565b858960e001516123569190612aee565b9250858961010001516123699190612aee565b91508589610120015161237c9190612aee565b90506000868a61014001516123919190612aee565b90508082846123a0878a612b05565b6123aa9190612b05565b6123b49190612b05565b6123be9190612b05565b9450505b945094509450945094565b6000826123dc575060006109a3565b818461014001516123ed9190612aee565b949350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061242a5761242a612c25565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a79190612b9f565b816001815181106124ba576124ba612c25565b6001600160a01b0392831660209182029290920101526001546124e09130911684611245565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790612519908590600090869030904290600401612c54565b600060405180830381600087803b15801561253357600080fd5b505af1158015611a4c573d6000803e3d6000fd5b60015461255f9030906001600160a01b031684611245565b6001546001600160a01b031663f305d7198230856000806125886000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016125aa96959493929190612bbc565b60606040518083038185885af11580156125c8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125ed9190612bf7565b5050505050565b804710156126445760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107ae565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612691576040519150601f19603f3d011682016040523d82523d6000602084013e612696565b606091505b505090508061106a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107ae565b81600b600082825461271f9190612b05565b909155505060118054829190600090612739908490612b6f565b90915550505050565b80601160020160008282546127579190612b6f565b90915550503060009081526007602052604090205460ff1615612799573060009081526004602052604081208054839290612793908490612b6f565b90915550505b3060009081526003602052604081208054849290612739908490612b6f565b80601160010160008282546127579190612b6f565b80601160030160008282546127579190612b6f565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156128695785810183015185820160400152820161284d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461124257600080fd5b600080604083850312156128b257600080fd5b82356128bd8161288a565b946020939093013593505050565b6000806000606084860312156128e057600080fd5b83356128eb8161288a565b925060208401356128fb8161288a565b929592945050506040919091013590565b60006020828403121561291e57600080fd5b5035919050565b801515811461124257600080fd5b6000806040838503121561294657600080fd5b82359150602083013561295881612925565b809150509250929050565b60006020828403121561297557600080fd5b81356109a38161288a565b6000806040838503121561299357600080fd5b823561299e8161288a565b915060208301356129588161288a565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612a36578160001904821115612a1c57612a1c6129e5565b80851615612a2957918102915b93841c9390800290612a00565b509250929050565b600082612a4d57506001610b7a565b81612a5a57506000610b7a565b8160018114612a705760028114612a7a57612a96565b6001915050610b7a565b60ff841115612a8b57612a8b6129e5565b50506001821b610b7a565b5060208310610133831016604e8410600b8410161715612ab9575081810a610b7a565b612ac383836129fb565b8060001904821115612ad757612ad76129e5565b029392505050565b60006109a360ff841683612a3e565b8082028115828204841417610b7a57610b7a6129e5565b81810381811115610b7a57610b7a6129e5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082612b6a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b7a57610b7a6129e5565b600060208284031215612b9457600080fd5b81516109a381612925565b600060208284031215612bb157600080fd5b81516109a38161288a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612c0c57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201612c4d57612c4d6129e5565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ca45784516001600160a01b031683529383019391830191600101612c7f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203c07ebebcbd1bc1784d8d79f4b1823a5a44c29b7dbec349ef44481071501e79964736f6c63430008130033

Deployed Bytecode Sourcemap

3345:18111:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6520:83;;;;;;;;;;-1:-1:-1;6590:5:0;;;;;;;;;;;-1:-1:-1;;;6590:5:0;;;;6520:83;;;;6590:5;6520:83;:::i;:::-;;;;;;;;7280:181;;;;;;;;;;-1:-1:-1;7280:181:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7280:181:0;1023:187:1;6816:95:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6816:95:0;1215:177:1;7469:430:0;;;;;;;;;;-1:-1:-1;7469:430:0;;;;;:::i;:::-;;:::i;4537:28::-;;;;;;;;;;;;;;;;9499:150;;;;;;;;;;;;;:::i;:::-;;9657:248;;;;;;;;;;-1:-1:-1;9657:248:0;;;;;:::i;:::-;;:::i;6702:83::-;;;;;;;;;;-1:-1:-1;6702:83:0;;4122:1;2185:36:1;;2173:2;2158:18;6702:83:0;2043:184:1;8666:228:0;;;;;;;;;;-1:-1:-1;8666:228:0;;;;;:::i;:::-;;:::i;20890:196::-;;;;;;;;;;-1:-1:-1;20890:196:0;;;;;:::i;:::-;;:::i;10172:470::-;;;;;;;;;;-1:-1:-1;10172:470:0;;;;;:::i;:::-;;:::i;8447:211::-;;;;;;;;;;-1:-1:-1;8447:211:0;;;;;:::i;:::-;;:::i;21094:154::-;;;;;;;;;;-1:-1:-1;21094:154:0;;;;;:::i;:::-;;:::i;3994:26::-;;;;;;;;;;-1:-1:-1;3994:26:0;;;;;;;;9913:123;;;;;;;;;;-1:-1:-1;9913:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;10001:27:0;9977:4;10001:27;;;:18;:27;;;;;;;;;9913:123;3903:48;;;;;;;;;;-1:-1:-1;3903:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4417:49;;;;;;;;;;;;;;;;4473:51;;;;;;;;;;;;;;;;4362:48;;;;;;;;;;;;;;;;4027:23;;;;;;;;;;-1:-1:-1;4027:23:0;;;;;;;;;;;6919:198;;;;;;;;;;-1:-1:-1;6919:198:0;;;;;:::i;:::-;;:::i;1896:94::-;;;;;;;;;;;;;:::i;5090:38::-;;;;;;;;;;-1:-1:-1;5090:38:0;;;;;;;;;;;;;;;;;;;3152:25:1;;;3208:2;3193:18;;3186:34;;;;3236:18;;;3229:34;3294:2;3279:18;;3272:34;3139:3;3124:19;5090:38:0;2921:391:1;5706:75:0;;;;;;;;;;-1:-1:-1;5706:75:0;;;;-1:-1:-1;;;;;5706:75:0;;;;;;-1:-1:-1;;;;;3481:32:1;;;3463:51;;3451:2;3436:18;5706:75:0;3317:203:1;10044:120:0;;;;;;;;;;-1:-1:-1;10044:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;10136:20:0;10112:4;10136:20;;;:11;:20;;;;;;;;;10044:120;1673:87;;;;;;;;;;-1:-1:-1;1719:7:0;1746:6;-1:-1:-1;;;;;1746:6:0;1673:87;;21260:151;;;;;;;;;;;;;:::i;4578:36::-;;;;;;;;;;-1:-1:-1;4578:36:0;;;;;;;;;;;;;;;7907:532;;;:::i;8902:390::-;;;;;;;;;;-1:-1:-1;8902:390:0;;;;;:::i;:::-;;:::i;3474:19::-;;;;;;;;;;-1:-1:-1;3474:19:0;;;;-1:-1:-1;;;;;3474:19:0;;;9304:187;;;;;;;;;;-1:-1:-1;9304:187:0;;;;;:::i;:::-;;:::i;7129:143::-;;;;;;;;;;-1:-1:-1;7129:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7237:18:0;;;7210:7;7237:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7129:143;4300:55;;;;;;;;;;;;;;;;5788:74;;;;;;;;;;-1:-1:-1;5788:74:0;;;;-1:-1:-1;;;;;5788:74:0;;;1998:192;;;;;;;;;;-1:-1:-1;1998:192:0;;;;;:::i;:::-;;:::i;5135:42::-;;;;;;;;;;-1:-1:-1;5135:42:0;;;;;;;;;;;;;;;3446:21;;;;;;;;;;-1:-1:-1;3446:21:0;;;;-1:-1:-1;;;;;3446:21:0;;;7280:181;5494:14;;7375:4;;7355:10;;5494:14;;;:42;;-1:-1:-1;;;;;;5512:24:0;;;;;;:15;:24;;;;;;;;5494:42;5486:78;;;;-1:-1:-1;;;5486:78:0;;;;;;;:::i;:::-;;;;;;;;;7392:39:::1;1174:10:::0;7415:7:::1;7424:6;7392:8;:39::i;:::-;-1:-1:-1::0;7449:4:0::1;::::0;7280:181;-1:-1:-1;;;7280:181:0:o;6816:95::-;6869:7;4222:13;4122:1;4222:2;:13;:::i;:::-;4216:19;;:3;:19;:::i;:::-;6889:14;;6816:95;:::o;7469:430::-;5494:14;;7583:4;;7566:6;;5494:14;;;:42;;-1:-1:-1;;;;;;5512:24:0;;;;;;:15;:24;;;;;;;;5494:42;5486:78;;;;-1:-1:-1;;;5486:78:0;;;;;;;:::i;:::-;7600:36:::1;7610:6;7618:9;7629:6;7600:9;:36::i;:::-;-1:-1:-1::0;;;;;7676:19:0;::::1;7649:24;7676:19:::0;;;:11:::1;:19;::::0;;;;;;;1174:10;7676:33;;;;;;;;7728:26;;::::1;;7720:79;;;::::0;-1:-1:-1;;;7720:79:0;;6383:2:1;7720:79:0::1;::::0;::::1;6365:21:1::0;6422:2;6402:18;;;6395:30;6461:34;6441:18;;;6434:62;-1:-1:-1;;;6512:18:1;;;6505:38;6560:19;;7720:79:0::1;6181:404:1::0;7720:79:0::1;7810:57;7819:6:::0;1174:10;7841:25:::1;7860:6:::0;7841:16;:25:::1;:::i;:::-;7810:8;:57::i;:::-;-1:-1:-1::0;7887:4:0::1;::::0;7469:430;-1:-1:-1;;;;;7469:430:0:o;9499:150::-;1719:7;1746:6;-1:-1:-1;;;;;1746:6:0;1174:10;1808:23;1800:68;;;;-1:-1:-1;;;1800:68:0;;;;;;;:::i;:::-;9552:14:::1;:21:::0;;-1:-1:-1;;9584:18:0;;;;;9629:12:::1;9613:13;:28:::0;9499:150::o;9657:248::-;9723:7;9762;;9751;:18;;9743:73;;;;-1:-1:-1;;;9743:73:0;;7286:2:1;9743:73:0;;;7268:21:1;7325:2;7305:18;;;7298:30;7364:34;7344:18;;;7337:62;-1:-1:-1;;;7415:18:1;;;7408:40;7465:19;;9743:73:0;7084:406:1;9743:73:0;9827:19;9850:10;:8;:10::i;:::-;9827:33;-1:-1:-1;9878:19:0;9827:33;9878:7;:19;:::i;:::-;9871:26;9657:248;-1:-1:-1;;;9657:248:0:o;8666:228::-;5494:14;;8767:4;;8746:10;;5494:14;;;:42;;-1:-1:-1;;;;;;5512:24:0;;;;;;:15;:24;;;;;;;;5494:42;5486:78;;;;-1:-1:-1;;;5486:78:0;;;;;;;:::i;:::-;1174:10;8816:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8816:34:0;::::1;::::0;;;;;;;;8784:80:::1;::::0;1174:10;8807:7;;8816:47:::1;::::0;8853:10;;8816:47:::1;:::i;20890:196::-:0;1719:7;1746:6;-1:-1:-1;;;;;1746:6:0;1174:10;1808:23;1800:68;;;;-1:-1:-1;;;1800:68:0;;;;;;;:::i;:::-;20990:9:::1;20965:21;:34;;20957:71;;;::::0;-1:-1:-1;;;20957:71:0;;8049:2:1;20957:71:0::1;::::0;::::1;8031:21:1::0;8088:2;8068:18;;;8061:30;8127:26;8107:18;;;8100:54;8171:18;;20957:71:0::1;7847:348:1::0;20957:71:0::1;21039:39;::::0;21047:10:::1;::::0;21039:39;::::1;;;::::0;21068:9;;21039:39:::1;::::0;;;21068:9;21047:10;21039:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20890:196:::0;:::o;10172:470::-;10262:7;4222:13;4122:1;4222:2;:13;:::i;:::-;4216:19;;:3;:19;:::i;:::-;10290:7;:18;;10282:62;;;;-1:-1:-1;;;10282:62:0;;8402:2:1;10282:62:0;;;8384:21:1;8441:2;8421:18;;;8414:30;8480:33;8460:18;;;8453:61;8531:18;;10282:62:0;8200:355:1;10282:62:0;10360:17;10355:280;;10394:28;10425:32;10436:7;10445:4;10451:5;10425:10;:32::i;:::-;10479:9;;-1:-1:-1;10472:16:0;;-1:-1:-1;10472:16:0;10355:280;10521:28;10552:32;10563:7;10572:4;10578:5;10552:10;:32::i;:::-;10606:17;;;;-1:-1:-1;10599:24:0;;-1:-1:-1;10599:24:0;10355:280;10172:470;;;;:::o;8447:211::-;8524:10;9977:4;10001:27;;;:18;:27;;;;;;;;5639:35;;;;;;8547:29:::1;8563:4;8569:6;8547:15;:29::i;:::-;8587:63;::::0;-1:-1:-1;;;8587:63:0;;-1:-1:-1;;;;;8818:15:1;;8587:63:0::1;::::0;::::1;8800:34:1::0;8602:4:0::1;8850:18:1::0;;;8843:43;;;8902:18;;;8895:34;;;8602:4:0;8587:34:::1;::::0;8735:18:1;;8587:63:0::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8447:211:::0;;;:::o;21094:154::-;1719:7;1746:6;-1:-1:-1;;;;;1746:6:0;1174:10;1808:23;1800:68;;;;-1:-1:-1;;;1800:68:0;;;;;;;:::i;:::-;21199:41:::1;::::0;-1:-1:-1;;;21199:41:0;;-1:-1:-1;;;;;9382:32:1;;;21199:41:0::1;::::0;::::1;9364:51:1::0;9431:18;;;9424:34;;;21199:27:0;::::1;::::0;::::1;::::0;9337:18:1;;21199:41:0::1;9190:274:1::0;6919:198:0;-1:-1:-1;;;;;7009:20:0;;6985:7;7009:20;;;:11;:20;;;;;;;;7005:49;;;-1:-1:-1;;;;;;7038:16:0;;;;;:7;:16;;;;;;;6919:198::o;7005:49::-;-1:-1:-1;;;;;7092:16:0;;;;;;:7;:16;;;;;;7072:37;;:19;:37::i;1896:94::-;1719:7;1746:6;-1:-1:-1;;;;;1746:6:0;1174:10;1808:23;1800:68;;;;-1:-1:-1;;;1800:68:0;;;;;;;:::i;:::-;1961:21:::1;1979:1;1961:9;:21::i;:::-;1896:94::o:0;21260:151::-;1719:7;1746:6;-1:-1:-1;;;;;1746:6:0;1174:10;1808:23;1800:68;;;;-1:-1:-1;;;1800:68:0;;;;;;;:::i;:::-;4222:13:::1;4122:1;4222:2;:13;:::i;:::-;4216:19;::::0;:3:::1;:19;:::i;:::-;21314:11;:21:::0;4222:13:::1;4122:1;4222:2;:13;:::i;:::-;4216:19;::::0;:3:::1;:19;:::i;:::-;21346:12;:22:::0;4222:13:::1;4122:1;4222:2;:13;:::i;:::-;4216:19;::::0;:3:::1;:19;:::i;:::-;21379:14;:24:::0;21260:151::o;7907:532::-;1719:7;1746:6;-1:-1:-1;;;;;1746:6:0;1174:10;1808:23;1800:68;;;;-1:-1:-1;;;1800:68:0;;;;;;;:::i;:::-;7983:6:::1;;;;;;;;;-1:-1:-1::0;;;;;7983:6:0::1;-1:-1:-1::0;;;;;7983:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7974:37:0::1;;8020:4;8027:6;;;;;;;;;-1:-1:-1::0;;;;;8027:6:0::1;-1:-1:-1::0;;;;;8027:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7974:67;::::0;-1:-1:-1;;;;;;7974:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9955:15:1;;;7974:67:0::1;::::0;::::1;9937:34:1::0;10007:15;;9987:18;;;9980:43;9872:18;;7974:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7967:4;:74:::0;;-1:-1:-1;;;;;7967:74:0;;::::1;-1:-1:-1::0;;;;;;7967:74:0;;::::1;::::0;::::1;::::0;;:4:::1;8052:17:::0;;;:11:::1;:17;::::0;;;;;;;:24;;-1:-1:-1;;8052:24:0;;::::1;7967:74:::0;8052:24;;::::1;::::0;;;8102:4;;8087:9:::1;:20:::0;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;8102:4:::0;;::::1;8087:20;::::0;;;8134:4;;;::::1;8118:21:::0;;:15:::1;:21:::0;;;;;:28;;;;::::1;::::0;::::1;::::0;;8189:6;8157:59:::1;::::0;8174:4:::1;::::0;8189:6:::1;-1:-1:-1::0;;8157:8:0::1;:59::i;:::-;8227:6;::::0;-1:-1:-1;;;;;8227:6:0::1;:22;8257:9;8290:4;8310:24;8290:4:::0;8310:9:::1;:24::i;:::-;8349:1;8366::::0;8383:7:::1;1719::::0;1746:6;-1:-1:-1;;;;;1746:6:0;;1673:87;8383:7:::1;8405:15;8227:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7907:532::o:0;8902:390::-;5494:14;;9008:4;;8987:10;;5494:14;;;:42;;-1:-1:-1;;;;;;5512:24:0;;;;;;:15;:24;;;;;;;;5494:42;5486:78;;;;-1:-1:-1;;;5486:78:0;;;;;;;:::i;:::-;1174:10;9025:24:::1;9052:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9052:34:0;::::1;::::0;;;;;;;;9105:35;;::::1;;9097:85;;;::::0;-1:-1:-1;;;9097:85:0;;11159:2:1;9097:85:0::1;::::0;::::1;11141:21:1::0;11198:2;11178:18;;;11171:30;11237:34;11217:18;;;11210:62;-1:-1:-1;;;11288:18:1;;;11281:35;11333:19;;9097:85:0::1;10957:401:1::0;9097:85:0::1;9193:67;1174:10:::0;9216:7;9225:34:::1;9244:15:::0;9225:16;:34:::1;:::i;9193:67::-;-1:-1:-1::0;9280:4:0::1;::::0;8902:390;-1:-1:-1;;;;8902:390:0:o;9304:187::-;5494:14;;9402:4;;9381:10;;5494:14;;;:42;;-1:-1:-1;;;;;;5512:24:0;;;;;;:15;:24;;;;;;;;5494:42;5486:78;;;;-1:-1:-1;;;5486:78:0;;;;;;;:::i;:::-;9423:40:::1;9433:10;9445:9;9456:6;9423:9;:40::i;1998:192::-:0;1719:7;1746:6;-1:-1:-1;;;;;1746:6:0;1174:10;1808:23;1800:68;;;;-1:-1:-1;;;1800:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2087:22:0;::::1;2079:73;;;::::0;-1:-1:-1;;;2079:73:0;;11565:2:1;2079:73:0::1;::::0;::::1;11547:21:1::0;11604:2;11584:18;;;11577:30;11643:34;11623:18;;;11616:62;-1:-1:-1;;;11694:18:1;;;11687:36;11740:19;;2079:73:0::1;11363:402:1::0;2079:73:0::1;2163:19;2173:8;2163:9;:19::i;:::-;1998:192:::0;:::o;14453:335::-;-1:-1:-1;;;;;14546:19:0;;14538:68;;;;-1:-1:-1;;;14538:68:0;;11972:2:1;14538:68:0;;;11954:21:1;12011:2;11991:18;;;11984:30;12050:34;12030:18;;;12023:62;-1:-1:-1;;;12101:18:1;;;12094:34;12145:19;;14538:68:0;11770:400:1;14538:68:0;-1:-1:-1;;;;;14625:21:0;;14617:68;;;;-1:-1:-1;;;14617:68:0;;12377:2:1;14617:68:0;;;12359:21:1;12416:2;12396:18;;;12389:30;12455:34;12435:18;;;12428:62;-1:-1:-1;;;12506:18:1;;;12499:32;12548:19;;14617:68:0;12175:398:1;14617:68:0;-1:-1:-1;;;;;14696:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14748:32;;1361:25:1;;;14748:32:0;;1334:18:1;14748:32:0;;;;;;;14453:335;;;:::o;15169:1961::-;-1:-1:-1;;;;;15257:18:0;;15249:68;;;;-1:-1:-1;;;15249:68:0;;12780:2:1;15249:68:0;;;12762:21:1;12819:2;12799:18;;;12792:30;12858:34;12838:18;;;12831:62;-1:-1:-1;;;12909:18:1;;;12902:35;12954:19;;15249:68:0;12578:401:1;15249:68:0;-1:-1:-1;;;;;15336:16:0;;15328:64;;;;-1:-1:-1;;;15328:64:0;;13186:2:1;15328:64:0;;;13168:21:1;13225:2;13205:18;;;13198:30;13264:34;13244:18;;;13237:62;-1:-1:-1;;;13315:18:1;;;13308:33;13358:19;;15328:64:0;12984:399:1;15328:64:0;15420:1;15411:6;:10;15403:64;;;;-1:-1:-1;;;15403:64:0;;13590:2:1;15403:64:0;;;13572:21:1;13629:2;13609:18;;;13602:30;13668:34;13648:18;;;13641:62;-1:-1:-1;;;13719:18:1;;;13712:39;13768:19;;15403:64:0;13388:405:1;15403:64:0;15496:15;15506:4;15496:9;:15::i;:::-;15486:6;:25;;15478:86;;;;-1:-1:-1;;;15478:86:0;;14000:2:1;15478:86:0;;;13982:21:1;14039:2;14019:18;;;14012:30;14078:34;14058:18;;;14051:62;-1:-1:-1;;;14129:18:1;;;14122:47;14186:19;;15478:86:0;13798:413:1;15478:86:0;-1:-1:-1;;;;;15589:24:0;;;;;;:18;:24;;;;;;;;15588:25;:52;;;;-1:-1:-1;;;;;;15618:22:0;;;;;;:18;:22;;;;;;;;15617:23;15588:52;15585:128;;;15664:14;;;;15656:45;;;;-1:-1:-1;;;15656:45:0;;14418:2:1;15656:45:0;;;14400:21:1;14457:2;14437:18;;;14430:30;-1:-1:-1;;;14476:18:1;;;14469:48;14534:18;;15656:45:0;14216:342:1;15656:45:0;-1:-1:-1;;;;;15737:24:0;;;;;;:18;:24;;;;;;;;15736:25;:52;;;;-1:-1:-1;;;;;;15766:22:0;;;;;;:18;:22;;;;;;;;15765:23;15736:52;:85;;;;;15808:13;;15792:12;:29;;15736:85;15733:173;;;15852:4;;-1:-1:-1;;;;;15852:4:0;;;15846:10;;;;15838:56;;;;-1:-1:-1;;;15838:56:0;;14765:2:1;15838:56:0;;;14747:21:1;14804:2;14784:18;;;14777:30;14843:34;14823:18;;;14816:62;-1:-1:-1;;;14894:18:1;;;14887:31;14935:19;;15838:56:0;14563:397:1;15838:56:0;15937:4;;-1:-1:-1;;;;;15929:12:0;;;15937:4;;15929:12;:39;;;;-1:-1:-1;;;;;;15946:22:0;;;;;;:18;:22;;;;;;;;15945:23;15929:39;:52;;;;-1:-1:-1;15973:8:0;;;;;;;15972:9;15929:52;15926:246;;;16015:11;;16005:6;:21;;15997:63;;;;-1:-1:-1;;;15997:63:0;;15167:2:1;15997:63:0;;;15149:21:1;15206:2;15186:18;;;15179:30;15245:31;15225:18;;;15218:59;15294:18;;15997:63:0;14965:353:1;15997:63:0;16109:14;;16099:6;16083:13;16093:2;16083:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16075:85;;;;-1:-1:-1;;;16075:85:0;;15525:2:1;16075:85:0;;;15507:21:1;;;15544:18;;;15537:30;15603:34;15583:18;;;15576:62;15655:18;;16075:85:0;15323:356:1;16075:85:0;16203:4;;-1:-1:-1;;;;;16195:12:0;;;16203:4;;16195:12;;;;:39;;-1:-1:-1;;;;;;16212:22:0;;;;;;:18;:22;;;;;;;;16211:23;16195:39;:68;;;;-1:-1:-1;;;;;;16239:24:0;;;;;;:18;:24;;;;;;;;16238:25;16195:68;:81;;;;-1:-1:-1;16268:8:0;;;;;;;16267:9;16195:81;16192:325;;;16310:12;;16300:6;:22;;16292:65;;;;-1:-1:-1;;;16292:65:0;;15886:2:1;16292:65:0;;;15868:21:1;15925:2;15905:18;;;15898:30;15964:32;15944:18;;;15937:60;16014:18;;16292:65:0;15684:354:1;16292:65:0;16381:4;;-1:-1:-1;;;;;16375:10:0;;;16381:4;;16375:10;16372:134;;16439:14;;16429:6;16413:13;16423:2;16413:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16405:85;;;;-1:-1:-1;;;16405:85:0;;15525:2:1;16405:85:0;;;15507:21:1;;;15544:18;;;15537:30;15603:34;15583:18;;;15576:62;15655:18;;16405:85:0;15323:356:1;16405:85:0;16536:12;16579:18;;16551:24;16569:4;16551:9;:24::i;:::-;16612:8;;-1:-1:-1;;16551:46:0;;-1:-1:-1;16612:8:0;;;;;16611:9;:24;;;;-1:-1:-1;16624:11:0;;;;;;;16611:24;:35;;;;;16639:7;16611:35;:51;;;;-1:-1:-1;16658:4:0;;-1:-1:-1;;;;;16650:12:0;;;16658:4;;16650:12;;16611:51;:80;;;;-1:-1:-1;;;;;;16667:24:0;;;;;;:18;:24;;;;;;;;16666:25;16611:80;:107;;;;-1:-1:-1;;;;;;16696:22:0;;;;;;:18;:22;;;;;;;;16695:23;16611:107;16608:261;;;16743:4;;-1:-1:-1;;;;;16743:4:0;;;16737:10;;;;16734:123;;16765:18;;16750:45;;;;;;;;16785:9;16750:45;;;;;;;;;;;;;;;;;;;;;;;;;;16765:18;16750:14;:45::i;:::-;16734:123;;;16831:18;;16816:41;;;;;;;;16851:5;16816:41;;;;;;;;;;;;;;;;;;;;;;;;;;16831:18;16816:14;:41::i;:::-;16942:8;;16894:4;;16879:12;;16942:8;;;;;;:36;;-1:-1:-1;;;;;;16954:24:0;;;;;;:18;:24;;;;;;;;16942:36;:62;;;-1:-1:-1;;;;;;16982:22:0;;;;;;:18;:22;;;;;;;;16942:62;16939:82;;;17016:5;17006:15;;16939:82;17041:4;;-1:-1:-1;;;;;17041:4:0;;;17035:10;;;;17032:28;;-1:-1:-1;17056:4:0;17032:28;17073:49;17088:4;17094:2;17098:6;17106:7;17115:6;17073:14;:49::i;:::-;15238:1892;;;15169:1961;;;:::o;13024:158::-;13065:7;13086:15;13103;13122:19;:17;:19::i;:::-;13085:56;;-1:-1:-1;13085:56:0;-1:-1:-1;13159:15:0;13085:56;;13159:15;:::i;:::-;13152:22;;;;13024:158;:::o;10939:471::-;11025:36;;:::i;:::-;11086:37;11098:7;11107;11116:6;11086:11;:37::i;:::-;11074:49;;11243:53;11256:9;11267:7;11276;11285:10;:8;:10::i;:::-;11243:12;:53::i;:::-;11219:20;;;11134:162;11197:20;;;11134:162;11181:14;;;11134:162;11154:25;;;11134:162;;;11331:44;11135:9;11355:7;11364:10;:8;:10::i;:::-;11331:12;:44::i;:::-;11308:19;;;11307:68;10939:471;;;;;:::o;14800:361::-;14910:4;14886:13;7237:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;7237:27:0;;;;;;;;;;-1:-1:-1;;14993:37:0;;14989:165;;15076:51;15085:7;15094:5;15120:6;15101:16;:25;15076:8;:51::i;2198:173::-;2254:16;2273:6;;-1:-1:-1;;;;;2290:17:0;;;-1:-1:-1;;;;;;2290:17:0;;;;;;2323:40;;2273:6;;;;;;;2323:40;;2254:16;2323:40;2243:128;2198:173;:::o;18356:1385::-;5364:8;:15;;-1:-1:-1;;5364:15:0;;;;;18511:13:::1;::::0;::::1;::::0;18494:14:::1;::::0;::::1;::::0;18477::::1;::::0;::::1;::::0;5364:15;;18511:13;18477:31:::1;::::0;::::1;:::i;:::-;:47;;;;:::i;:::-;18476:53;::::0;18528:1:::1;18476:53;:::i;:::-;18454:75;;18540:32;18610:11;18593:4;:14;;;18575:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;18540:81:::0;-1:-1:-1;18632:14:0::1;18649:42;18540:81:::0;18649:15;:42:::1;:::i;:::-;18632:59:::0;-1:-1:-1;18729:21:0::1;18763:24;18632:59:::0;18763:16:::1;:24::i;:::-;18798:12;::::0;18846:38:::1;18870:14:::0;18846:21:::1;:38;:::i;:::-;18823:61;;18895:19;18946:4;:14;;;18932:11;:28;;;;:::i;:::-;18916:45;::::0;:12;:45:::1;:::i;:::-;18895:66;;18972:29;19018:4;:14;;;19004:11;:28;;;;:::i;:::-;18972:60:::0;-1:-1:-1;19048:25:0;;19045:158:::1;;19130:61;19143:24;19169:21;19130:12;:61::i;:::-;19256:14;::::0;::::1;::::0;19215:20:::1;::::0;19238:15:::1;:11:::0;19252:1:::1;19238:15;:::i;:::-;:32;;;;:::i;:::-;19312:15;::::0;19215:55;;-1:-1:-1;19281:18:0::1;::::0;19302:26:::1;::::0;-1:-1:-1;;;;;19312:15:0::1;19302:9;:26::i;:::-;19281:47;;19356:18;;19343:10;:31;19339:124;;;19422:7;:28;;19449:1;19422:28;;;19432:4;:14;;;19422:28;19406:45;::::0;:12;:45:::1;:::i;:::-;19391:60;;19339:124;19476:16:::0;;19473:95:::1;;19516:15;::::0;19508:48:::1;::::0;-1:-1:-1;;;;;19516:15:0::1;19543:12:::0;19508:34:::1;:48::i;:::-;19618:13;::::0;::::1;::::0;19578:19:::1;::::0;19600:15:::1;:11:::0;19614:1:::1;19600:15;:::i;:::-;:31;;;;:::i;:::-;19578:53:::0;-1:-1:-1;19645:15:0;;19642:92:::1;;19684:14;::::0;19676:46:::1;::::0;-1:-1:-1;;;;;19684:14:0::1;19710:11:::0;19676:33:::1;:46::i;:::-;-1:-1:-1::0;;5402:8:0;:16;;-1:-1:-1;;5402:16:0;;;-1:-1:-1;;;;;;;;;;;18356:1385:0:o;17213:1135::-;17337:28;17368:36;17379:7;17388;17397:6;17368:10;:36::i;:::-;-1:-1:-1;;;;;17421:19:0;;;;;;:11;:19;;;;;;17337:67;;-1:-1:-1;17421:19:0;;17417:115;;;-1:-1:-1;;;;;17497:15:0;;;;;;:7;:15;;;;;;:23;;17513:7;;17497:23;:::i;:::-;-1:-1:-1;;;;;17479:15:0;;;;;;:7;:15;;;;;:41;17417:115;-1:-1:-1;;;;;17546:22:0;;;;;;:11;:22;;;;;;;;17542:130;;;17643:17;;;;-1:-1:-1;;;;;17624:18:0;;;;;;:7;:18;;;;;;:36;;17643:17;17624:36;:::i;:::-;-1:-1:-1;;;;;17603:18:0;;;;;;:7;:18;;;;;:57;17542:130;17718:9;;-1:-1:-1;;;;;17702:15:0;;17718:9;17702:15;;;:7;:15;;;;;;:25;;17718:9;17702:25;:::i;:::-;-1:-1:-1;;;;;17684:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;17778:17;;;17759:18;;;;;;;;;;:36;;17778:17;17759:36;:::i;:::-;-1:-1:-1;;;;;17738:18:0;;;;;;:7;:18;;;;;;;:57;;;;17819:6;;;:10;;;:24;;;17842:1;17833;:6;;;:10;17819:24;17816:56;;;17845:27;17857:1;:6;;;17865:1;:6;;;17845:11;:27::i;:::-;17901:1;17886;:12;;;:16;:36;;;;17921:1;17906;:12;;;:16;17886:36;17883:203;;;17939:41;17954:1;:12;;;17967:1;:12;;;17939:14;:41::i;:::-;18025:4;-1:-1:-1;;;;;18000:74:0;18009:6;-1:-1:-1;;;;;18000:74:0;;18062:1;:11;;;18047:1;:12;;;18032:1;:12;;;:27;;;;:::i;:::-;:41;;;;:::i;:::-;18000:74;;1361:25:1;;;1349:2;1334:18;18000:74:0;;;;;;;17883:203;18114:1;18099;:12;;;:16;:36;;;;18134:1;18119;:12;;;:16;18099:36;18096:83;;;18137:42;18152:1;:12;;;18166:1;:12;;;18137:14;:42::i;:::-;18207:1;18193;:11;;;:15;:34;;;;18226:1;18212;:11;;;:15;18193:34;18190:78;;;18229:39;18243:1;:11;;;18256:1;:11;;;18229:13;:39::i;:::-;18301:9;-1:-1:-1;;;;;18284:46:0;18293:6;-1:-1:-1;;;;;18284:46:0;;18312:1;:17;;;18284:46;;;;1361:25:1;;1349:2;1334:18;;1215:177;18284:46:0;;;;;;;;17324:1024;17213:1135;;;;;:::o;13190:540::-;13287:7;;13240;;;;;4222:13;4122:1;4222:2;:13;:::i;:::-;4216:19;;:3;:19;:::i;:::-;13305:25;;13346:9;13341:279;13365:9;:16;13361:20;;13341:279;;;13431:7;13407;:21;13415:9;13425:1;13415:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13415:12:0;13407:21;;;;;;;;;;;;;:31;;:66;;;13466:7;13442;:21;13450:9;13460:1;13450:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13450:12:0;13442:21;;;;;;;;;;;;;:31;13407:66;13403:97;;;13483:7;;4222:13;4122:1;4222:2;:13;:::i;:::-;4216:19;;:3;:19;:::i;:::-;13475:25;;;;;;;13190:540;;:::o;13403:97::-;13533:7;:21;13541:9;13551:1;13541:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13541:12:0;13533:21;;;;;;;;;;;;;13525:29;;:7;:29;:::i;:::-;13515:39;;13587:7;:21;13595:9;13605:1;13595:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13595:12:0;13587:21;;;;;;;;;;;;;13579:29;;:7;:29;:::i;:::-;13569:39;-1:-1:-1;13383:3:0;;;;:::i;:::-;;;;13341:279;;;-1:-1:-1;4222:13:0;4122:1;4222:2;:13;:::i;:::-;4216:19;;:3;:19;:::i;:::-;13644:7;;:15;;;;:::i;:::-;13634:7;:25;13630:56;;;13669:7;;4222:13;4122:1;4222:2;:13;:::i;:::-;4216:19;;:3;:19;:::i;:::-;13661:25;;;;;;13190:540;;:::o;13630:56::-;13705:7;;13714;;-1:-1:-1;13190:540:0;-1:-1:-1;13190:540:0:o;11418:623::-;11505:28;;:::i;:::-;11552:7;11548:86;;11574:17;;;:27;;;11614:8;;11548:86;11644:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11644:17:0;11675:6;11672:55;;;-1:-1:-1;11683:16:0;;;;;;;;11690:9;11683:16;;;;;;;;;;;;;;;;;;;;;;;;11672:55;;;-1:-1:-1;11715:12:0;;;;;;;;11722:5;11715:12;;;;;;;;;;;;;;;;;;;;;;;;11672:55;11765:8;;11774:3;;11757:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;11748:6;;;:29;11811:14;;;;11826:3;;11803:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;11788:12;;;:41;11863:14;;;;11878:3;;11855:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;11840:12;;;:41;11914:13;;;;11928:3;;11906:21;;:7;:21;:::i;:::-;:25;;;;:::i;:::-;11892:11;;;:39;;;11990:12;;;;11977;;;;11970:6;;;;11962:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:52;;;;:::i;:::-;11942:17;;;:72;-1:-1:-1;11418:623:0;;;;;:::o;12049:683::-;12175:15;;;;;12290:19;12298:11;12290:7;:19;:::i;:::-;12280:29;;12326:7;12322:69;;-1:-1:-1;12355:7:0;;-1:-1:-1;12373:1:0;;-1:-1:-1;12373:1:0;;-1:-1:-1;12373:1:0;12348:31;;12322:69;12417:11;12410:1;:6;;;:18;;;;:::i;:::-;12403:25;;12465:11;12452:1;:12;;;:24;;;;:::i;:::-;12439:37;;12513:11;12500:1;:12;;;:24;;;;:::i;:::-;12487:37;;12535:17;12567:11;12555:1;:11;;;:23;;;;:::i;:::-;12535:43;-1:-1:-1;12535:43:0;12632:10;12621;12608:12;12616:4;12608:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:44;;;;:::i;:::-;12589:63;;12663:61;12049:683;;;;;;;;;;:::o;12744:272::-;12853:17;12889:7;12885:47;;-1:-1:-1;12918:1:0;12911:9;;12885:47;12968:11;12956:1;:11;;;:23;;;;:::i;:::-;12944:35;12744:272;-1:-1:-1;;;;12744:272:0:o;20252:562::-;20402:16;;;20416:1;20402:16;;;;;;;;20378:21;;20402:16;;;;;;;;;;-1:-1:-1;20402:16:0;20378:40;;20447:4;20429;20434:1;20429:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20429:23:0;;;:7;;;;;;;;;;:23;;;;20473:6;;:13;;;-1:-1:-1;;;20473:13:0;;;;:6;;;;;:11;;:13;;;;;20429:7;;20473:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20463:4;20468:1;20463:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20463:23:0;;;:7;;;;;;;;;:23;20531:6;;20499:53;;20516:4;;20531:6;20540:11;20499:8;:53::i;:::-;20591:6;;:215;;-1:-1:-1;;;20591:215:0;;-1:-1:-1;;;;;20591:6:0;;;;:57;;:215;;20663:11;;20591:6;;20733:4;;20760;;20780:15;;20591:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19749:495;19929:6;;19897:53;;19914:4;;-1:-1:-1;;;;;19929:6:0;19938:11;19897:8;:53::i;:::-;19993:6;;-1:-1:-1;;;;;19993:6:0;:22;20023:9;20056:4;20076:11;19993:6;;20188:7;1719;1746:6;-1:-1:-1;;;;;1746:6:0;;1673:87;20188:7;20210:15;19993:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19749:495;;:::o;3021:317::-;3136:6;3111:21;:31;;3103:73;;;;-1:-1:-1;;;3103:73:0;;17634:2:1;3103:73:0;;;17616:21:1;17673:2;17653:18;;;17646:30;17712:31;17692:18;;;17685:59;17761:18;;3103:73:0;17432:353:1;3103:73:0;3190:12;3208:9;-1:-1:-1;;;;;3208:14:0;3230:6;3208:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3189:52;;;3260:7;3252:78;;;;-1:-1:-1;;;3252:78:0;;18202:2:1;3252:78:0;;;18184:21:1;18241:2;18221:18;;;18214:30;18280:34;18260:18;;;18253:62;18351:28;18331:18;;;18324:56;18397:19;;3252:78:0;18000:422:1;13738:123:0;13816:4;13806:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;13831:11:0;:22;;13849:4;;13831:11;:15;;:22;;13849:4;;13831:22;:::i;:::-;;;;-1:-1:-1;;;;13738:123:0:o;13869:284::-;13976:10;13952:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;14022:4:0;14002:26;;;;:11;:26;;;;;;;;13999:101;;;14070:4;14054:22;;;;:7;:22;;;;;:34;;14078:10;;14054:22;:34;;14078:10;;14054:34;:::i;:::-;;;;-1:-1:-1;;13999:101:0;14126:4;14110:22;;;;:7;:22;;;;;:35;;14135:10;;14110:22;:35;;14135:10;;14110:35;:::i;14161:284::-;14268:10;14244:11;:21;;;:34;;;;;;;:::i;10650:277::-;10753:9;10730:11;:20;;;:32;;;;;;;:::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:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2232:118::-;2318:5;2311:13;2304:21;2297:5;2294:32;2284:60;;2340:1;2337;2330:12;2355:309;2420:6;2428;2481:2;2469:9;2460:7;2456:23;2452:32;2449:52;;;2497:1;2494;2487:12;2449:52;2533:9;2520:23;2510:33;;2593:2;2582:9;2578:18;2565:32;2606:28;2628:5;2606:28;:::i;:::-;2653:5;2643:15;;;2355:309;;;;;:::o;2669:247::-;2728:6;2781:2;2769:9;2760:7;2756:23;2752:32;2749:52;;;2797:1;2794;2787:12;2749:52;2836:9;2823:23;2855:31;2880:5;2855:31;:::i;3525:388::-;3593:6;3601;3654:2;3642:9;3633:7;3629:23;3625:32;3622:52;;;3670:1;3667;3660:12;3622:52;3709:9;3696:23;3728:31;3753:5;3728:31;:::i;:::-;3778:5;-1:-1:-1;3835:2:1;3820:18;;3807:32;3848:33;3807:32;3848:33;:::i;4141:347::-;4343:2;4325:21;;;4382:2;4362:18;;;4355:30;4421:25;4416:2;4401:18;;4394:53;4479:2;4464:18;;4141:347::o;4493:127::-;4554:10;4549:3;4545:20;4542:1;4535:31;4585:4;4582:1;4575:15;4609:4;4606:1;4599:15;4625:422;4714:1;4757:5;4714:1;4771:270;4792:7;4782:8;4779:21;4771:270;;;4851:4;4847:1;4843:6;4839:17;4833:4;4830:27;4827:53;;;4860:18;;:::i;:::-;4910:7;4900:8;4896:22;4893:55;;;4930:16;;;;4893:55;5009:22;;;;4969:15;;;;4771:270;;;4775:3;4625:422;;;;;:::o;5052:806::-;5101:5;5131:8;5121:80;;-1:-1:-1;5172:1:1;5186:5;;5121:80;5220:4;5210:76;;-1:-1:-1;5257:1:1;5271:5;;5210:76;5302:4;5320:1;5315:59;;;;5388:1;5383:130;;;;5295:218;;5315:59;5345:1;5336:10;;5359:5;;;5383:130;5420:3;5410:8;5407:17;5404:43;;;5427:18;;:::i;:::-;-1:-1:-1;;5483:1:1;5469:16;;5498:5;;5295:218;;5597:2;5587:8;5584:16;5578:3;5572:4;5569:13;5565:36;5559:2;5549:8;5546:16;5541:2;5535:4;5532:12;5528:35;5525:77;5522:159;;;-1:-1:-1;5634:19:1;;;5666:5;;5522:159;5713:34;5738:8;5732:4;5713:34;:::i;:::-;5783:6;5779:1;5775:6;5771:19;5762:7;5759:32;5756:58;;;5794:18;;:::i;:::-;5832:20;;5052:806;-1:-1:-1;;;5052:806:1:o;5863:140::-;5921:5;5950:47;5991:4;5981:8;5977:19;5971:4;5950:47;:::i;6008:168::-;6081:9;;;6112;;6129:15;;;6123:22;;6109:37;6099:71;;6150:18;;:::i;6590:128::-;6657:9;;;6678:11;;;6675:37;;;6692:18;;:::i;6723:356::-;6925:2;6907:21;;;6944:18;;;6937:30;7003:34;6998:2;6983:18;;6976:62;7070:2;7055:18;;6723:356::o;7495:217::-;7535:1;7561;7551:132;;7605:10;7600:3;7596:20;7593:1;7586:31;7640:4;7637:1;7630:15;7668:4;7665:1;7658:15;7551:132;-1:-1:-1;7697:9:1;;7495:217::o;7717:125::-;7782:9;;;7803:10;;;7800:36;;;7816:18;;:::i;8940:245::-;9007:6;9060:2;9048:9;9039:7;9035:23;9031:32;9028:52;;;9076:1;9073;9066:12;9028:52;9108:9;9102:16;9127:28;9149:5;9127:28;:::i;9469:251::-;9539:6;9592:2;9580:9;9571:7;9567:23;9563:32;9560:52;;;9608:1;9605;9598:12;9560:52;9640:9;9634:16;9659:31;9684:5;9659:31;:::i;10034:607::-;-1:-1:-1;;;;;10393:15:1;;;10375:34;;10440:2;10425:18;;10418:34;;;;10483:2;10468:18;;10461:34;;;;10526:2;10511:18;;10504:34;;;;10575:15;;;10569:3;10554:19;;10547:44;10355:3;10607:19;;10600:35;;;;10324:3;10309:19;;10034:607::o;10646:306::-;10734:6;10742;10750;10803:2;10791:9;10782:7;10778:23;10774:32;10771:52;;;10819:1;10816;10809:12;10771:52;10848:9;10842:16;10832:26;;10898:2;10887:9;10883:18;10877:25;10867:35;;10942:2;10931:9;10927:18;10921:25;10911:35;;10646:306;;;;;:::o;16043:127::-;16104:10;16099:3;16095:20;16092:1;16085:31;16135:4;16132:1;16125:15;16159:4;16156:1;16149:15;16175:135;16214:3;16235:17;;;16232:43;;16255:18;;:::i;:::-;-1:-1:-1;16302:1:1;16291:13;;16175:135::o;16447:980::-;16709:4;16757:3;16746:9;16742:19;16788:6;16777:9;16770:25;16814:2;16852:6;16847:2;16836:9;16832:18;16825:34;16895:3;16890:2;16879:9;16875:18;16868:31;16919:6;16954;16948:13;16985:6;16977;16970:22;17023:3;17012:9;17008:19;17001:26;;17062:2;17054:6;17050:15;17036:29;;17083:1;17093:195;17107:6;17104:1;17101:13;17093:195;;;17172:13;;-1:-1:-1;;;;;17168:39:1;17156:52;;17263:15;;;;17228:12;;;;17204:1;17122:9;17093:195;;;-1:-1:-1;;;;;;;17344:32:1;;;;17339:2;17324:18;;17317:60;-1:-1:-1;;;17408:3:1;17393:19;17386:35;17305:3;16447:980;-1:-1:-1;;;16447:980:1:o

Swarm Source

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