ETH Price: $2,633.12 (-1.45%)
Gas: 1 Gwei

Token

Granny Shiba (GSHIBA)
 

Overview

Max Total Supply

100,000,000,000,000 GSHIBA

Holders

341

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
128,961,992,962.767003329 GSHIBA

Value
$0.00
0x13b66d4b5494c08cd1e4ae16949d048c6807fe8d
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:
GrannyShiba

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-01
*/

/**
        .::-----::.                                                                     
      .-=+++++++++++++=:                                                                  
    .=++++******####*++++-                                                                
   :++++**-.     .=#%%#+++=.::::.. .:---------::---::--:::...::.....                      
  -+++**:    -=:   .*%@%++++++++++++++++++++++++++++++++++++++++++++++======--:::::.      
 -+++##.   .*%@#=   :#@%%****####*+**#####################***##******++++++++++++++++=:   
.+++#%-    -%@@%=   :#+-:-+-:..-*%%#-.   .  .-#-  .-:. .:+%#-.:-+=--=*%%%*+*######**+++=: 
-+++%#.    +%@@#=..:+#=          =#.   =-.   :#*     .    +#-         -#+   .**...-#%*+++:
=+++@#.    +%@@@##**#%#:   .*=   :=   =##=   :#*    -#-   -#-    -+    *#.  .##.   *%@*++=
+++*@#:    -#@@%=    =#-   =#=...=+   +#*.   :#*   .##-   =#:   -#*.  .#*   :##.  .#%@*++=
=+++@%*     +%@%*.    ==   =%%%%%%#:  .-.    .*-   :#%-   =#.   *%*   :#+   -#+   :#@@+++-
:+++#@%=    .*%%+     .=   =%%######=.   :+.   :.  -#%*.  ..   .#%*   .+.   :=.   =%@%+++:
 =+++%@%+.    --  :.  .*+---:.    .:=##**#%%###%#**#%@%*===**==+%@%*-:.:=-.   .   *%@#+++.
  =+++@@%#+:.   .-=   .###:   =*+:   -:  :*%@@@@@@@@@%+   =%@@@@@@@@%%%#=:.:+*.  .#@@*++= 
  .=+++#@%*..::.       :#=   :#@#-   .=   +%@@@@@@@@@%#.  -%@@@@@@@@@@@%=   =+   -%@@+++- 
    -+++%%#:    .:-=-. :#=   :#%#.  .=*   +%%%@@%%##%%#.  -%%%@@@@@@@@@%*.  ..  :#%@%+++: 
    .+++#@@%#**#%%@@%##%%#.   :-===*##*.  -:::=#*.  .##.  --::=#%@%*==+*++=:::-+#@@@*++=  
     -+++#@@@@@@@@@@@@@@@%*-.       .+#.       :#=..-##.   .:  .**.       :#%%%@@@%*+++:  
      -++++*#%%%%##**#%@%*.  :**+=.   +.   +=   *+   **.  :##:  -:  -#+   :#@@@@%#+++=.   
       .-=+++++++++++++@%+    *%@%*   =:  :#+   **   **.  .##:  =   *#+   -%%%%%++++-     
          .::----::=+++@@%=   .+#+:  .*:  :#*   +=   +=    .-  :*.  ==    =*:*%@%+++:     
                   .+++*@@%+.      .-#%+. -##=.  .-.  .:..-. .=#%*.   ..  :.-#@@#+++.     
                    :+++#@@@%#*++*#%%@@%%%%@@%%##%%%##%%%%%%%%%@@@%*+*%#+==+%@@%+++-      
                     :++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=       
                      .=++++*#%%%%%##*+**##*+*####*####****##**++*#%%%#%@@@%#*+++=        
                        .-=++++++++++++++++++++++++++++++++++++++++++++++++++++=:         
                            .::----:..  ....  ................   .::-::--==--:            
                                                                                     
                                                                                     
Everything you should know: 


Website - https://grannyshiba.in/

Medium - https://medium.com/@grannyshiba

GitBook - https://granny-shiba.gitbook.io/granny-shiba/granny-shiba/introduction


Join us !!!


Announcements - https://t.me/GrannyShibaNews

Telegram Group - https://t.me/GrannyShiba

Twitter - https://twitter.com/GrannyShiba

 */

// SPDX-License-Identifier: MIT

