ETH Price: $2,421.00 (+0.15%)

Token

Drachma Network (DRC)
 

Overview

Max Total Supply

10,000,000 DRC

Holders

104

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
DrachmaNetwork

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

Website     : https://drachma.network/
Telegram    : https://t.me/DrachmaNetwork_ERC
Twitter     : https://twitter.com/DrachmaNetwork

/*

*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;


interface IERC20 {
    
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    
}



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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}


library Address {
    
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    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");
    }
    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }


    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                 assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;


    // Set original owner
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = 0xdCB65eb2f4B3b2D206c631e4bDde5A1D0450fa0f;
        emit OwnershipTransferred(address(0), _owner);
    }

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

    // Restrict function to contract owner only 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    // Renounce ownership of the contract 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    // Transfer the contract to to a new owner
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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


contract DrachmaNetwork is Context, IERC20, Ownable { 
    using SafeMath for uint256;
    using Address for address;


    // Tracking status of wallets
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee; 


    address payable public contract_creators = payable(0xdCB65eb2f4B3b2D206c631e4bDde5A1D0450fa0f);
    address payable public Wallet_Burn = payable(0x000000000000000000000000000000000000dEaD); 
    address payable public Wallet_zero = payable(0x0000000000000000000000000000000000000000); 


    string private _name = "Drachma Network"; 
    string private _symbol = "DRC";  
    uint8 private _decimals = 18;
    uint256 private _tTotal = 10000000 * 10**18;
    uint256 private _tFeeTotal;

    // Counter for liquify trigger
    uint8 private txCount = 0;
    uint8 private swapTrigger = 3; 

    // This is the set max fees only maximum 30
    // This includes the buy AND the sell fees!
    uint256 private maxPossibleFee = 30; 


    // Setting the initial fees
    uint256 private _TotalFee = 20;
    uint256 public _buyFee = 10;
    uint256 public _sellFee = 10;


    // 'Previous fees' are used to keep track of fee settings when removing and restoring fees
    uint256 private _previousTotalFee = _TotalFee; 
    uint256 private _previousBuyFee = _buyFee; 
    uint256 private _previousSellFee = _sellFee; 


    // Max wallet holding (1% at launch)
    uint256 public _maxWalletToken = _tTotal.mul(2).div(100);
    uint256 private _previousMaxWalletToken = _maxWalletToken;


    // Maximum transaction amount (1% at launch)
    uint256 public _maxTxAmount = _tTotal.mul(2).div(100); 
    uint256 private _previousMaxTxAmount = _maxTxAmount;


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
        
    );
    
    // Prevent processing while already processing! 
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

      
    constructor () {
        _tOwned[owner()] = _tTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        
        // Create pair address for PancakeSwap
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[contract_creators] = true;
        
        emit Transfer(address(0), owner(), _tTotal);
    }


 
    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }




 
    // Set a wallet address so that it does not have to pay transaction fees
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    // Set a wallet address so that it has to pay transaction fees
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }




    function setFeesTax_DRC (uint256 Buy_Fee, uint256 Sell_Fee) external onlyOwner() {

        require((Buy_Fee + Sell_Fee) <= maxPossibleFee, "Fee is too high!");
        _sellFee = Sell_Fee;
        _buyFee = Buy_Fee;

    }



    // Update main wallet
    function ChangeWalletFee(address payable wallet) public onlyOwner() {
        contract_creators = wallet;
        _isExcludedFromFee[contract_creators] = true;
    }


    
    // Toggle on and off to auto process tokens to ETH wallet 
    function SetSwapEnabled(bool true_or_false) public onlyOwner {
        swapAndLiquifyEnabled = true_or_false;
        emit SwapAndLiquifyEnabledUpdated(true_or_false);
    }

    // This will set the number of transactions required before the 'swapAndLiquify' function triggers
    function SetNumberOfTransactions(uint8 number_of_transactions) public onlyOwner {
        swapTrigger = number_of_transactions;
    }
    


    // This function is required so that the contract can receive ETH from pancakeswap
    receive() external payable {}

    bool public noFeeToTransfer = true;

    function SetTransfersExceptFees(bool true_or_false) external onlyOwner {
        noFeeToTransfer = true_or_false;
    }

    

    // Set the Max transaction amount (percent of total supply)
    function SetMaxTransaction_DRC(uint256 maxTxPercent_x100) external onlyOwner() {
        _maxTxAmount = _tTotal*maxTxPercent_x100/10000;
    }    
    
    // Set the maximum wallet holding (percent of total supply)
     function SetMaxWallet_DRC(uint256 maxWallPercent_x100) external onlyOwner() {
        _maxWalletToken = _tTotal*maxWallPercent_x100/10000;
    }



    // Remove all fees
    function removeAllFee() private {
        if(_TotalFee == 0 && _buyFee == 0 && _sellFee == 0) return;


        _previousBuyFee = _buyFee; 
        _previousSellFee = _sellFee; 
        _previousTotalFee = _TotalFee;
        _buyFee = 0;
        _sellFee = 0;
        _TotalFee = 0;

    }
    
    // Restore all fees
    function restoreAllFee() private {
    
    _TotalFee = _previousTotalFee;
    _buyFee = _previousBuyFee; 
    _sellFee = _previousSellFee; 

    }


    // Approve a wallet to sell tokens
    function _approve(address owner, address spender, uint256 amount) private {

        require(owner != address(0) && spender != address(0), "ERR: zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);

    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        

        // Limit wallet total
        if (to != owner() &&
            to != contract_creators &&
            to != address(this) &&
            to != uniswapV2Pair &&
            to != Wallet_Burn &&
            from != owner()){
            uint256 heldTokens = balanceOf(to);
            require((heldTokens + amount) <= _maxWalletToken,"You are trying to buy too many tokens. You have reached the limit for one wallet.");}


        // Limit the maximum number of tokens that can be bought or sold in one transaction
        if (from != owner() && to != owner())
            require(amount <= _maxTxAmount, "You are trying to buy more than the max transaction limit.");




        // SwapAndLiquify is triggered after every X transactions - this number can be adjusted using swapTrigger

        if(
            txCount >= swapTrigger && 
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled 
            )
        {  
            
            txCount = 0;
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance > _maxTxAmount) {contractTokenBalance = _maxTxAmount;}
            if(contractTokenBalance > 0){
            swapAndLiquify(contractTokenBalance);
        }
        }


      

        
        bool takeFee = true;
         
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || (noFeeToTransfer && from != uniswapV2Pair && to != uniswapV2Pair)){
            takeFee = false;
        } else if (from == uniswapV2Pair){_TotalFee = _buyFee;} else if (to == uniswapV2Pair){_TotalFee = _sellFee;}
        
        _tokenTransfer(from,to,amount,takeFee);
    }



    // Send ETH to external wallet
    function sendToWallet(address payable wallet, uint256 amount) private {
            wallet.transfer(amount);
        }


    // Processing tokens from contract
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        
        swapTokensForBNB(contractTokenBalance);
        uint256 contractBNB = address(this).balance;
        sendToWallet(contract_creators,contractBNB);
    }


    // Manual Token Process Trigger - Enter the percent of the tokens that you'd like to send to process
    function TokenProcessTrigger (uint256 percent_Of_Tokens_To_Process) public onlyOwner {
        // Do not trigger if already in swap
        require(!inSwapAndLiquify, "Currently processing, try later."); 
        if (percent_Of_Tokens_To_Process > 100){percent_Of_Tokens_To_Process == 100;}
        uint256 tokensOnContract = balanceOf(address(this));
        uint256 sendTokens = tokensOnContract*percent_Of_Tokens_To_Process/100;
        swapAndLiquify(sendTokens);
    }


    // Swapping tokens for ETH using Uniswap 
    function swapTokensForBNB(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }


    // Remove random tokens from the contract and send to a wallet
    function RemoveTokens(address random_Token_Address, address send_to_wallet, uint256 number_of_tokens) public onlyOwner returns(bool _sent){
        require(random_Token_Address != address(this), "Can not remove native token");
        uint256 randomBalance = IERC20(random_Token_Address).balanceOf(address(this));
        if (number_of_tokens > randomBalance){number_of_tokens = randomBalance;}
        _sent = IERC20(random_Token_Address).transfer(send_to_wallet, number_of_tokens);
    }



    // Set new router and make the new pair address
    function SetNewRouterAndMakePair_DRC(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Pair = IUniswapV2Factory(_newPCSRouter.factory()).createPair(address(this), _newPCSRouter.WETH());
        uniswapV2Router = _newPCSRouter;
    }
   
    // Set new router
    function setNewRouterAddress_DRC(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Router = _newPCSRouter;
    }
    
    // Set new address - This will be the 'Cake LP' address for the token pairing
    function SetNewPairAddress_DRC(address newPair) public onlyOwner() {
        uniswapV2Pair = newPair;
    }

    // Check if token transfer needs to process fees
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        
        
        if(!takeFee){
            removeAllFee();
            } else {
                txCount++;
            }
            _transferTokens(sender, recipient, amount);
        
        if(!takeFee)
            restoreAllFee();
    }

    // Redistributing tokens and adding the fee to the contract address
    function _transferTokens(address sender, address recipient, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tDev) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _tOwned[address(this)] = _tOwned[address(this)].add(tDev);   
        emit Transfer(sender, recipient, tTransferAmount);
    }


    // Calculating the fee in tokens
    function _getValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tDev = tAmount*_TotalFee/100;
        uint256 tTransferAmount = tAmount.sub(tDev);
        return (tTransferAmount, tDev);
    }


}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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 payable","name":"wallet","type":"address"}],"name":"ChangeWalletFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"random_Token_Address","type":"address"},{"internalType":"address","name":"send_to_wallet","type":"address"},{"internalType":"uint256","name":"number_of_tokens","type":"uint256"}],"name":"RemoveTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent_x100","type":"uint256"}],"name":"SetMaxTransaction_DRC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_x100","type":"uint256"}],"name":"SetMaxWallet_DRC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"SetNewPairAddress_DRC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"SetNewRouterAndMakePair_DRC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"number_of_transactions","type":"uint8"}],"name":"SetNumberOfTransactions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"SetSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"SetTransfersExceptFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_Of_Tokens_To_Process","type":"uint256"}],"name":"TokenProcessTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Wallet_Burn","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Wallet_zero","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contract_creators","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noFeeToTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Buy_Fee","type":"uint256"},{"internalType":"uint256","name":"Sell_Fee","type":"uint256"}],"name":"setFeesTax_DRC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouterAddress_DRC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273dcb65eb2f4b3b2d206c631e4bdde5a1d0450fa0f600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600f81526020017f44726163686d61204e6574776f726b00000000000000000000000000000000008152506007908162000124919062000a68565b506040518060400160405280600381526020017f4452430000000000000000000000000000000000000000000000000000000000815250600890816200016b919062000a68565b506012600960006101000a81548160ff021916908360ff1602179055506a084595161401484a000000600a556000600c60006101000a81548160ff021916908360ff1602179055506003600c60016101000a81548160ff021916908360ff160217905550601e600d556014600e55600a600f55600a601055600e54601155600f546012556010546013556200022c6064620002186002600a546200079560201b6200207f1790919060201c565b620007ad60201b620020951790919060201c565b6014556014546015556200026c6064620002586002600a546200079560201b6200207f1790919060201c565b620007ad60201b620020951790919060201c565b6016556016546017556001601960156101000a81548160ff0219169083151502179055506001601960166101000a81548160ff021916908315150217905550348015620002b857600080fd5b5073dcb65eb2f4b3b2d206c631e4bdde5a1d0450fa0f6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600a54600160006200039f620007c560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000442573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000468919062000bb9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f6919062000bb9565b6040518363ffffffff1660e01b81526004016200051592919062000bfc565b6020604051808303816000875af115801562000535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055b919062000bb9565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620005f2620007c560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000725620007c560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5460405162000786919062000c3a565b60405180910390a35062000d38565b60008183620007a5919062000c86565b905092915050565b60008183620007bd919062000d00565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200087057607f821691505b60208210810362000886576200088562000828565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008b1565b620008fc8683620008b1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000949620009436200093d8462000914565b6200091e565b62000914565b9050919050565b6000819050919050565b620009658362000928565b6200097d620009748262000950565b848454620008be565b825550505050565b600090565b6200099462000985565b620009a18184846200095a565b505050565b5b81811015620009c957620009bd6000826200098a565b600181019050620009a7565b5050565b601f82111562000a1857620009e2816200088c565b620009ed84620008a1565b81016020851015620009fd578190505b62000a1562000a0c85620008a1565b830182620009a6565b50505b505050565b600082821c905092915050565b600062000a3d6000198460080262000a1d565b1980831691505092915050565b600062000a58838362000a2a565b9150826002028217905092915050565b62000a7382620007ee565b67ffffffffffffffff81111562000a8f5762000a8e620007f9565b5b62000a9b825462000857565b62000aa8828285620009cd565b600060209050601f83116001811462000ae0576000841562000acb578287015190505b62000ad7858262000a4a565b86555062000b47565b601f19841662000af0866200088c565b60005b8281101562000b1a5784890151825560018201915060208501945060208101905062000af3565b8683101562000b3a578489015162000b36601f89168262000a2a565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b818262000b54565b9050919050565b62000b938162000b74565b811462000b9f57600080fd5b50565b60008151905062000bb38162000b88565b92915050565b60006020828403121562000bd25762000bd162000b4f565b5b600062000be28482850162000ba2565b91505092915050565b62000bf68162000b74565b82525050565b600060408201905062000c13600083018562000beb565b62000c22602083018462000beb565b9392505050565b62000c348162000914565b82525050565b600060208201905062000c51600083018462000c29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c938262000914565b915062000ca08362000914565b925082820262000cb08162000914565b9150828204841483151762000cca5762000cc962000c57565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d0d8262000914565b915062000d1a8362000914565b92508262000d2d5762000d2c62000cd1565b5b828204905092915050565b613daa8062000d486000396000f3fe60806040526004361061024a5760003560e01c806370d0f7e011610139578063a457c2d7116100b6578063e3c01d911161007a578063e3c01d91146108b5578063ea2f0b37146108de578063ea469fb414610907578063ec764d3d14610930578063f1fa713d14610959578063f2fde38b1461098257610251565b8063a457c2d7146107ac578063a9059cbb146107e9578063b990e23f14610826578063d82926ff1461084f578063dd62ed3e1461087857610251565b8063805c0e0f116100fd578063805c0e0f146106d9578063818ab46d146107045780638bcc108c1461072d5780638da5cb5b1461075657806395d89b411461078157610251565b806370d0f7e014610606578063715018a61461062f578063768dc7101461064657806378109e54146106835780637d1db4a5146106ae57610251565b806339509351116101c7578063505413791161018b5780635054137914610521578063590f897e1461054a5780636415bc7a1461057557806367e4427c146105a057806370a08231146105c957610251565b8063395093511461043a57806340b9a54b14610477578063437823ec146104a257806349bd5a5e146104cb5780634a74bb02146104f657610251565b806318160ddd1161020e57806318160ddd1461033f578063220f66961461036a57806323b872dd146103955780632e9c3a76146103d2578063313ce5671461040f57610251565b806306fdde0314610256578063095ea7b31461028157806313fad07a146102be57806315a7cb10146102e95780631694505e1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109ab565b6040516102789190612ffa565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906130b5565b610a3d565b6040516102b59190613110565b60405180910390f35b3480156102ca57600080fd5b506102d3610a5b565b6040516102e09190613110565b60405180910390f35b3480156102f557600080fd5b506102fe610a6e565b60405161030b919061314c565b60405180910390f35b34801561032057600080fd5b50610329610a94565b60405161033691906131c6565b60405180910390f35b34801561034b57600080fd5b50610354610aba565b60405161036191906131f0565b60405180910390f35b34801561037657600080fd5b5061037f610ac4565b60405161038c9190613110565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b7919061320b565b610ad7565b6040516103c99190613110565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061320b565b610bb0565b6040516104069190613110565b60405180910390f35b34801561041b57600080fd5b50610424610dae565b604051610431919061327a565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c91906130b5565b610dc5565b60405161046e9190613110565b60405180910390f35b34801561048357600080fd5b5061048c610e78565b60405161049991906131f0565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190613295565b610e7e565b005b3480156104d757600080fd5b506104e0610f55565b6040516104ed91906132d1565b60405180910390f35b34801561050257600080fd5b5061050b610f7b565b6040516105189190613110565b60405180910390f35b34801561052d57600080fd5b50610548600480360381019061054391906132ec565b610f8e565b005b34801561055657600080fd5b5061055f61102e565b60405161056c91906131f0565b60405180910390f35b34801561058157600080fd5b5061058a611034565b604051610597919061314c565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613319565b61105a565b005b3480156105d557600080fd5b506105f060048036038101906105eb9190613295565b611138565b6040516105fd91906131f0565b60405180910390f35b34801561061257600080fd5b5061062d60048036038101906106289190613385565b611181565b005b34801561063b57600080fd5b5061064461121a565b005b34801561065257600080fd5b5061066d60048036038101906106689190613295565b611354565b60405161067a9190613110565b60405180910390f35b34801561068f57600080fd5b50610698611374565b6040516106a591906131f0565b60405180910390f35b3480156106ba57600080fd5b506106c361137a565b6040516106d091906131f0565b60405180910390f35b3480156106e557600080fd5b506106ee611380565b6040516106fb919061314c565b60405180910390f35b34801561071057600080fd5b5061072b600480360381019061072691906133de565b6113a6565b005b34801561073957600080fd5b50610754600480360381019061074f9190613385565b6114e0565b005b34801561076257600080fd5b5061076b6115b0565b60405161077891906132d1565b60405180910390f35b34801561078d57600080fd5b506107966115d9565b6040516107a39190612ffa565b60405180910390f35b3480156107b857600080fd5b506107d360048036038101906107ce91906130b5565b61166b565b6040516107e09190613110565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b91906130b5565b611738565b60405161081d9190613110565b60405180910390f35b34801561083257600080fd5b5061084d600480360381019061084891906132ec565b611756565b005b34801561085b57600080fd5b5061087660048036038101906108719190613295565b611859565b005b34801561088457600080fd5b5061089f600480360381019061089a919061340b565b611ab9565b6040516108ac91906131f0565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d79190613295565b611b40565b005b3480156108ea57600080fd5b5061090560048036038101906109009190613295565b611c00565b005b34801561091357600080fd5b5061092e60048036038101906109299190613295565b611cd7565b005b34801561093c57600080fd5b50610957600480360381019061095291906132ec565b611d9d565b005b34801561096557600080fd5b50610980600480360381019061097b9190613477565b611e3d565b005b34801561098e57600080fd5b506109a960048036038101906109a49190613295565b611ed7565b005b6060600780546109ba906134d3565b80601f01602080910402602001604051908101604052809291908181526020018280546109e6906134d3565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a51610a4a6120ab565b84846120b3565b6001905092915050565b601960169054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b601960149054906101000a900460ff1681565b6000610ae4848484612247565b610ba584610af06120ab565b610ba085604051806060016040528060288152602001613d2860289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b566120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128849092919063ffffffff16565b6120b3565b600190509392505050565b6000610bba6120ab565b73ffffffffffffffffffffffffffffffffffffffff16610bd86115b0565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590613550565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c93906135bc565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cd791906132d1565b602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1891906135f1565b905080831115610d26578092505b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610d6192919061361e565b6020604051808303816000875af1158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da4919061365c565b9150509392505050565b6000600960009054906101000a900460ff16905090565b6000610e6e610dd26120ab565b84610e698560026000610de36120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b6120b3565b6001905092915050565b600f5481565b610e866120ab565b73ffffffffffffffffffffffffffffffffffffffff16610ea46115b0565b73ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613550565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960159054906101000a900460ff1681565b610f966120ab565b73ffffffffffffffffffffffffffffffffffffffff16610fb46115b0565b73ffffffffffffffffffffffffffffffffffffffff161461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190613550565b60405180910390fd5b61271081600a5461101b91906136b8565b6110259190613729565b60168190555050565b60105481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110626120ab565b73ffffffffffffffffffffffffffffffffffffffff166110806115b0565b73ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90613550565b60405180910390fd5b600d5481836110e5919061375a565b1115611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d906137da565b60405180910390fd5b8060108190555081600f819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111896120ab565b73ffffffffffffffffffffffffffffffffffffffff166111a76115b0565b73ffffffffffffffffffffffffffffffffffffffff16146111fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f490613550565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b6112226120ab565b73ffffffffffffffffffffffffffffffffffffffff166112406115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90613550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b60145481565b60165481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113ae6120ab565b73ffffffffffffffffffffffffffffffffffffffff166113cc6115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141990613550565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6114e86120ab565b73ffffffffffffffffffffffffffffffffffffffff166115066115b0565b73ffffffffffffffffffffffffffffffffffffffff161461155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613550565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516115a59190613110565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600880546115e8906134d3565b80601f0160208091040260200160405190810160405280929190818152602001828054611614906134d3565b80156116615780601f1061163657610100808354040283529160200191611661565b820191906000526020600020905b81548152906001019060200180831161164457829003601f168201915b5050505050905090565b600061172e6116786120ab565b8461172985604051806060016040528060258152602001613d5060259139600260006116a26120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128849092919063ffffffff16565b6120b3565b6001905092915050565b600061174c6117456120ab565b8484612247565b6001905092915050565b61175e6120ab565b73ffffffffffffffffffffffffffffffffffffffff1661177c6115b0565b73ffffffffffffffffffffffffffffffffffffffff16146117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990613550565b60405180910390fd5b601960149054906101000a900460ff1615611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990613846565b60405180910390fd5b600061182d30611138565b905060006064838361183f91906136b8565b6118499190613729565b9050611854816128ef565b505050565b6118616120ab565b73ffffffffffffffffffffffffffffffffffffffff1661187f6115b0565b73ffffffffffffffffffffffffffffffffffffffff16146118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc90613550565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611949919061387b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d4919061387b565b6040518363ffffffff1660e01b81526004016119f19291906138a8565b6020604051808303816000875af1158015611a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a34919061387b565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b486120ab565b73ffffffffffffffffffffffffffffffffffffffff16611b666115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb390613550565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c086120ab565b73ffffffffffffffffffffffffffffffffffffffff16611c266115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613550565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611cdf6120ab565b73ffffffffffffffffffffffffffffffffffffffff16611cfd6115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90613550565b60405180910390fd5b600081905080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611da56120ab565b73ffffffffffffffffffffffffffffffffffffffff16611dc36115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1090613550565b60405180910390fd5b61271081600a54611e2a91906136b8565b611e349190613729565b60148190555050565b611e456120ab565b73ffffffffffffffffffffffffffffffffffffffff16611e636115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb090613550565b60405180910390fd5b80600c60016101000a81548160ff021916908360ff16021790555050565b611edf6120ab565b73ffffffffffffffffffffffffffffffffffffffff16611efd6115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a90613550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb990613943565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000818361208d91906136b8565b905092915050565b600081836120a39190613729565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561211d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61215c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612153906139af565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161223a91906131f0565b60405180910390a3505050565b61224f6115b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122d85750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561231057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561236a5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123c45750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240357506123d36115b0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561246757600061241383611138565b90506014548282612424919061375a565b1115612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90613a67565b60405180910390fd5b505b61246f6115b0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124dd57506124ad6115b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561252857601654811115612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90613af9565b60405180910390fd5b5b600c60019054906101000a900460ff1660ff16600c60009054906101000a900460ff1660ff16101580156125695750601960149054906101000a900460ff16155b80156125c35750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156125db5750601960159054906101000a900460ff165b1561262e576000600c60006101000a81548160ff021916908360ff160217905550600061260730611138565b90506016548111156126195760165490505b600081111561262c5761262b816128ef565b5b505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126d55750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127a05750601960169054906101000a900460ff1680156127455750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561279f5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156127ae5760009050612872565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361281157600f54600e81905550612871565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361287057601054600e819055505b5b5b61287e84848484612963565b50505050565b60008383111582906128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c39190612ffa565b60405180910390fd5b5082840390509392505050565b600081836128e7919061375a565b905092915050565b6001601960146101000a81548160ff021916908315150217905550612913816129cd565b6000479050612944600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612c10565b506000601960146101000a81548160ff02191690831515021790555050565b8061297557612970612c5b565b6129ae565b600c600081819054906101000a900460ff168092919061299490613b19565b91906101000a81548160ff021916908360ff160217905550505b6129b9848484612cb7565b806129c7576129c6612ef2565b5b50505050565b6000600267ffffffffffffffff8111156129ea576129e9613b42565b5b604051908082528060200260200182016040528015612a185781602001602082028036833780820191505090505b5090503081600081518110612a3057612a2f613b71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afb919061387b565b81600181518110612b0f57612b0e613b71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b7630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120b3565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bda959493929190613c99565b600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c56573d6000803e3d6000fd5b505050565b6000600e54148015612c6f57506000600f54145b8015612c7d57506000601054145b612cb557600f54601281905550601054601381905550600e546011819055506000600f8190555060006010819055506000600e819055505b565b600080612cc383612f0f565b91509150612d1983600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dae82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e4381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ee391906131f0565b60405180910390a35050505050565b601154600e81905550601254600f81905550601354601081905550565b60008060006064600e5485612f2491906136b8565b612f2e9190613729565b90506000612f458286612f5490919063ffffffff16565b90508082935093505050915091565b60008183612f629190613cf3565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fa4578082015181840152602081019050612f89565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fcc82612f6a565b612fd68185612f75565b9350612fe6818560208601612f86565b612fef81612fb0565b840191505092915050565b600060208201905081810360008301526130148184612fc1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061304c82613021565b9050919050565b61305c81613041565b811461306757600080fd5b50565b60008135905061307981613053565b92915050565b6000819050919050565b6130928161307f565b811461309d57600080fd5b50565b6000813590506130af81613089565b92915050565b600080604083850312156130cc576130cb61301c565b5b60006130da8582860161306a565b92505060206130eb858286016130a0565b9150509250929050565b60008115159050919050565b61310a816130f5565b82525050565b60006020820190506131256000830184613101565b92915050565b600061313682613021565b9050919050565b6131468161312b565b82525050565b6000602082019050613161600083018461313d565b92915050565b6000819050919050565b600061318c61318761318284613021565b613167565b613021565b9050919050565b600061319e82613171565b9050919050565b60006131b082613193565b9050919050565b6131c0816131a5565b82525050565b60006020820190506131db60008301846131b7565b92915050565b6131ea8161307f565b82525050565b600060208201905061320560008301846131e1565b92915050565b6000806000606084860312156132245761322361301c565b5b60006132328682870161306a565b93505060206132438682870161306a565b9250506040613254868287016130a0565b9150509250925092565b600060ff82169050919050565b6132748161325e565b82525050565b600060208201905061328f600083018461326b565b92915050565b6000602082840312156132ab576132aa61301c565b5b60006132b98482850161306a565b91505092915050565b6132cb81613041565b82525050565b60006020820190506132e660008301846132c2565b92915050565b6000602082840312156133025761330161301c565b5b6000613310848285016130a0565b91505092915050565b600080604083850312156133305761332f61301c565b5b600061333e858286016130a0565b925050602061334f858286016130a0565b9150509250929050565b613362816130f5565b811461336d57600080fd5b50565b60008135905061337f81613359565b92915050565b60006020828403121561339b5761339a61301c565b5b60006133a984828501613370565b91505092915050565b6133bb8161312b565b81146133c657600080fd5b50565b6000813590506133d8816133b2565b92915050565b6000602082840312156133f4576133f361301c565b5b6000613402848285016133c9565b91505092915050565b600080604083850312156134225761342161301c565b5b60006134308582860161306a565b92505060206134418582860161306a565b9150509250929050565b6134548161325e565b811461345f57600080fd5b50565b6000813590506134718161344b565b92915050565b60006020828403121561348d5761348c61301c565b5b600061349b84828501613462565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134eb57607f821691505b6020821081036134fe576134fd6134a4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061353a602083612f75565b915061354582613504565b602082019050919050565b600060208201905081810360008301526135698161352d565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000600082015250565b60006135a6601b83612f75565b91506135b182613570565b602082019050919050565b600060208201905081810360008301526135d581613599565b9050919050565b6000815190506135eb81613089565b92915050565b6000602082840312156136075761360661301c565b5b6000613615848285016135dc565b91505092915050565b600060408201905061363360008301856132c2565b61364060208301846131e1565b9392505050565b60008151905061365681613359565b92915050565b6000602082840312156136725761367161301c565b5b600061368084828501613647565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136c38261307f565b91506136ce8361307f565b92508282026136dc8161307f565b915082820484148315176136f3576136f2613689565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137348261307f565b915061373f8361307f565b92508261374f5761374e6136fa565b5b828204905092915050565b60006137658261307f565b91506137708361307f565b925082820190508082111561378857613787613689565b5b92915050565b7f46656520697320746f6f20686967682100000000000000000000000000000000600082015250565b60006137c4601083612f75565b91506137cf8261378e565b602082019050919050565b600060208201905081810360008301526137f3816137b7565b9050919050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b6000613830602083612f75565b915061383b826137fa565b602082019050919050565b6000602082019050818103600083015261385f81613823565b9050919050565b60008151905061387581613053565b92915050565b6000602082840312156138915761389061301c565b5b600061389f84828501613866565b91505092915050565b60006040820190506138bd60008301856132c2565b6138ca60208301846132c2565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061392d602683612f75565b9150613938826138d1565b604082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b6000613999601183612f75565b91506139a482613963565b602082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b7f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460008201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d6960208201527f7420666f72206f6e652077616c6c65742e000000000000000000000000000000604082015250565b6000613a51605183612f75565b9150613a5c826139cf565b606082019050919050565b60006020820190508181036000830152613a8081613a44565b9050919050565b7f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060008201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000602082015250565b6000613ae3603a83612f75565b9150613aee82613a87565b604082019050919050565b60006020820190508181036000830152613b1281613ad6565b9050919050565b6000613b248261325e565b915060ff8203613b3757613b36613689565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613bc5613bc0613bbb84613ba0565b613167565b61307f565b9050919050565b613bd581613baa565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c1081613041565b82525050565b6000613c228383613c07565b60208301905092915050565b6000602082019050919050565b6000613c4682613bdb565b613c508185613be6565b9350613c5b83613bf7565b8060005b83811015613c8c578151613c738882613c16565b9750613c7e83613c2e565b925050600181019050613c5f565b5085935050505092915050565b600060a082019050613cae60008301886131e1565b613cbb6020830187613bcc565b8181036040830152613ccd8186613c3b565b9050613cdc60608301856132c2565b613ce960808301846131e1565b9695505050505050565b6000613cfe8261307f565b9150613d098361307f565b9250828203905081811115613d2157613d20613689565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f5ecca369d4992b2a4c7961abb55b05fea800fa82214fd674ab49d8a8ac5744364736f6c63430008120033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c806370d0f7e011610139578063a457c2d7116100b6578063e3c01d911161007a578063e3c01d91146108b5578063ea2f0b37146108de578063ea469fb414610907578063ec764d3d14610930578063f1fa713d14610959578063f2fde38b1461098257610251565b8063a457c2d7146107ac578063a9059cbb146107e9578063b990e23f14610826578063d82926ff1461084f578063dd62ed3e1461087857610251565b8063805c0e0f116100fd578063805c0e0f146106d9578063818ab46d146107045780638bcc108c1461072d5780638da5cb5b1461075657806395d89b411461078157610251565b806370d0f7e014610606578063715018a61461062f578063768dc7101461064657806378109e54146106835780637d1db4a5146106ae57610251565b806339509351116101c7578063505413791161018b5780635054137914610521578063590f897e1461054a5780636415bc7a1461057557806367e4427c146105a057806370a08231146105c957610251565b8063395093511461043a57806340b9a54b14610477578063437823ec146104a257806349bd5a5e146104cb5780634a74bb02146104f657610251565b806318160ddd1161020e57806318160ddd1461033f578063220f66961461036a57806323b872dd146103955780632e9c3a76146103d2578063313ce5671461040f57610251565b806306fdde0314610256578063095ea7b31461028157806313fad07a146102be57806315a7cb10146102e95780631694505e1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109ab565b6040516102789190612ffa565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906130b5565b610a3d565b6040516102b59190613110565b60405180910390f35b3480156102ca57600080fd5b506102d3610a5b565b6040516102e09190613110565b60405180910390f35b3480156102f557600080fd5b506102fe610a6e565b60405161030b919061314c565b60405180910390f35b34801561032057600080fd5b50610329610a94565b60405161033691906131c6565b60405180910390f35b34801561034b57600080fd5b50610354610aba565b60405161036191906131f0565b60405180910390f35b34801561037657600080fd5b5061037f610ac4565b60405161038c9190613110565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b7919061320b565b610ad7565b6040516103c99190613110565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061320b565b610bb0565b6040516104069190613110565b60405180910390f35b34801561041b57600080fd5b50610424610dae565b604051610431919061327a565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c91906130b5565b610dc5565b60405161046e9190613110565b60405180910390f35b34801561048357600080fd5b5061048c610e78565b60405161049991906131f0565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190613295565b610e7e565b005b3480156104d757600080fd5b506104e0610f55565b6040516104ed91906132d1565b60405180910390f35b34801561050257600080fd5b5061050b610f7b565b6040516105189190613110565b60405180910390f35b34801561052d57600080fd5b50610548600480360381019061054391906132ec565b610f8e565b005b34801561055657600080fd5b5061055f61102e565b60405161056c91906131f0565b60405180910390f35b34801561058157600080fd5b5061058a611034565b604051610597919061314c565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613319565b61105a565b005b3480156105d557600080fd5b506105f060048036038101906105eb9190613295565b611138565b6040516105fd91906131f0565b60405180910390f35b34801561061257600080fd5b5061062d60048036038101906106289190613385565b611181565b005b34801561063b57600080fd5b5061064461121a565b005b34801561065257600080fd5b5061066d60048036038101906106689190613295565b611354565b60405161067a9190613110565b60405180910390f35b34801561068f57600080fd5b50610698611374565b6040516106a591906131f0565b60405180910390f35b3480156106ba57600080fd5b506106c361137a565b6040516106d091906131f0565b60405180910390f35b3480156106e557600080fd5b506106ee611380565b6040516106fb919061314c565b60405180910390f35b34801561071057600080fd5b5061072b600480360381019061072691906133de565b6113a6565b005b34801561073957600080fd5b50610754600480360381019061074f9190613385565b6114e0565b005b34801561076257600080fd5b5061076b6115b0565b60405161077891906132d1565b60405180910390f35b34801561078d57600080fd5b506107966115d9565b6040516107a39190612ffa565b60405180910390f35b3480156107b857600080fd5b506107d360048036038101906107ce91906130b5565b61166b565b6040516107e09190613110565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b91906130b5565b611738565b60405161081d9190613110565b60405180910390f35b34801561083257600080fd5b5061084d600480360381019061084891906132ec565b611756565b005b34801561085b57600080fd5b5061087660048036038101906108719190613295565b611859565b005b34801561088457600080fd5b5061089f600480360381019061089a919061340b565b611ab9565b6040516108ac91906131f0565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d79190613295565b611b40565b005b3480156108ea57600080fd5b5061090560048036038101906109009190613295565b611c00565b005b34801561091357600080fd5b5061092e60048036038101906109299190613295565b611cd7565b005b34801561093c57600080fd5b50610957600480360381019061095291906132ec565b611d9d565b005b34801561096557600080fd5b50610980600480360381019061097b9190613477565b611e3d565b005b34801561098e57600080fd5b506109a960048036038101906109a49190613295565b611ed7565b005b6060600780546109ba906134d3565b80601f01602080910402602001604051908101604052809291908181526020018280546109e6906134d3565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a51610a4a6120ab565b84846120b3565b6001905092915050565b601960169054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b601960149054906101000a900460ff1681565b6000610ae4848484612247565b610ba584610af06120ab565b610ba085604051806060016040528060288152602001613d2860289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b566120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128849092919063ffffffff16565b6120b3565b600190509392505050565b6000610bba6120ab565b73ffffffffffffffffffffffffffffffffffffffff16610bd86115b0565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590613550565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c93906135bc565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cd791906132d1565b602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1891906135f1565b905080831115610d26578092505b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610d6192919061361e565b6020604051808303816000875af1158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da4919061365c565b9150509392505050565b6000600960009054906101000a900460ff16905090565b6000610e6e610dd26120ab565b84610e698560026000610de36120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b6120b3565b6001905092915050565b600f5481565b610e866120ab565b73ffffffffffffffffffffffffffffffffffffffff16610ea46115b0565b73ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613550565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960159054906101000a900460ff1681565b610f966120ab565b73ffffffffffffffffffffffffffffffffffffffff16610fb46115b0565b73ffffffffffffffffffffffffffffffffffffffff161461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190613550565b60405180910390fd5b61271081600a5461101b91906136b8565b6110259190613729565b60168190555050565b60105481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110626120ab565b73ffffffffffffffffffffffffffffffffffffffff166110806115b0565b73ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90613550565b60405180910390fd5b600d5481836110e5919061375a565b1115611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d906137da565b60405180910390fd5b8060108190555081600f819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111896120ab565b73ffffffffffffffffffffffffffffffffffffffff166111a76115b0565b73ffffffffffffffffffffffffffffffffffffffff16146111fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f490613550565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b6112226120ab565b73ffffffffffffffffffffffffffffffffffffffff166112406115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90613550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b60145481565b60165481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113ae6120ab565b73ffffffffffffffffffffffffffffffffffffffff166113cc6115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141990613550565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6114e86120ab565b73ffffffffffffffffffffffffffffffffffffffff166115066115b0565b73ffffffffffffffffffffffffffffffffffffffff161461155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613550565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516115a59190613110565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600880546115e8906134d3565b80601f0160208091040260200160405190810160405280929190818152602001828054611614906134d3565b80156116615780601f1061163657610100808354040283529160200191611661565b820191906000526020600020905b81548152906001019060200180831161164457829003601f168201915b5050505050905090565b600061172e6116786120ab565b8461172985604051806060016040528060258152602001613d5060259139600260006116a26120ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128849092919063ffffffff16565b6120b3565b6001905092915050565b600061174c6117456120ab565b8484612247565b6001905092915050565b61175e6120ab565b73ffffffffffffffffffffffffffffffffffffffff1661177c6115b0565b73ffffffffffffffffffffffffffffffffffffffff16146117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990613550565b60405180910390fd5b601960149054906101000a900460ff1615611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990613846565b60405180910390fd5b600061182d30611138565b905060006064838361183f91906136b8565b6118499190613729565b9050611854816128ef565b505050565b6118616120ab565b73ffffffffffffffffffffffffffffffffffffffff1661187f6115b0565b73ffffffffffffffffffffffffffffffffffffffff16146118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc90613550565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611949919061387b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d4919061387b565b6040518363ffffffff1660e01b81526004016119f19291906138a8565b6020604051808303816000875af1158015611a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a34919061387b565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b486120ab565b73ffffffffffffffffffffffffffffffffffffffff16611b666115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb390613550565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c086120ab565b73ffffffffffffffffffffffffffffffffffffffff16611c266115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613550565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611cdf6120ab565b73ffffffffffffffffffffffffffffffffffffffff16611cfd6115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90613550565b60405180910390fd5b600081905080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611da56120ab565b73ffffffffffffffffffffffffffffffffffffffff16611dc36115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1090613550565b60405180910390fd5b61271081600a54611e2a91906136b8565b611e349190613729565b60148190555050565b611e456120ab565b73ffffffffffffffffffffffffffffffffffffffff16611e636115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb090613550565b60405180910390fd5b80600c60016101000a81548160ff021916908360ff16021790555050565b611edf6120ab565b73ffffffffffffffffffffffffffffffffffffffff16611efd6115b0565b73ffffffffffffffffffffffffffffffffffffffff1614611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a90613550565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb990613943565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000818361208d91906136b8565b905092915050565b600081836120a39190613729565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561211d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61215c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612153906139af565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161223a91906131f0565b60405180910390a3505050565b61224f6115b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122d85750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561231057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561236a5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123c45750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240357506123d36115b0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561246757600061241383611138565b90506014548282612424919061375a565b1115612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90613a67565b60405180910390fd5b505b61246f6115b0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124dd57506124ad6115b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561252857601654811115612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90613af9565b60405180910390fd5b5b600c60019054906101000a900460ff1660ff16600c60009054906101000a900460ff1660ff16101580156125695750601960149054906101000a900460ff16155b80156125c35750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156125db5750601960159054906101000a900460ff165b1561262e576000600c60006101000a81548160ff021916908360ff160217905550600061260730611138565b90506016548111156126195760165490505b600081111561262c5761262b816128ef565b5b505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126d55750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127a05750601960169054906101000a900460ff1680156127455750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561279f5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156127ae5760009050612872565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361281157600f54600e81905550612871565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361287057601054600e819055505b5b5b61287e84848484612963565b50505050565b60008383111582906128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c39190612ffa565b60405180910390fd5b5082840390509392505050565b600081836128e7919061375a565b905092915050565b6001601960146101000a81548160ff021916908315150217905550612913816129cd565b6000479050612944600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612c10565b506000601960146101000a81548160ff02191690831515021790555050565b8061297557612970612c5b565b6129ae565b600c600081819054906101000a900460ff168092919061299490613b19565b91906101000a81548160ff021916908360ff160217905550505b6129b9848484612cb7565b806129c7576129c6612ef2565b5b50505050565b6000600267ffffffffffffffff8111156129ea576129e9613b42565b5b604051908082528060200260200182016040528015612a185781602001602082028036833780820191505090505b5090503081600081518110612a3057612a2f613b71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afb919061387b565b81600181518110612b0f57612b0e613b71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b7630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120b3565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bda959493929190613c99565b600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c56573d6000803e3d6000fd5b505050565b6000600e54148015612c6f57506000600f54145b8015612c7d57506000601054145b612cb557600f54601281905550601054601381905550600e546011819055506000600f8190555060006010819055506000600e819055505b565b600080612cc383612f0f565b91509150612d1983600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dae82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e4381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ee391906131f0565b60405180910390a35050505050565b601154600e81905550601254600f81905550601354601081905550565b60008060006064600e5485612f2491906136b8565b612f2e9190613729565b90506000612f458286612f5490919063ffffffff16565b90508082935093505050915091565b60008183612f629190613cf3565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fa4578082015181840152602081019050612f89565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fcc82612f6a565b612fd68185612f75565b9350612fe6818560208601612f86565b612fef81612fb0565b840191505092915050565b600060208201905081810360008301526130148184612fc1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061304c82613021565b9050919050565b61305c81613041565b811461306757600080fd5b50565b60008135905061307981613053565b92915050565b6000819050919050565b6130928161307f565b811461309d57600080fd5b50565b6000813590506130af81613089565b92915050565b600080604083850312156130cc576130cb61301c565b5b60006130da8582860161306a565b92505060206130eb858286016130a0565b9150509250929050565b60008115159050919050565b61310a816130f5565b82525050565b60006020820190506131256000830184613101565b92915050565b600061313682613021565b9050919050565b6131468161312b565b82525050565b6000602082019050613161600083018461313d565b92915050565b6000819050919050565b600061318c61318761318284613021565b613167565b613021565b9050919050565b600061319e82613171565b9050919050565b60006131b082613193565b9050919050565b6131c0816131a5565b82525050565b60006020820190506131db60008301846131b7565b92915050565b6131ea8161307f565b82525050565b600060208201905061320560008301846131e1565b92915050565b6000806000606084860312156132245761322361301c565b5b60006132328682870161306a565b93505060206132438682870161306a565b9250506040613254868287016130a0565b9150509250925092565b600060ff82169050919050565b6132748161325e565b82525050565b600060208201905061328f600083018461326b565b92915050565b6000602082840312156132ab576132aa61301c565b5b60006132b98482850161306a565b91505092915050565b6132cb81613041565b82525050565b60006020820190506132e660008301846132c2565b92915050565b6000602082840312156133025761330161301c565b5b6000613310848285016130a0565b91505092915050565b600080604083850312156133305761332f61301c565b5b600061333e858286016130a0565b925050602061334f858286016130a0565b9150509250929050565b613362816130f5565b811461336d57600080fd5b50565b60008135905061337f81613359565b92915050565b60006020828403121561339b5761339a61301c565b5b60006133a984828501613370565b91505092915050565b6133bb8161312b565b81146133c657600080fd5b50565b6000813590506133d8816133b2565b92915050565b6000602082840312156133f4576133f361301c565b5b6000613402848285016133c9565b91505092915050565b600080604083850312156134225761342161301c565b5b60006134308582860161306a565b92505060206134418582860161306a565b9150509250929050565b6134548161325e565b811461345f57600080fd5b50565b6000813590506134718161344b565b92915050565b60006020828403121561348d5761348c61301c565b5b600061349b84828501613462565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134eb57607f821691505b6020821081036134fe576134fd6134a4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061353a602083612f75565b915061354582613504565b602082019050919050565b600060208201905081810360008301526135698161352d565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000600082015250565b60006135a6601b83612f75565b91506135b182613570565b602082019050919050565b600060208201905081810360008301526135d581613599565b9050919050565b6000815190506135eb81613089565b92915050565b6000602082840312156136075761360661301c565b5b6000613615848285016135dc565b91505092915050565b600060408201905061363360008301856132c2565b61364060208301846131e1565b9392505050565b60008151905061365681613359565b92915050565b6000602082840312156136725761367161301c565b5b600061368084828501613647565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136c38261307f565b91506136ce8361307f565b92508282026136dc8161307f565b915082820484148315176136f3576136f2613689565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137348261307f565b915061373f8361307f565b92508261374f5761374e6136fa565b5b828204905092915050565b60006137658261307f565b91506137708361307f565b925082820190508082111561378857613787613689565b5b92915050565b7f46656520697320746f6f20686967682100000000000000000000000000000000600082015250565b60006137c4601083612f75565b91506137cf8261378e565b602082019050919050565b600060208201905081810360008301526137f3816137b7565b9050919050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b6000613830602083612f75565b915061383b826137fa565b602082019050919050565b6000602082019050818103600083015261385f81613823565b9050919050565b60008151905061387581613053565b92915050565b6000602082840312156138915761389061301c565b5b600061389f84828501613866565b91505092915050565b60006040820190506138bd60008301856132c2565b6138ca60208301846132c2565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061392d602683612f75565b9150613938826138d1565b604082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b6000613999601183612f75565b91506139a482613963565b602082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b7f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460008201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d6960208201527f7420666f72206f6e652077616c6c65742e000000000000000000000000000000604082015250565b6000613a51605183612f75565b9150613a5c826139cf565b606082019050919050565b60006020820190508181036000830152613a8081613a44565b9050919050565b7f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060008201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000602082015250565b6000613ae3603a83612f75565b9150613aee82613a87565b604082019050919050565b60006020820190508181036000830152613b1281613ad6565b9050919050565b6000613b248261325e565b915060ff8203613b3757613b36613689565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613bc5613bc0613bbb84613ba0565b613167565b61307f565b9050919050565b613bd581613baa565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c1081613041565b82525050565b6000613c228383613c07565b60208301905092915050565b6000602082019050919050565b6000613c4682613bdb565b613c508185613be6565b9350613c5b83613bf7565b8060005b83811015613c8c578151613c738882613c16565b9750613c7e83613c2e565b925050600181019050613c5f565b5085935050505092915050565b600060a082019050613cae60008301886131e1565b613cbb6020830187613bcc565b8181036040830152613ccd8186613c3b565b9050613cdc60608301856132c2565b613ce960808301846131e1565b9695505050505050565b6000613cfe8261307f565b9150613d098361307f565b9250828203905081811115613d2157613d20613689565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f5ecca369d4992b2a4c7961abb55b05fea800fa82214fd674ab49d8a8ac5744364736f6c63430008120033

Deployed Bytecode Sourcemap

14351:13880:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17418:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18249:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20724:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14902:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16203:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17695:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16286:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18418:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25712:494;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17604:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18739:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15531:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19329:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16251:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16321:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20969:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15565:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14705:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19644:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17798:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20767:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6092:148;;;;;;;;;;;;;:::i;:::-;;14642:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15899:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16080:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14806:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19912:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20160:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5775:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17509;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18965:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17923:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24623:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26271:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18098:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26913:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19520:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26622:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21195:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20448:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6296:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17418:83;17455:13;17488:5;17481:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17418:83;:::o;18249:161::-;18324:4;18341:39;18350:12;:10;:12::i;:::-;18364:7;18373:6;18341:8;:39::i;:::-;18398:4;18391:11;;18249:161;;;;:::o;20724:34::-;;;;;;;;;;;;;:::o;14902:88::-;;;;;;;;;;;;;:::o;16203:41::-;;;;;;;;;;;;;:::o;17695:95::-;17748:7;17775;;17768:14;;17695:95;:::o;16286:28::-;;;;;;;;;;;;;:::o;18418:313::-;18516:4;18533:36;18543:6;18551:9;18562:6;18533:9;:36::i;:::-;18580:121;18589:6;18597:12;:10;:12::i;:::-;18611:89;18649:6;18611:89;;;;;;;;;;;;;;;;;:11;:19;18623:6;18611:19;;;;;;;;;;;;;;;:33;18631:12;:10;:12::i;:::-;18611:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18580:8;:121::i;:::-;18719:4;18712:11;;18418:313;;;;;:::o;25712:494::-;25839:10;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25901:4:::1;25869:37;;:20;:37;;::::0;25861:77:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25949:21;25980:20;25973:38;;;26020:4;25973:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25949:77;;26060:13;26041:16;:32;26037:72;;;26094:13;26075:32;;26037:72;26134:20;26127:37;;;26165:14;26181:16;26127:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26119:79;;25850:356;25712:494:::0;;;;;:::o;17604:83::-;17645:5;17670:9;;;;;;;;;;;17663:16;;17604:83;:::o;18739:218::-;18827:4;18844:83;18853:12;:10;:12::i;:::-;18867:7;18876:50;18915:10;18876:11;:25;18888:12;:10;:12::i;:::-;18876:25;;;;;;;;;;;;;;;:34;18902:7;18876:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18844:8;:83::i;:::-;18945:4;18938:11;;18739:218;;;;:::o;15531:27::-;;;;:::o;19329:111::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19428:4:::1;19398:18;:27;19417:7;19398:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19329:111:::0;:::o;16251:28::-;;;;;;;;;;;;;:::o;16321:40::-;;;;;;;;;;;;;:::o;20969:144::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21100:5:::1;21082:17;21074:7;;:25;;;;:::i;:::-;:31;;;;:::i;:::-;21059:12;:46;;;;20969:144:::0;:::o;15565:28::-;;;;:::o;14705:94::-;;;;;;;;;;;;;:::o;19644:229::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19770:14:::1;;19757:8;19747:7;:18;;;;:::i;:::-;19746:38;;19738:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19827:8;19816;:19;;;;19856:7;19846;:17;;;;19644:229:::0;;:::o;17798:117::-;17864:7;17891;:16;17899:7;17891:16;;;;;;;;;;;;;;;;17884:23;;17798:117;;;:::o;20767:121::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20867:13:::1;20849:15;;:31;;;;;;;;;;;;;;;;;;20767:121:::0;:::o;6092:148::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6199:1:::1;6162:40;;6183:6;::::0;::::1;;;;;;;;6162:40;;;;;;;;;;;;6230:1;6213:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6092:148::o:0;14642:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;15899:56::-;;;;:::o;16080:53::-;;;;:::o;14806:88::-;;;;;;;;;;;;;:::o;19912:168::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20011:6:::1;19991:17;;:26;;;;;;;;;;;;;;;;;;20068:4;20028:18;:37;20047:17;;;;;;;;;;;20028:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;19912:168:::0;:::o;20160:176::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20256:13:::1;20232:21;;:37;;;;;;;;;;;;;;;;;;20285:43;20314:13;20285:43;;;;;;:::i;:::-;;;;;;;;20160:176:::0;:::o;5775:87::-;5821:7;5848:6;;;;;;;;;;;5841:13;;5775:87;:::o;17509:::-;17548:13;17581:7;17574:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17509:87;:::o;18965:269::-;19058:4;19075:129;19084:12;:10;:12::i;:::-;19098:7;19107:96;19146:15;19107:96;;;;;;;;;;;;;;;;;:11;:25;19119:12;:10;:12::i;:::-;19107:25;;;;;;;;;;;;;;;:34;19133:7;19107:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19075:8;:129::i;:::-;19222:4;19215:11;;18965:269;;;;:::o;17923:167::-;18001:4;18018:42;18028:12;:10;:12::i;:::-;18042:9;18053:6;18018:9;:42::i;:::-;18078:4;18071:11;;17923:167;;;;:::o;24623:480::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24774:16:::1;;;;;;;;;;;24773:17;24765:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;24926:24;24953;24971:4;24953:9;:24::i;:::-;24926:51;;24988:18;25055:3;25026:28;25009:16;:45;;;;:::i;:::-;:49;;;;:::i;:::-;24988:70;;25069:26;25084:10;25069:14;:26::i;:::-;24708:395;;24623:480:::0;:::o;26271:317::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26357:32:::1;26411:9;26357:64;;26466:13;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26448:53;;;26510:4;26517:13;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26448:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26432:13;;:106;;;;;;;;;;;;;;;;;;26567:13;26549:15;;:31;;;;;;;;;;;;;;;;;;26346:242;26271:317:::0;:::o;18098:143::-;18179:7;18206:11;:18;18218:5;18206:18;;;;;;;;;;;;;;;:27;18225:7;18206:27;;;;;;;;;;;;;;;;18199:34;;18098:143;;;;:::o;26913:109::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27007:7:::1;26991:13;;:23;;;;;;;;;;;;;;;;;;26913:109:::0;:::o;19520:110::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19617:5:::1;19587:18;:27;19606:7;19587:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19520:110:::0;:::o;26622:196::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26704:32:::1;26758:9;26704:64;;26797:13;26779:15;;:31;;;;;;;;;;;;;;;;;;26693:125;26622:196:::0;:::o;21195:146::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21328:5:::1;21308:19;21300:7;;:27;;;;:::i;:::-;:33;;;;:::i;:::-;21282:15;:51;;;;21195:146:::0;:::o;20448:135::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20553:22:::1;20539:11;;:36;;;;;;;;;;;;;;;;;;20448:135:::0;:::o;6296:244::-;5971:12;:10;:12::i;:::-;5960:23;;:7;:5;:7::i;:::-;:23;;;5952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6405:1:::1;6385:22;;:8;:22;;::::0;6377:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6495:8;6466:38;;6487:6;::::0;::::1;;;;;;;;6466:38;;;;;;;;;;;;6524:8;6515:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6296:244:::0;:::o;1147:98::-;1205:7;1236:1;1232;:5;;;;:::i;:::-;1225:12;;1147:98;;;;:::o;1257:::-;1315:7;1346:1;1342;:5;;;;:::i;:::-;1335:12;;1257:98;;;;:::o;1836:::-;1889:7;1916:10;1909:17;;1836:98;:::o;21917:266::-;22029:1;22012:19;;:5;:19;;;;:44;;;;;22054:1;22035:21;;:7;:21;;;;22012:44;22004:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22119:6;22089:11;:18;22101:5;22089:18;;;;;;;;;;;;;;;:27;22108:7;22089:27;;;;;;;;;;;;;;;:36;;;;22157:7;22141:32;;22150:5;22141:32;;;22166:6;22141:32;;;;;;:::i;:::-;;;;;;;;21917:266;;;:::o;22191:1849::-;22358:7;:5;:7::i;:::-;22352:13;;:2;:13;;;;:53;;;;;22388:17;;;;;;;;;;;22382:23;;:2;:23;;;;22352:53;:89;;;;;22436:4;22422:19;;:2;:19;;;;22352:89;:125;;;;;22464:13;;;;;;;;;;;22458:19;;:2;:19;;;;22352:125;:159;;;;;22500:11;;;;;;;;;;;22494:17;;:2;:17;;;;22352:159;:191;;;;;22536:7;:5;:7::i;:::-;22528:15;;:4;:15;;;;22352:191;22348:395;;;22559:18;22580:13;22590:2;22580:9;:13::i;:::-;22559:34;;22641:15;;22630:6;22617:10;:19;;;;:::i;:::-;22616:40;;22608:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;22544:199;22348:395;22862:7;:5;:7::i;:::-;22854:15;;:4;:15;;;;:32;;;;;22879:7;:5;:7::i;:::-;22873:13;;:2;:13;;;;22854:32;22850:144;;;22919:12;;22909:6;:22;;22901:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;22850:144;23158:11;;;;;;;;;;;23147:22;;:7;;;;;;;;;;;:22;;;;:57;;;;;23188:16;;;;;;;;;;;23187:17;23147:57;:95;;;;;23229:13;;;;;;;;;;;23221:21;;:4;:21;;;;23147:95;:133;;;;;23259:21;;;;;;;;;;;23147:133;23130:497;;;23347:1;23337:7;;:11;;;;;;;;;;;;;;;;;;23363:28;23394:24;23412:4;23394:9;:24::i;:::-;23363:55;;23459:12;;23436:20;:35;23433:78;;;23497:12;;23474:35;;23433:78;23551:1;23528:20;:24;23525:91;;;23568:36;23583:20;23568:14;:36::i;:::-;23525:91;23306:321;23130:497;23661:12;23676:4;23661:19;;23705:18;:24;23724:4;23705:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23733:18;:22;23752:2;23733:22;;;;;;;;;;;;;;;;;;;;;;;;;23705:50;:119;;;;23760:15;;;;;;;;;;;:40;;;;;23787:13;;;;;;;;;;;23779:21;;:4;:21;;;;23760:40;:63;;;;;23810:13;;;;;;;;;;;23804:19;;:2;:19;;;;23760:63;23705:119;23702:272;;;23850:5;23840:15;;23702:272;;;23885:13;;;;;;;;;;;23877:21;;:4;:21;;;23873:101;;23912:7;;23900:9;:19;;;;23873:101;;;23937:13;;;;;;;;;;;23931:19;;:2;:19;;;23927:47;;23964:8;;23952:9;:20;;;;23927:47;23873:101;23702:272;23994:38;24009:4;24014:2;24017:6;24024:7;23994:14;:38::i;:::-;22294:1746;22191:1849;;;:::o;1363:206::-;1449:7;1507:1;1502;:6;;1510:12;1494:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1549:1;1545;:5;1538:12;;1363:206;;;;;:::o;935:98::-;993:7;1024:1;1020;:5;;;;:::i;:::-;1013:12;;935:98;;;;:::o;24258:249::-;16683:4;16664:16;;:23;;;;;;;;;;;;;;;;;;24353:38:::1;24370:20;24353:16;:38::i;:::-;24402:19;24424:21;24402:43;;24456;24469:17;;;;;;;;;;;24487:11;24456:12;:43::i;:::-;24332:175;16729:5:::0;16710:16;;:24;;;;;;;;;;;;;;;;;;24258:249;:::o;27084:360::-;27215:7;27211:107;;27238:14;:12;:14::i;:::-;27211:107;;;27293:7;;:9;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;27211:107;27332:42;27348:6;27356:9;27367:6;27332:15;:42::i;:::-;27399:7;27395:41;;27421:15;:13;:15::i;:::-;27395:41;27084:360;;;;:::o;25160:474::-;25228:21;25266:1;25252:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25228:40;;25297:4;25279;25284:1;25279:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25323:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25313:4;25318:1;25313:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25356:62;25373:4;25388:15;;;;;;;;;;;25406:11;25356:8;:62::i;:::-;25429:15;;;;;;;;;;;:66;;;25510:11;25536:1;25553:4;25580;25600:15;25429:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25215:419;25160:474;:::o;24088:120::-;24173:6;:15;;:23;24189:6;24173:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24088:120;;:::o;21377:300::-;21436:1;21423:9;;:14;:30;;;;;21452:1;21441:7;;:12;21423:30;:47;;;;;21469:1;21457:8;;:13;21423:47;21472:7;21420:59;21511:7;;21493:15;:25;;;;21549:8;;21530:16;:27;;;;21589:9;;21569:17;:29;;;;21619:1;21609:7;:11;;;;21642:1;21631:8;:12;;;;21666:1;21654:9;:13;;;;21377:300;:::o;27525:424::-;27622:23;27647:12;27663:19;27674:7;27663:10;:19::i;:::-;27621:61;;;;27711:28;27731:7;27711;:15;27719:6;27711:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27693:7;:15;27701:6;27693:15;;;;;;;;;;;;;;;:46;;;;27771:39;27794:15;27771:7;:18;27779:9;27771:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27750:7;:18;27758:9;27750:18;;;;;;;;;;;;;;;:60;;;;27846:32;27873:4;27846:7;:22;27862:4;27846:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;27821:7;:22;27837:4;27821:22;;;;;;;;;;;;;;;:57;;;;27914:9;27897:44;;27906:6;27897:44;;;27925:15;27897:44;;;;;;:::i;:::-;;;;;;;;27610:339;;27525:424;;;:::o;21714:153::-;21772:17;;21760:9;:29;;;;21806:15;;21796:7;:25;;;;21840:16;;21829:8;:27;;;;21714:153::o;27997:227::-;28056:7;28065;28085:12;28118:3;28108:9;;28100:7;:17;;;;:::i;:::-;:21;;;;:::i;:::-;28085:36;;28132:23;28158:17;28170:4;28158:7;:11;;:17;;;;:::i;:::-;28132:43;;28194:15;28211:4;28186:30;;;;;;27997:227;;;:::o;1041:98::-;1099:7;1130:1;1126;:5;;;;:::i;:::-;1119:12;;1041:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:104::-;3491:7;3520:24;3538:5;3520:24;:::i;:::-;3509:35;;3446:104;;;:::o;3556:142::-;3659:32;3685:5;3659:32;:::i;:::-;3654:3;3647:45;3556:142;;:::o;3704:254::-;3813:4;3851:2;3840:9;3836:18;3828:26;;3864:87;3948:1;3937:9;3933:17;3924:6;3864:87;:::i;:::-;3704:254;;;;:::o;3964:60::-;3992:3;4013:5;4006:12;;3964:60;;;:::o;4030:142::-;4080:9;4113:53;4131:34;4140:24;4158:5;4140:24;:::i;:::-;4131:34;:::i;:::-;4113:53;:::i;:::-;4100:66;;4030:142;;;:::o;4178:126::-;4228:9;4261:37;4292:5;4261:37;:::i;:::-;4248:50;;4178:126;;;:::o;4310:153::-;4387:9;4420:37;4451:5;4420:37;:::i;:::-;4407:50;;4310:153;;;:::o;4469:185::-;4583:64;4641:5;4583:64;:::i;:::-;4578:3;4571:77;4469:185;;:::o;4660:276::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:98;4926:1;4915:9;4911:17;4902:6;4831:98;:::i;:::-;4660:276;;;;:::o;4942:118::-;5029:24;5047:5;5029:24;:::i;:::-;5024:3;5017:37;4942:118;;:::o;5066:222::-;5159:4;5197:2;5186:9;5182:18;5174:26;;5210:71;5278:1;5267:9;5263:17;5254:6;5210:71;:::i;:::-;5066:222;;;;:::o;5294:619::-;5371:6;5379;5387;5436:2;5424:9;5415:7;5411:23;5407:32;5404:119;;;5442:79;;:::i;:::-;5404:119;5562:1;5587:53;5632:7;5623:6;5612:9;5608:22;5587:53;:::i;:::-;5577:63;;5533:117;5689:2;5715:53;5760:7;5751:6;5740:9;5736:22;5715:53;:::i;:::-;5705:63;;5660:118;5817:2;5843:53;5888:7;5879:6;5868:9;5864:22;5843:53;:::i;:::-;5833:63;;5788:118;5294:619;;;;;:::o;5919:86::-;5954:7;5994:4;5987:5;5983:16;5972:27;;5919:86;;;:::o;6011:112::-;6094:22;6110:5;6094:22;:::i;:::-;6089:3;6082:35;6011:112;;:::o;6129:214::-;6218:4;6256:2;6245:9;6241:18;6233:26;;6269:67;6333:1;6322:9;6318:17;6309:6;6269:67;:::i;:::-;6129:214;;;;:::o;6349:329::-;6408:6;6457:2;6445:9;6436:7;6432:23;6428:32;6425:119;;;6463:79;;:::i;:::-;6425:119;6583:1;6608:53;6653:7;6644:6;6633:9;6629:22;6608:53;:::i;:::-;6598:63;;6554:117;6349:329;;;;:::o;6684:118::-;6771:24;6789:5;6771:24;:::i;:::-;6766:3;6759:37;6684:118;;:::o;6808:222::-;6901:4;6939:2;6928:9;6924:18;6916:26;;6952:71;7020:1;7009:9;7005:17;6996:6;6952:71;:::i;:::-;6808:222;;;;:::o;7036:329::-;7095:6;7144:2;7132:9;7123:7;7119:23;7115:32;7112:119;;;7150:79;;:::i;:::-;7112:119;7270:1;7295:53;7340:7;7331:6;7320:9;7316:22;7295:53;:::i;:::-;7285:63;;7241:117;7036:329;;;;:::o;7371:474::-;7439:6;7447;7496:2;7484:9;7475:7;7471:23;7467:32;7464:119;;;7502:79;;:::i;:::-;7464:119;7622:1;7647:53;7692:7;7683:6;7672:9;7668:22;7647:53;:::i;:::-;7637:63;;7593:117;7749:2;7775:53;7820:7;7811:6;7800:9;7796:22;7775:53;:::i;:::-;7765:63;;7720:118;7371:474;;;;;:::o;7851:116::-;7921:21;7936:5;7921:21;:::i;:::-;7914:5;7911:32;7901:60;;7957:1;7954;7947:12;7901:60;7851:116;:::o;7973:133::-;8016:5;8054:6;8041:20;8032:29;;8070:30;8094:5;8070:30;:::i;:::-;7973:133;;;;:::o;8112:323::-;8168:6;8217:2;8205:9;8196:7;8192:23;8188:32;8185:119;;;8223:79;;:::i;:::-;8185:119;8343:1;8368:50;8410:7;8401:6;8390:9;8386:22;8368:50;:::i;:::-;8358:60;;8314:114;8112:323;;;;:::o;8441:138::-;8522:32;8548:5;8522:32;:::i;:::-;8515:5;8512:43;8502:71;;8569:1;8566;8559:12;8502:71;8441:138;:::o;8585:155::-;8639:5;8677:6;8664:20;8655:29;;8693:41;8728:5;8693:41;:::i;:::-;8585:155;;;;:::o;8746:345::-;8813:6;8862:2;8850:9;8841:7;8837:23;8833:32;8830:119;;;8868:79;;:::i;:::-;8830:119;8988:1;9013:61;9066:7;9057:6;9046:9;9042:22;9013:61;:::i;:::-;9003:71;;8959:125;8746:345;;;;:::o;9097:474::-;9165:6;9173;9222:2;9210:9;9201:7;9197:23;9193:32;9190:119;;;9228:79;;:::i;:::-;9190:119;9348:1;9373:53;9418:7;9409:6;9398:9;9394:22;9373:53;:::i;:::-;9363:63;;9319:117;9475:2;9501:53;9546:7;9537:6;9526:9;9522:22;9501:53;:::i;:::-;9491:63;;9446:118;9097:474;;;;;:::o;9577:118::-;9648:22;9664:5;9648:22;:::i;:::-;9641:5;9638:33;9628:61;;9685:1;9682;9675:12;9628:61;9577:118;:::o;9701:135::-;9745:5;9783:6;9770:20;9761:29;;9799:31;9824:5;9799:31;:::i;:::-;9701:135;;;;:::o;9842:325::-;9899:6;9948:2;9936:9;9927:7;9923:23;9919:32;9916:119;;;9954:79;;:::i;:::-;9916:119;10074:1;10099:51;10142:7;10133:6;10122:9;10118:22;10099:51;:::i;:::-;10089:61;;10045:115;9842:325;;;;:::o;10173:180::-;10221:77;10218:1;10211:88;10318:4;10315:1;10308:15;10342:4;10339:1;10332:15;10359:320;10403:6;10440:1;10434:4;10430:12;10420:22;;10487:1;10481:4;10477:12;10508:18;10498:81;;10564:4;10556:6;10552:17;10542:27;;10498:81;10626:2;10618:6;10615:14;10595:18;10592:38;10589:84;;10645:18;;:::i;:::-;10589:84;10410:269;10359:320;;;:::o;10685:182::-;10825:34;10821:1;10813:6;10809:14;10802:58;10685:182;:::o;10873:366::-;11015:3;11036:67;11100:2;11095:3;11036:67;:::i;:::-;11029:74;;11112:93;11201:3;11112:93;:::i;:::-;11230:2;11225:3;11221:12;11214:19;;10873:366;;;:::o;11245:419::-;11411:4;11449:2;11438:9;11434:18;11426:26;;11498:9;11492:4;11488:20;11484:1;11473:9;11469:17;11462:47;11526:131;11652:4;11526:131;:::i;:::-;11518:139;;11245:419;;;:::o;11670:177::-;11810:29;11806:1;11798:6;11794:14;11787:53;11670:177;:::o;11853:366::-;11995:3;12016:67;12080:2;12075:3;12016:67;:::i;:::-;12009:74;;12092:93;12181:3;12092:93;:::i;:::-;12210:2;12205:3;12201:12;12194:19;;11853:366;;;:::o;12225:419::-;12391:4;12429:2;12418:9;12414:18;12406:26;;12478:9;12472:4;12468:20;12464:1;12453:9;12449:17;12442:47;12506:131;12632:4;12506:131;:::i;:::-;12498:139;;12225:419;;;:::o;12650:143::-;12707:5;12738:6;12732:13;12723:22;;12754:33;12781:5;12754:33;:::i;:::-;12650:143;;;;:::o;12799:351::-;12869:6;12918:2;12906:9;12897:7;12893:23;12889:32;12886:119;;;12924:79;;:::i;:::-;12886:119;13044:1;13069:64;13125:7;13116:6;13105:9;13101:22;13069:64;:::i;:::-;13059:74;;13015:128;12799:351;;;;:::o;13156:332::-;13277:4;13315:2;13304:9;13300:18;13292:26;;13328:71;13396:1;13385:9;13381:17;13372:6;13328:71;:::i;:::-;13409:72;13477:2;13466:9;13462:18;13453:6;13409:72;:::i;:::-;13156:332;;;;;:::o;13494:137::-;13548:5;13579:6;13573:13;13564:22;;13595:30;13619:5;13595:30;:::i;:::-;13494:137;;;;:::o;13637:345::-;13704:6;13753:2;13741:9;13732:7;13728:23;13724:32;13721:119;;;13759:79;;:::i;:::-;13721:119;13879:1;13904:61;13957:7;13948:6;13937:9;13933:22;13904:61;:::i;:::-;13894:71;;13850:125;13637:345;;;;:::o;13988:180::-;14036:77;14033:1;14026:88;14133:4;14130:1;14123:15;14157:4;14154:1;14147:15;14174:410;14214:7;14237:20;14255:1;14237:20;:::i;:::-;14232:25;;14271:20;14289:1;14271:20;:::i;:::-;14266:25;;14326:1;14323;14319:9;14348:30;14366:11;14348:30;:::i;:::-;14337:41;;14527:1;14518:7;14514:15;14511:1;14508:22;14488:1;14481:9;14461:83;14438:139;;14557:18;;:::i;:::-;14438:139;14222:362;14174:410;;;;:::o;14590:180::-;14638:77;14635:1;14628:88;14735:4;14732:1;14725:15;14759:4;14756:1;14749:15;14776:185;14816:1;14833:20;14851:1;14833:20;:::i;:::-;14828:25;;14867:20;14885:1;14867:20;:::i;:::-;14862:25;;14906:1;14896:35;;14911:18;;:::i;:::-;14896:35;14953:1;14950;14946:9;14941:14;;14776:185;;;;:::o;14967:191::-;15007:3;15026:20;15044:1;15026:20;:::i;:::-;15021:25;;15060:20;15078:1;15060:20;:::i;:::-;15055:25;;15103:1;15100;15096:9;15089:16;;15124:3;15121:1;15118:10;15115:36;;;15131:18;;:::i;:::-;15115:36;14967:191;;;;:::o;15164:166::-;15304:18;15300:1;15292:6;15288:14;15281:42;15164:166;:::o;15336:366::-;15478:3;15499:67;15563:2;15558:3;15499:67;:::i;:::-;15492:74;;15575:93;15664:3;15575:93;:::i;:::-;15693:2;15688:3;15684:12;15677:19;;15336:366;;;:::o;15708:419::-;15874:4;15912:2;15901:9;15897:18;15889:26;;15961:9;15955:4;15951:20;15947:1;15936:9;15932:17;15925:47;15989:131;16115:4;15989:131;:::i;:::-;15981:139;;15708:419;;;:::o;16133:182::-;16273:34;16269:1;16261:6;16257:14;16250:58;16133:182;:::o;16321:366::-;16463:3;16484:67;16548:2;16543:3;16484:67;:::i;:::-;16477:74;;16560:93;16649:3;16560:93;:::i;:::-;16678:2;16673:3;16669:12;16662:19;;16321:366;;;:::o;16693:419::-;16859:4;16897:2;16886:9;16882:18;16874:26;;16946:9;16940:4;16936:20;16932:1;16921:9;16917:17;16910:47;16974:131;17100:4;16974:131;:::i;:::-;16966:139;;16693:419;;;:::o;17118:143::-;17175:5;17206:6;17200:13;17191:22;;17222:33;17249:5;17222:33;:::i;:::-;17118:143;;;;:::o;17267:351::-;17337:6;17386:2;17374:9;17365:7;17361:23;17357:32;17354:119;;;17392:79;;:::i;:::-;17354:119;17512:1;17537:64;17593:7;17584:6;17573:9;17569:22;17537:64;:::i;:::-;17527:74;;17483:128;17267:351;;;;:::o;17624:332::-;17745:4;17783:2;17772:9;17768:18;17760:26;;17796:71;17864:1;17853:9;17849:17;17840:6;17796:71;:::i;:::-;17877:72;17945:2;17934:9;17930:18;17921:6;17877:72;:::i;:::-;17624:332;;;;;:::o;17962:225::-;18102:34;18098:1;18090:6;18086:14;18079:58;18171:8;18166:2;18158:6;18154:15;18147:33;17962:225;:::o;18193:366::-;18335:3;18356:67;18420:2;18415:3;18356:67;:::i;:::-;18349:74;;18432:93;18521:3;18432:93;:::i;:::-;18550:2;18545:3;18541:12;18534:19;;18193:366;;;:::o;18565:419::-;18731:4;18769:2;18758:9;18754:18;18746:26;;18818:9;18812:4;18808:20;18804:1;18793:9;18789:17;18782:47;18846:131;18972:4;18846:131;:::i;:::-;18838:139;;18565:419;;;:::o;18990:167::-;19130:19;19126:1;19118:6;19114:14;19107:43;18990:167;:::o;19163:366::-;19305:3;19326:67;19390:2;19385:3;19326:67;:::i;:::-;19319:74;;19402:93;19491:3;19402:93;:::i;:::-;19520:2;19515:3;19511:12;19504:19;;19163:366;;;:::o;19535:419::-;19701:4;19739:2;19728:9;19724:18;19716:26;;19788:9;19782:4;19778:20;19774:1;19763:9;19759:17;19752:47;19816:131;19942:4;19816:131;:::i;:::-;19808:139;;19535:419;;;:::o;19960:305::-;20100:34;20096:1;20088:6;20084:14;20077:58;20169:34;20164:2;20156:6;20152:15;20145:59;20238:19;20233:2;20225:6;20221:15;20214:44;19960:305;:::o;20271:366::-;20413:3;20434:67;20498:2;20493:3;20434:67;:::i;:::-;20427:74;;20510:93;20599:3;20510:93;:::i;:::-;20628:2;20623:3;20619:12;20612:19;;20271:366;;;:::o;20643:419::-;20809:4;20847:2;20836:9;20832:18;20824:26;;20896:9;20890:4;20886:20;20882:1;20871:9;20867:17;20860:47;20924:131;21050:4;20924:131;:::i;:::-;20916:139;;20643:419;;;:::o;21068:245::-;21208:34;21204:1;21196:6;21192:14;21185:58;21277:28;21272:2;21264:6;21260:15;21253:53;21068:245;:::o;21319:366::-;21461:3;21482:67;21546:2;21541:3;21482:67;:::i;:::-;21475:74;;21558:93;21647:3;21558:93;:::i;:::-;21676:2;21671:3;21667:12;21660:19;;21319:366;;;:::o;21691:419::-;21857:4;21895:2;21884:9;21880:18;21872:26;;21944:9;21938:4;21934:20;21930:1;21919:9;21915:17;21908:47;21972:131;22098:4;21972:131;:::i;:::-;21964:139;;21691:419;;;:::o;22116:167::-;22153:3;22176:22;22192:5;22176:22;:::i;:::-;22167:31;;22220:4;22213:5;22210:15;22207:41;;22228:18;;:::i;:::-;22207:41;22275:1;22268:5;22264:13;22257:20;;22116:167;;;:::o;22289:180::-;22337:77;22334:1;22327:88;22434:4;22431:1;22424:15;22458:4;22455:1;22448:15;22475:180;22523:77;22520:1;22513:88;22620:4;22617:1;22610:15;22644:4;22641:1;22634:15;22661:85;22706:7;22735:5;22724:16;;22661:85;;;:::o;22752:158::-;22810:9;22843:61;22861:42;22870:32;22896:5;22870:32;:::i;:::-;22861:42;:::i;:::-;22843:61;:::i;:::-;22830:74;;22752:158;;;:::o;22916:147::-;23011:45;23050:5;23011:45;:::i;:::-;23006:3;22999:58;22916:147;;:::o;23069:114::-;23136:6;23170:5;23164:12;23154:22;;23069:114;;;:::o;23189:184::-;23288:11;23322:6;23317:3;23310:19;23362:4;23357:3;23353:14;23338:29;;23189:184;;;;:::o;23379:132::-;23446:4;23469:3;23461:11;;23499:4;23494:3;23490:14;23482:22;;23379:132;;;:::o;23517:108::-;23594:24;23612:5;23594:24;:::i;:::-;23589:3;23582:37;23517:108;;:::o;23631:179::-;23700:10;23721:46;23763:3;23755:6;23721:46;:::i;:::-;23799:4;23794:3;23790:14;23776:28;;23631:179;;;;:::o;23816:113::-;23886:4;23918;23913:3;23909:14;23901:22;;23816:113;;;:::o;23965:732::-;24084:3;24113:54;24161:5;24113:54;:::i;:::-;24183:86;24262:6;24257:3;24183:86;:::i;:::-;24176:93;;24293:56;24343:5;24293:56;:::i;:::-;24372:7;24403:1;24388:284;24413:6;24410:1;24407:13;24388:284;;;24489:6;24483:13;24516:63;24575:3;24560:13;24516:63;:::i;:::-;24509:70;;24602:60;24655:6;24602:60;:::i;:::-;24592:70;;24448:224;24435:1;24432;24428:9;24423:14;;24388:284;;;24392:14;24688:3;24681:10;;24089:608;;;23965:732;;;;:::o;24703:831::-;24966:4;25004:3;24993:9;24989:19;24981:27;;25018:71;25086:1;25075:9;25071:17;25062:6;25018:71;:::i;:::-;25099:80;25175:2;25164:9;25160:18;25151:6;25099:80;:::i;:::-;25226:9;25220:4;25216:20;25211:2;25200:9;25196:18;25189:48;25254:108;25357:4;25348:6;25254:108;:::i;:::-;25246:116;;25372:72;25440:2;25429:9;25425:18;25416:6;25372:72;:::i;:::-;25454:73;25522:3;25511:9;25507:19;25498:6;25454:73;:::i;:::-;24703:831;;;;;;;;:::o;25540:194::-;25580:4;25600:20;25618:1;25600:20;:::i;:::-;25595:25;;25634:20;25652:1;25634:20;:::i;:::-;25629:25;;25678:1;25675;25671:9;25663:17;;25702:1;25696:4;25693:11;25690:37;;;25707:18;;:::i;:::-;25690:37;25540:194;;;;:::o

Swarm Source

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