ETH Price: $3,181.65 (-4.69%)
 

Overview

Max Total Supply

1,000,000,000 BLACK

Holders

66

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
BlackToken

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at BscScan.com on 2023-03-29
*/

/**
 *Submitted for verification at BscScan.com on 2021-05-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.2;


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

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

/**
 * @dev Interface of the BEP20 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 public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


    /**
     * @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 BlackToken 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;
    
    string  private _NAME;
    string  private _SYMBOL;
    uint256   private _DECIMALS;
    address public FeeAddress;
   
    uint256 private _MAX = ~uint256(0);
    uint256 private _DECIMALFACTOR;
    uint256 private _GRANULARITY = 100;
    
    uint256 private _tTotal;
    uint256 private _rTotal;
    
    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;
    uint256 private _tCharityTotal;
    
    uint256 public     _TAX_FEE;
    uint256 public    _BURN_FEE;
    uint256 public _CHARITY_FEE;

    // Track original fees to bypass fees for charity account
    uint256 private ORIG_TAX_FEE;
    uint256 private ORIG_BURN_FEE;
    uint256 private ORIG_CHARITY_FEE;

    constructor (string memory _name, string memory _symbol, uint256 _decimals, uint256 _supply, address _FeeAddress,address tokenOwner)  {
        _NAME = _name;
        _SYMBOL = _symbol;
        _DECIMALS = _decimals;
        _DECIMALFACTOR = 10 ** _DECIMALS;
        _tTotal =_supply * _DECIMALFACTOR;
        _rTotal = (_MAX - (_MAX % _tTotal));
        _TAX_FEE = 0 * 100; 
        _BURN_FEE = 0 * 100;
        _CHARITY_FEE =  3 * 100;
        ORIG_TAX_FEE = _TAX_FEE;
        ORIG_BURN_FEE = _BURN_FEE;
        ORIG_CHARITY_FEE = _CHARITY_FEE;
        FeeAddress = _FeeAddress;
        _owner = tokenOwner;
        _rOwned[tokenOwner] = _rTotal;
        emit Transfer(address(0),tokenOwner, _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 uint8(_DECIMALS);
    }

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

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

    function 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, "TOKEN20: 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, "TOKEN20: 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 totalCharity() public view returns (uint256) {
        return _tCharityTotal;
    }

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

    function excludeAccount(address account) external onlyOwner() {
        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 included");
        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 setAsCharityAccount(address account) external onlyOwner() {
        FeeAddress = account;
    }

    
    function updateFee(uint256 _charityFee) onlyOwner() public{
        require(_charityFee < 10);
        _CHARITY_FEE = _charityFee* 100;
        ORIG_CHARITY_FEE = _CHARITY_FEE;
    }
    




    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "TOKEN20: approve from the zero address");
        require(spender != address(0), "TOKEN20: 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), "TOKEN20: transfer from the zero address");
        require(recipient != address(0), "TOKEN20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        // Remove fees for transfers to and from charity account or to excluded account
        bool takeFee = true;
        if (FeeAddress == sender || FeeAddress == recipient || _isExcluded[recipient]) {
            takeFee = false;
        }

        if (!takeFee) removeAllFee();
        
        
        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);
        }

        if (!takeFee) restoreAllFee();
    }

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

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

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

    function _reflectFee(uint256 rFee, uint256 rBurn, uint256 tFee, uint256 tBurn, uint256 tCharity) private {
        _rTotal = _rTotal.sub(rFee).sub(rBurn);
        _tFeeTotal = _tFeeTotal.add(tFee);
        _tBurnTotal = _tBurnTotal.add(tBurn);
        _tCharityTotal = _tCharityTotal.add(tCharity);
        _tTotal = _tTotal.sub(tBurn);
        emit Transfer(address(this), address(0), tBurn);
    }
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tFee, uint256 tBurn, uint256 tCharity) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _CHARITY_FEE);
        uint256 tTransferAmount = getTTransferAmount(tAmount, tFee, tBurn, tCharity);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate);
        uint256 rTransferAmount = _getRTransferAmount(rAmount, rFee, tBurn, tCharity, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tCharity);
    }
    
    function _getTBasics(uint256 tAmount, uint256 taxFee, uint256 burnFee, uint256 charityFee) private view returns (uint256, uint256, uint256) {
        uint256 tFee = ((tAmount.mul(taxFee)).div(_GRANULARITY)).div(100);
        uint256 tBurn = ((tAmount.mul(burnFee)).div(_GRANULARITY)).div(100);
        uint256 tCharity = ((tAmount.mul(charityFee)).div(_GRANULARITY)).div(100);
        return (tFee, tBurn, tCharity);
    }
    
    function getTTransferAmount(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) private pure returns (uint256) {
        return tAmount.sub(tFee).sub(tBurn).sub(tCharity);
    }
    
    function _getRBasics(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        return (rAmount, rFee);
    }
    
    function _getRTransferAmount(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tCharity, uint256 currentRate) private pure returns (uint256) {
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rCharity = tCharity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub(rCharity);
        return rTransferAmount;
    }

    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 _sendToCharity(uint256 tCharity, address sender) private {
        uint256 currentRate = _getRate();
        uint256 rCharity = tCharity.mul(currentRate);
        _rOwned[FeeAddress] = _rOwned[FeeAddress].add(rCharity);
        _tOwned[FeeAddress] = _tOwned[FeeAddress].add(tCharity);
        emit Transfer(sender, FeeAddress, tCharity);
    }

    function removeAllFee() private {
        if(_CHARITY_FEE == 0) return;
        
        ORIG_CHARITY_FEE = _CHARITY_FEE;
        _CHARITY_FEE = 0;
    }
    
    function restoreAllFee() private {
        _CHARITY_FEE = ORIG_CHARITY_FEE;
    }
    
    function _getTaxFee() private view returns(uint256) {
        return _TAX_FEE;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"address","name":"_FeeAddress","type":"address"},{"internalType":"address","name":"tokenOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BURN_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_CHARITY_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"setAsCharityAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCharity","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"},{"inputs":[{"internalType":"uint256","name":"_charityFee","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600019600a556064600c553480156200001c57600080fd5b5060405162002502380380620025028339810160408190526200003f9162000230565b60066200004d878262000360565b5060076200005c868262000360565b5060088490556200006f84600a62000541565b600b81905562000080908462000556565b600d819055600a5462000094919062000570565b600a54620000a3919062000593565b600e81905560006012819055601381905561012c601481905560158290556016829055601755600980546001600160a01b038087166001600160a01b03199283161790925582549185169116811782558082526001602052604080832093909355600d54925190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200013a91815260200190565b60405180910390a3505050505050620005a9565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200017657600080fd5b81516001600160401b03808211156200019357620001936200014e565b604051601f8301601f19908116603f01168101908282118183101715620001be57620001be6200014e565b81604052838152602092508683858801011115620001db57600080fd5b600091505b83821015620001ff5785820183015181830184015290820190620001e0565b600093810190920192909252949350505050565b80516001600160a01b03811681146200022b57600080fd5b919050565b60008060008060008060c087890312156200024a57600080fd5b86516001600160401b03808211156200026257600080fd5b620002708a838b0162000164565b975060208901519150808211156200028757600080fd5b506200029689828a0162000164565b9550506040870151935060608701519250620002b56080880162000213565b9150620002c560a0880162000213565b90509295509295509295565b600181811c90821680620002e657607f821691505b6020821081036200030757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035b57600081815260208120601f850160051c81016020861015620003365750805b601f850160051c820191505b81811015620003575782815560010162000342565b5050505b505050565b81516001600160401b038111156200037c576200037c6200014e565b62000394816200038d8454620002d1565b846200030d565b602080601f831160018114620003cc5760008415620003b35750858301515b600019600386901b1c1916600185901b17855562000357565b600085815260208120601f198616915b82811015620003fd57888601518255948401946001909101908401620003dc565b50858210156200041c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004835781600019048211156200046757620004676200042c565b808516156200047557918102915b93841c939080029062000447565b509250929050565b6000826200049c575060016200053b565b81620004ab575060006200053b565b8160018114620004c45760028114620004cf57620004ef565b60019150506200053b565b60ff841115620004e357620004e36200042c565b50506001821b6200053b565b5060208310610133831016604e8410600b841016171562000514575081810a6200053b565b62000520838362000442565b80600019048211156200053757620005376200042c565b0290505b92915050565b60006200054f83836200048b565b9392505050565b80820281158282048414176200053b576200053b6200042c565b6000826200058e57634e487b7160e01b600052601260045260246000fd5b500690565b818103818111156200053b576200053b6200042c565b611f4980620005b96000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637b7e8bac11610104578063b2bdfa7b116100a2578063dd62ed3e11610071578063dd62ed3e146103c5578063f2cc0c18146103fe578063f2fde38b14610411578063f84354f11461042457600080fd5b8063b2bdfa7b14610375578063b586242814610388578063cba0e99614610391578063d608b3b2146103bd57600080fd5b806395d89b41116100de57806395d89b411461033e578063a457c2d714610346578063a9059cbb14610359578063ae9dd5e01461036c57600080fd5b80637b7e8bac146102ef5780638da5cb5b1461031a5780639012c4a81461032b57600080fd5b8063395093511161017c578063457bdf6c1161014b578063457bdf6c146102b857806370a08231146102cb578063715018a6146102de57806377ef7993146102e657600080fd5b806339509351146102755780633bd5d173146102885780633c9f861d1461029d5780634549b039146102a557600080fd5b806318160ddd116101b857806318160ddd1461023257806323b872dd1461023a5780632d8381191461024d578063313ce5671461026057600080fd5b806306fdde03146101df578063095ea7b3146101fd57806313114a9d14610220575b600080fd5b6101e7610437565b6040516101f49190611c2d565b60405180910390f35b61021061020b366004611c97565b6104c9565b60405190151581526020016101f4565b600f545b6040519081526020016101f4565b600d54610224565b610210610248366004611cc1565b6104e0565b61022461025b366004611cfd565b610549565b60085460405160ff90911681526020016101f4565b610210610283366004611c97565b6105d2565b61029b610296366004611cfd565b610608565b005b601054610224565b6102246102b3366004611d16565b6106f4565b61029b6102c6366004611d4b565b610783565b6102246102d9366004611d4b565b6107cf565b61029b61082e565b61022460135481565b600954610302906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b6000546001600160a01b0316610302565b61029b610339366004611cfd565b6108a2565b6101e76108ef565b610210610354366004611c97565b6108fe565b610210610367366004611c97565b61094d565b61022460145481565b600054610302906001600160a01b031681565b61022460125481565b61021061039f366004611d4b565b6001600160a01b031660009081526004602052604090205460ff1690565b601154610224565b6102246103d3366004611d66565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61029b61040c366004611d4b565b61095a565b61029b61041f366004611d4b565b610aad565b61029b610432366004611d4b565b610b97565b60606006805461044690611d99565b80601f016020809104026020016040519081016040528092919081815260200182805461047290611d99565b80156104bf5780601f10610494576101008083540402835291602001916104bf565b820191906000526020600020905b8154815290600101906020018083116104a257829003601f168201915b5050505050905090565b60006104d6338484610d4d565b5060015b92915050565b60006104ed848484610e75565b61053f843361053a856040518060600160405280602a8152602001611eea602a91396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611170565b610d4d565b5060019392505050565b6000600e548211156105b55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b60006105bf6111aa565b90506105cb83826111cd565b9392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916104d691859061053a908661120f565b3360008181526004602052604090205460ff161561067d5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016105ac565b60006106888361126e565b5050506001600160a01b0386166000908152600160205260409020549394506106b6939250849150506112f2565b6001600160a01b038316600090815260016020526040902055600e546106dc90826112f2565b600e55600f546106ec908461120f565b600f55505050565b6000600d548311156107485760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016105ac565b816107685760006107588461126e565b509496506104da95505050505050565b60006107738461126e565b509396506104da95505050505050565b6000546001600160a01b031633146107ad5760405162461bcd60e51b81526004016105ac90611dd3565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526004602052604081205460ff161561080c57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546104da90610549565b6000546001600160a01b031633146108585760405162461bcd60e51b81526004016105ac90611dd3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108cc5760405162461bcd60e51b81526004016105ac90611dd3565b600a81106108d957600080fd5b6108e4816064611e1e565b601481905560175550565b60606007805461044690611d99565b60006104d6338461053a85604051806060016040528060278152602001611ec3602791393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611170565b60006104d6338484610e75565b6000546001600160a01b031633146109845760405162461bcd60e51b81526004016105ac90611dd3565b6001600160a01b03811660009081526004602052604090205460ff16156109ed5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016105ac565b6001600160a01b03811660009081526001602052604090205415610a47576001600160a01b038116600090815260016020526040902054610a2d90610549565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b6000546001600160a01b03163314610ad75760405162461bcd60e51b81526004016105ac90611dd3565b6001600160a01b038116610b3c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016105ac90611dd3565b6001600160a01b03811660009081526004602052604090205460ff16610c295760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016105ac565b60005b600554811015610d4957816001600160a01b031660058281548110610c5357610c53611e35565b6000918252602090912001546001600160a01b031603610d375760058054610c7d90600190611e4b565b81548110610c8d57610c8d611e35565b600091825260209091200154600580546001600160a01b039092169183908110610cb957610cb9611e35565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556005805480610d1157610d11611e5e565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d4181611e74565b915050610c2c565b5050565b6001600160a01b038316610db25760405162461bcd60e51b815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b6001600160a01b038216610e145760405162461bcd60e51b8152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105ac565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610edb5760405162461bcd60e51b815260206004820152602760248201527f544f4b454e32303a207472616e736665722066726f6d20746865207a65726f206044820152666164647265737360c81b60648201526084016105ac565b6001600160a01b038216610f3f5760405162461bcd60e51b815260206004820152602560248201527f544f4b454e32303a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016105ac565b60008111610fa15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ac565b6009546001906001600160a01b0385811691161480610fcd57506009546001600160a01b038481169116145b80610ff057506001600160a01b03831660009081526004602052604090205460ff165b15610ff9575060005b8061100657611006611334565b6001600160a01b03841660009081526004602052604090205460ff16801561104757506001600160a01b03831660009081526004602052604090205460ff16155b1561105c5761105784848461134d565b61115a565b6001600160a01b03841660009081526004602052604090205460ff1615801561109d57506001600160a01b03831660009081526004602052604090205460ff165b156110ad57611057848484611411565b6001600160a01b03841660009081526004602052604090205460ff161580156110ef57506001600160a01b03831660009081526004602052604090205460ff16155b156110ff57611057848484611463565b6001600160a01b03841660009081526004602052604090205460ff16801561113f57506001600160a01b03831660009081526004602052604090205460ff165b1561114f576110578484846114b4565b61115a848484611463565b8061116a5761116a601754601455565b50505050565b600081848411156111945760405162461bcd60e51b81526004016105ac9190611c2d565b5060006111a18486611e4b565b95945050505050565b60008060006111b7611507565b90925090506111c682826111cd565b9250505090565b60006105cb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611689565b60008061121c8385611e8d565b9050838110156105cb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ac565b60008060008060008060008060008061128f8b6012546013546014546116b7565b92509250925060006112a38c858585611736565b905060006112af6111aa565b90506000806112bf8f888561174e565b9150915060006112d28383898988611778565b929e50919c509a5091985093965091945092505050919395979092949650565b60006105cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611170565b60145460000361134057565b6014805460175560009055565b60006113576111aa565b9050600080600080600080600061136d8961126e565b9650965096509650965096509650600061139089846117b490919063ffffffff16565b905061139f8c8c8c8b8b611836565b6113a9828d6118da565b6113b686828686866119bb565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516113fb91815260200190565b60405180910390a3505050505050505050505050565b600061141b6111aa565b905060008060008060008060006114318961126e565b9650965096509650965096509650600061145489846117b490919063ffffffff16565b905061139f8c8c878b8b611a56565b600061146d6111aa565b905060008060008060008060006114838961126e565b965096509650965096509650965060006114a689846117b490919063ffffffff16565b905061139f8c8c8a8a611ade565b60006114be6111aa565b905060008060008060008060006114d48961126e565b965096509650965096509650965060006114f789846117b490919063ffffffff16565b905061139f8c8c8c8b898c611b52565b600e54600d546000918291825b6005548110156116595782600160006005848154811061153657611536611e35565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806115a1575081600260006005848154811061157a5761157a611e35565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156115b757600e54600d54945094505050509091565b6115fd60016000600584815481106115d1576115d1611e35565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906112f2565b9250611645600260006005848154811061161957611619611e35565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906112f2565b91508061165181611e74565b915050611514565b50600d54600e54611669916111cd565b82101561168057600e54600d549350935050509091565b90939092509050565b600081836116aa5760405162461bcd60e51b81526004016105ac9190611c2d565b5060006111a18486611ea0565b6000806000806116e160646116db600c546116db8b8d6117b490919063ffffffff16565b906111cd565b9050600061170360646116db600c546116db8b8e6117b490919063ffffffff16565b9050600061172560646116db600c546116db8b8f6117b490919063ffffffff16565b929a91995091975095505050505050565b60006111a182611748858189896112f2565b906112f2565b6000808061175c86856117b4565b9050600061176a86866117b4565b919791965090945050505050565b60008061178585846117b4565b9050600061179385856117b4565b905060006117a78261174885818d8d6112f2565b9998505050505050505050565b6000826000036117c6575060006104da565b60006117d28385611e1e565b9050826117df8583611ea0565b146105cb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ac565b6001600160a01b03851660009081526002602052604090205461185990846112f2565b6001600160a01b03861660009081526002602090815260408083209390935560019052205461188890836112f2565b6001600160a01b0380871660009081526001602052604080822093909355908616815220546118b7908261120f565b6001600160a01b0390941660009081526001602052604090209390935550505050565b60006118e46111aa565b905060006118f284836117b4565b6009546001600160a01b031660009081526001602052604090205490915061191a908261120f565b600980546001600160a01b039081166000908152600160209081526040808320959095559254909116815260029091522054611956908561120f565b600980546001600160a01b03908116600090815260026020908152604091829020949094559154915187815291811692908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6119d48461174887600e546112f290919063ffffffff16565b600e55600f546119e4908461120f565b600f556010546119f4908361120f565b601055601154611a04908261120f565b601155600d54611a1490836112f2565b600d5560405182815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6001600160a01b038516600090815260016020526040902054611a7990836112f2565b6001600160a01b03808716600090815260016020908152604080832094909455918716815260029091522054611aaf908461120f565b6001600160a01b0385166000908152600260209081526040808320939093556001905220546118b7908261120f565b6001600160a01b038416600090815260016020526040902054611b0190836112f2565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611b30908261120f565b6001600160a01b03909316600090815260016020526040902092909255505050565b6001600160a01b038616600090815260026020526040902054611b7590856112f2565b6001600160a01b038716600090815260026020908152604080832093909355600190522054611ba490846112f2565b6001600160a01b03808816600090815260016020908152604080832094909455918816815260029091522054611bda908361120f565b6001600160a01b038616600090815260026020908152604080832093909355600190522054611c09908261120f565b6001600160a01b039095166000908152600160205260409020949094555050505050565b600060208083528351808285015260005b81811015611c5a57858101830151858201604001528201611c3e565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611c9257600080fd5b919050565b60008060408385031215611caa57600080fd5b611cb383611c7b565b946020939093013593505050565b600080600060608486031215611cd657600080fd5b611cdf84611c7b565b9250611ced60208501611c7b565b9150604084013590509250925092565b600060208284031215611d0f57600080fd5b5035919050565b60008060408385031215611d2957600080fd5b8235915060208301358015158114611d4057600080fd5b809150509250929050565b600060208284031215611d5d57600080fd5b6105cb82611c7b565b60008060408385031215611d7957600080fd5b611d8283611c7b565b9150611d9060208401611c7b565b90509250929050565b600181811c90821680611dad57607f821691505b602082108103611dcd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104da576104da611e08565b634e487b7160e01b600052603260045260246000fd5b818103818111156104da576104da611e08565b634e487b7160e01b600052603160045260246000fd5b600060018201611e8657611e86611e08565b5060010190565b808201808211156104da576104da611e08565b600082611ebd57634e487b7160e01b600052601260045260246000fd5b50049056fe544f4b454e32303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e32303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e66a18b60b7c9902114017181c609c57dcd40b7a9c5d3f930cfb141854451ff864736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000028ff8d5e5bb7e5c81a5c53db1044e921e83d43c2000000000000000000000000ed6d615e042aa066300ccaa3de74f981ef7aa8d7000000000000000000000000000000000000000000000000000000000000000b426c61636b20546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005424c41434b000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637b7e8bac11610104578063b2bdfa7b116100a2578063dd62ed3e11610071578063dd62ed3e146103c5578063f2cc0c18146103fe578063f2fde38b14610411578063f84354f11461042457600080fd5b8063b2bdfa7b14610375578063b586242814610388578063cba0e99614610391578063d608b3b2146103bd57600080fd5b806395d89b41116100de57806395d89b411461033e578063a457c2d714610346578063a9059cbb14610359578063ae9dd5e01461036c57600080fd5b80637b7e8bac146102ef5780638da5cb5b1461031a5780639012c4a81461032b57600080fd5b8063395093511161017c578063457bdf6c1161014b578063457bdf6c146102b857806370a08231146102cb578063715018a6146102de57806377ef7993146102e657600080fd5b806339509351146102755780633bd5d173146102885780633c9f861d1461029d5780634549b039146102a557600080fd5b806318160ddd116101b857806318160ddd1461023257806323b872dd1461023a5780632d8381191461024d578063313ce5671461026057600080fd5b806306fdde03146101df578063095ea7b3146101fd57806313114a9d14610220575b600080fd5b6101e7610437565b6040516101f49190611c2d565b60405180910390f35b61021061020b366004611c97565b6104c9565b60405190151581526020016101f4565b600f545b6040519081526020016101f4565b600d54610224565b610210610248366004611cc1565b6104e0565b61022461025b366004611cfd565b610549565b60085460405160ff90911681526020016101f4565b610210610283366004611c97565b6105d2565b61029b610296366004611cfd565b610608565b005b601054610224565b6102246102b3366004611d16565b6106f4565b61029b6102c6366004611d4b565b610783565b6102246102d9366004611d4b565b6107cf565b61029b61082e565b61022460135481565b600954610302906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b6000546001600160a01b0316610302565b61029b610339366004611cfd565b6108a2565b6101e76108ef565b610210610354366004611c97565b6108fe565b610210610367366004611c97565b61094d565b61022460145481565b600054610302906001600160a01b031681565b61022460125481565b61021061039f366004611d4b565b6001600160a01b031660009081526004602052604090205460ff1690565b601154610224565b6102246103d3366004611d66565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61029b61040c366004611d4b565b61095a565b61029b61041f366004611d4b565b610aad565b61029b610432366004611d4b565b610b97565b60606006805461044690611d99565b80601f016020809104026020016040519081016040528092919081815260200182805461047290611d99565b80156104bf5780601f10610494576101008083540402835291602001916104bf565b820191906000526020600020905b8154815290600101906020018083116104a257829003601f168201915b5050505050905090565b60006104d6338484610d4d565b5060015b92915050565b60006104ed848484610e75565b61053f843361053a856040518060600160405280602a8152602001611eea602a91396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611170565b610d4d565b5060019392505050565b6000600e548211156105b55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b60006105bf6111aa565b90506105cb83826111cd565b9392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916104d691859061053a908661120f565b3360008181526004602052604090205460ff161561067d5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016105ac565b60006106888361126e565b5050506001600160a01b0386166000908152600160205260409020549394506106b6939250849150506112f2565b6001600160a01b038316600090815260016020526040902055600e546106dc90826112f2565b600e55600f546106ec908461120f565b600f55505050565b6000600d548311156107485760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016105ac565b816107685760006107588461126e565b509496506104da95505050505050565b60006107738461126e565b509396506104da95505050505050565b6000546001600160a01b031633146107ad5760405162461bcd60e51b81526004016105ac90611dd3565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526004602052604081205460ff161561080c57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546104da90610549565b6000546001600160a01b031633146108585760405162461bcd60e51b81526004016105ac90611dd3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108cc5760405162461bcd60e51b81526004016105ac90611dd3565b600a81106108d957600080fd5b6108e4816064611e1e565b601481905560175550565b60606007805461044690611d99565b60006104d6338461053a85604051806060016040528060278152602001611ec3602791393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611170565b60006104d6338484610e75565b6000546001600160a01b031633146109845760405162461bcd60e51b81526004016105ac90611dd3565b6001600160a01b03811660009081526004602052604090205460ff16156109ed5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016105ac565b6001600160a01b03811660009081526001602052604090205415610a47576001600160a01b038116600090815260016020526040902054610a2d90610549565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b6000546001600160a01b03163314610ad75760405162461bcd60e51b81526004016105ac90611dd3565b6001600160a01b038116610b3c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016105ac90611dd3565b6001600160a01b03811660009081526004602052604090205460ff16610c295760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016105ac565b60005b600554811015610d4957816001600160a01b031660058281548110610c5357610c53611e35565b6000918252602090912001546001600160a01b031603610d375760058054610c7d90600190611e4b565b81548110610c8d57610c8d611e35565b600091825260209091200154600580546001600160a01b039092169183908110610cb957610cb9611e35565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556005805480610d1157610d11611e5e565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d4181611e74565b915050610c2c565b5050565b6001600160a01b038316610db25760405162461bcd60e51b815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b6001600160a01b038216610e145760405162461bcd60e51b8152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105ac565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610edb5760405162461bcd60e51b815260206004820152602760248201527f544f4b454e32303a207472616e736665722066726f6d20746865207a65726f206044820152666164647265737360c81b60648201526084016105ac565b6001600160a01b038216610f3f5760405162461bcd60e51b815260206004820152602560248201527f544f4b454e32303a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016105ac565b60008111610fa15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ac565b6009546001906001600160a01b0385811691161480610fcd57506009546001600160a01b038481169116145b80610ff057506001600160a01b03831660009081526004602052604090205460ff165b15610ff9575060005b8061100657611006611334565b6001600160a01b03841660009081526004602052604090205460ff16801561104757506001600160a01b03831660009081526004602052604090205460ff16155b1561105c5761105784848461134d565b61115a565b6001600160a01b03841660009081526004602052604090205460ff1615801561109d57506001600160a01b03831660009081526004602052604090205460ff165b156110ad57611057848484611411565b6001600160a01b03841660009081526004602052604090205460ff161580156110ef57506001600160a01b03831660009081526004602052604090205460ff16155b156110ff57611057848484611463565b6001600160a01b03841660009081526004602052604090205460ff16801561113f57506001600160a01b03831660009081526004602052604090205460ff165b1561114f576110578484846114b4565b61115a848484611463565b8061116a5761116a601754601455565b50505050565b600081848411156111945760405162461bcd60e51b81526004016105ac9190611c2d565b5060006111a18486611e4b565b95945050505050565b60008060006111b7611507565b90925090506111c682826111cd565b9250505090565b60006105cb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611689565b60008061121c8385611e8d565b9050838110156105cb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ac565b60008060008060008060008060008061128f8b6012546013546014546116b7565b92509250925060006112a38c858585611736565b905060006112af6111aa565b90506000806112bf8f888561174e565b9150915060006112d28383898988611778565b929e50919c509a5091985093965091945092505050919395979092949650565b60006105cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611170565b60145460000361134057565b6014805460175560009055565b60006113576111aa565b9050600080600080600080600061136d8961126e565b9650965096509650965096509650600061139089846117b490919063ffffffff16565b905061139f8c8c8c8b8b611836565b6113a9828d6118da565b6113b686828686866119bb565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516113fb91815260200190565b60405180910390a3505050505050505050505050565b600061141b6111aa565b905060008060008060008060006114318961126e565b9650965096509650965096509650600061145489846117b490919063ffffffff16565b905061139f8c8c878b8b611a56565b600061146d6111aa565b905060008060008060008060006114838961126e565b965096509650965096509650965060006114a689846117b490919063ffffffff16565b905061139f8c8c8a8a611ade565b60006114be6111aa565b905060008060008060008060006114d48961126e565b965096509650965096509650965060006114f789846117b490919063ffffffff16565b905061139f8c8c8c8b898c611b52565b600e54600d546000918291825b6005548110156116595782600160006005848154811061153657611536611e35565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806115a1575081600260006005848154811061157a5761157a611e35565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156115b757600e54600d54945094505050509091565b6115fd60016000600584815481106115d1576115d1611e35565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906112f2565b9250611645600260006005848154811061161957611619611e35565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906112f2565b91508061165181611e74565b915050611514565b50600d54600e54611669916111cd565b82101561168057600e54600d549350935050509091565b90939092509050565b600081836116aa5760405162461bcd60e51b81526004016105ac9190611c2d565b5060006111a18486611ea0565b6000806000806116e160646116db600c546116db8b8d6117b490919063ffffffff16565b906111cd565b9050600061170360646116db600c546116db8b8e6117b490919063ffffffff16565b9050600061172560646116db600c546116db8b8f6117b490919063ffffffff16565b929a91995091975095505050505050565b60006111a182611748858189896112f2565b906112f2565b6000808061175c86856117b4565b9050600061176a86866117b4565b919791965090945050505050565b60008061178585846117b4565b9050600061179385856117b4565b905060006117a78261174885818d8d6112f2565b9998505050505050505050565b6000826000036117c6575060006104da565b60006117d28385611e1e565b9050826117df8583611ea0565b146105cb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ac565b6001600160a01b03851660009081526002602052604090205461185990846112f2565b6001600160a01b03861660009081526002602090815260408083209390935560019052205461188890836112f2565b6001600160a01b0380871660009081526001602052604080822093909355908616815220546118b7908261120f565b6001600160a01b0390941660009081526001602052604090209390935550505050565b60006118e46111aa565b905060006118f284836117b4565b6009546001600160a01b031660009081526001602052604090205490915061191a908261120f565b600980546001600160a01b039081166000908152600160209081526040808320959095559254909116815260029091522054611956908561120f565b600980546001600160a01b03908116600090815260026020908152604091829020949094559154915187815291811692908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6119d48461174887600e546112f290919063ffffffff16565b600e55600f546119e4908461120f565b600f556010546119f4908361120f565b601055601154611a04908261120f565b601155600d54611a1490836112f2565b600d5560405182815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6001600160a01b038516600090815260016020526040902054611a7990836112f2565b6001600160a01b03808716600090815260016020908152604080832094909455918716815260029091522054611aaf908461120f565b6001600160a01b0385166000908152600260209081526040808320939093556001905220546118b7908261120f565b6001600160a01b038416600090815260016020526040902054611b0190836112f2565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611b30908261120f565b6001600160a01b03909316600090815260016020526040902092909255505050565b6001600160a01b038616600090815260026020526040902054611b7590856112f2565b6001600160a01b038716600090815260026020908152604080832093909355600190522054611ba490846112f2565b6001600160a01b03808816600090815260016020908152604080832094909455918816815260029091522054611bda908361120f565b6001600160a01b038616600090815260026020908152604080832093909355600190522054611c09908261120f565b6001600160a01b039095166000908152600160205260409020949094555050505050565b600060208083528351808285015260005b81811015611c5a57858101830151858201604001528201611c3e565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611c9257600080fd5b919050565b60008060408385031215611caa57600080fd5b611cb383611c7b565b946020939093013593505050565b600080600060608486031215611cd657600080fd5b611cdf84611c7b565b9250611ced60208501611c7b565b9150604084013590509250925092565b600060208284031215611d0f57600080fd5b5035919050565b60008060408385031215611d2957600080fd5b8235915060208301358015158114611d4057600080fd5b809150509250929050565b600060208284031215611d5d57600080fd5b6105cb82611c7b565b60008060408385031215611d7957600080fd5b611d8283611c7b565b9150611d9060208401611c7b565b90509250929050565b600181811c90821680611dad57607f821691505b602082108103611dcd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104da576104da611e08565b634e487b7160e01b600052603260045260246000fd5b818103818111156104da576104da611e08565b634e487b7160e01b600052603160045260246000fd5b600060018201611e8657611e86611e08565b5060010190565b808201808211156104da576104da611e08565b600082611ebd57634e487b7160e01b600052601260045260246000fd5b50049056fe544f4b454e32303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e32303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e66a18b60b7c9902114017181c609c57dcd40b7a9c5d3f930cfb141854451ff864736f6c63430008120033

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

00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000028ff8d5e5bb7e5c81a5c53db1044e921e83d43c2000000000000000000000000ed6d615e042aa066300ccaa3de74f981ef7aa8d7000000000000000000000000000000000000000000000000000000000000000b426c61636b20546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005424c41434b000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Black Token
Arg [1] : _symbol (string): BLACK
Arg [2] : _decimals (uint256): 18
Arg [3] : _supply (uint256): 1000000000
Arg [4] : _FeeAddress (address): 0x28Ff8d5E5bb7e5C81a5C53Db1044E921E83d43C2
Arg [5] : tokenOwner (address): 0xEd6d615E042Aa066300ccaa3de74F981Ef7aA8D7

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [4] : 00000000000000000000000028ff8d5e5bb7e5c81a5c53db1044e921e83d43c2
Arg [5] : 000000000000000000000000ed6d615e042aa066300ccaa3de74f981ef7aa8d7
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [7] : 426c61636b20546f6b656e000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [9] : 424c41434b000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

16707:15801:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18544:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19463:161;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;19463:161:0;1004:187:1;20584:87:0;20653:10;;20584:87;;;1342:25:1;;;1330:2;1315:18;20584:87:0;1196:177:1;18828:95:0;18908:7;;18828:95;;19632:315;;;;;;:::i;:::-;;:::i;21717:253::-;;;;;;:::i;:::-;;:::i;18730:90::-;18802:9;;18730:90;;2068:4:1;2056:17;;;2038:36;;2026:2;2011:18;18730:90:0;1896:184:1;19955:218:0;;;;;;:::i;:::-;;:::i;20885:378::-;;;;;;:::i;:::-;;:::i;:::-;;20683:88;20752:11;;20683:88;;21271:438;;;;;;:::i;:::-;;:::i;22804:106::-;;;;;;:::i;:::-;;:::i;18931:198::-;;;;;;:::i;:::-;;:::i;16153:148::-;;;:::i;17565:27::-;;;;;;17193:25;;;;;-1:-1:-1;;;;;17193:25:0;;;;;;-1:-1:-1;;;;;2786:32:1;;;2768:51;;2756:2;2741:18;17193:25:0;2622:203:1;15511:79:0;15549:7;15576:6;-1:-1:-1;;;;;15576:6:0;15511:79;;22924:186;;;;;;:::i;:::-;;:::i;18635:87::-;;;:::i;20181:271::-;;;;;;:::i;:::-;;:::i;19137:167::-;;;;;;:::i;:::-;;:::i;17599:27::-;;;;;;15314:21;;;;;-1:-1:-1;;;;;15314:21:0;;;17531:27;;;;;;20460:110;;;;;;:::i;:::-;-1:-1:-1;;;;;20542:20:0;20518:4;20542:20;;;:11;:20;;;;;;;;;20460:110;20783:94;20855:14;;20783:94;;19312:143;;;;;;:::i;:::-;-1:-1:-1;;;;;19420:18:0;;;19393:7;19420:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19312:143;21978:332;;;;;;:::i;:::-;;:::i;16456:244::-;;;;;;:::i;:::-;;:::i;22318:478::-;;;;;;:::i;:::-;;:::i;18544:83::-;18581:13;18614:5;18607:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18544:83;:::o;19463:161::-;19538:4;19555:39;333:10;19578:7;19587:6;19555:8;:39::i;:::-;-1:-1:-1;19612:4:0;19463:161;;;;;:::o;19632:315::-;19730:4;19747:36;19757:6;19765:9;19776:6;19747:9;:36::i;:::-;19794:123;19803:6;333:10;19825:91;19863:6;19825:91;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19825:19:0;;;;;;:11;:19;;;;;;;;333:10;19825:33;;;;;;;;;;:37;:91::i;:::-;19794:8;:123::i;:::-;-1:-1:-1;19935:4:0;19632:315;;;;;:::o;21717:253::-;21783:7;21822;;21811;:18;;21803:73;;;;-1:-1:-1;;;21803:73:0;;3682:2:1;21803:73:0;;;3664:21:1;3721:2;3701:18;;;3694:30;3760:34;3740:18;;;3733:62;-1:-1:-1;;;3811:18:1;;;3804:40;3861:19;;21803:73:0;;;;;;;;;21887:19;21910:10;:8;:10::i;:::-;21887:33;-1:-1:-1;21938:24:0;:7;21887:33;21938:11;:24::i;:::-;21931:31;21717:253;-1:-1:-1;;;21717:253:0:o;19955:218::-;333:10;20043:4;20092:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20092:34:0;;;;;;;;;;20043:4;;20060:83;;20083:7;;20092:50;;20131:10;20092:38;:50::i;20885:378::-;333:10;20937:14;20986:19;;;:11;:19;;;;;;;;20985:20;20977:77;;;;-1:-1:-1;;;20977:77:0;;4093:2:1;20977:77:0;;;4075:21:1;4132:2;4112:18;;;4105:30;4171:34;4151:18;;;4144:62;-1:-1:-1;;;4222:18:1;;;4215:42;4274:19;;20977:77:0;3891:408:1;20977:77:0;21066:15;21091:19;21102:7;21091:10;:19::i;:::-;-1:-1:-1;;;;;;;;21139:15:0;;;;;;:7;:15;;;;;;21065:45;;-1:-1:-1;21139:28:0;;:15;-1:-1:-1;21065:45:0;;-1:-1:-1;;21139:19:0;:28::i;:::-;-1:-1:-1;;;;;21121:15:0;;;;;;:7;:15;;;;;:46;21188:7;;:20;;21200:7;21188:11;:20::i;:::-;21178:7;:30;21232:10;;:23;;21247:7;21232:14;:23::i;:::-;21219:10;:36;-1:-1:-1;;;20885:378:0:o;21271:438::-;21361:7;21400;;21389;:18;;21381:62;;;;-1:-1:-1;;;21381:62:0;;4506:2:1;21381:62:0;;;4488:21:1;4545:2;4525:18;;;4518:30;4584:33;4564:18;;;4557:61;4635:18;;21381:62:0;4304:355:1;21381:62:0;21459:17;21454:248;;21494:15;21519:19;21530:7;21519:10;:19::i;:::-;-1:-1:-1;21493:45:0;;-1:-1:-1;21553:14:0;;-1:-1:-1;;;;;;21553:14:0;21454:248;21602:23;21634:19;21645:7;21634:10;:19::i;:::-;-1:-1:-1;21600:53:0;;-1:-1:-1;21668:22:0;;-1:-1:-1;;;;;;21668:22:0;22804:106;15723:6;;-1:-1:-1;;;;;15723:6:0;333:10;15723:22;15715:67;;;;-1:-1:-1;;;15715:67:0;;;;;;;:::i;:::-;22882:10:::1;:20:::0;;-1:-1:-1;;;;;;22882:20:0::1;-1:-1:-1::0;;;;;22882:20:0;;;::::1;::::0;;;::::1;::::0;;22804:106::o;18931:198::-;-1:-1:-1;;;;;19021:20:0;;18997:7;19021:20;;;:11;:20;;;;;;;;19017:49;;;-1:-1:-1;;;;;;19050:16:0;;;;;:7;:16;;;;;;;18931:198::o;19017:49::-;-1:-1:-1;;;;;19104:16:0;;;;;;:7;:16;;;;;;19084:37;;:19;:37::i;16153:148::-;15723:6;;-1:-1:-1;;;;;15723:6:0;333:10;15723:22;15715:67;;;;-1:-1:-1;;;15715:67:0;;;;;;;:::i;:::-;16260:1:::1;16244:6:::0;;16223:40:::1;::::0;-1:-1:-1;;;;;16244:6:0;;::::1;::::0;16223:40:::1;::::0;16260:1;;16223:40:::1;16291:1;16274:19:::0;;-1:-1:-1;;;;;;16274:19:0::1;::::0;;16153:148::o;22924:186::-;15723:6;;-1:-1:-1;;;;;15723:6:0;333:10;15723:22;15715:67;;;;-1:-1:-1;;;15715:67:0;;;;;;;:::i;:::-;23015:2:::1;23001:11;:16;22993:25;;;::::0;::::1;;23044:16;:11:::0;23057:3:::1;23044:16;:::i;:::-;23029:12;:31:::0;;;23071:16:::1;:31:::0;-1:-1:-1;22924:186:0:o;18635:87::-;18674:13;18707:7;18700:14;;;;;:::i;20181:271::-;20274:4;20291:131;333:10;20314:7;20323:98;20362:15;20323:98;;;;;;;;;;;;;;;;;333:10;20323:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20323:34:0;;;;;;;;;;;;:38;:98::i;19137:167::-;19215:4;19232:42;333:10;19256:9;19267:6;19232:9;:42::i;21978:332::-;15723:6;;-1:-1:-1;;;;;15723:6:0;333:10;15723:22;15715:67;;;;-1:-1:-1;;;15715:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22060:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22059:21;22051:61;;;::::0;-1:-1:-1;;;22051:61:0;;5532:2:1;22051:61:0::1;::::0;::::1;5514:21:1::0;5571:2;5551:18;;;5544:30;5610:29;5590:18;;;5583:57;5657:18;;22051:61:0::1;5330:351:1::0;22051:61:0::1;-1:-1:-1::0;;;;;22126:16:0;::::1;22145:1;22126:16:::0;;;:7:::1;:16;::::0;;;;;:20;22123:108:::1;;-1:-1:-1::0;;;;;22202:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22182:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22163:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22123:108:::1;-1:-1:-1::0;;;;;22241:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22241:27:0::1;22264:4;22241:27:::0;;::::1;::::0;;;22279:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22279:23:0::1;::::0;;::::1;::::0;;21978:332::o;16456:244::-;15723:6;;-1:-1:-1;;;;;15723:6:0;333:10;15723:22;15715:67;;;;-1:-1:-1;;;15715:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16545:22:0;::::1;16537:73;;;::::0;-1:-1:-1;;;16537:73:0;;5888:2:1;16537:73:0::1;::::0;::::1;5870:21:1::0;5927:2;5907:18;;;5900:30;5966:34;5946:18;;;5939:62;-1:-1:-1;;;6017:18:1;;;6010:36;6063:19;;16537:73:0::1;5686:402:1::0;16537:73:0::1;16647:6;::::0;;16626:38:::1;::::0;-1:-1:-1;;;;;16626:38:0;;::::1;::::0;16647:6;::::1;::::0;16626:38:::1;::::0;::::1;16675:6;:17:::0;;-1:-1:-1;;;;;;16675:17:0::1;-1:-1:-1::0;;;;;16675:17:0;;;::::1;::::0;;;::::1;::::0;;16456:244::o;22318:478::-;15723:6;;-1:-1:-1;;;;;15723:6:0;333:10;15723:22;15715:67;;;;-1:-1:-1;;;15715:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22399:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22391:60;;;::::0;-1:-1:-1;;;22391:60:0;;6295:2:1;22391:60:0::1;::::0;::::1;6277:21:1::0;6334:2;6314:18;;;6307:30;6373:29;6353:18;;;6346:57;6420:18;;22391:60:0::1;6093:351:1::0;22391:60:0::1;22467:9;22462:327;22486:9;:16:::0;22482:20;::::1;22462:327;;;22544:7;-1:-1:-1::0;;;;;22528:23:0::1;:9;22538:1;22528:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22528:12:0::1;:23:::0;22524:254:::1;;22587:9;22597:16:::0;;:20:::1;::::0;22616:1:::1;::::0;22597:20:::1;:::i;:::-;22587:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22572:9:::1;:12:::0;;-1:-1:-1;;;;;22587:31:0;;::::1;::::0;22582:1;;22572:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22572:46:0::1;-1:-1:-1::0;;;;;22572:46:0;;::::1;;::::0;;22637:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22676:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22676:28:0::1;::::0;;22723:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22723:15:0;;;;;-1:-1:-1;;;;;;22723:15:0::1;::::0;;;;;22462:327:::1;22318:478:::0;:::o;22524:254::-:1;22504:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22462:327;;;;22318:478:::0;:::o;23130:341::-;-1:-1:-1;;;;;23223:19:0;;23215:70;;;;-1:-1:-1;;;23215:70:0;;7188:2:1;23215:70:0;;;7170:21:1;7227:2;7207:18;;;7200:30;7266:34;7246:18;;;7239:62;-1:-1:-1;;;7317:18:1;;;7310:36;7363:19;;23215:70:0;6986:402:1;23215:70:0;-1:-1:-1;;;;;23304:21:0;;23296:70;;;;-1:-1:-1;;;23296:70:0;;7595:2:1;23296:70:0;;;7577:21:1;7634:2;7614:18;;;7607:30;7673:34;7653:18;;;7646:62;-1:-1:-1;;;7724:18:1;;;7717:34;7768:19;;23296:70:0;7393:400:1;23296:70:0;-1:-1:-1;;;;;23379:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23431:32;;1342:25:1;;;23431:32:0;;1315:18:1;23431:32:0;;;;;;;23130:341;;;:::o;23479:1290::-;-1:-1:-1;;;;;23576:20:0;;23568:72;;;;-1:-1:-1;;;23568:72:0;;8000:2:1;23568:72:0;;;7982:21:1;8039:2;8019:18;;;8012:30;8078:34;8058:18;;;8051:62;-1:-1:-1;;;8129:18:1;;;8122:37;8176:19;;23568:72:0;7798:403:1;23568:72:0;-1:-1:-1;;;;;23659:23:0;;23651:73;;;;-1:-1:-1;;;23651:73:0;;8408:2:1;23651:73:0;;;8390:21:1;8447:2;8427:18;;;8420:30;8486:34;8466:18;;;8459:62;-1:-1:-1;;;8537:18:1;;;8530:35;8582:19;;23651:73:0;8206:401:1;23651:73:0;23752:1;23743:6;:10;23735:64;;;;-1:-1:-1;;;23735:64:0;;8814:2:1;23735:64:0;;;8796:21:1;8853:2;8833:18;;;8826:30;8892:34;8872:18;;;8865:62;-1:-1:-1;;;8943:18:1;;;8936:39;8992:19;;23735:64:0;8612:405:1;23735:64:0;23935:10;;23916:4;;-1:-1:-1;;;;;23935:20:0;;;:10;;:20;;:47;;-1:-1:-1;23959:10:0;;-1:-1:-1;;;;;23959:23:0;;;:10;;:23;23935:47;:73;;;-1:-1:-1;;;;;;23986:22:0;;;;;;:11;:22;;;;;;;;23935:73;23931:121;;;-1:-1:-1;24035:5:0;23931:121;24069:7;24064:28;;24078:14;:12;:14::i;:::-;-1:-1:-1;;;;;24127:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;24151:22:0;;;;;;:11;:22;;;;;;;;24150:23;24127:46;24123:597;;;24190:48;24212:6;24220:9;24231:6;24190:21;:48::i;:::-;24123:597;;;-1:-1:-1;;;;;24261:19:0;;;;;;:11;:19;;;;;;;;24260:20;:46;;;;-1:-1:-1;;;;;;24284:22:0;;;;;;:11;:22;;;;;;;;24260:46;24256:464;;;24323:46;24343:6;24351:9;24362:6;24323:19;:46::i;24256:464::-;-1:-1:-1;;;;;24392:19:0;;;;;;:11;:19;;;;;;;;24391:20;:47;;;;-1:-1:-1;;;;;;24416:22:0;;;;;;:11;:22;;;;;;;;24415:23;24391:47;24387:333;;;24455:44;24473:6;24481:9;24492:6;24455:17;:44::i;24387:333::-;-1:-1:-1;;;;;24521:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;24544:22:0;;;;;;:11;:22;;;;;;;;24521:45;24517:203;;;24583:48;24605:6;24613:9;24624:6;24583:21;:48::i;24517:203::-;24664:44;24682:6;24690:9;24701:6;24664:17;:44::i;:::-;24737:7;24732:29;;24746:15;32379:16;;32364:12;:31;32320:83;24746:15;23557:1212;23479:1290;;;:::o;5056:192::-;5142:7;5178:12;5170:6;;;;5162:29;;;;-1:-1:-1;;;5162:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5202:9:0;5214:5;5218:1;5214;:5;:::i;:::-;5202:17;5056:192;-1:-1:-1;;;;;5056:192:0:o;31044:163::-;31085:7;31106:15;31123;31142:19;:17;:19::i;:::-;31105:56;;-1:-1:-1;31105:56:0;-1:-1:-1;31179:20:0;31105:56;;31179:11;:20::i;:::-;31172:27;;;;31044:163;:::o;6454:132::-;6512:7;6539:39;6543:1;6546;6539:39;;;;;;;;;;;;;;;;;:3;:39::i;4153:181::-;4211:7;;4243:5;4247:1;4243;:5;:::i;:::-;4231:17;;4272:1;4267;:6;;4259:46;;;;-1:-1:-1;;;4259:46:0;;9354:2:1;4259:46:0;;;9336:21:1;9393:2;9373:18;;;9366:30;9432:29;9412:18;;;9405:57;9479:18;;4259:46:0;9152:351:1;29095:652:0;29154:7;29163;29172;29181;29190;29199;29208;29229:12;29243:13;29258:16;29278:55;29290:7;29299:8;;29309:9;;29320:12;;29278:11;:55::i;:::-;29228:105;;;;;;29344:23;29370:50;29389:7;29398:4;29404:5;29411:8;29370:18;:50::i;:::-;29344:76;;29431:19;29454:10;:8;:10::i;:::-;29431:33;;29476:15;29493:12;29509:39;29521:7;29530:4;29536:11;29509;:39::i;:::-;29475:73;;;;29559:23;29585:64;29605:7;29614:4;29620:5;29627:8;29637:11;29585:19;:64::i;:::-;29668:7;;-1:-1:-1;29559:90:0;;-1:-1:-1;29694:4:0;-1:-1:-1;29700:15:0;;-1:-1:-1;29717:4:0;;-1:-1:-1;29723:5:0;;-1:-1:-1;29730:8:0;-1:-1:-1;;;29095:652:0;;;;;;;;;:::o;4617:136::-;4675:7;4702:43;4706:1;4709;4702:43;;;;;;;;;;;;;;;;;:3;:43::i;32150:158::-;32196:12;;32212:1;32196:17;32193:29;;32150:158::o;32193:29::-;32261:12;;;32242:16;:31;-1:-1:-1;32284:16:0;;32150:158::o;26654:606::-;26756:19;26779:10;:8;:10::i;:::-;26756:33;;26801:15;26818:23;26843:12;26857:23;26882:12;26896:13;26911:16;26931:19;26942:7;26931:10;:19::i;:::-;26800:150;;;;;;;;;;;;;;26961:13;26978:22;26988:11;26978:5;:9;;:22;;;;:::i;:::-;26961:39;;27011:80;27038:6;27046:9;27057:7;27066;27075:15;27011:26;:80::i;:::-;27102:32;27117:8;27127:6;27102:14;:32::i;:::-;27145:47;27157:4;27163:5;27170:4;27176:5;27183:8;27145:11;:47::i;:::-;27225:9;-1:-1:-1;;;;;27208:44:0;27217:6;-1:-1:-1;;;;;27208:44:0;;27236:15;27208:44;;;;1342:25:1;;1330:2;1315:18;;1196:177;27208:44:0;;;;;;;;26745:515;;;;;;;;;26654:606;;;:::o;25647:622::-;25747:19;25770:10;:8;:10::i;:::-;25747:33;;25792:15;25809:23;25834:12;25848:23;25873:12;25887:13;25902:16;25922:19;25933:7;25922:10;:19::i;:::-;25791:150;;;;;;;;;;;;;;25952:13;25969:22;25979:11;25969:5;:9;;:22;;;;:::i;:::-;25952:39;;26002:90;26031:6;26039:9;26050:15;26067:7;26076:15;26002:28;:90::i;24777:591::-;24875:19;24898:10;:8;:10::i;:::-;24875:33;;24920:15;24937:23;24962:12;24976:23;25001:12;25015:13;25030:16;25050:19;25061:7;25050:10;:19::i;:::-;24919:150;;;;;;;;;;;;;;25080:13;25097:22;25107:11;25097:5;:9;;:22;;;;:::i;:::-;25080:39;;25130:69;25155:6;25163:9;25174:7;25183:15;25130:24;:69::i;27613:619::-;27715:19;27738:10;:8;:10::i;:::-;27715:33;;27760:15;27777:23;27802:12;27816:23;27841:12;27855:13;27870:16;27890:19;27901:7;27890:10;:19::i;:::-;27759:150;;;;;;;;;;;;;;27920:13;27937:22;27947:11;27937:5;:9;;:22;;;;:::i;:::-;27920:39;;27970:91;27991:6;27999:9;28010:7;28019;28028:15;28045;27970:20;:91::i;31215:561::-;31312:7;;31348;;31265;;;;;31372:289;31396:9;:16;31392:20;;31372:289;;;31462:7;31438;:21;31446:9;31456:1;31446:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31446:12:0;31438:21;;;;;;;;;;;;;:31;;:66;;;31497:7;31473;:21;31481:9;31491:1;31481:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31481:12:0;31473:21;;;;;;;;;;;;;:31;31438:66;31434:97;;;31514:7;;31523;;31506:25;;;;;;;31215:561;;:::o;31434:97::-;31556:34;31568:7;:21;31576:9;31586:1;31576:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31576:12:0;31568:21;;;;;;;;;;;;;31556:7;;:11;:34::i;:::-;31546:44;;31615:34;31627:7;:21;31635:9;31645:1;31635:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31635:12:0;31627:21;;;;;;;;;;;;;31615:7;;:11;:34::i;:::-;31605:44;-1:-1:-1;31414:3:0;;;;:::i;:::-;;;;31372:289;;;-1:-1:-1;31697:7:0;;31685;;:20;;:11;:20::i;:::-;31675:7;:30;31671:61;;;31715:7;;31724;;31707:25;;;;;;31215:561;;:::o;31671:61::-;31751:7;;31760;;-1:-1:-1;31215:561:0;-1:-1:-1;31215:561:0:o;7082:278::-;7168:7;7203:12;7196:5;7188:28;;;;-1:-1:-1;;;7188:28:0;;;;;;;;:::i;:::-;-1:-1:-1;7227:9:0;7239:5;7243:1;7239;:5;:::i;29759:427::-;29872:7;29881;29890;29910:12;29925:50;29971:3;29926:39;29952:12;;29927:19;29939:6;29927:7;:11;;:19;;;;:::i;:::-;29926:25;;:39::i;29925:50::-;29910:65;;29986:13;30002:51;30049:3;30003:40;30030:12;;30004:20;30016:7;30004;:11;;:20;;;;:::i;30002:51::-;29986:67;;30064:16;30083:54;30133:3;30084:43;30114:12;;30085:23;30097:10;30085:7;:11;;:23;;;;:::i;30083:54::-;30156:4;;30162:5;;-1:-1:-1;30156:4:0;;-1:-1:-1;29759:427:0;-1:-1:-1;;;;;;29759:427:0:o;30198:191::-;30312:7;30339:42;30372:8;30339:28;30361:5;30339:28;:7;30351:4;30339:11;:17::i;:::-;:21;;:28::i;30401:254::-;30496:7;;;30543:24;:7;30555:11;30543;:24::i;:::-;30525:42;-1:-1:-1;30578:12:0;30593:21;:4;30602:11;30593:8;:21::i;:::-;30633:7;;;;-1:-1:-1;30401:254:0;;-1:-1:-1;;;;;30401:254:0:o;30667:369::-;30803:7;;30839:22;:5;30849:11;30839:9;:22::i;:::-;30823:38;-1:-1:-1;30872:16:0;30891:25;:8;30904:11;30891:12;:25::i;:::-;30872:44;-1:-1:-1;30927:23:0;30953:42;30872:44;30953:28;30975:5;30953:28;:7;30965:4;30953:11;:17::i;:42::-;30927:68;30667:369;-1:-1:-1;;;;;;;;;30667:369:0:o;5507:471::-;5565:7;5810:1;5815;5810:6;5806:47;;-1:-1:-1;5840:1:0;5833:8;;5806:47;5865:9;5877:5;5881:1;5877;:5;:::i;:::-;5865:17;-1:-1:-1;5910:1:0;5901:5;5905:1;5865:17;5901:5;:::i;:::-;:10;5893:56;;;;-1:-1:-1;;;5893:56:0;;9932:2:1;5893:56:0;;;9914:21:1;9971:2;9951:18;;;9944:30;10010:34;9990:18;;;9983:62;-1:-1:-1;;;10061:18:1;;;10054:31;10102:19;;5893:56:0;9730:397:1;27272:333:0;-1:-1:-1;;;;;27439:15:0;;;;;;:7;:15;;;;;;:28;;27459:7;27439:19;:28::i;:::-;-1:-1:-1;;;;;27421:15:0;;;;;;:7;:15;;;;;;;;:46;;;;27496:7;:15;;;;:28;;27516:7;27496:19;:28::i;:::-;-1:-1:-1;;;;;27478:15:0;;;;;;;:7;:15;;;;;;:46;;;;27556:18;;;;;;;:39;;27579:15;27556:22;:39::i;:::-;-1:-1:-1;;;;;27535:18:0;;;;;;;:7;:18;;;;;:60;;;;-1:-1:-1;;;;27272:333:0:o;31784:358::-;31861:19;31883:10;:8;:10::i;:::-;31861:32;-1:-1:-1;31904:16:0;31923:25;:8;31861:32;31923:12;:25::i;:::-;31989:10;;-1:-1:-1;;;;;31989:10:0;31981:19;;;;:7;:19;;;;;;31904:44;;-1:-1:-1;31981:33:0;;31904:44;31981:23;:33::i;:::-;31967:10;;;-1:-1:-1;;;;;31967:10:0;;;31959:19;;;;:7;:19;;;;;;;;:55;;;;32055:10;;;;;32047:19;;:7;:19;;;;;:33;;32071:8;32047:23;:33::i;:::-;32033:10;;;-1:-1:-1;;;;;32033:10:0;;;32025:19;;;;:7;:19;;;;;;;;;:55;;;;32113:10;;32096:38;;1342:25:1;;;32113:10:0;;;;32096:38;;;;;;1315:18:1;32096:38:0;;;;;;;31850:292;;31784:358;;:::o;28675:406::-;28801:28;28823:5;28801:17;28813:4;28801:7;;:11;;:17;;;;:::i;:28::-;28791:7;:38;28853:10;;:20;;28868:4;28853:14;:20::i;:::-;28840:10;:33;28898:11;;:22;;28914:5;28898:15;:22::i;:::-;28884:11;:36;28948:14;;:28;;28967:8;28948:18;:28::i;:::-;28931:14;:45;28997:7;;:18;;29009:5;28997:11;:18::i;:::-;28987:7;:28;29031:42;;1342:25:1;;;29063:1:0;;29048:4;;29031:42;;1330:2:1;1315:18;29031:42:0;;;;;;;28675:406;;;;;:::o;26281:359::-;-1:-1:-1;;;;;26458:15:0;;;;;;:7;:15;;;;;;:28;;26478:7;26458:19;:28::i;:::-;-1:-1:-1;;;;;26440:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;26518:18;;;;;:7;:18;;;;;:39;;26541:15;26518:22;:39::i;:::-;-1:-1:-1;;;;;26497:18:0;;;;;;:7;:18;;;;;;;;:60;;;;26589:7;:18;;;;:39;;26612:15;26589:22;:39::i;25380:255::-;-1:-1:-1;;;;;25528:15:0;;;;;;:7;:15;;;;;;:28;;25548:7;25528:19;:28::i;:::-;-1:-1:-1;;;;;25510:15:0;;;;;;;:7;:15;;;;;;:46;;;;25588:18;;;;;;;:39;;25611:15;25588:22;:39::i;:::-;-1:-1:-1;;;;;25567:18:0;;;;;;;:7;:18;;;;;:60;;;;-1:-1:-1;;;25380:255:0:o;28244:423::-;-1:-1:-1;;;;;28430:15:0;;;;;;:7;:15;;;;;;:28;;28450:7;28430:19;:28::i;:::-;-1:-1:-1;;;;;28412:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28487:7;:15;;;;:28;;28507:7;28487:19;:28::i;:::-;-1:-1:-1;;;;;28469:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;28547:18;;;;;:7;:18;;;;;:39;;28570:15;28547:22;:39::i;:::-;-1:-1:-1;;;;;28526:18:0;;;;;;:7;:18;;;;;;;;:60;;;;28618:7;:18;;;;:39;;28641:15;28618:22;:39::i;:::-;-1:-1:-1;;;;;28597:18:0;;;;;;;:7;:18;;;;;:60;;;;-1:-1:-1;;;;;28244:423:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1711:180::-;1770:6;1823:2;1811:9;1802:7;1798:23;1794:32;1791:52;;;1839:1;1836;1829:12;1791:52;-1:-1:-1;1862:23:1;;1711:180;-1:-1:-1;1711:180:1:o;2085:341::-;2150:6;2158;2211:2;2199:9;2190:7;2186:23;2182:32;2179:52;;;2227:1;2224;2217:12;2179:52;2263:9;2250:23;2240:33;;2323:2;2312:9;2308:18;2295:32;2370:5;2363:13;2356:21;2349:5;2346:32;2336:60;;2392:1;2389;2382:12;2336:60;2415:5;2405:15;;;2085:341;;;;;:::o;2431:186::-;2490:6;2543:2;2531:9;2522:7;2518:23;2514:32;2511:52;;;2559:1;2556;2549:12;2511:52;2582:29;2601:9;2582:29;:::i;2830:260::-;2898:6;2906;2959:2;2947:9;2938:7;2934:23;2930:32;2927:52;;;2975:1;2972;2965:12;2927:52;2998:29;3017:9;2998:29;:::i;:::-;2988:39;;3046:38;3080:2;3069:9;3065:18;3046:38;:::i;:::-;3036:48;;2830:260;;;;;:::o;3095:380::-;3174:1;3170:12;;;;3217;;;3238:61;;3292:4;3284:6;3280:17;3270:27;;3238:61;3345:2;3337:6;3334:14;3314:18;3311:38;3308:161;;3391:10;3386:3;3382:20;3379:1;3372:31;3426:4;3423:1;3416:15;3454:4;3451:1;3444:15;3308:161;;3095:380;;;:::o;4664:356::-;4866:2;4848:21;;;4885:18;;;4878:30;4944:34;4939:2;4924:18;;4917:62;5011:2;4996:18;;4664:356::o;5025:127::-;5086:10;5081:3;5077:20;5074:1;5067:31;5117:4;5114:1;5107:15;5141:4;5138:1;5131:15;5157:168;5230:9;;;5261;;5278:15;;;5272:22;;5258:37;5248:71;;5299:18;;:::i;6449:127::-;6510:10;6505:3;6501:20;6498:1;6491:31;6541:4;6538:1;6531:15;6565:4;6562:1;6555:15;6581:128;6648:9;;;6669:11;;;6666:37;;;6683:18;;:::i;6714:127::-;6775:10;6770:3;6766:20;6763:1;6756:31;6806:4;6803:1;6796:15;6830:4;6827:1;6820:15;6846:135;6885:3;6906:17;;;6903:43;;6926:18;;:::i;:::-;-1:-1:-1;6973:1:1;6962:13;;6846:135::o;9022:125::-;9087:9;;;9108:10;;;9105:36;;;9121:18;;:::i;9508:217::-;9548:1;9574;9564:132;;9618:10;9613:3;9609:20;9606:1;9599:31;9653:4;9650:1;9643:15;9681:4;9678:1;9671:15;9564:132;-1:-1:-1;9710:9:1;;9508:217::o

Swarm Source

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