ETH Price: $3,273.51 (-4.17%)
Gas: 8 Gwei

Token

FuckTheMarket (FTM)
 

Overview

Max Total Supply

68,928,660.769463006621932276 FTM

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
coughdrop.eth
Balance
408.090328528632350157 FTM

Value
$0.00
0x79C26b3468Fea1cA206c918758d978cA9079BD39
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:
FuckTheMarket

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.6.0;


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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}



/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IBEP20 {
    /**
     * @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.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * 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.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    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.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    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.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    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.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    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).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    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).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    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).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    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).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    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.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    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. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    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.
     *
     * _Available since v3.1._
     */
    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`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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.
     *
     * _Available since v3.1._
     */
    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
 * can later be changed with {transferOwnership}.
 *
 * 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 () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the 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);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract FuckTheMarket is Context, IBEP20, 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;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 69000000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;

    string private _name = 'FuckTheMarket';
    string private _symbol = 'FTM';
    uint8 private _decimals = 18;
    
    uint256 private _taxFee = 0;
    uint256 private _burnFee = 0;
    uint256 private _maxTxAmount = 69000000 * 10**18;

    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }
    
        function taxFee() public view returns (uint256) {
        return _taxFee;
    }
    
        function burnFee() public view returns (uint256) {
        return _burnFee;
    }
    
    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, "BEP20: 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, "BEP20: decreased allowance below zero"));
        return true;
    }

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

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function totalBurn() public view returns (uint256) {
        return _tBurnTotal;
    }

    function deliver(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 Tester3");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeAccount(address account) external onlyOwner() {
        require(account != 0xD3ce6898eC2252713F96FC21921cEBfca27501d2, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: 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), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(sender != owner() && recipient != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        
        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);
        }
    }

    function multiTransfer(address[] memory receivers, uint256[] memory amounts) public {
    for (uint256 i = 0; i < receivers.length; i++) 
      transfer(receivers[i], amounts[i]);
    }
    
    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _reflectFee(rFee, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _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, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 burnFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tBurn = tAmount.mul(burnFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn);
        return (tTransferAmount, tFee, tBurn);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn);
        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);
    }
    
    function _getTaxFee() private view returns(uint256) {
        return _taxFee;
    }

    function _getMaxTxAmount() public view returns(uint256) {
        return _maxTxAmount;
    }

    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= 0 , 'maxTxAmount should be greater than 0');
        _maxTxAmount = maxTxAmount * 10**18;
    }

    function _setTaxFee(uint256 taxFee) external onlyOwner() {
        require(taxFee >= 0 && taxFee <= 10, 'taxFee should be in 0 - 10');
        _taxFee = taxFee;
    }

    function _setBurnFee(uint256 burnFee) external onlyOwner() {
        require(burnFee >= 0 && burnFee <= 10, 'burnFee should be in 0 - 10');
        _burnFee = burnFee;
    }
    

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"_setBurnFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"receivers","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","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"},{"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":[],"name":"taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526a3913517ebd3c0c65000000600655600654600019816200002157fe5b06600019036007556040518060400160405280600d81526020017f4675636b5468654d61726b657400000000000000000000000000000000000000815250600a90805190602001906200007692919062000292565b506040518060400160405280600381526020017f46544d0000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000c492919062000292565b506012600c60006101000a81548160ff021916908360ff1602179055506000600d556000600e556a3913517ebd3c0c65000000600f553480156200010757600080fd5b5060006200011a6200028a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460016000620001cf6200028a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021d6200028a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000338565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d557805160ff191683800117855562000306565b8280016001018555821562000306579182015b8281111562000305578251825591602001919060010190620002e8565b5b50905062000315919062000319565b5090565b5b80821115620003345760008160009055506001016200031a565b5090565b613dca80620003486000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635880b87311610104578063a9059cbb116100a2578063f2fde38b11610071578063f2fde38b146109c7578063f7a9159114610a0b578063f84354f114610a29578063fce589d814610a6d576101cf565b8063a9059cbb1461084d578063cba0e996146108b1578063dd62ed3e1461090b578063f2cc0c1814610983576101cf565b80638da5cb5b116100de5780638da5cb5b1461071457806395d89b4114610748578063a071dcf4146107cb578063a457c2d7146107e9576101cf565b80635880b8731461068457806370a08231146106b2578063715018a61461070a576101cf565b80632d838119116101715780633b6b19611161014b5780633b6b1961146105bc5780633bd5d173146105ea5780633c9f861d146106185780634549b03914610636576101cf565b80632d838119146104f5578063313ce567146105375780633950935114610558576101cf565b806318160ddd116101ad57806318160ddd146102d95780631bbae6e0146102f75780631e89d5451461032557806323b872dd14610471576101cf565b806306fdde03146101d4578063095ea7b31461025757806313114a9d146102bb575b600080fd5b6101dc610a8b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a36004803603604081101561026d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b2d565b60405180821515815260200191505060405180910390f35b6102c3610b4b565b6040518082815260200191505060405180910390f35b6102e1610b55565b6040518082815260200191505060405180910390f35b6103236004803603602081101561030d57600080fd5b8101908080359060200190929190505050610b5f565b005b61046f6004803603604081101561033b57600080fd5b810190808035906020019064010000000081111561035857600080fd5b82018360208201111561036a57600080fd5b8035906020019184602083028401116401000000008311171561038c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103ec57600080fd5b8201836020820111156103fe57600080fd5b8035906020019184602083028401116401000000008311171561042057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610c95565b005b6104dd6004803603606081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce4565b60405180821515815260200191505060405180910390f35b6105216004803603602081101561050b57600080fd5b8101908080359060200190929190505050610dbd565b6040518082815260200191505060405180910390f35b61053f610e41565b604051808260ff16815260200191505060405180910390f35b6105a46004803603604081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e58565b60405180821515815260200191505060405180910390f35b6105e8600480360360208110156105d257600080fd5b8101908080359060200190929190505050610f0b565b005b6106166004803603602081101561060057600080fd5b8101908080359060200190929190505050611061565b005b6106206111f2565b6040518082815260200191505060405180910390f35b61066e6004803603604081101561064c57600080fd5b81019080803590602001909291908035151590602001909291905050506111fc565b6040518082815260200191505060405180910390f35b6106b06004803603602081101561069a57600080fd5b81019080803590602001909291905050506112b3565b005b6106f4600480360360208110156106c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611409565b6040518082815260200191505060405180910390f35b6107126114f4565b005b61071c61167a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107506116a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610790578082015181840152602081019050610775565b50505050905090810190601f1680156107bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107d3611745565b6040518082815260200191505060405180910390f35b610835600480360360408110156107ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061174f565b60405180821515815260200191505060405180910390f35b6108996004803603604081101561086357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061181c565b60405180821515815260200191505060405180910390f35b6108f3600480360360208110156108c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061183a565b60405180821515815260200191505060405180910390f35b61096d6004803603604081101561092157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611890565b6040518082815260200191505060405180910390f35b6109c56004803603602081101561099957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611917565b005b610a09600480360360208110156109dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cca565b005b610a13611ed5565b6040518082815260200191505060405180910390f35b610a6b60048036036020811015610a3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611edf565b005b610a75612269565b6040518082815260200191505060405180910390f35b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b235780601f10610af857610100808354040283529160200191610b23565b820191906000526020600020905b815481529060010190602001808311610b0657829003601f168201915b5050505050905090565b6000610b41610b3a612273565b848461227b565b6001905092915050565b6000600854905090565b6000600654905090565b610b67612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811015610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613bd36024913960400191505060405180910390fd5b670de0b6b3a76400008102600f8190555050565b60005b8251811015610cdf57610cd1838281518110610cb057fe5b6020026020010151838381518110610cc457fe5b602002602001015161181c565b508080600101915050610c98565b505050565b6000610cf1848484612472565b610db284610cfd612273565b610dad85604051806060016040528060288152602001613c1d60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d63612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a29092919063ffffffff16565b61227b565b600190509392505050565b6000600754821115610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613c6d6026913960400191505060405180910390fd5b6000610e24612a62565b9050610e398184612a8d90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610f01610e65612273565b84610efc8560036000610e76612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b61227b565b6001905092915050565b610f13612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008110158015610fe55750600a8111155b611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6275726e4665652073686f756c6420626520696e2030202d203130000000000081525060200191505060405180910390fd5b80600e8190555050565b600061106b612273565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613d47602c913960400191505060405180910390fd5b600061111b83612b5f565b5050505050905061117481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111cc81600754612bc790919063ffffffff16565b6007819055506111e783600854612ad790919063ffffffff16565b600881905550505050565b6000600954905090565b6000600654831115611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161129657600061128684612b5f565b50505050509050809150506112ad565b60006112a184612b5f565b50505050915050809150505b92915050565b6112bb612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811015801561138d5750600a8111155b6113ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20313000000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114a457600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506114ef565b6114ec600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbd565b90505b919050565b6114fc612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561173b5780601f106117105761010080835404028352916020019161173b565b820191906000526020600020905b81548152906001019060200180831161171e57829003601f168201915b5050505050905090565b6000600d54905090565b600061181261175c612273565b8461180d85604051806060016040528060258152602001613d006025913960036000611786612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a29092919063ffffffff16565b61227b565b6001905092915050565b6000611830611829612273565b8484612472565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61191f612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73d3ce6898ec2252713f96fc21921cebfca27501d273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613d256022913960400191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611c0c57611bc8600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbd565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611cd2612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613bf76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600f54905090565b611ee7612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600580549050811015612265578173ffffffffffffffffffffffffffffffffffffffff166005828154811061209a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612258576005600160058054905003815481106120f657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061212e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600580548061221e57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612265565b8080600101915050612069565b5050565b6000600e54905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612301576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613baf6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612387576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613d736022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613b8a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561257e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613cdd6023913960400191505060405180910390fd5b600081116125d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613cb46029913960400191505060405180910390fd5b6125df61167a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561264d575061261d61167a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156126ae57600f548111156126ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613c456028913960400191505060405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127515750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561276657612761838383612c11565b61299d565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128095750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281e57612819838383612e8f565b61299c565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128c25750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128d7576128d283838361310d565b61299b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129795750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561298e576129898383836132f6565b61299a565b61299983838361310d565b5b5b5b5b505050565b6000838311158290612a4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a145780820151818401526020810190506129f9565b50505050905090810190601f168015612a415780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000612a6f613609565b91509150612a868183612a8d90919063ffffffff16565b9250505090565b6000612acf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061389a565b905092915050565b600080828401905083811015612b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000612b7c8a600d54600e54613960565b9250925092506000612b8c612a62565b90506000806000612b9f8e8787876139f6565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129a2565b905092915050565b6000612c1b612a62565b9050600080600080600080612c2f88612b5f565b9550955095509550955095506000612c508883613a7f90919063ffffffff16565b9050612ca489600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d3987600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dce86600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e1d85828585613b05565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612e99612a62565b9050600080600080600080612ead88612b5f565b9550955095509550955095506000612ece8883613a7f90919063ffffffff16565b9050612f2287600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fb784600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061304c86600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061309b85828585613b05565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000613117612a62565b905060008060008060008061312b88612b5f565b955095509550955095509550600061314c8883613a7f90919063ffffffff16565b90506131a087600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061323586600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328485828585613b05565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000613300612a62565b905060008060008060008061331488612b5f565b95509550955095509550955060006133358883613a7f90919063ffffffff16565b905061338989600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341e87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b384600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354886600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061359785828585613b05565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b600080600060075490506000600654905060005b60058054905081101561385d5782600160006005848154811061363c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061372357508160026000600584815481106136bb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561373a5760075460065494509450505050613896565b6137c3600160006005848154811061374e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612bc790919063ffffffff16565b925061384e60026000600584815481106137d957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612bc790919063ffffffff16565b9150808060010191505061361d565b50613875600654600754612a8d90919063ffffffff16565b82101561388d57600754600654935093505050613896565b81819350935050505b9091565b60008083118290613946576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561390b5780820151818401526020810190506138f0565b50505050905090810190601f1680156139385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161395257fe5b049050809150509392505050565b60008060008061398c606461397e888a613a7f90919063ffffffff16565b612a8d90919063ffffffff16565b905060006139b660646139a8888b613a7f90919063ffffffff16565b612a8d90919063ffffffff16565b905060006139df826139d1858c612bc790919063ffffffff16565b612bc790919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080613a0f8589613a7f90919063ffffffff16565b90506000613a268689613a7f90919063ffffffff16565b90506000613a3d8789613a7f90919063ffffffff16565b90506000613a6682613a588587612bc790919063ffffffff16565b612bc790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415613a925760009050613aff565b6000828402905082848281613aa357fe5b0414613afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613c936021913960400191505060405180910390fd5b809150505b92915050565b613b2c83613b1e86600754612bc790919063ffffffff16565b612bc790919063ffffffff16565b600781905550613b4782600854612ad790919063ffffffff16565b600881905550613b6281600954612ad790919063ffffffff16565b600981905550613b7d81600654612bc790919063ffffffff16565b6006819055505050505056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e20304f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e416d6f756e74206d757374206265206c657373207468616e20746f74616c2054657374657233536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f42455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f57652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e42455032303a20617070726f766520746f20746865207a65726f2061646472657373a264697066735822122006672555e53a0f7ba7d4c7c530864a26e19f95fdfc011a7374bed979c6600a7f64736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635880b87311610104578063a9059cbb116100a2578063f2fde38b11610071578063f2fde38b146109c7578063f7a9159114610a0b578063f84354f114610a29578063fce589d814610a6d576101cf565b8063a9059cbb1461084d578063cba0e996146108b1578063dd62ed3e1461090b578063f2cc0c1814610983576101cf565b80638da5cb5b116100de5780638da5cb5b1461071457806395d89b4114610748578063a071dcf4146107cb578063a457c2d7146107e9576101cf565b80635880b8731461068457806370a08231146106b2578063715018a61461070a576101cf565b80632d838119116101715780633b6b19611161014b5780633b6b1961146105bc5780633bd5d173146105ea5780633c9f861d146106185780634549b03914610636576101cf565b80632d838119146104f5578063313ce567146105375780633950935114610558576101cf565b806318160ddd116101ad57806318160ddd146102d95780631bbae6e0146102f75780631e89d5451461032557806323b872dd14610471576101cf565b806306fdde03146101d4578063095ea7b31461025757806313114a9d146102bb575b600080fd5b6101dc610a8b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a36004803603604081101561026d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b2d565b60405180821515815260200191505060405180910390f35b6102c3610b4b565b6040518082815260200191505060405180910390f35b6102e1610b55565b6040518082815260200191505060405180910390f35b6103236004803603602081101561030d57600080fd5b8101908080359060200190929190505050610b5f565b005b61046f6004803603604081101561033b57600080fd5b810190808035906020019064010000000081111561035857600080fd5b82018360208201111561036a57600080fd5b8035906020019184602083028401116401000000008311171561038c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103ec57600080fd5b8201836020820111156103fe57600080fd5b8035906020019184602083028401116401000000008311171561042057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610c95565b005b6104dd6004803603606081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce4565b60405180821515815260200191505060405180910390f35b6105216004803603602081101561050b57600080fd5b8101908080359060200190929190505050610dbd565b6040518082815260200191505060405180910390f35b61053f610e41565b604051808260ff16815260200191505060405180910390f35b6105a46004803603604081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e58565b60405180821515815260200191505060405180910390f35b6105e8600480360360208110156105d257600080fd5b8101908080359060200190929190505050610f0b565b005b6106166004803603602081101561060057600080fd5b8101908080359060200190929190505050611061565b005b6106206111f2565b6040518082815260200191505060405180910390f35b61066e6004803603604081101561064c57600080fd5b81019080803590602001909291908035151590602001909291905050506111fc565b6040518082815260200191505060405180910390f35b6106b06004803603602081101561069a57600080fd5b81019080803590602001909291905050506112b3565b005b6106f4600480360360208110156106c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611409565b6040518082815260200191505060405180910390f35b6107126114f4565b005b61071c61167a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107506116a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610790578082015181840152602081019050610775565b50505050905090810190601f1680156107bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107d3611745565b6040518082815260200191505060405180910390f35b610835600480360360408110156107ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061174f565b60405180821515815260200191505060405180910390f35b6108996004803603604081101561086357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061181c565b60405180821515815260200191505060405180910390f35b6108f3600480360360208110156108c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061183a565b60405180821515815260200191505060405180910390f35b61096d6004803603604081101561092157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611890565b6040518082815260200191505060405180910390f35b6109c56004803603602081101561099957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611917565b005b610a09600480360360208110156109dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cca565b005b610a13611ed5565b6040518082815260200191505060405180910390f35b610a6b60048036036020811015610a3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611edf565b005b610a75612269565b6040518082815260200191505060405180910390f35b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b235780601f10610af857610100808354040283529160200191610b23565b820191906000526020600020905b815481529060010190602001808311610b0657829003601f168201915b5050505050905090565b6000610b41610b3a612273565b848461227b565b6001905092915050565b6000600854905090565b6000600654905090565b610b67612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811015610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613bd36024913960400191505060405180910390fd5b670de0b6b3a76400008102600f8190555050565b60005b8251811015610cdf57610cd1838281518110610cb057fe5b6020026020010151838381518110610cc457fe5b602002602001015161181c565b508080600101915050610c98565b505050565b6000610cf1848484612472565b610db284610cfd612273565b610dad85604051806060016040528060288152602001613c1d60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d63612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a29092919063ffffffff16565b61227b565b600190509392505050565b6000600754821115610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613c6d6026913960400191505060405180910390fd5b6000610e24612a62565b9050610e398184612a8d90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610f01610e65612273565b84610efc8560036000610e76612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b61227b565b6001905092915050565b610f13612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008110158015610fe55750600a8111155b611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6275726e4665652073686f756c6420626520696e2030202d203130000000000081525060200191505060405180910390fd5b80600e8190555050565b600061106b612273565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613d47602c913960400191505060405180910390fd5b600061111b83612b5f565b5050505050905061117481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111cc81600754612bc790919063ffffffff16565b6007819055506111e783600854612ad790919063ffffffff16565b600881905550505050565b6000600954905090565b6000600654831115611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161129657600061128684612b5f565b50505050509050809150506112ad565b60006112a184612b5f565b50505050915050809150505b92915050565b6112bb612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811015801561138d5750600a8111155b6113ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20313000000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114a457600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506114ef565b6114ec600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbd565b90505b919050565b6114fc612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561173b5780601f106117105761010080835404028352916020019161173b565b820191906000526020600020905b81548152906001019060200180831161171e57829003601f168201915b5050505050905090565b6000600d54905090565b600061181261175c612273565b8461180d85604051806060016040528060258152602001613d006025913960036000611786612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a29092919063ffffffff16565b61227b565b6001905092915050565b6000611830611829612273565b8484612472565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61191f612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73d3ce6898ec2252713f96fc21921cebfca27501d273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613d256022913960400191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611c0c57611bc8600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbd565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611cd2612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613bf76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600f54905090565b611ee7612273565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600580549050811015612265578173ffffffffffffffffffffffffffffffffffffffff166005828154811061209a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612258576005600160058054905003815481106120f657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061212e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600580548061221e57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612265565b8080600101915050612069565b5050565b6000600e54905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612301576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613baf6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612387576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613d736022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613b8a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561257e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613cdd6023913960400191505060405180910390fd5b600081116125d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613cb46029913960400191505060405180910390fd5b6125df61167a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561264d575061261d61167a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156126ae57600f548111156126ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613c456028913960400191505060405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127515750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561276657612761838383612c11565b61299d565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128095750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281e57612819838383612e8f565b61299c565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128c25750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128d7576128d283838361310d565b61299b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129795750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561298e576129898383836132f6565b61299a565b61299983838361310d565b5b5b5b5b505050565b6000838311158290612a4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a145780820151818401526020810190506129f9565b50505050905090810190601f168015612a415780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000612a6f613609565b91509150612a868183612a8d90919063ffffffff16565b9250505090565b6000612acf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061389a565b905092915050565b600080828401905083811015612b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000612b7c8a600d54600e54613960565b9250925092506000612b8c612a62565b90506000806000612b9f8e8787876139f6565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129a2565b905092915050565b6000612c1b612a62565b9050600080600080600080612c2f88612b5f565b9550955095509550955095506000612c508883613a7f90919063ffffffff16565b9050612ca489600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d3987600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dce86600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e1d85828585613b05565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612e99612a62565b9050600080600080600080612ead88612b5f565b9550955095509550955095506000612ece8883613a7f90919063ffffffff16565b9050612f2287600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fb784600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061304c86600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061309b85828585613b05565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000613117612a62565b905060008060008060008061312b88612b5f565b955095509550955095509550600061314c8883613a7f90919063ffffffff16565b90506131a087600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061323586600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328485828585613b05565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000613300612a62565b905060008060008060008061331488612b5f565b95509550955095509550955060006133358883613a7f90919063ffffffff16565b905061338989600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341e87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b384600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354886600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061359785828585613b05565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b600080600060075490506000600654905060005b60058054905081101561385d5782600160006005848154811061363c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061372357508160026000600584815481106136bb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561373a5760075460065494509450505050613896565b6137c3600160006005848154811061374e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612bc790919063ffffffff16565b925061384e60026000600584815481106137d957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612bc790919063ffffffff16565b9150808060010191505061361d565b50613875600654600754612a8d90919063ffffffff16565b82101561388d57600754600654935093505050613896565b81819350935050505b9091565b60008083118290613946576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561390b5780820151818401526020810190506138f0565b50505050905090810190601f1680156139385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161395257fe5b049050809150509392505050565b60008060008061398c606461397e888a613a7f90919063ffffffff16565b612a8d90919063ffffffff16565b905060006139b660646139a8888b613a7f90919063ffffffff16565b612a8d90919063ffffffff16565b905060006139df826139d1858c612bc790919063ffffffff16565b612bc790919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080613a0f8589613a7f90919063ffffffff16565b90506000613a268689613a7f90919063ffffffff16565b90506000613a3d8789613a7f90919063ffffffff16565b90506000613a6682613a588587612bc790919063ffffffff16565b612bc790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415613a925760009050613aff565b6000828402905082848281613aa357fe5b0414613afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613c936021913960400191505060405180910390fd5b809150505b92915050565b613b2c83613b1e86600754612bc790919063ffffffff16565b612bc790919063ffffffff16565b600781905550613b4782600854612ad790919063ffffffff16565b600881905550613b6281600954612ad790919063ffffffff16565b600981905550613b7d81600654612bc790919063ffffffff16565b6006819055505050505056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e20304f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e416d6f756e74206d757374206265206c657373207468616e20746f74616c2054657374657233536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f42455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f57652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e42455032303a20617070726f766520746f20746865207a65726f2061646472657373a264697066735822122006672555e53a0f7ba7d4c7c530864a26e19f95fdfc011a7374bed979c6600a7f64736f6c634300060c0033

Deployed Bytecode Sourcemap

16800:12736:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17808:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18920:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20031:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18085:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28966:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23694:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19089:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21051:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17994:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19410:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29349:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20222:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20126:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20607:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29172:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18388:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16246:148;;;:::i;:::-;;15604:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17899:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18196:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19636:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18594:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19913:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18769:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21308:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16549:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28864:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21759:478;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18293:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17808;17845:13;17878:5;17871:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17808:83;:::o;18920:161::-;18995:4;19012:39;19021:12;:10;:12::i;:::-;19035:7;19044:6;19012:8;:39::i;:::-;19069:4;19062:11;;18920:161;;;;:::o;20031:87::-;20073:7;20100:10;;20093:17;;20031:87;:::o;18085:95::-;18138:7;18165;;18158:14;;18085:95;:::o;28966:198::-;15826:12;:10;:12::i;:::-;15816:22;;:6;;;;;;;;;;:22;;;15808:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29067:1:::1;29052:11;:16;;29044:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29150:6;29136:11;:20;29121:12;:35;;;;28966:198:::0;:::o;23694:188::-;23790:9;23785:89;23809:9;:16;23805:1;:20;23785:89;;;23840:34;23849:9;23859:1;23849:12;;;;;;;;;;;;;;23863:7;23871:1;23863:10;;;;;;;;;;;;;;23840:8;:34::i;:::-;;23827:3;;;;;;;23785:89;;;;23694:188;;:::o;19089:313::-;19187:4;19204:36;19214:6;19222:9;19233:6;19204:9;:36::i;:::-;19251:121;19260:6;19268:12;:10;:12::i;:::-;19282:89;19320:6;19282:89;;;;;;;;;;;;;;;;;:11;:19;19294:6;19282:19;;;;;;;;;;;;;;;:33;19302:12;:10;:12::i;:::-;19282:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19251:8;:121::i;:::-;19390:4;19383:11;;19089:313;;;;;:::o;21051:249::-;21117:7;21156;;21145;:18;;21137:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21217:19;21240:10;:8;:10::i;:::-;21217:33;;21268:24;21280:11;21268:7;:11;;:24;;;;:::i;:::-;21261:31;;;21051:249;;;:::o;17994:83::-;18035:5;18060:9;;;;;;;;;;;18053:16;;17994:83;:::o;19410:218::-;19498:4;19515:83;19524:12;:10;:12::i;:::-;19538:7;19547:50;19586:10;19547:11;:25;19559:12;:10;:12::i;:::-;19547:25;;;;;;;;;;;;;;;:34;19573:7;19547:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19515:8;:83::i;:::-;19616:4;19609:11;;19410:218;;;;:::o;29349:176::-;15826:12;:10;:12::i;:::-;15816:22;;:6;;;;;;;;;;:22;;;15808:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29438:1:::1;29427:7;:12;;:29;;;;;29454:2;29443:7;:13;;29427:29;29419:69;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;29510:7;29499:8;:18;;;;29349:176:::0;:::o;20222:377::-;20274:14;20291:12;:10;:12::i;:::-;20274:29;;20323:11;:19;20335:6;20323:19;;;;;;;;;;;;;;;;;;;;;;;;;20322:20;20314:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20403:15;20427:19;20438:7;20427:10;:19::i;:::-;20402:44;;;;;;;20475:28;20495:7;20475;:15;20483:6;20475:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20457:7;:15;20465:6;20457:15;;;;;;;;;;;;;;;:46;;;;20524:20;20536:7;20524;;:11;;:20;;;;:::i;:::-;20514:7;:30;;;;20568:23;20583:7;20568:10;;:14;;:23;;;;:::i;:::-;20555:10;:36;;;;20222:377;;;:::o;20126:88::-;20168:7;20195:11;;20188:18;;20126:88;:::o;20607:436::-;20697:7;20736;;20725;:18;;20717:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20795:17;20790:246;;20830:15;20854:19;20865:7;20854:10;:19::i;:::-;20829:44;;;;;;;20895:7;20888:14;;;;;20790:246;20937:23;20968:19;20979:7;20968:10;:19::i;:::-;20935:52;;;;;;;21009:15;21002:22;;;20607:436;;;;;:::o;29172:169::-;15826:12;:10;:12::i;:::-;15816:22;;:6;;;;;;;;;;:22;;;15808:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29258:1:::1;29248:6;:11;;:27;;;;;29273:2;29263:6;:12;;29248:27;29240:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;29327:6;29317:7;:16;;;;29172:169:::0;:::o;18388:198::-;18454:7;18478:11;:20;18490:7;18478:20;;;;;;;;;;;;;;;;;;;;;;;;;18474:49;;;18507:7;:16;18515:7;18507:16;;;;;;;;;;;;;;;;18500:23;;;;18474:49;18541:37;18561:7;:16;18569:7;18561:16;;;;;;;;;;;;;;;;18541:19;:37::i;:::-;18534:44;;18388:198;;;;:::o;16246:148::-;15826:12;:10;:12::i;:::-;15816:22;;:6;;;;;;;;;;:22;;;15808:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16353:1:::1;16316:40;;16337:6;::::0;::::1;;;;;;;;16316:40;;;;;;;;;;;;16384:1;16367:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16246:148::o:0;15604:79::-;15642:7;15669:6;;;;;;;;;;;15662:13;;15604:79;:::o;17899:87::-;17938:13;17971:7;17964:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17899:87;:::o;18196:81::-;18235:7;18262;;18255:14;;18196:81;:::o;19636:269::-;19729:4;19746:129;19755:12;:10;:12::i;:::-;19769:7;19778:96;19817:15;19778:96;;;;;;;;;;;;;;;;;:11;:25;19790:12;:10;:12::i;:::-;19778:25;;;;;;;;;;;;;;;:34;19804:7;19778:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19746:8;:129::i;:::-;19893:4;19886:11;;19636:269;;;;:::o;18594:167::-;18672:4;18689:42;18699:12;:10;:12::i;:::-;18713:9;18724:6;18689:9;:42::i;:::-;18749:4;18742:11;;18594:167;;;;:::o;19913:110::-;19971:4;19995:11;:20;20007:7;19995:20;;;;;;;;;;;;;;;;;;;;;;;;;19988:27;;19913:110;;;:::o;18769:143::-;18850:7;18877:11;:18;18889:5;18877:18;;;;;;;;;;;;;;;:27;18896:7;18877:27;;;;;;;;;;;;;;;;18870:34;;18769:143;;;;:::o;21308:443::-;15826:12;:10;:12::i;:::-;15816:22;;:6;;;;;;;;;;:22;;;15808:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21400:42:::1;21389:53;;:7;:53;;;;21381:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21501:11;:20;21513:7;21501:20;;;;;;;;;;;;;;;;;;;;;;;;;21500:21;21492:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21586:1;21567:7;:16;21575:7;21567:16;;;;;;;;;;;;;;;;:20;21564:108;;;21623:37;21643:7;:16;21651:7;21643:16;;;;;;;;;;;;;;;;21623:19;:37::i;:::-;21604:7;:16;21612:7;21604:16;;;;;;;;;;;;;;;:56;;;;21564:108;21705:4;21682:11;:20;21694:7;21682:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21720:9;21735:7;21720:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21308:443:::0;:::o;16549:244::-;15826:12;:10;:12::i;:::-;15816:22;;:6;;;;;;;;;;:22;;;15808:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16658:1:::1;16638:22;;:8;:22;;;;16630:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16748:8;16719:38;;16740:6;::::0;::::1;;;;;;;;16719:38;;;;;;;;;;;;16777:8;16768:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16549:244:::0;:::o;28864:94::-;28911:7;28938:12;;28931:19;;28864:94;:::o;21759:478::-;15826:12;:10;:12::i;:::-;15816:22;;:6;;;;;;;;;;:22;;;15808:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21840:11:::1;:20;21852:7;21840:20;;;;;;;;;;;;;;;;;;;;;;;;;21832:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21908:9;21903:327;21927:9;:16;;;;21923:1;:20;21903:327;;;21985:7;21969:23;;:9;21979:1;21969:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;21965:254;;;22028:9;22057:1;22038:9;:16;;;;:20;22028:31;;;;;;;;;;;;;;;;;;;;;;;;;22013:9;22023:1;22013:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22097:1;22078:7;:16;22086:7;22078:16;;;;;;;;;;;;;;;:20;;;;22140:5;22117:11;:20;22129:7;22117:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22164:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22198:5;;21965:254;21945:3;;;;;;;21903:327;;;;21759:478:::0;:::o;18293:83::-;18333:7;18360:8;;18353:15;;18293:83;:::o;62:106::-;115:15;150:10;143:17;;62:106;:::o;22245:337::-;22355:1;22338:19;;:5;:19;;;;22330:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22436:1;22417:21;;:7;:21;;;;22409:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22520:6;22490:11;:18;22502:5;22490:18;;;;;;;;;;;;;;;:27;22509:7;22490:27;;;;;;;;;;;;;;;:36;;;;22558:7;22542:32;;22551:5;22542:32;;;22567:6;22542:32;;;;;;;;;;;;;;;;;;22245:337;;;:::o;22590:1096::-;22705:1;22687:20;;:6;:20;;;;22679:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22789:1;22768:23;;:9;:23;;;;22760:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22859:1;22850:6;:10;22842:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22940:7;:5;:7::i;:::-;22930:17;;:6;:17;;;;:41;;;;;22964:7;:5;:7::i;:::-;22951:20;;:9;:20;;;;22930:41;22927:134;;;23004:12;;22994:6;:22;;22986:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22927:134;23086:11;:19;23098:6;23086:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;23110:11;:22;23122:9;23110:22;;;;;;;;;;;;;;;;;;;;;;;;;23109:23;23086:46;23082:597;;;23149:48;23171:6;23179:9;23190:6;23149:21;:48::i;:::-;23082:597;;;23220:11;:19;23232:6;23220:19;;;;;;;;;;;;;;;;;;;;;;;;;23219:20;:46;;;;;23243:11;:22;23255:9;23243:22;;;;;;;;;;;;;;;;;;;;;;;;;23219:46;23215:464;;;23282:46;23302:6;23310:9;23321:6;23282:19;:46::i;:::-;23215:464;;;23351:11;:19;23363:6;23351:19;;;;;;;;;;;;;;;;;;;;;;;;;23350:20;:47;;;;;23375:11;:22;23387:9;23375:22;;;;;;;;;;;;;;;;;;;;;;;;;23374:23;23350:47;23346:333;;;23414:44;23432:6;23440:9;23451:6;23414:17;:44::i;:::-;23346:333;;;23480:11;:19;23492:6;23480:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;23503:11;:22;23515:9;23503:22;;;;;;;;;;;;;;;;;;;;;;;;;23480:45;23476:203;;;23542:48;23564:6;23572:9;23583:6;23542:21;:48::i;:::-;23476:203;;;23623:44;23641:6;23649:9;23660:6;23623:17;:44::i;:::-;23476:203;23346:333;23215:464;23082:597;22590:1096;;;:::o;4880:192::-;4966:7;4999:1;4994;:6;;5002:12;4986:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5026:9;5042:1;5038;:5;5026:17;;5063:1;5056:8;;;4880:192;;;;;:::o;28027:163::-;28068:7;28089:15;28106;28125:19;:17;:19::i;:::-;28088:56;;;;28162:20;28174:7;28162;:11;;:20;;;;:::i;:::-;28155:27;;;;28027:163;:::o;6278:132::-;6336:7;6363:39;6367:1;6370;6363:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6356:46;;6278:132;;;;:::o;3977:181::-;4035:7;4055:9;4071:1;4067;:5;4055:17;;4096:1;4091;:6;;4083:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4149:1;4142:8;;;3977:181;;;;:::o;26775:468::-;26834:7;26843;26852;26861;26870;26879;26900:23;26925:12;26939:13;26956:39;26968:7;26977;;26986:8;;26956:11;:39::i;:::-;26899:96;;;;;;27006:19;27029:10;:8;:10::i;:::-;27006:33;;27051:15;27068:23;27093:12;27109:46;27121:7;27130:4;27136:5;27143:11;27109;:46::i;:::-;27050:105;;;;;;27174:7;27183:15;27200:4;27206:15;27223:4;27229:5;27166:69;;;;;;;;;;;;;;;;;;;26775:468;;;;;;;:::o;4441:136::-;4499:7;4526:43;4530:1;4533;4526:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4519:50;;4441:136;;;;:::o;25137:632::-;25239:19;25262:10;:8;:10::i;:::-;25239:33;;25284:15;25301:23;25326:12;25340:23;25365:12;25379:13;25396:19;25407:7;25396:10;:19::i;:::-;25283:132;;;;;;;;;;;;25426:13;25443:22;25453:11;25443:5;:9;;:22;;;;:::i;:::-;25426:39;;25494:28;25514:7;25494;:15;25502:6;25494:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25476:7;:15;25484:6;25476:15;;;;;;;;;;;;;;;:46;;;;25551:28;25571:7;25551;:15;25559:6;25551:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25533:7;:15;25541:6;25533:15;;;;;;;;;;;;;;;:46;;;;25611:39;25634:15;25611:7;:18;25619:9;25611:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25590:7;:18;25598:9;25590:18;;;;;;;;;;;;;;;:60;;;;25664:37;25676:4;25682:5;25689:4;25695:5;25664:11;:37::i;:::-;25734:9;25717:44;;25726:6;25717:44;;;25745:15;25717:44;;;;;;;;;;;;;;;;;;25137:632;;;;;;;;;;;:::o;24477:652::-;24577:19;24600:10;:8;:10::i;:::-;24577:33;;24622:15;24639:23;24664:12;24678:23;24703:12;24717:13;24734:19;24745:7;24734:10;:19::i;:::-;24621:132;;;;;;;;;;;;24764:13;24781:22;24791:11;24781:5;:9;;:22;;;;:::i;:::-;24764:39;;24832:28;24852:7;24832;:15;24840:6;24832:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24814:7;:15;24822:6;24814:15;;;;;;;;;;;;;;;:46;;;;24892:39;24915:15;24892:7;:18;24900:9;24892:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24871:7;:18;24879:9;24871:18;;;;;;;;;;;;;;;:60;;;;24963:39;24986:15;24963:7;:18;24971:9;24963:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24942:7;:18;24950:9;24942:18;;;;;;;;;;;;;;;:60;;;;25024:37;25036:4;25042:5;25049:4;25055:5;25024:11;:37::i;:::-;25094:9;25077:44;;25086:6;25077:44;;;25105:15;25077:44;;;;;;;;;;;;;;;;;;24477:652;;;;;;;;;;;:::o;23894:575::-;23992:19;24015:10;:8;:10::i;:::-;23992:33;;24037:15;24054:23;24079:12;24093:23;24118:12;24132:13;24149:19;24160:7;24149:10;:19::i;:::-;24036:132;;;;;;;;;;;;24179:13;24196:22;24206:11;24196:5;:9;;:22;;;;:::i;:::-;24179:39;;24247:28;24267:7;24247;:15;24255:6;24247:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24229:7;:15;24237:6;24229:15;;;;;;;;;;;;;;;:46;;;;24307:39;24330:15;24307:7;:18;24315:9;24307:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24286:7;:18;24294:9;24286:18;;;;;;;;;;;;;;;:60;;;;24364:37;24376:4;24382:5;24389:4;24395:5;24364:11;:37::i;:::-;24434:9;24417:44;;24426:6;24417:44;;;24445:15;24417:44;;;;;;;;;;;;;;;;;;23894:575;;;;;;;;;;;:::o;25777:708::-;25879:19;25902:10;:8;:10::i;:::-;25879:33;;25924:15;25941:23;25966:12;25980:23;26005:12;26019:13;26036:19;26047:7;26036:10;:19::i;:::-;25923:132;;;;;;;;;;;;26066:13;26083:22;26093:11;26083:5;:9;;:22;;;;:::i;:::-;26066:39;;26134:28;26154:7;26134;:15;26142:6;26134:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26116:7;:15;26124:6;26116:15;;;;;;;;;;;;;;;:46;;;;26191:28;26211:7;26191;:15;26199:6;26191:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26173:7;:15;26181:6;26173:15;;;;;;;;;;;;;;;:46;;;;26251:39;26274:15;26251:7;:18;26259:9;26251:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26230:7;:18;26238:9;26230:18;;;;;;;;;;;;;;;:60;;;;26322:39;26345:15;26322:7;:18;26330:9;26322:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26301:7;:18;26309:9;26301:18;;;;;;;;;;;;;;;:60;;;;26380:37;26392:4;26398:5;26405:4;26411:5;26380:11;:37::i;:::-;26450:9;26433:44;;26442:6;26433:44;;;26461:15;26433:44;;;;;;;;;;;;;;;;;;25777:708;;;;;;;;;;;:::o;28198:561::-;28248:7;28257;28277:15;28295:7;;28277:25;;28313:15;28331:7;;28313:25;;28360:9;28355:289;28379:9;:16;;;;28375:1;:20;28355:289;;;28445:7;28421;:21;28429:9;28439:1;28429:12;;;;;;;;;;;;;;;;;;;;;;;;;28421:21;;;;;;;;;;;;;;;;:31;:66;;;;28480:7;28456;:21;28464:9;28474:1;28464:12;;;;;;;;;;;;;;;;;;;;;;;;;28456:21;;;;;;;;;;;;;;;;:31;28421:66;28417:97;;;28497:7;;28506;;28489:25;;;;;;;;;28417:97;28539:34;28551:7;:21;28559:9;28569:1;28559:12;;;;;;;;;;;;;;;;;;;;;;;;;28551:21;;;;;;;;;;;;;;;;28539:7;:11;;:34;;;;:::i;:::-;28529:44;;28598:34;28610:7;:21;28618:9;28628:1;28618:12;;;;;;;;;;;;;;;;;;;;;;;;;28610:21;;;;;;;;;;;;;;;;28598:7;:11;;:34;;;;:::i;:::-;28588:44;;28397:3;;;;;;;28355:289;;;;28668:20;28680:7;;28668;;:11;;:20;;;;:::i;:::-;28658:7;:30;28654:61;;;28698:7;;28707;;28690:25;;;;;;;;28654:61;28734:7;28743;28726:25;;;;;;28198:561;;;:::o;6906:278::-;6992:7;7024:1;7020;:5;7027:12;7012:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7051:9;7067:1;7063;:5;;;;;;7051:17;;7175:1;7168:8;;;6906:278;;;;;:::o;27251:351::-;27344:7;27353;27362;27382:12;27397:28;27421:3;27397:19;27409:6;27397:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;27382:43;;27436:13;27452:29;27477:3;27452:20;27464:7;27452;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;27436:45;;27492:23;27518:28;27540:5;27518:17;27530:4;27518:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;27492:54;;27565:15;27582:4;27588:5;27557:37;;;;;;;;;27251:351;;;;;;;:::o;27610:409::-;27720:7;27729;27738;27758:15;27776:24;27788:11;27776:7;:11;;:24;;;;:::i;:::-;27758:42;;27811:12;27826:21;27835:11;27826:4;:8;;:21;;;;:::i;:::-;27811:36;;27858:13;27874:22;27884:11;27874:5;:9;;:22;;;;:::i;:::-;27858:38;;27907:23;27933:28;27955:5;27933:17;27945:4;27933:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;27907:54;;27980:7;27989:15;28006:4;27972:39;;;;;;;;;;27610:409;;;;;;;;:::o;5331:471::-;5389:7;5639:1;5634;:6;5630:47;;;5664:1;5657:8;;;;5630:47;5689:9;5705:1;5701;:5;5689:17;;5734:1;5729;5725;:5;;;;;;:10;5717:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5793:1;5786:8;;;5331:471;;;;;:::o;26493:274::-;26601:28;26623:5;26601:17;26613:4;26601:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;26591:7;:38;;;;26653:20;26668:4;26653:10;;:14;;:20;;;;:::i;:::-;26640:10;:33;;;;26698:22;26714:5;26698:11;;:15;;:22;;;;:::i;:::-;26684:11;:36;;;;26741:18;26753:5;26741:7;;:11;;:18;;;;:::i;:::-;26731:7;:28;;;;26493:274;;;;:::o

Swarm Source

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