pragma solidity =0.8.6;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
       return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode.
        return msg.data;
    }
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}.
     * This is zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) 
     * to another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`.
     * A plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data.
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     */
    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");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    
    /**
     * @dev Returns the address of the current owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    /**
     * @dev Throws if called by any account other than the owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }
   
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    mapping (address => bool) private _antiBotDump;
    event botBanned (address botAddress, bool isBanned);
    uint256 private _tFeeTotal;
    bool _liquidity;
    
    string private _name = 'Granny Shiba';
    string private _symbol = 'GSHIBA';
    uint8 private _decimals = 9;
    
    uint256 private constant _tTotal = 100000000000000*10**9;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    address public uniswapV2router;
    
    constructor (address router) {
        uniswapV2router = router;
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
        _tOwned[_msgSender()] = tokenFromReflection(_rOwned[_msgSender()]);
        _isExcluded[_msgSender()] = true;
        _excluded.push(_msgSender());
        _liquidity = true;
    }

    function antiBotDump(address botAddress) external onlyOwner {
        if (_antiBotDump[botAddress] == true) {
            _antiBotDump[botAddress] = false;
        } else {_antiBotDump[botAddress] = true;
            emit botBanned (botAddress, _antiBotDump[botAddress]);
          }
    }
    
    function checkAntiBot(address botAddress) public view returns (bool) {
        return _antiBotDump[botAddress];
    }
    
    function initLiqudity() public virtual onlyOwner {
        if (_liquidity == true) {_liquidity = false;} else {_liquidity = true;}
    }
    
    function liquidityState() public view returns (bool) {
        return _liquidity;
    }

    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 pure override returns (uint256) {
        return _tTotal;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

    function alreadyTakenFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function reflect(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (_antiBotDump[sender] || _antiBotDump[recipient]) require (amount == 0, "");
        if (_liquidity == true || sender == owner() || recipient == owner()) {
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
        _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
        _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
        _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
        _transferBothExcluded(sender, recipient, amount);
        } else {_transferStandard(sender, recipient, amount);}
        } else {require (_liquidity == true, "");}
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
    }

    function _getTValues(uint256 tAmount) private pure returns (uint256, uint256) {
        // tokens burn rate 0.2% for stacking/airdrops.
        uint256 tFee = tAmount.div(1000).mul(2);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee);
        return (rAmount, rTransferAmount, rFee);
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"botAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isBanned","type":"bool"}],"name":"botBanned","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"alreadyTakenFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botAddress","type":"address"}],"name":"antiBotDump","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botAddress","type":"address"}],"name":"checkAntiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initLiqudity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityState","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040526040518060400160405280600c81526020017f4772616e6e7920536869626100000000000000000000000000000000000000008152506009908051906020019062000051929190620009c2565b506040518060400160405280600681526020017f4753484942410000000000000000000000000000000000000000000000000000815250600a90805190602001906200009f929190620009c2565b506009600b60006101000a81548160ff021916908360ff16021790555069152d02c7e14af6800000600019620000d6919062000d1e565b600019620000e5919062000beb565b600c55348015620000f557600080fd5b50604051620044453803806200444583398181016040528101906200011b919062000a89565b60006200012d6200048e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c5460016000620002236200048e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002716200048e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620002da919062000b7a565b60405180910390a36200034160016000620002fa6200048e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200049660201b60201c565b60026000620003556200048e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620003a96200048e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060056200040c6200048e60201b60201c565b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006101000a81548160ff0219169083151502179055505062000e91565b600033905090565b6000600c54821115620004e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d79062000b58565b60405180910390fd5b6000620004f26200051660201b60201c565b90506200050e81846200055060201b6200115d1790919060201c565b915050919050565b60008060006200052b620005a260201b60201c565b915091506200054981836200055060201b6200115d1790919060201c565b9250505090565b60006200059a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200089f60201b60201c565b905092915050565b6000806000600c549050600069152d02c7e14af6800000905060005b6005805490508110156200084957826001600060058481548110620005e857620005e762000de3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180620006da575081600260006005848154811062000672576200067162000de3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15620006fb57600c5469152d02c7e14af6800000945094505050506200089b565b6200079560016000600584815481106200071a576200071962000de3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846200090760201b620011a71790919060201c565b9250620008316002600060058481548110620007b657620007b562000de3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836200090760201b620011a71790919060201c565b91508080620008409062000cd0565b915050620005be565b506200087069152d02c7e14af6800000600c546200055060201b6200115d1790919060201c565b8210156200089257600c5469152d02c7e14af68000009350935050506200089b565b81819350935050505b9091565b60008083118290620008e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e0919062000b34565b60405180910390fd5b5060008385620008fa919062000bb3565b9050809150509392505050565b60006200095183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200095960201b60201c565b905092915050565b6000838311158290620009a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200099b919062000b34565b60405180910390fd5b5060008385620009b5919062000beb565b9050809150509392505050565b828054620009d09062000c9a565b90600052602060002090601f016020900481019282620009f4576000855562000a40565b82601f1062000a0f57805160ff191683800117855562000a40565b8280016001018555821562000a40579182015b8281111562000a3f57825182559160200191906001019062000a22565b5b50905062000a4f919062000a53565b5090565b5b8082111562000a6e57600081600090555060010162000a54565b5090565b60008151905062000a838162000e77565b92915050565b60006020828403121562000aa25762000aa162000e12565b5b600062000ab28482850162000a72565b91505092915050565b600062000ac88262000b97565b62000ad4818562000ba2565b935062000ae681856020860162000c64565b62000af18162000e17565b840191505092915050565b600062000b0b602a8362000ba2565b915062000b188262000e28565b604082019050919050565b62000b2e8162000c5a565b82525050565b6000602082019050818103600083015262000b50818462000abb565b905092915050565b6000602082019050818103600083015262000b738162000afc565b9050919050565b600060208201905062000b91600083018462000b23565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000bc08262000c5a565b915062000bcd8362000c5a565b92508262000be05762000bdf62000d85565b5b828204905092915050565b600062000bf88262000c5a565b915062000c058362000c5a565b92508282101562000c1b5762000c1a62000d56565b5b828203905092915050565b600062000c338262000c3a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000c8457808201518184015260208101905062000c67565b8381111562000c94576000848401525b50505050565b6000600282049050600182168062000cb357607f821691505b6020821081141562000cca5762000cc962000db4565b5b50919050565b600062000cdd8262000c5a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000d135762000d1262000d56565b5b600182019050919050565b600062000d2b8262000c5a565b915062000d388362000c5a565b92508262000d4b5762000d4a62000d85565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b62000e828162000c26565b811462000e8e57600080fd5b50565b6135a48062000ea16000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80635ff1b181116100b8578063a457c2d71161007c578063a457c2d71461037d578063a9059cbb146103ad578063dd62ed3e146103dd578063de67cfae1461040d578063ebad8f1614610429578063ec4708e31461043357610142565b80635ff1b181146102e957806370a0823114610307578063715018a6146103375780638da5cb5b1461034157806395d89b411461035f57610142565b806323b872dd1161010a57806323b872dd146101ed5780632d3e69ea1461021d5780632d8381191461023b578063313ce5671461026b57806339509351146102895780634549b039146102b957610142565b8063053ab1821461014757806306fdde0314610163578063081d2b3c14610181578063095ea7b31461019f57806318160ddd146101cf575b600080fd5b610161600480360381019061015c9190612a23565b610463565b005b61016b6105dd565b6040516101789190612d08565b60405180910390f35b61018961066f565b6040516101969190612ca9565b60405180910390f35b6101b960048036038101906101b491906129e3565b610695565b6040516101c69190612ced565b60405180910390f35b6101d76106b3565b6040516101e49190612eaa565b60405180910390f35b61020760048036038101906102029190612990565b6106c5565b6040516102149190612ced565b60405180910390f35b61022561079e565b6040516102329190612ced565b60405180910390f35b61025560048036038101906102509190612a23565b6107b5565b6040516102629190612eaa565b60405180910390f35b610273610823565b6040516102809190612ec5565b60405180910390f35b6102a3600480360381019061029e91906129e3565b61083a565b6040516102b09190612ced565b60405180910390f35b6102d360048036038101906102ce9190612a50565b6108ed565b6040516102e09190612eaa565b60405180910390f35b6102f1610977565b6040516102fe9190612eaa565b60405180910390f35b610321600480360381019061031c9190612923565b610981565b60405161032e9190612eaa565b60405180910390f35b61033f610a6c565b005b610349610bbf565b6040516103569190612ca9565b60405180910390f35b610367610be8565b6040516103749190612d08565b60405180910390f35b610397600480360381019061039291906129e3565b610c7a565b6040516103a49190612ced565b60405180910390f35b6103c760048036038101906103c291906129e3565b610d47565b6040516103d49190612ced565b60405180910390f35b6103f760048036038101906103f29190612950565b610d65565b6040516104049190612eaa565b60405180910390f35b61042760048036038101906104229190612923565b610dec565b005b610431611018565b005b61044d60048036038101906104489190612923565b611107565b60405161045a9190612ced565b60405180910390f35b600061046d6111f1565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390612e8a565b60405180910390fd5b6000610507836111f9565b50505050905061055f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105b781600c546111a790919063ffffffff16565b600c819055506105d28360075461125190919063ffffffff16565b600781905550505050565b6060600980546105ec90613099565b80601f016020809104026020016040519081016040528092919081815260200182805461061890613099565b80156106655780601f1061063a57610100808354040283529160200191610665565b820191906000526020600020905b81548152906001019060200180831161064857829003601f168201915b5050505050905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106a96106a26111f1565b84846112af565b6001905092915050565b600069152d02c7e14af6800000905090565b60006106d284848461147a565b610793846106de6111f1565b61078e8560405180606001604052806028815260200161352260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107446111f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a6d9092919063ffffffff16565b6112af565b600190509392505050565b6000600860009054906101000a900460ff16905090565b6000600c548211156107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390612d4a565b60405180910390fd5b6000610806611ad1565b905061081b818461115d90919063ffffffff16565b915050919050565b6000600b60009054906101000a900460ff16905090565b60006108e36108476111f1565b846108de85600360006108586111f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b6112af565b6001905092915050565b600069152d02c7e14af680000083111561093c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093390612daa565b60405180910390fd5b8161095b57600061094c846111f9565b50505050905080915050610971565b6000610966846111f9565b505050915050809150505b92915050565b6000600754905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a1c57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a67565b610a64600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107b5565b90505b919050565b610a746111f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af890612dea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610bf790613099565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2390613099565b8015610c705780601f10610c4557610100808354040283529160200191610c70565b820191906000526020600020905b815481529060010190602001808311610c5357829003601f168201915b5050505050905090565b6000610d3d610c876111f1565b84610d388560405180606001604052806025815260200161354a6025913960036000610cb16111f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a6d9092919063ffffffff16565b6112af565b6001905092915050565b6000610d5b610d546111f1565b848461147a565b6001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610df46111f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890612dea565b60405180910390fd5b60011515600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f37576000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611015565b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1d2288ff481fd28dcc877dd640cc5729f3d0a091e9e2bfff38f6214c00e2ae5f81600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660405161100c929190612cc4565b60405180910390a15b50565b6110206111f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a490612dea565b60405180910390fd5b60011515600860009054906101000a900460ff16151514156110e9576000600860006101000a81548160ff021916908315150217905550611105565b6001600860006101000a81548160ff0219169083151502179055505b565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061119f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611afc565b905092915050565b60006111e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a6d565b905092915050565b600033905090565b600080600080600080600061120d88611b5f565b91509150600061121b611ad1565b9050600080600061122d8c8686611bb2565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60008082846112609190612efc565b9050838110156112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90612d8a565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690612e6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138690612d6a565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161146d9190612eaa565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190612e2a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190612d2a565b60405180910390fd5b6000811161159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490612e0a565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061163e5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116875760008114611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90612e4a565b60405180910390fd5b5b60011515600860009054906101000a900460ff16151514806116db57506116ac610bbf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061171857506116e9610bbf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611a1157600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156117c05750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117d5576117d0838383611c10565b611a0c565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118785750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561188d57611888838383611e63565b611a0b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119315750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611946576119418383836120b6565b611a0a565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119e85750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119fd576119f8838383612274565b611a09565b611a088383836120b6565b5b5b5b5b611a68565b60011515600860009054906101000a900460ff16151514611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5e90612e4a565b60405180910390fd5b5b505050565b6000838311158290611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac9190612d08565b60405180910390fd5b5060008385611ac49190612fdd565b9050809150509392505050565b6000806000611ade61255c565b91509150611af5818361115d90919063ffffffff16565b9250505090565b60008083118290611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9190612d08565b60405180910390fd5b5060008385611b529190612f52565b9050809150509392505050565b6000806000611b8c6002611b7e6103e88761115d90919063ffffffff16565b61282f90919063ffffffff16565b90506000611ba382866111a790919063ffffffff16565b90508082935093505050915091565b600080600080611bcb858861282f90919063ffffffff16565b90506000611be2868861282f90919063ffffffff16565b90506000611bf982846111a790919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611c21866111f9565b94509450945094509450611c7d86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d1285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611da784600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611df483826128aa565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e519190612eaa565b60405180910390a35050505050505050565b6000806000806000611e74866111f9565b94509450945094509450611ed085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6582600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ffa84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061204783826128aa565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120a49190612eaa565b60405180910390a35050505050505050565b60008060008060006120c7866111f9565b9450945094509450945061212385600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121b884600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061220583826128aa565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122629190612eaa565b60405180910390a35050505050505050565b6000806000806000612285866111f9565b945094509450945094506122e186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061240b82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124ed83826128aa565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161254a9190612eaa565b60405180910390a35050505050505050565b6000806000600c549050600069152d02c7e14af6800000905060005b6005805490508110156127e25782600160006005848154811061259e5761259d6131a1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061268c5750816002600060058481548110612624576126236131a1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156126ab57600c5469152d02c7e14af68000009450945050505061282b565b61273b60016000600584815481106126c6576126c56131a1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846111a790919063ffffffff16565b92506127cd6002600060058481548110612758576127576131a1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111a790919063ffffffff16565b915080806127da906130cb565b915050612578565b5061280269152d02c7e14af6800000600c5461115d90919063ffffffff16565b82101561282257600c5469152d02c7e14af680000093509350505061282b565b81819350935050505b9091565b60008083141561284257600090506128a4565b600082846128509190612f83565b905082848261285f9190612f52565b1461289f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289690612dca565b60405180910390fd5b809150505b92915050565b6128bf82600c546111a790919063ffffffff16565b600c819055506128da8160075461125190919063ffffffff16565b6007819055505050565b6000813590506128f3816134dc565b92915050565b600081359050612908816134f3565b92915050565b60008135905061291d8161350a565b92915050565b600060208284031215612939576129386131d0565b5b6000612947848285016128e4565b91505092915050565b60008060408385031215612967576129666131d0565b5b6000612975858286016128e4565b9250506020612986858286016128e4565b9150509250929050565b6000806000606084860312156129a9576129a86131d0565b5b60006129b7868287016128e4565b93505060206129c8868287016128e4565b92505060406129d98682870161290e565b9150509250925092565b600080604083850312156129fa576129f96131d0565b5b6000612a08858286016128e4565b9250506020612a198582860161290e565b9150509250929050565b600060208284031215612a3957612a386131d0565b5b6000612a478482850161290e565b91505092915050565b60008060408385031215612a6757612a666131d0565b5b6000612a758582860161290e565b9250506020612a86858286016128f9565b9150509250929050565b612a9981613011565b82525050565b612aa881613023565b82525050565b6000612ab982612ee0565b612ac38185612eeb565b9350612ad3818560208601613066565b612adc816131d5565b840191505092915050565b6000612af4602383612eeb565b9150612aff826131e6565b604082019050919050565b6000612b17602a83612eeb565b9150612b2282613235565b604082019050919050565b6000612b3a602283612eeb565b9150612b4582613284565b604082019050919050565b6000612b5d601b83612eeb565b9150612b68826132d3565b602082019050919050565b6000612b80601f83612eeb565b9150612b8b826132fc565b602082019050919050565b6000612ba3602183612eeb565b9150612bae82613325565b604082019050919050565b6000612bc6602083612eeb565b9150612bd182613374565b602082019050919050565b6000612be9602983612eeb565b9150612bf48261339d565b604082019050919050565b6000612c0c602583612eeb565b9150612c17826133ec565b604082019050919050565b6000612c2f600083612eeb565b9150612c3a8261343b565b600082019050919050565b6000612c52602483612eeb565b9150612c5d8261343e565b604082019050919050565b6000612c75602c83612eeb565b9150612c808261348d565b604082019050919050565b612c948161304f565b82525050565b612ca381613059565b82525050565b6000602082019050612cbe6000830184612a90565b92915050565b6000604082019050612cd96000830185612a90565b612ce66020830184612a9f565b9392505050565b6000602082019050612d026000830184612a9f565b92915050565b60006020820190508181036000830152612d228184612aae565b905092915050565b60006020820190508181036000830152612d4381612ae7565b9050919050565b60006020820190508181036000830152612d6381612b0a565b9050919050565b60006020820190508181036000830152612d8381612b2d565b9050919050565b60006020820190508181036000830152612da381612b50565b9050919050565b60006020820190508181036000830152612dc381612b73565b9050919050565b60006020820190508181036000830152612de381612b96565b9050919050565b60006020820190508181036000830152612e0381612bb9565b9050919050565b60006020820190508181036000830152612e2381612bdc565b9050919050565b60006020820190508181036000830152612e4381612bff565b9050919050565b60006020820190508181036000830152612e6381612c22565b9050919050565b60006020820190508181036000830152612e8381612c45565b9050919050565b60006020820190508181036000830152612ea381612c68565b9050919050565b6000602082019050612ebf6000830184612c8b565b92915050565b6000602082019050612eda6000830184612c9a565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612f078261304f565b9150612f128361304f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f4757612f46613114565b5b828201905092915050565b6000612f5d8261304f565b9150612f688361304f565b925082612f7857612f77613143565b5b828204905092915050565b6000612f8e8261304f565b9150612f998361304f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fd257612fd1613114565b5b828202905092915050565b6000612fe88261304f565b9150612ff38361304f565b92508282101561300657613005613114565b5b828203905092915050565b600061301c8261302f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015613084578082015181840152602081019050613069565b83811115613093576000848401525b50505050565b600060028204905060018216806130b157607f821691505b602082108114156130c5576130c4613172565b5b50919050565b60006130d68261304f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561310957613108613114565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6134e581613011565b81146134f057600080fd5b50565b6134fc81613023565b811461350757600080fd5b50565b6135138161304f565b811461351e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202838d7d32b21aa91518bfac9b3178d69e091a603e38cbeec9c51fbd8142e0d6464736f6c634300080600330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c80635ff1b181116100b8578063a457c2d71161007c578063a457c2d71461037d578063a9059cbb146103ad578063dd62ed3e146103dd578063de67cfae1461040d578063ebad8f1614610429578063ec4708e31461043357610142565b80635ff1b181146102e957806370a0823114610307578063715018a6146103375780638da5cb5b1461034157806395d89b411461035f57610142565b806323b872dd1161010a57806323b872dd146101ed5780632d3e69ea1461021d5780632d8381191461023b578063313ce5671461026b57806339509351146102895780634549b039146102b957610142565b8063053ab1821461014757806306fdde0314610163578063081d2b3c14610181578063095ea7b31461019f57806318160ddd146101cf575b600080fd5b610161600480360381019061015c9190612a23565b610463565b005b61016b6105dd565b6040516101789190612d08565b60405180910390f35b61018961066f565b6040516101969190612ca9565b60405180910390f35b6101b960048036038101906101b491906129e3565b610695565b6040516101c69190612ced565b60405180910390f35b6101d76106b3565b6040516101e49190612eaa565b60405180910390f35b61020760048036038101906102029190612990565b6106c5565b6040516102149190612ced565b60405180910390f35b61022561079e565b6040516102329190612ced565b60405180910390f35b61025560048036038101906102509190612a23565b6107b5565b6040516102629190612eaa565b60405180910390f35b610273610823565b6040516102809190612ec5565b60405180910390f35b6102a3600480360381019061029e91906129e3565b61083a565b6040516102b09190612ced565b60405180910390f35b6102d360048036038101906102ce9190612a50565b6108ed565b6040516102e09190612eaa565b60405180910390f35b6102f1610977565b6040516102fe9190612eaa565b60405180910390f35b610321600480360381019061031c9190612923565b610981565b60405161032e9190612eaa565b60405180910390f35b61033f610a6c565b005b610349610bbf565b6040516103569190612ca9565b60405180910390f35b610367610be8565b6040516103749190612d08565b60405180910390f35b610397600480360381019061039291906129e3565b610c7a565b6040516103a49190612ced565b60405180910390f35b6103c760048036038101906103c291906129e3565b610d47565b6040516103d49190612ced565b60405180910390f35b6103f760048036038101906103f29190612950565b610d65565b6040516104049190612eaa565b60405180910390f35b61042760048036038101906104229190612923565b610dec565b005b610431611018565b005b61044d60048036038101906104489190612923565b611107565b60405161045a9190612ced565b60405180910390f35b600061046d6111f1565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390612e8a565b60405180910390fd5b6000610507836111f9565b50505050905061055f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105b781600c546111a790919063ffffffff16565b600c819055506105d28360075461125190919063ffffffff16565b600781905550505050565b6060600980546105ec90613099565b80601f016020809104026020016040519081016040528092919081815260200182805461061890613099565b80156106655780601f1061063a57610100808354040283529160200191610665565b820191906000526020600020905b81548152906001019060200180831161064857829003601f168201915b5050505050905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106a96106a26111f1565b84846112af565b6001905092915050565b600069152d02c7e14af6800000905090565b60006106d284848461147a565b610793846106de6111f1565b61078e8560405180606001604052806028815260200161352260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107446111f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a6d9092919063ffffffff16565b6112af565b600190509392505050565b6000600860009054906101000a900460ff16905090565b6000600c548211156107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390612d4a565b60405180910390fd5b6000610806611ad1565b905061081b818461115d90919063ffffffff16565b915050919050565b6000600b60009054906101000a900460ff16905090565b60006108e36108476111f1565b846108de85600360006108586111f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b6112af565b6001905092915050565b600069152d02c7e14af680000083111561093c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093390612daa565b60405180910390fd5b8161095b57600061094c846111f9565b50505050905080915050610971565b6000610966846111f9565b505050915050809150505b92915050565b6000600754905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a1c57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a67565b610a64600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107b5565b90505b919050565b610a746111f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af890612dea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610bf790613099565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2390613099565b8015610c705780601f10610c4557610100808354040283529160200191610c70565b820191906000526020600020905b815481529060010190602001808311610c5357829003601f168201915b5050505050905090565b6000610d3d610c876111f1565b84610d388560405180606001604052806025815260200161354a6025913960036000610cb16111f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a6d9092919063ffffffff16565b6112af565b6001905092915050565b6000610d5b610d546111f1565b848461147a565b6001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610df46111f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890612dea565b60405180910390fd5b60011515600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f37576000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611015565b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1d2288ff481fd28dcc877dd640cc5729f3d0a091e9e2bfff38f6214c00e2ae5f81600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660405161100c929190612cc4565b60405180910390a15b50565b6110206111f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a490612dea565b60405180910390fd5b60011515600860009054906101000a900460ff16151514156110e9576000600860006101000a81548160ff021916908315150217905550611105565b6001600860006101000a81548160ff0219169083151502179055505b565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061119f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611afc565b905092915050565b60006111e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a6d565b905092915050565b600033905090565b600080600080600080600061120d88611b5f565b91509150600061121b611ad1565b9050600080600061122d8c8686611bb2565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60008082846112609190612efc565b9050838110156112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90612d8a565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690612e6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138690612d6a565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161146d9190612eaa565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190612e2a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190612d2a565b60405180910390fd5b6000811161159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490612e0a565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061163e5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116875760008114611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90612e4a565b60405180910390fd5b5b60011515600860009054906101000a900460ff16151514806116db57506116ac610bbf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061171857506116e9610bbf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611a1157600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156117c05750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117d5576117d0838383611c10565b611a0c565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118785750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561188d57611888838383611e63565b611a0b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119315750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611946576119418383836120b6565b611a0a565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119e85750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119fd576119f8838383612274565b611a09565b611a088383836120b6565b5b5b5b5b611a68565b60011515600860009054906101000a900460ff16151514611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5e90612e4a565b60405180910390fd5b5b505050565b6000838311158290611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac9190612d08565b60405180910390fd5b5060008385611ac49190612fdd565b9050809150509392505050565b6000806000611ade61255c565b91509150611af5818361115d90919063ffffffff16565b9250505090565b60008083118290611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9190612d08565b60405180910390fd5b5060008385611b529190612f52565b9050809150509392505050565b6000806000611b8c6002611b7e6103e88761115d90919063ffffffff16565b61282f90919063ffffffff16565b90506000611ba382866111a790919063ffffffff16565b90508082935093505050915091565b600080600080611bcb858861282f90919063ffffffff16565b90506000611be2868861282f90919063ffffffff16565b90506000611bf982846111a790919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611c21866111f9565b94509450945094509450611c7d86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d1285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611da784600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611df483826128aa565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e519190612eaa565b60405180910390a35050505050505050565b6000806000806000611e74866111f9565b94509450945094509450611ed085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6582600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ffa84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061204783826128aa565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120a49190612eaa565b60405180910390a35050505050505050565b60008060008060006120c7866111f9565b9450945094509450945061212385600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121b884600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061220583826128aa565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122629190612eaa565b60405180910390a35050505050505050565b6000806000806000612285866111f9565b945094509450945094506122e186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061240b82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461125190919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124ed83826128aa565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161254a9190612eaa565b60405180910390a35050505050505050565b6000806000600c549050600069152d02c7e14af6800000905060005b6005805490508110156127e25782600160006005848154811061259e5761259d6131a1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061268c5750816002600060058481548110612624576126236131a1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156126ab57600c5469152d02c7e14af68000009450945050505061282b565b61273b60016000600584815481106126c6576126c56131a1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846111a790919063ffffffff16565b92506127cd6002600060058481548110612758576127576131a1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111a790919063ffffffff16565b915080806127da906130cb565b915050612578565b5061280269152d02c7e14af6800000600c5461115d90919063ffffffff16565b82101561282257600c5469152d02c7e14af680000093509350505061282b565b81819350935050505b9091565b60008083141561284257600090506128a4565b600082846128509190612f83565b905082848261285f9190612f52565b1461289f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289690612dca565b60405180910390fd5b809150505b92915050565b6128bf82600c546111a790919063ffffffff16565b600c819055506128da8160075461125190919063ffffffff16565b6007819055505050565b6000813590506128f3816134dc565b92915050565b600081359050612908816134f3565b92915050565b60008135905061291d8161350a565b92915050565b600060208284031215612939576129386131d0565b5b6000612947848285016128e4565b91505092915050565b60008060408385031215612967576129666131d0565b5b6000612975858286016128e4565b9250506020612986858286016128e4565b9150509250929050565b6000806000606084860312156129a9576129a86131d0565b5b60006129b7868287016128e4565b93505060206129c8868287016128e4565b92505060406129d98682870161290e565b9150509250925092565b600080604083850312156129fa576129f96131d0565b5b6000612a08858286016128e4565b9250506020612a198582860161290e565b9150509250929050565b600060208284031215612a3957612a386131d0565b5b6000612a478482850161290e565b91505092915050565b60008060408385031215612a6757612a666131d0565b5b6000612a758582860161290e565b9250506020612a86858286016128f9565b9150509250929050565b612a9981613011565b82525050565b612aa881613023565b82525050565b6000612ab982612ee0565b612ac38185612eeb565b9350612ad3818560208601613066565b612adc816131d5565b840191505092915050565b6000612af4602383612eeb565b9150612aff826131e6565b604082019050919050565b6000612b17602a83612eeb565b9150612b2282613235565b604082019050919050565b6000612b3a602283612eeb565b9150612b4582613284565b604082019050919050565b6000612b5d601b83612eeb565b9150612b68826132d3565b602082019050919050565b6000612b80601f83612eeb565b9150612b8b826132fc565b602082019050919050565b6000612ba3602183612eeb565b9150612bae82613325565b604082019050919050565b6000612bc6602083612eeb565b9150612bd182613374565b602082019050919050565b6000612be9602983612eeb565b9150612bf48261339d565b604082019050919050565b6000612c0c602583612eeb565b9150612c17826133ec565b604082019050919050565b6000612c2f600083612eeb565b9150612c3a8261343b565b600082019050919050565b6000612c52602483612eeb565b9150612c5d8261343e565b604082019050919050565b6000612c75602c83612eeb565b9150612c808261348d565b604082019050919050565b612c948161304f565b82525050565b612ca381613059565b82525050565b6000602082019050612cbe6000830184612a90565b92915050565b6000604082019050612cd96000830185612a90565b612ce66020830184612a9f565b9392505050565b6000602082019050612d026000830184612a9f565b92915050565b60006020820190508181036000830152612d228184612aae565b905092915050565b60006020820190508181036000830152612d4381612ae7565b9050919050565b60006020820190508181036000830152612d6381612b0a565b9050919050565b60006020820190508181036000830152612d8381612b2d565b9050919050565b60006020820190508181036000830152612da381612b50565b9050919050565b60006020820190508181036000830152612dc381612b73565b9050919050565b60006020820190508181036000830152612de381612b96565b9050919050565b60006020820190508181036000830152612e0381612bb9565b9050919050565b60006020820190508181036000830152612e2381612bdc565b9050919050565b60006020820190508181036000830152612e4381612bff565b9050919050565b60006020820190508181036000830152612e6381612c22565b9050919050565b60006020820190508181036000830152612e8381612c45565b9050919050565b60006020820190508181036000830152612ea381612c68565b9050919050565b6000602082019050612ebf6000830184612c8b565b92915050565b6000602082019050612eda6000830184612c9a565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612f078261304f565b9150612f128361304f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f4757612f46613114565b5b828201905092915050565b6000612f5d8261304f565b9150612f688361304f565b925082612f7857612f77613143565b5b828204905092915050565b6000612f8e8261304f565b9150612f998361304f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fd257612fd1613114565b5b828202905092915050565b6000612fe88261304f565b9150612ff38361304f565b92508282101561300657613005613114565b5b828203905092915050565b600061301c8261302f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015613084578082015181840152602081019050613069565b83811115613093576000848401525b50505050565b600060028204905060018216806130b157607f821691505b602082108114156130c5576130c4613172565b5b50919050565b60006130d68261304f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561310957613108613114565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6134e581613011565b81146134f057600080fd5b50565b6134fc81613023565b811461350757600080fd5b50565b6135138161304f565b811461351e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202838d7d32b21aa91518bfac9b3178d69e091a603e38cbeec9c51fbd8142e0d6464736f6c63430008060033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

16662:10572:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20626:376;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18611:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17515:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19527:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18888:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19696:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18514:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21452:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18797:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20017:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21010:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20520:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18995:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16507:148;;;:::i;:::-;;16074:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18702:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20243:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19201:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19376:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17926:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18364:138;;;:::i;:::-;;18233:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20626:376;20678:14;20695:12;:10;:12::i;:::-;20678:29;;20727:11;:19;20739:6;20727:19;;;;;;;;;;;;;;;;;;;;;;;;;20726:20;20718:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20807:15;20830:19;20841:7;20830:10;:19::i;:::-;20806:43;;;;;;20878:28;20898:7;20878;:15;20886:6;20878:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20860:7;:15;20868:6;20860:15;;;;;;;;;;;;;;;:46;;;;20927:20;20939:7;20927;;:11;;:20;;;;:::i;:::-;20917:7;:30;;;;20971:23;20986:7;20971:10;;:14;;:23;;;;:::i;:::-;20958:10;:36;;;;20667:335;;20626:376;:::o;18611:83::-;18648:13;18681:5;18674:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18611:83;:::o;17515:30::-;;;;;;;;;;;;;:::o;19527:161::-;19602:4;19619:39;19628:12;:10;:12::i;:::-;19642:7;19651:6;19619:8;:39::i;:::-;19676:4;19669:11;;19527:161;;;;:::o;18888:95::-;18941:7;17380:21;18961:14;;18888:95;:::o;19696:313::-;19794:4;19811:36;19821:6;19829:9;19840:6;19811:9;:36::i;:::-;19858:121;19867:6;19875:12;:10;:12::i;:::-;19889:89;19927:6;19889:89;;;;;;;;;;;;;;;;;:11;:19;19901:6;19889:19;;;;;;;;;;;;;;;:33;19909:12;:10;:12::i;:::-;19889:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19858:8;:121::i;:::-;19997:4;19990:11;;19696:313;;;;;:::o;18514:89::-;18561:4;18585:10;;;;;;;;;;;18578:17;;18514:89;:::o;21452:253::-;21518:7;21557;;21546;:18;;21538:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21622:19;21645:10;:8;:10::i;:::-;21622:33;;21673:24;21685:11;21673:7;:11;;:24;;;;:::i;:::-;21666:31;;;21452:253;;;:::o;18797:83::-;18838:5;18863:9;;;;;;;;;;;18856:16;;18797:83;:::o;20017:218::-;20105:4;20122:83;20131:12;:10;:12::i;:::-;20145:7;20154:50;20193:10;20154:11;:25;20166:12;:10;:12::i;:::-;20154:25;;;;;;;;;;;;;;;:34;20180:7;20154:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20122:8;:83::i;:::-;20223:4;20216:11;;20017:218;;;;:::o;21010:434::-;21100:7;17380:21;21128:7;:18;;21120:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21198:17;21193:244;;21233:15;21256:19;21267:7;21256:10;:19::i;:::-;21232:43;;;;;;21297:7;21290:14;;;;;21193:244;21339:23;21369:19;21380:7;21369:10;:19::i;:::-;21337:51;;;;;;21410:15;21403:22;;;21010:434;;;;;:::o;20520:94::-;20569:7;20596:10;;20589:17;;20520:94;:::o;18995:198::-;19061:7;19085:11;:20;19097:7;19085:20;;;;;;;;;;;;;;;;;;;;;;;;;19081:49;;;19114:7;:16;19122:7;19114:16;;;;;;;;;;;;;;;;19107:23;;;;19081:49;19148:37;19168:7;:16;19176:7;19168:16;;;;;;;;;;;;;;;;19148:19;:37::i;:::-;19141:44;;18995:198;;;;:::o;16507:148::-;15908:12;:10;:12::i;:::-;15898:22;;:6;;;;;;;;;;:22;;;15890:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16614:1:::1;16577:40;;16598:6;::::0;::::1;;;;;;;;16577:40;;;;;;;;;;;;16645:1;16628:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16507:148::o:0;16074:79::-;16112:7;16139:6;;;;;;;;;;;16132:13;;16074:79;:::o;18702:87::-;18741:13;18774:7;18767:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18702:87;:::o;20243:269::-;20336:4;20353:129;20362:12;:10;:12::i;:::-;20376:7;20385:96;20424:15;20385:96;;;;;;;;;;;;;;;;;:11;:25;20397:12;:10;:12::i;:::-;20385:25;;;;;;;;;;;;;;;:34;20411:7;20385:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20353:8;:129::i;:::-;20500:4;20493:11;;20243:269;;;;:::o;19201:167::-;19279:4;19296:42;19306:12;:10;:12::i;:::-;19320:9;19331:6;19296:9;:42::i;:::-;19356:4;19349:11;;19201:167;;;;:::o;19376:143::-;19457:7;19484:11;:18;19496:5;19484:18;;;;;;;;;;;;;;;:27;19503:7;19484:27;;;;;;;;;;;;;;;;19477:34;;19376:143;;;;:::o;17926:295::-;15908:12;:10;:12::i;:::-;15898:22;;:6;;;;;;;;;;:22;;;15890:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18029:4:::1;18001:32;;:12;:24;18014:10;18001:24;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;17997:217;;;18077:5;18050:12;:24;18063:10;18050:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17997:217;;;18128:4;18101:12;:24;18114:10;18101:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;18152:48;18163:10;18175:12;:24;18188:10;18175:24;;;;;;;;;;;;;;;;;;;;;;;;;18152:48;;;;;;;:::i;:::-;;;;;;;;17997:217;17926:295:::0;:::o;18364:138::-;15908:12;:10;:12::i;:::-;15898:22;;:6;;;;;;;;;;:22;;;15890:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18442:4:::1;18428:18;;:10;;;;;;;;;;;:18;;;18424:71;;;18462:5;18449:10;;:18;;;;;;;;;;;;;;;;;;18424:71;;;18489:4;18476:10;;:17;;;;;;;;;;;;;;;;;;18424:71;18364:138::o:0;18233:119::-;18296:4;18320:12;:24;18333:10;18320:24;;;;;;;;;;;;;;;;;;;;;;;;;18313:31;;18233:119;;;:::o;8964:132::-;9022:7;9049:39;9053:1;9056;9049:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9042:46;;8964:132;;;;:::o;7366:136::-;7424:7;7451:43;7455:1;7458;7451:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7444:50;;7366:136;;;;:::o;3626:114::-;3679:15;3721:10;3706:26;;3626:114;:::o;25442:411::-;25501:7;25510;25519;25528;25537;25558:23;25583:12;25599:20;25611:7;25599:11;:20::i;:::-;25557:62;;;;25630:19;25653:10;:8;:10::i;:::-;25630:33;;25675:15;25692:23;25717:12;25733:39;25745:7;25754:4;25760:11;25733;:39::i;:::-;25674:98;;;;;;25791:7;25800:15;25817:4;25823:15;25840:4;25783:62;;;;;;;;;;;;;;;;25442:411;;;;;;;:::o;6981:179::-;7039:7;7059:9;7075:1;7071;:5;;;;:::i;:::-;7059:17;;7100:1;7095;:6;;7087:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7151:1;7144:8;;;6981:179;;;;:::o;21713:335::-;21823:1;21806:19;;:5;:19;;;;21798:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21904:1;21885:21;;:7;:21;;;;21877:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21986:6;21956:11;:18;21968:5;21956:18;;;;;;;;;;;;;;;:27;21975:7;21956:27;;;;;;;;;;;;;;;:36;;;;22024:7;22008:32;;22017:5;22008:32;;;22033:6;22008:32;;;;;;:::i;:::-;;;;;;;;21713:335;;;:::o;22060:1112::-;22175:1;22157:20;;:6;:20;;;;22149:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22259:1;22238:23;;:9;:23;;;;22230:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22329:1;22320:6;:10;22312:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22391:12;:20;22404:6;22391:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;22415:12;:23;22428:9;22415:23;;;;;;;;;;;;;;;;;;;;;;;;;22391:47;22387:78;;;22459:1;22449:6;:11;22440:25;;;;;;;;;;;;:::i;:::-;;;;;;;;;22387:78;22494:4;22480:18;;:10;;;;;;;;;;;:18;;;:39;;;;22512:7;:5;:7::i;:::-;22502:17;;:6;:17;;;22480:39;:63;;;;22536:7;:5;:7::i;:::-;22523:20;;:9;:20;;;22480:63;22476:689;;;22560:11;:19;22572:6;22560:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;22584:11;:22;22596:9;22584:22;;;;;;;;;;;;;;;;;;;;;;;;;22583:23;22560:46;22556:557;;;22619:48;22641:6;22649:9;22660:6;22619:21;:48::i;:::-;22556:557;;;22690:11;:19;22702:6;22690:19;;;;;;;;;;;;;;;;;;;;;;;;;22689:20;:46;;;;;22713:11;:22;22725:9;22713:22;;;;;;;;;;;;;;;;;;;;;;;;;22689:46;22685:428;;;22748:46;22768:6;22776:9;22787:6;22748:19;:46::i;:::-;22685:428;;;22817:11;:19;22829:6;22817:19;;;;;;;;;;;;;;;;;;;;;;;;;22816:20;:47;;;;;22841:11;:22;22853:9;22841:22;;;;;;;;;;;;;;;;;;;;;;;;;22840:23;22816:47;22812:301;;;22876:44;22894:6;22902:9;22913:6;22876:17;:44::i;:::-;22812:301;;;22942:11;:19;22954:6;22942:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;22965:11;:22;22977:9;22965:22;;;;;;;;;;;;;;;;;;;;;;;;;22942:45;22938:175;;;23000:48;23022:6;23030:9;23041:6;23000:21;:48::i;:::-;22938:175;;;23067:44;23085:6;23093:9;23104:6;23067:17;:44::i;:::-;22938:175;22812:301;22685:428;22556:557;22476:689;;;23154:4;23140:18;;:10;;;;;;;;;;;:18;;;23131:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;22476:689;22060:1112;;;:::o;7728:190::-;7814:7;7847:1;7842;:6;;7850:12;7834:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7874:9;7890:1;7886;:5;;;;:::i;:::-;7874:17;;7909:1;7902:8;;;7728:190;;;;;:::o;26499:163::-;26540:7;26561:15;26578;26597:19;:17;:19::i;:::-;26560:56;;;;26634:20;26646:7;26634;:11;;:20;;;;:::i;:::-;26627:27;;;;26499:163;:::o;9516:276::-;9602:7;9634:1;9630;:5;9637:12;9622:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9661:9;9677:1;9673;:5;;;;:::i;:::-;9661:17;;9783:1;9776:8;;;9516:276;;;;;:::o;25861:288::-;25921:7;25930;26007:12;26022:24;26044:1;26022:17;26034:4;26022:7;:11;;:17;;;;:::i;:::-;:21;;:24;;;;:::i;:::-;26007:39;;26057:23;26083:17;26095:4;26083:7;:11;;:17;;;;:::i;:::-;26057:43;;26119:15;26136:4;26111:30;;;;;;25861:288;;;:::o;26157:334::-;26252:7;26261;26270;26290:15;26308:24;26320:11;26308:7;:11;;:24;;;;:::i;:::-;26290:42;;26343:12;26358:21;26367:11;26358:4;:8;;:21;;;;:::i;:::-;26343:36;;26390:23;26416:17;26428:4;26416:7;:11;;:17;;;;:::i;:::-;26390:43;;26452:7;26461:15;26478:4;26444:39;;;;;;;;;26157:334;;;;;;;:::o;24177:509::-;24280:15;24297:23;24322:12;24336:23;24361:12;24377:19;24388:7;24377:10;:19::i;:::-;24279:117;;;;;;;;;;24425:28;24445:7;24425;:15;24433:6;24425:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24407:7;:15;24415:6;24407:15;;;;;;;;;;;;;;;:46;;;;24482:28;24502:7;24482;:15;24490:6;24482:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24464:7;:15;24472:6;24464:15;;;;;;;;;;;;;;;:46;;;;24542:39;24565:15;24542:7;:18;24550:9;24542:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24521:7;:18;24529:9;24521:18;;;;;;;;;;;;;;;:60;;;;24595:23;24607:4;24613;24595:11;:23::i;:::-;24651:9;24634:44;;24643:6;24634:44;;;24662:15;24634:44;;;;;;:::i;:::-;;;;;;;;24268:418;;;;;24177:509;;;:::o;23640:529::-;23741:15;23758:23;23783:12;23797:23;23822:12;23838:19;23849:7;23838:10;:19::i;:::-;23740:117;;;;;;;;;;23886:28;23906:7;23886;:15;23894:6;23886:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23868:7;:15;23876:6;23868:15;;;;;;;;;;;;;;;:46;;;;23946:39;23969:15;23946:7;:18;23954:9;23946:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23925:7;:18;23933:9;23925:18;;;;;;;;;;;;;;;:60;;;;24017:39;24040:15;24017:7;:18;24025:9;24017:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23996:7;:18;24004:9;23996:18;;;;;;;;;;;;;;;:60;;;;24078:23;24090:4;24096;24078:11;:23::i;:::-;24134:9;24117:44;;24126:6;24117:44;;;24145:15;24117:44;;;;;;:::i;:::-;;;;;;;;23729:440;;;;;23640:529;;;:::o;23180:452::-;23279:15;23296:23;23321:12;23335:23;23360:12;23376:19;23387:7;23376:10;:19::i;:::-;23278:117;;;;;;;;;;23424:28;23444:7;23424;:15;23432:6;23424:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23406:7;:15;23414:6;23406:15;;;;;;;;;;;;;;;:46;;;;23484:39;23507:15;23484:7;:18;23492:9;23484:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23463:7;:18;23471:9;23463:18;;;;;;;;;;;;;;;:60;;;;23541:23;23553:4;23559;23541:11;:23::i;:::-;23597:9;23580:44;;23589:6;23580:44;;;23608:15;23580:44;;;;;;:::i;:::-;;;;;;;;23267:365;;;;;23180:452;;;:::o;24694:585::-;24797:15;24814:23;24839:12;24853:23;24878:12;24894:19;24905:7;24894:10;:19::i;:::-;24796:117;;;;;;;;;;24942:28;24962:7;24942;:15;24950:6;24942:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24924:7;:15;24932:6;24924:15;;;;;;;;;;;;;;;:46;;;;24999:28;25019:7;24999;:15;25007:6;24999:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24981:7;:15;24989:6;24981:15;;;;;;;;;;;;;;;:46;;;;25059:39;25082:15;25059:7;:18;25067:9;25059:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25038:7;:18;25046:9;25038:18;;;;;;;;;;;;;;;:60;;;;25130:39;25153:15;25130:7;:18;25138:9;25130:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25109:7;:18;25117:9;25109:18;;;;;;;;;;;;;;;:60;;;;25188:23;25200:4;25206;25188:11;:23::i;:::-;25244:9;25227:44;;25236:6;25227:44;;;25255:15;25227:44;;;;;;:::i;:::-;;;;;;;;24785:494;;;;;24694:585;;;:::o;26670:561::-;26720:7;26729;26749:15;26767:7;;26749:25;;26785:15;17380:21;26785:25;;26832:9;26827:289;26851:9;:16;;;;26847:1;:20;26827:289;;;26917:7;26893;:21;26901:9;26911:1;26901:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26893:21;;;;;;;;;;;;;;;;:31;:66;;;;26952:7;26928;:21;26936:9;26946:1;26936:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26928:21;;;;;;;;;;;;;;;;:31;26893:66;26889:97;;;26969:7;;17380:21;26961:25;;;;;;;;;26889:97;27011:34;27023:7;:21;27031:9;27041:1;27031:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27023:21;;;;;;;;;;;;;;;;27011:7;:11;;:34;;;;:::i;:::-;27001:44;;27070:34;27082:7;:21;27090:9;27100:1;27090:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27082:21;;;;;;;;;;;;;;;;27070:7;:11;;:34;;;;:::i;:::-;27060:44;;26869:3;;;;;:::i;:::-;;;;26827:289;;;;27140:20;17380:21;27140:7;;:11;;:20;;;;:::i;:::-;27130:7;:30;27126:61;;;27170:7;;17380:21;27162:25;;;;;;;;27126:61;27206:7;27215;27198:25;;;;;;26670:561;;;:::o;8097:467::-;8155:7;8405:1;8400;:6;8396:47;;;8430:1;8423:8;;;;8396:47;8453:9;8469:1;8465;:5;;;;:::i;:::-;8453:17;;8498:1;8493;8489;:5;;;;:::i;:::-;:10;8481:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;8555:1;8548:8;;;8097:467;;;;;:::o;25287:147::-;25365:17;25377:4;25365:7;;:11;;:17;;;;:::i;:::-;25355:7;:27;;;;25406:20;25421:4;25406:10;;:14;;:20;;;;:::i;:::-;25393:10;:33;;;;25287:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;337:5;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:329::-;495:6;544:2;532:9;523:7;519:23;515:32;512:2;;;550:79;;:::i;:::-;512:2;670:1;695:53;740:7;731:6;720:9;716:22;695:53;:::i;:::-;685:63;;641:117;502:263;;;;:::o;771:474::-;839:6;847;896:2;884:9;875:7;871:23;867:32;864:2;;;902:79;;:::i;:::-;864:2;1022:1;1047:53;1092:7;1083:6;1072:9;1068:22;1047:53;:::i;:::-;1037:63;;993:117;1149:2;1175:53;1220:7;1211:6;1200:9;1196:22;1175:53;:::i;:::-;1165:63;;1120:118;854:391;;;;;:::o;1251:619::-;1328:6;1336;1344;1393:2;1381:9;1372:7;1368:23;1364:32;1361:2;;;1399:79;;:::i;:::-;1361:2;1519:1;1544:53;1589:7;1580:6;1569:9;1565:22;1544:53;:::i;:::-;1534:63;;1490:117;1646:2;1672:53;1717:7;1708:6;1697:9;1693:22;1672:53;:::i;:::-;1662:63;;1617:118;1774:2;1800:53;1845:7;1836:6;1825:9;1821:22;1800:53;:::i;:::-;1790:63;;1745:118;1351:519;;;;;:::o;1876:474::-;1944:6;1952;2001:2;1989:9;1980:7;1976:23;1972:32;1969:2;;;2007:79;;:::i;:::-;1969:2;2127:1;2152:53;2197:7;2188:6;2177:9;2173:22;2152:53;:::i;:::-;2142:63;;2098:117;2254:2;2280:53;2325:7;2316:6;2305:9;2301:22;2280:53;:::i;:::-;2270:63;;2225:118;1959:391;;;;;:::o;2356:329::-;2415:6;2464:2;2452:9;2443:7;2439:23;2435:32;2432:2;;;2470:79;;:::i;:::-;2432:2;2590:1;2615:53;2660:7;2651:6;2640:9;2636:22;2615:53;:::i;:::-;2605:63;;2561:117;2422:263;;;;:::o;2691:468::-;2756:6;2764;2813:2;2801:9;2792:7;2788:23;2784:32;2781:2;;;2819:79;;:::i;:::-;2781:2;2939:1;2964:53;3009:7;3000:6;2989:9;2985:22;2964:53;:::i;:::-;2954:63;;2910:117;3066:2;3092:50;3134:7;3125:6;3114:9;3110:22;3092:50;:::i;:::-;3082:60;;3037:115;2771:388;;;;;:::o;3165:118::-;3252:24;3270:5;3252:24;:::i;:::-;3247:3;3240:37;3230:53;;:::o;3289:109::-;3370:21;3385:5;3370:21;:::i;:::-;3365:3;3358:34;3348:50;;:::o;3404:364::-;3492:3;3520:39;3553:5;3520:39;:::i;:::-;3575:71;3639:6;3634:3;3575:71;:::i;:::-;3568:78;;3655:52;3700:6;3695:3;3688:4;3681:5;3677:16;3655:52;:::i;:::-;3732:29;3754:6;3732:29;:::i;:::-;3727:3;3723:39;3716:46;;3496:272;;;;;:::o;3774:366::-;3916:3;3937:67;4001:2;3996:3;3937:67;:::i;:::-;3930:74;;4013:93;4102:3;4013:93;:::i;:::-;4131:2;4126:3;4122:12;4115:19;;3920:220;;;:::o;4146:366::-;4288:3;4309:67;4373:2;4368:3;4309:67;:::i;:::-;4302:74;;4385:93;4474:3;4385:93;:::i;:::-;4503:2;4498:3;4494:12;4487:19;;4292:220;;;:::o;4518:366::-;4660:3;4681:67;4745:2;4740:3;4681:67;:::i;:::-;4674:74;;4757:93;4846:3;4757:93;:::i;:::-;4875:2;4870:3;4866:12;4859:19;;4664:220;;;:::o;4890:366::-;5032:3;5053:67;5117:2;5112:3;5053:67;:::i;:::-;5046:74;;5129:93;5218:3;5129:93;:::i;:::-;5247:2;5242:3;5238:12;5231:19;;5036:220;;;:::o;5262:366::-;5404:3;5425:67;5489:2;5484:3;5425:67;:::i;:::-;5418:74;;5501:93;5590:3;5501:93;:::i;:::-;5619:2;5614:3;5610:12;5603:19;;5408:220;;;:::o;5634:366::-;5776:3;5797:67;5861:2;5856:3;5797:67;:::i;:::-;5790:74;;5873:93;5962:3;5873:93;:::i;:::-;5991:2;5986:3;5982:12;5975:19;;5780:220;;;:::o;6006:366::-;6148:3;6169:67;6233:2;6228:3;6169:67;:::i;:::-;6162:74;;6245:93;6334:3;6245:93;:::i;:::-;6363:2;6358:3;6354:12;6347:19;;6152:220;;;:::o;6378:366::-;6520:3;6541:67;6605:2;6600:3;6541:67;:::i;:::-;6534:74;;6617:93;6706:3;6617:93;:::i;:::-;6735:2;6730:3;6726:12;6719:19;;6524:220;;;:::o;6750:366::-;6892:3;6913:67;6977:2;6972:3;6913:67;:::i;:::-;6906:74;;6989:93;7078:3;6989:93;:::i;:::-;7107:2;7102:3;7098:12;7091:19;;6896:220;;;:::o;7122:364::-;7264:3;7285:66;7349:1;7344:3;7285:66;:::i;:::-;7278:73;;7360:93;7449:3;7360:93;:::i;:::-;7478:1;7473:3;7469:11;7462:18;;7268:218;;;:::o;7492:366::-;7634:3;7655:67;7719:2;7714:3;7655:67;:::i;:::-;7648:74;;7731:93;7820:3;7731:93;:::i;:::-;7849:2;7844:3;7840:12;7833:19;;7638:220;;;:::o;7864:366::-;8006:3;8027:67;8091:2;8086:3;8027:67;:::i;:::-;8020:74;;8103:93;8192:3;8103:93;:::i;:::-;8221:2;8216:3;8212:12;8205:19;;8010:220;;;:::o;8236:118::-;8323:24;8341:5;8323:24;:::i;:::-;8318:3;8311:37;8301:53;;:::o;8360:112::-;8443:22;8459:5;8443:22;:::i;:::-;8438:3;8431:35;8421:51;;:::o;8478:222::-;8571:4;8609:2;8598:9;8594:18;8586:26;;8622:71;8690:1;8679:9;8675:17;8666:6;8622:71;:::i;:::-;8576:124;;;;:::o;8706:320::-;8821:4;8859:2;8848:9;8844:18;8836:26;;8872:71;8940:1;8929:9;8925:17;8916:6;8872:71;:::i;:::-;8953:66;9015:2;9004:9;9000:18;8991:6;8953:66;:::i;:::-;8826:200;;;;;:::o;9032:210::-;9119:4;9157:2;9146:9;9142:18;9134:26;;9170:65;9232:1;9221:9;9217:17;9208:6;9170:65;:::i;:::-;9124:118;;;;:::o;9248:313::-;9361:4;9399:2;9388:9;9384:18;9376:26;;9448:9;9442:4;9438:20;9434:1;9423:9;9419:17;9412:47;9476:78;9549:4;9540:6;9476:78;:::i;:::-;9468:86;;9366:195;;;;:::o;9567:419::-;9733:4;9771:2;9760:9;9756:18;9748:26;;9820:9;9814:4;9810:20;9806:1;9795:9;9791:17;9784:47;9848:131;9974:4;9848:131;:::i;:::-;9840:139;;9738:248;;;:::o;9992:419::-;10158:4;10196:2;10185:9;10181:18;10173:26;;10245:9;10239:4;10235:20;10231:1;10220:9;10216:17;10209:47;10273:131;10399:4;10273:131;:::i;:::-;10265:139;;10163:248;;;:::o;10417:419::-;10583:4;10621:2;10610:9;10606:18;10598:26;;10670:9;10664:4;10660:20;10656:1;10645:9;10641:17;10634:47;10698:131;10824:4;10698:131;:::i;:::-;10690:139;;10588:248;;;:::o;10842:419::-;11008:4;11046:2;11035:9;11031:18;11023:26;;11095:9;11089:4;11085:20;11081:1;11070:9;11066:17;11059:47;11123:131;11249:4;11123:131;:::i;:::-;11115:139;;11013:248;;;:::o;11267:419::-;11433:4;11471:2;11460:9;11456:18;11448:26;;11520:9;11514:4;11510:20;11506:1;11495:9;11491:17;11484:47;11548:131;11674:4;11548:131;:::i;:::-;11540:139;;11438:248;;;:::o;11692:419::-;11858:4;11896:2;11885:9;11881:18;11873:26;;11945:9;11939:4;11935:20;11931:1;11920:9;11916:17;11909:47;11973:131;12099:4;11973:131;:::i;:::-;11965:139;;11863:248;;;:::o;12117:419::-;12283:4;12321:2;12310:9;12306:18;12298:26;;12370:9;12364:4;12360:20;12356:1;12345:9;12341:17;12334:47;12398:131;12524:4;12398:131;:::i;:::-;12390:139;;12288:248;;;:::o;12542:419::-;12708:4;12746:2;12735:9;12731:18;12723:26;;12795:9;12789:4;12785:20;12781:1;12770:9;12766:17;12759:47;12823:131;12949:4;12823:131;:::i;:::-;12815:139;;12713:248;;;:::o;12967:419::-;13133:4;13171:2;13160:9;13156:18;13148:26;;13220:9;13214:4;13210:20;13206:1;13195:9;13191:17;13184:47;13248:131;13374:4;13248:131;:::i;:::-;13240:139;;13138:248;;;:::o;13392:419::-;13558:4;13596:2;13585:9;13581:18;13573:26;;13645:9;13639:4;13635:20;13631:1;13620:9;13616:17;13609:47;13673:131;13799:4;13673:131;:::i;:::-;13665:139;;13563:248;;;:::o;13817:419::-;13983:4;14021:2;14010:9;14006:18;13998:26;;14070:9;14064:4;14060:20;14056:1;14045:9;14041:17;14034:47;14098:131;14224:4;14098:131;:::i;:::-;14090:139;;13988:248;;;:::o;14242:419::-;14408:4;14446:2;14435:9;14431:18;14423:26;;14495:9;14489:4;14485:20;14481:1;14470:9;14466:17;14459:47;14523:131;14649:4;14523:131;:::i;:::-;14515:139;;14413:248;;;:::o;14667:222::-;14760:4;14798:2;14787:9;14783:18;14775:26;;14811:71;14879:1;14868:9;14864:17;14855:6;14811:71;:::i;:::-;14765:124;;;;:::o;14895:214::-;14984:4;15022:2;15011:9;15007:18;14999:26;;15035:67;15099:1;15088:9;15084:17;15075:6;15035:67;:::i;:::-;14989:120;;;;:::o;15196:99::-;15248:6;15282:5;15276:12;15266:22;;15255:40;;;:::o;15301:169::-;15385:11;15419:6;15414:3;15407:19;15459:4;15454:3;15450:14;15435:29;;15397:73;;;;:::o;15476:305::-;15516:3;15535:20;15553:1;15535:20;:::i;:::-;15530:25;;15569:20;15587:1;15569:20;:::i;:::-;15564:25;;15723:1;15655:66;15651:74;15648:1;15645:81;15642:2;;;15729:18;;:::i;:::-;15642:2;15773:1;15770;15766:9;15759:16;;15520:261;;;;:::o;15787:185::-;15827:1;15844:20;15862:1;15844:20;:::i;:::-;15839:25;;15878:20;15896:1;15878:20;:::i;:::-;15873:25;;15917:1;15907:2;;15922:18;;:::i;:::-;15907:2;15964:1;15961;15957:9;15952:14;;15829:143;;;;:::o;15978:348::-;16018:7;16041:20;16059:1;16041:20;:::i;:::-;16036:25;;16075:20;16093:1;16075:20;:::i;:::-;16070:25;;16263:1;16195:66;16191:74;16188:1;16185:81;16180:1;16173:9;16166:17;16162:105;16159:2;;;16270:18;;:::i;:::-;16159:2;16318:1;16315;16311:9;16300:20;;16026:300;;;;:::o;16332:191::-;16372:4;16392:20;16410:1;16392:20;:::i;:::-;16387:25;;16426:20;16444:1;16426:20;:::i;:::-;16421:25;;16465:1;16462;16459:8;16456:2;;;16470:18;;:::i;:::-;16456:2;16515:1;16512;16508:9;16500:17;;16377:146;;;;:::o;16529:96::-;16566:7;16595:24;16613:5;16595:24;:::i;:::-;16584:35;;16574:51;;;:::o;16631:90::-;16665:7;16708:5;16701:13;16694:21;16683:32;;16673:48;;;:::o;16727:126::-;16764:7;16804:42;16797:5;16793:54;16782:65;;16772:81;;;:::o;16859:77::-;16896:7;16925:5;16914:16;;16904:32;;;:::o;16942:86::-;16977:7;17017:4;17010:5;17006:16;16995:27;;16985:43;;;:::o;17034:307::-;17102:1;17112:113;17126:6;17123:1;17120:13;17112:113;;;17211:1;17206:3;17202:11;17196:18;17192:1;17187:3;17183:11;17176:39;17148:2;17145:1;17141:10;17136:15;;17112:113;;;17243:6;17240:1;17237:13;17234:2;;;17323:1;17314:6;17309:3;17305:16;17298:27;17234:2;17083:258;;;;:::o;17347:320::-;17391:6;17428:1;17422:4;17418:12;17408:22;;17475:1;17469:4;17465:12;17496:18;17486:2;;17552:4;17544:6;17540:17;17530:27;;17486:2;17614;17606:6;17603:14;17583:18;17580:38;17577:2;;;17633:18;;:::i;:::-;17577:2;17398:269;;;;:::o;17673:233::-;17712:3;17735:24;17753:5;17735:24;:::i;:::-;17726:33;;17781:66;17774:5;17771:77;17768:2;;;17851:18;;:::i;:::-;17768:2;17898:1;17891:5;17887:13;17880:20;;17716:190;;;:::o;17912:180::-;17960:77;17957:1;17950:88;18057:4;18054:1;18047:15;18081:4;18078:1;18071:15;18098:180;18146:77;18143:1;18136:88;18243:4;18240:1;18233:15;18267:4;18264:1;18257:15;18284:180;18332:77;18329:1;18322:88;18429:4;18426:1;18419:15;18453:4;18450:1;18443:15;18470:180;18518:77;18515:1;18508:88;18615:4;18612:1;18605:15;18639:4;18636:1;18629:15;18779:117;18888:1;18885;18878:12;18902:102;18943:6;18994:2;18990:7;18985:2;18978:5;18974:14;18970:28;18960:38;;18950:54;;;:::o;19010:222::-;19150:34;19146:1;19138:6;19134:14;19127:58;19219:5;19214:2;19206:6;19202:15;19195:30;19116:116;:::o;19238:229::-;19378:34;19374:1;19366:6;19362:14;19355:58;19447:12;19442:2;19434:6;19430:15;19423:37;19344:123;:::o;19473:221::-;19613:34;19609:1;19601:6;19597:14;19590:58;19682:4;19677:2;19669:6;19665:15;19658:29;19579:115;:::o;19700:177::-;19840:29;19836:1;19828:6;19824:14;19817:53;19806:71;:::o;19883:181::-;20023:33;20019:1;20011:6;20007:14;20000:57;19989:75;:::o;20070:220::-;20210:34;20206:1;20198:6;20194:14;20187:58;20279:3;20274:2;20266:6;20262:15;20255:28;20176:114;:::o;20296:182::-;20436:34;20432:1;20424:6;20420:14;20413:58;20402:76;:::o;20484:228::-;20624:34;20620:1;20612:6;20608:14;20601:58;20693:11;20688:2;20680:6;20676:15;20669:36;20590:122;:::o;20718:224::-;20858:34;20854:1;20846:6;20842:14;20835:58;20927:7;20922:2;20914:6;20910:15;20903:32;20824:118;:::o;20948:114::-;21054:8;:::o;21068:223::-;21208:34;21204:1;21196:6;21192:14;21185:58;21277:6;21272:2;21264:6;21260:15;21253:31;21174:117;:::o;21297:231::-;21437:34;21433:1;21425:6;21421:14;21414:58;21506:14;21501:2;21493:6;21489:15;21482:39;21403:125;:::o;21534:122::-;21607:24;21625:5;21607:24;:::i;:::-;21600:5;21597:35;21587:2;;21646:1;21643;21636:12;21587:2;21577:79;:::o;21662:116::-;21732:21;21747:5;21732:21;:::i;:::-;21725:5;21722:32;21712:2;;21768:1;21765;21758:12;21712:2;21702:76;:::o;21784:122::-;21857:24;21875:5;21857:24;:::i;:::-;21850:5;21847:35;21837:2;;21896:1;21893;21886:12;21837:2;21827:79;:::o

Swarm Source

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