Contract 0x692553DD0511E54001A99c6763d4Fe7aC317B8af

 
Txn Hash
Method
Block
From
To
Value
0x874ca9e86d693c33e8448ae9a255148007994699c9c26bbbc005cbc7b80d5624Approve141115592022-01-31 4:43:37241 days 10 hrs ago0xd132e14714886f8503df18e17fd7dbda10538fda IN  SHIBUSH INU: SHIBUSH Token0 Ether0.0035176 75.60026747
0x23200952acbfaef87bb45a130023a051a6b44f03afdc5882bafc71c6edaec4abApprove141041312022-01-30 1:21:49242 days 13 hrs ago0x9a4d9dd889ce4d5b80e755fc0b157dcd2613b62a IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00488546 104.99823637
0xa05ba148e8fedc685858dfb5dd9303559b5f9cae5b3198a7f00a9dac67cbff08Transfer141001242022-01-29 10:24:15243 days 4 hrs ago0x9a4d9dd889ce4d5b80e755fc0b157dcd2613b62a IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00469502 79.68198562
0xaf2aaed16de276985281cc0e74e1c55cafc13cd585576895af59d977a4fe0010Approve140230272022-01-17 12:27:48255 days 2 hrs ago0xd99e8f9338f10413caabad1a2f8cea538b6f39e9 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00414011 88.97918306
0x7a169dabcd6648e25c93563f29a204f461a5beebcb96d56b57786021f1b83cf8Approve140230032022-01-17 12:23:00255 days 2 hrs ago0xd99e8f9338f10413caabad1a2f8cea538b6f39e9 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00479248 103
0x030614a0ee10d8a2959bbd08832095cbac93cc2b4b5cdd30bd86399f746082c0Transfer139560032022-01-07 3:53:07265 days 11 hrs ago0xb6f865e2b3f9aa595340e76a931e938edcaa6acb IN  SHIBUSH INU: SHIBUSH Token0 Ether0.0121899 206.88207402
0x1e9a5c1d924aebe72c545efe7c884bce143247516d3cfaed6686d5e416353cb5Approve139305592022-01-03 5:10:38269 days 9 hrs ago0x8f8de1630c613c66649481daaff36e373c32f0b0 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00353455 75.96466063
0x97e7230154aab78a12ab777c6a6d6ce5074045b5f67c3c7ad244ae3d6c6e269dApprove139031952021-12-29 23:26:17273 days 15 hrs ago0xee0abadb56faffa5ba30bcbe513549d557da4563 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00875094 188.07510451
0xbc032e29b0f1e9b150847db81e9ca99155c16448f4dfedf3db1950700877114bApprove138323082021-12-19 0:16:11284 days 14 hrs ago0xdf84391670d8f7924fd5963e2ecf2a9c549bfed3 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00268927 57.79784637
0x9835c4daed9c3b75658d3a652176144b3cf9562c3e92a3e4daf6263e0661e9a6Approve138293262021-12-18 13:13:53285 days 1 hr ago0x77b8ca41822b24f05c36f396b0e618af52015fdd IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00257096 55.25517081
0x720dfbb3c0342889679d1fdb94ff89fa04e5b8c0cfade7118dcec61233cd151aApprove137950682021-12-13 5:59:45290 days 9 hrs ago0xbb61db734c1219b16d0b5b2e1e0dbaa36d26c7c2 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00294708 63.33876634
0xd858c95fd30ac67fc628d78fdffaac01e327608d17f51f2c569203896b31df5fApprove137932252021-12-12 22:55:53290 days 16 hrs ago0xbb61db734c1219b16d0b5b2e1e0dbaa36d26c7c2 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00240085 51.59909902
0x93b7ef5be53e6ed1f78431488aa0a0c0db44bfc3d9e60e21bb737eff8e0b6265Transfer137931602021-12-12 22:42:04290 days 16 hrs ago0x62fd0cd02dd60bcbed6ce307cd53654a5c739546 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00350941 59.54827505
0xa811d2dcc91f551c06f3695653c00df5d08fb15622ae87e2a4b9f23eaf1a8971Approve137929202021-12-12 21:52:13290 days 17 hrs ago0x62fd0cd02dd60bcbed6ce307cd53654a5c739546 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00301969 64.89927225
0x2185c1972c99ec3a8eeeac300be61cc62fffe9b22fb81f1f7dc2550426695b92Approve137651572021-12-08 13:52:22295 days 1 hr ago0xb6f865e2b3f9aa595340e76a931e938edcaa6acb IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00489153 105.12869874
0x3e8044a6f4a8011f115a9f59c57a72d1592426e47e6b6e241d251b5a69b6bc66Transfer137650442021-12-08 13:23:01295 days 1 hr ago0x3082adf8987e9091eb31354f53ef6a3c5c34646b IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00299262 50.82060294
0xa29a038fb30164f07dec2fe0f4980117e30975c298fa6e5883fe6482ea738afdApprove137647942021-12-08 12:26:57295 days 2 hrs ago0x997079a0d33c9f901a9648e1759fa52dfae2b85d IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00255424 54.89569903
0x62e26e4472f835a048ae7acd2c8267885bf8de0857ba70979eb0e3fafef51b6dApprove137647162021-12-08 12:09:13295 days 2 hrs ago0xb6f865e2b3f9aa595340e76a931e938edcaa6acb IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00450976 96.92381056
0x46d3a12517f25a3bc069c0c2657e80f1d913fe72e6080540136a8f57a5b6e62aApprove137227282021-12-01 18:53:26301 days 20 hrs ago0x7a3581ab81b946107d960f8a4a3f3be2ed6a8c25 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00936628201.3
0x27e14b05cff1724d6a1b66b2c57be54eb5e90078b9510d26f0c65bce97cdbf61Approve137207182021-12-01 11:12:11302 days 3 hrs ago0x1327dd074102eac7dc8c5ca40353ea5b71b84236 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00424064 91.63620763
0xb0765ab405ff627308d24b12dad39f7cb99ac5b6aab1b49af62dc5d0749eb692Approve137001922021-11-28 4:12:56305 days 10 hrs ago0x684ed113fb91527b315eee36baf9108c1d2b6ebc IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00335797 72.16944029
0x1f34e3ff80df5f5a13d44ba48799aba0a2fe98cb9c679de7154ddb5a73919a48Approve136604732021-11-21 21:11:00311 days 17 hrs ago0xb6f865e2b3f9aa595340e76a931e938edcaa6acb IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00780796 167.80864959
0xf2b86224317f182d632108930b83c0394e7facd42400d8a4b0fea3165763ff4bApprove135677022021-11-07 6:03:32326 days 8 hrs ago0x6759553de689e65cfc849e2da9195a04cf18ab99 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00344275 73.99159496
0xbca15f1035f4e66a430d6644c00330cd7dd84b8d6dc0589b99f6982409e71192Approve135676342021-11-07 5:48:12326 days 9 hrs ago0xc14e6ae4a5e8174823e64b2835f6902ae521f46a IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00327174 70.31632608
0x02cf0b9fc221f184810e81545a3b49b1bd85c684600e538dfc788d8ecafb5272Approve135675012021-11-07 5:18:27326 days 9 hrs ago0x43009a301cb1c6a7bd2995fe2e4bc3516ac6d1d8 IN  SHIBUSH INU: SHIBUSH Token0 Ether0.00425799 91.51266893
[ Download CSV Export 

OVERVIEW

Shibush aims to offer decentralized and normalized sets of sites, games, and applications focusing on the user's simplicity and security.

View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShibushInu

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: UNLICENSED

// Shibush Inu (SHIBUSH)

//CMC and CG application TBA. 

//Marketing paid.

//Limit Buy yes

//Liqudity Burned 30% and locked 

//TG: https://t.me/SHIBUSHINU
//Website: https://shibushInu.com/

pragma solidity ^0.6.12;    

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

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

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

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.s
     *
     * 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);
}

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

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

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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



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

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000 * 10**9 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = 'shibushInu.com';
    string private _symbol = 'SHIBUSH';
    uint8 private _decimals = 18;
    
    uint256 public _maxTxAmount = 10000000 * 10**9 * 10**18;

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

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

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

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

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

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

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

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

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

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

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

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

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

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10**2
        );
    }

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

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

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

    function 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 excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(sender != owner() && recipient != owner())
          require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

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

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

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

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"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"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","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":"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"}]

6de608a9bbb6e3b599f567ffffffff1960065560c0604052600e60808190526d73686962757368496e752e636f6d60901b60a090815262000044916008919062000193565b50604080518082019091526007808252660a6909284aaa6960cb1b6020909201918252620000759160099162000193565b50600a805460ff191660121790556e01ed09bead87c0378d8e6400000000600b55348015620000a357600080fd5b506000620000b06200018f565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654600160006200010b6200018f565b6001600160a01b031681526020810191909152604001600020556200012f6200018f565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6e01ed09bead87c0378d8e64000000006040518082815260200191505060405180910390a36200022f565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001d657805160ff191683800117855562000206565b8280016001018555821562000206579182015b8281111562000206578251825591602001919060010190620001e9565b506200021492915062000218565b5090565b5b8082111562000214576000815560010162000219565b611c1d806200023f6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063cba0e9961161007c578063cba0e996146103cc578063d543dbeb146103f2578063dd62ed3e1461040f578063f2cc0c181461043d578063f2fde38b14610463578063f84354f1146104895761014d565b8063715018a6146103385780637d1db4a5146103405780638da5cb5b1461034857806395d89b411461036c578063a457c2d714610374578063a9059cbb146103a05761014d565b806323b872dd1161011557806323b872dd146102505780632d83811914610286578063313ce567146102a357806339509351146102c15780634549b039146102ed57806370a08231146103125761014d565b8063053ab1821461015257806306fdde0314610171578063095ea7b3146101ee57806313114a9d1461022e57806318160ddd14610248575b600080fd5b61016f6004803603602081101561016857600080fd5b50356104af565b005b610179610587565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b357818101518382015260200161019b565b50505050905090810190601f1680156101e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61021a6004803603604081101561020457600080fd5b506001600160a01b03813516906020013561061d565b604080519115158252519081900360200190f35b61023661063b565b60408051918252519081900360200190f35b610236610641565b61021a6004803603606081101561026657600080fd5b506001600160a01b03813581169160208101359091169060400135610652565b6102366004803603602081101561029c57600080fd5b50356106d9565b6102ab61073b565b6040805160ff9092168252519081900360200190f35b61021a600480360360408110156102d757600080fd5b506001600160a01b038135169060200135610744565b6102366004803603604081101561030357600080fd5b50803590602001351515610792565b6102366004803603602081101561032857600080fd5b50356001600160a01b031661082d565b61016f61088f565b610236610931565b610350610937565b604080516001600160a01b039092168252519081900360200190f35b610179610946565b61021a6004803603604081101561038a57600080fd5b506001600160a01b0381351690602001356109a7565b61021a600480360360408110156103b657600080fd5b506001600160a01b038135169060200135610a0f565b61021a600480360360208110156103e257600080fd5b50356001600160a01b0316610a23565b61016f6004803603602081101561040857600080fd5b5035610a41565b6102366004803603604081101561042557600080fd5b506001600160a01b0381358116916020013516610ac1565b61016f6004803603602081101561045357600080fd5b50356001600160a01b0316610aec565b61016f6004803603602081101561047957600080fd5b50356001600160a01b0316610c72565b61016f6004803603602081101561049f57600080fd5b50356001600160a01b0316610d6a565b60006104b9610f2b565b6001600160a01b03811660009081526004602052604090205490915060ff16156105145760405162461bcd60e51b815260040180806020018281038252602c815260200180611b97602c913960400191505060405180910390fd5b600061051f83610f2f565b505050506001600160a01b0383166000908152600160205260409020549091506105499082610f7b565b6001600160a01b03831660009081526001602052604090205560065461056f9082610f7b565b60065560075461057f9084610fc4565b600755505050565b60088054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106135780601f106105e857610100808354040283529160200191610613565b820191906000526020600020905b8154815290600101906020018083116105f657829003601f168201915b5050505050905090565b600061063161062a610f2b565b848461101e565b5060015b92915050565b60075490565b697b426fab61f00de3639960221b90565b600061065f84848461110a565b6106cf8461066b610f2b565b6106ca85604051806060016040528060288152602001611add602891396001600160a01b038a166000908152600360205260408120906106a9610f2b565b6001600160a01b0316815260208101919091526040016000205491906113b4565b61101e565b5060019392505050565b600060065482111561071c5760405162461bcd60e51b815260040180806020018281038252602a815260200180611a22602a913960400191505060405180910390fd5b600061072661144b565b9050610732838261146e565b9150505b919050565b600a5460ff1690565b6000610631610751610f2b565b846106ca8560036000610762610f2b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610fc4565b6000697b426fab61f00de3639960221b8311156107f6576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161081457600061080684610f2f565b509294506106359350505050565b600061081f84610f2f565b509194506106359350505050565b6001600160a01b03811660009081526004602052604081205460ff161561086d57506001600160a01b038116600090815260026020526040902054610736565b6001600160a01b038216600090815260016020526040902054610635906106d9565b610897610f2b565b6000546001600160a01b039081169116146108e7576040805162461bcd60e51b81526020600482018190526024820152600080516020611b05833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600b5481565b6000546001600160a01b031690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106135780601f106105e857610100808354040283529160200191610613565b60006106316109b4610f2b565b846106ca85604051806060016040528060258152602001611bc360259139600360006109de610f2b565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906113b4565b6000610631610a1c610f2b565b848461110a565b6001600160a01b031660009081526004602052604090205460ff1690565b610a49610f2b565b6000546001600160a01b03908116911614610a99576040805162461bcd60e51b81526020600482018190526024820152600080516020611b05833981519152604482015290519081900360640190fd5b610abb6064610ab5697b426fab61f00de3639960221b846114b0565b9061146e565b600b5550565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610af4610f2b565b6000546001600160a01b03908116911614610b44576040805162461bcd60e51b81526020600482018190526024820152600080516020611b05833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526004602052604090205460ff1615610bb2576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205415610c0c576001600160a01b038116600090815260016020526040902054610bf2906106d9565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b610c7a610f2b565b6000546001600160a01b03908116911614610cca576040805162461bcd60e51b81526020600482018190526024820152600080516020611b05833981519152604482015290519081900360640190fd5b6001600160a01b038116610d0f5760405162461bcd60e51b8152600401808060200182810382526026815260200180611a4c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610d72610f2b565b6000546001600160a01b03908116911614610dc2576040805162461bcd60e51b81526020600482018190526024820152600080516020611b05833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526004602052604090205460ff16610e2f576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600554811015610f2757816001600160a01b031660058281548110610e5357fe5b6000918252602090912001546001600160a01b03161415610f1f57600580546000198101908110610e8057fe5b600091825260209091200154600580546001600160a01b039092169183908110610ea657fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556005805480610ef857fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610f27565b600101610e32565b5050565b3390565b6000806000806000806000610f4388611509565b915091506000610f5161144b565b90506000806000610f638c868661153c565b919e909d50909b509599509397509395505050505050565b6000610fbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113b4565b9392505050565b600082820183811015610fbd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0383166110635760405162461bcd60e51b8152600401808060200182810382526024815260200180611b736024913960400191505060405180910390fd5b6001600160a01b0382166110a85760405162461bcd60e51b8152600401808060200182810382526022815260200180611a726022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661114f5760405162461bcd60e51b8152600401808060200182810382526025815260200180611b4e6025913960400191505060405180910390fd5b6001600160a01b0382166111945760405162461bcd60e51b81526004018080602001828103825260238152602001806119ff6023913960400191505060405180910390fd5b600081116111d35760405162461bcd60e51b8152600401808060200182810382526029815260200180611b256029913960400191505060405180910390fd5b6111db610937565b6001600160a01b0316836001600160a01b03161415801561121557506111ff610937565b6001600160a01b0316826001600160a01b031614155b1561125b57600b5481111561125b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a946028913960400191505060405180910390fd5b6001600160a01b03831660009081526004602052604090205460ff16801561129c57506001600160a01b03821660009081526004602052604090205460ff16155b156112b1576112ac838383611578565b6113af565b6001600160a01b03831660009081526004602052604090205460ff161580156112f257506001600160a01b03821660009081526004602052604090205460ff165b15611302576112ac83838361168f565b6001600160a01b03831660009081526004602052604090205460ff1615801561134457506001600160a01b03821660009081526004602052604090205460ff16155b15611354576112ac838383611735565b6001600160a01b03831660009081526004602052604090205460ff16801561139457506001600160a01b03821660009081526004602052604090205460ff165b156113a4576112ac838383611776565b6113af838383611735565b505050565b600081848411156114435760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114085781810151838201526020016113f0565b50505050905090810190601f1680156114355780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006114586117e6565b9092509050611467828261146e565b9250505090565b6000610fbd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611975565b6000826114bf57506000610635565b828202828482816114cc57fe5b0414610fbd5760405162461bcd60e51b8152600401808060200182810382526021815260200180611abc6021913960400191505060405180910390fd5b60008080611523600261151d86606461146e565b906114b0565b905060006115318583610f7b565b935090915050915091565b600080808061154b87866114b0565b9050600061155987876114b0565b905060006115678383610f7b565b929992985090965090945050505050565b600080600080600061158986610f2f565b6001600160a01b038d16600090815260026020526040902054949950929750909550935091506115b99087610f7b565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546115e89086610f7b565b6001600160a01b03808a1660009081526001602052604080822093909355908916815220546116179085610fc4565b6001600160a01b03881660009081526001602052604090205561163a83826119da565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006116a086610f2f565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506116d09086610f7b565b6001600160a01b03808a16600090815260016020908152604080832094909455918a168152600290915220546117069083610fc4565b6001600160a01b0388166000908152600260209081526040808320939093556001905220546116179085610fc4565b600080600080600061174686610f2f565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506115e89086610f7b565b600080600080600061178786610f2f565b6001600160a01b038d16600090815260026020526040902054949950929750909550935091506117b79087610f7b565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546116d09086610f7b565b6006546000908190697b426fab61f00de3639960221b825b60055481101561192d5782600160006005848154811061181a57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061187f575081600260006005848154811061185857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156118a157600654697b426fab61f00de3639960221b94509450505050611971565b6118e160016000600584815481106118b557fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490610f7b565b925061192360026000600584815481106118f757fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390610f7b565b91506001016117fe565b5060065461194890697b426fab61f00de3639960221b61146e565b82101561196b57600654697b426fab61f00de3639960221b935093505050611971565b90925090505b9091565b600081836119c45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114085781810151838201526020016113f0565b5060008385816119d057fe5b0495945050505050565b6006546119e79083610f7b565b6006556007546119f79082610fc4565b600755505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220459760472d69800278ea35878926930ddc384d0c8c618bd2e175abab2ca55aa364736f6c634300060c0033

Deployed ByteCode Sourcemap

15820:10579:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19049:376;;;;;;;;;;;;;;;;-1:-1:-1;19049:376:0;;:::i;:::-;;16751:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17663:161;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17663:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18774:87;;;:::i;:::-;;;;;;;;;;;;;;;;17028:95;;;:::i;17832:313::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17832:313:0;;;;;;;;;;;;;;;;;:::i;19875:253::-;;;;;;;;;;;;;;;;-1:-1:-1;19875:253:0;;:::i;16937:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18153:218;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18153:218:0;;;;;;;;:::i;19433:434::-;;;;;;;;;;;;;;;;-1:-1:-1;19433:434:0;;;;;;;;;:::i;17131:198::-;;;;;;;;;;;;;;;;-1:-1:-1;17131:198:0;-1:-1:-1;;;;;17131:198:0;;:::i;15262:148::-;;;:::i;16548:55::-;;;:::i;14620:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;14620:79:0;;;;;;;;;;;;;;16842:87;;;:::i;18379:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18379:269:0;;;;;;;;:::i;17337:167::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17337:167:0;;;;;;;;:::i;18656:110::-;;;;;;;;;;;;;;;;-1:-1:-1;18656:110:0;-1:-1:-1;;;;;18656:110:0;;:::i;18879:162::-;;;;;;;;;;;;;;;;-1:-1:-1;18879:162:0;;:::i;17512:143::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17512:143:0;;;;;;;;;;:::i;20136:332::-;;;;;;;;;;;;;;;;-1:-1:-1;20136:332:0;-1:-1:-1;;;;;20136:332:0;;:::i;15565:244::-;;;;;;;;;;;;;;;;-1:-1:-1;15565:244:0;-1:-1:-1;;;;;15565:244:0;;:::i;20476:478::-;;;;;;;;;;;;;;;;-1:-1:-1;20476:478:0;-1:-1:-1;;;;;20476:478:0;;:::i;19049:376::-;19101:14;19118:12;:10;:12::i;:::-;-1:-1:-1;;;;;19150:19:0;;;;;;:11;:19;;;;;;19101:29;;-1:-1:-1;19150:19:0;;19149:20;19141:77;;;;-1:-1:-1;;;19141:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19230:15;19253:19;19264:7;19253:10;:19::i;:::-;-1:-1:-1;;;;;;;;;19301:15:0;;;;;;:7;:15;;;;;;19229:43;;-1:-1:-1;19301:28:0;;19229:43;19301:19;:28::i;:::-;-1:-1:-1;;;;;19283:15:0;;;;;;:7;:15;;;;;:46;19350:7;;:20;;19362:7;19350:11;:20::i;:::-;19340:7;:30;19394:10;;:23;;19409:7;19394:14;:23::i;:::-;19381:10;:36;-1:-1:-1;;;19049:376:0:o;16751:83::-;16821:5;16814:12;;;;;;;;-1:-1:-1;;16814:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16788:13;;16814:12;;16821:5;;16814:12;;16821:5;16814:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16751:83;:::o;17663:161::-;17738:4;17755:39;17764:12;:10;:12::i;:::-;17778:7;17787:6;17755:8;:39::i;:::-;-1:-1:-1;17812:4:0;17663:161;;;;;:::o;18774:87::-;18843:10;;18774:87;:::o;17028:95::-;-1:-1:-1;;;17028:95:0;:::o;17832:313::-;17930:4;17947:36;17957:6;17965:9;17976:6;17947:9;:36::i;:::-;17994:121;18003:6;18011:12;:10;:12::i;:::-;18025:89;18063:6;18025:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18025:19:0;;;;;;:11;:19;;;;;;18045:12;:10;:12::i;:::-;-1:-1:-1;;;;;18025:33:0;;;;;;;;;;;;-1:-1:-1;18025:33:0;;;:89;:37;:89::i;:::-;17994:8;:121::i;:::-;-1:-1:-1;18133:4:0;17832:313;;;;;:::o;19875:253::-;19941:7;19980;;19969;:18;;19961:73;;;;-1:-1:-1;;;19961:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20045:19;20068:10;:8;:10::i;:::-;20045:33;-1:-1:-1;20096:24:0;:7;20045:33;20096:11;:24::i;:::-;20089:31;;;19875:253;;;;:::o;16937:83::-;17003:9;;;;16937:83;:::o;18153:218::-;18241:4;18258:83;18267:12;:10;:12::i;:::-;18281:7;18290:50;18329:10;18290:11;:25;18302:12;:10;:12::i;:::-;-1:-1:-1;;;;;18290:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18290:25:0;;;:34;;;;;;;;;;;:38;:50::i;19433:434::-;19523:7;-1:-1:-1;;;19551:7:0;:18;;19543:62;;;;;-1:-1:-1;;;19543:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19621:17;19616:244;;19656:15;19679:19;19690:7;19679:10;:19::i;:::-;-1:-1:-1;19655:43:0;;-1:-1:-1;19713:14:0;;-1:-1:-1;;;;19713:14:0;19616:244;19762:23;19792:19;19803:7;19792:10;:19::i;:::-;-1:-1:-1;19760:51:0;;-1:-1:-1;19826:22:0;;-1:-1:-1;;;;19826:22:0;17131:198;-1:-1:-1;;;;;17221:20:0;;17197:7;17221:20;;;:11;:20;;;;;;;;17217:49;;;-1:-1:-1;;;;;;17250:16:0;;;;;;:7;:16;;;;;;17243:23;;17217:49;-1:-1:-1;;;;;17304:16:0;;;;;;:7;:16;;;;;;17284:37;;:19;:37::i;15262:148::-;14842:12;:10;:12::i;:::-;14832:6;;-1:-1:-1;;;;;14832:6:0;;;:22;;;14824:67;;;;;-1:-1:-1;;;14824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14824:67:0;;;;;;;;;;;;;;;15369:1:::1;15353:6:::0;;15332:40:::1;::::0;-1:-1:-1;;;;;15353:6:0;;::::1;::::0;15332:40:::1;::::0;15369:1;;15332:40:::1;15400:1;15383:19:::0;;-1:-1:-1;;;;;;15383:19:0::1;::::0;;15262:148::o;16548:55::-;;;;:::o;14620:79::-;14658:7;14685:6;-1:-1:-1;;;;;14685:6:0;14620:79;:::o;16842:87::-;16914:7;16907:14;;;;;;;;-1:-1:-1;;16907:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16881:13;;16907:14;;16914:7;;16907:14;;16914:7;16907:14;;;;;;;;;;;;;;;;;;;;;;;;18379:269;18472:4;18489:129;18498:12;:10;:12::i;:::-;18512:7;18521:96;18560:15;18521:96;;;;;;;;;;;;;;;;;:11;:25;18533:12;:10;:12::i;:::-;-1:-1:-1;;;;;18521:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18521:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;17337:167::-;17415:4;17432:42;17442:12;:10;:12::i;:::-;17456:9;17467:6;17432:9;:42::i;18656:110::-;-1:-1:-1;;;;;18738:20:0;18714:4;18738:20;;;:11;:20;;;;;;;;;18656:110::o;18879:162::-;14842:12;:10;:12::i;:::-;14832:6;;-1:-1:-1;;;;;14832:6:0;;;:22;;;14824:67;;;;;-1:-1:-1;;;14824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14824:67:0;;;;;;;;;;;;;;;18973:60:::1;19017:5;18973:25;-1:-1:-1::0;;;18985:12:0;18973:11:::1;:25::i;:::-;:29:::0;::::1;:60::i;:::-;18958:12;:75:::0;-1:-1:-1;18879:162:0:o;17512:143::-;-1:-1:-1;;;;;17620:18:0;;;17593:7;17620:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17512:143::o;20136:332::-;14842:12;:10;:12::i;:::-;14832:6;;-1:-1:-1;;;;;14832:6:0;;;:22;;;14824:67;;;;;-1:-1:-1;;;14824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14824:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20218:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20217:21;20209:61;;;::::0;;-1:-1:-1;;;20209:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;20284:16:0;::::1;20303:1;20284:16:::0;;;:7:::1;:16;::::0;;;;;:20;20281:108:::1;;-1:-1:-1::0;;;;;20360:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;20340:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;20321:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;20281:108:::1;-1:-1:-1::0;;;;;20399:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;20399:27:0::1;20422:4;20399:27:::0;;::::1;::::0;;;20437:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;20437:23:0::1;::::0;;::::1;::::0;;20136:332::o;15565:244::-;14842:12;:10;:12::i;:::-;14832:6;;-1:-1:-1;;;;;14832:6:0;;;:22;;;14824:67;;;;;-1:-1:-1;;;14824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14824:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15654:22:0;::::1;15646:73;;;;-1:-1:-1::0;;;15646:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15756:6;::::0;;15735:38:::1;::::0;-1:-1:-1;;;;;15735:38:0;;::::1;::::0;15756:6;::::1;::::0;15735:38:::1;::::0;::::1;15784:6;:17:::0;;-1:-1:-1;;;;;;15784:17:0::1;-1:-1:-1::0;;;;;15784:17:0;;;::::1;::::0;;;::::1;::::0;;15565:244::o;20476:478::-;14842:12;:10;:12::i;:::-;14832:6;;-1:-1:-1;;;;;14832:6:0;;;:22;;;14824:67;;;;;-1:-1:-1;;;14824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14824:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20557:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20549:60;;;::::0;;-1:-1:-1;;;20549:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20625:9;20620:327;20644:9;:16:::0;20640:20;::::1;20620:327;;;20702:7;-1:-1:-1::0;;;;;20686:23:0::1;:9;20696:1;20686:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20686:12:0::1;:23;20682:254;;;20745:9;20755:16:::0;;-1:-1:-1;;20755:20:0;;;20745:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;20730:9:::1;:12:::0;;-1:-1:-1;;;;;20745:31:0;;::::1;::::0;20740:1;;20730:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;20730:46:0::1;-1:-1:-1::0;;;;;20730:46:0;;::::1;;::::0;;20795:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;20834:11:::1;:20:::0;;;;:28;;-1:-1:-1;;20834:28:0::1;::::0;;20881:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;20881:15:0;;;;;-1:-1:-1;;;;;;20881:15:0::1;::::0;;;;;20915:5:::1;;20682:254;20662:3;;20620:327;;;;20476:478:::0;:::o;314:106::-;402:10;314:106;:::o;24665:411::-;24724:7;24733;24742;24751;24760;24781:23;24806:12;24822:20;24834:7;24822:11;:20::i;:::-;24780:62;;;;24853:19;24876:10;:8;:10::i;:::-;24853:33;;24898:15;24915:23;24940:12;24956:39;24968:7;24977:4;24983:11;24956;:39::i;:::-;24897:98;;;;-1:-1:-1;24897:98:0;;-1:-1:-1;25046:15:0;;-1:-1:-1;25063:4:0;;-1:-1:-1;24665:411:0;;-1:-1:-1;;;;;;24665:411:0:o;4035:136::-;4093:7;4120:43;4124:1;4127;4120:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4113:50;4035:136;-1:-1:-1;;;4035:136:0:o;3571:181::-;3629:7;3661:5;;;3685:6;;;;3677:46;;;;;-1:-1:-1;;;3677:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20962:337;-1:-1:-1;;;;;21055:19:0;;21047:68;;;;-1:-1:-1;;;21047:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21134:21:0;;21126:68;;;;-1:-1:-1;;;21126:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21207:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21259:32;;;;;;;;;;;;;;;;;20962:337;;;:::o;21307:1088::-;-1:-1:-1;;;;;21404:20:0;;21396:70;;;;-1:-1:-1;;;21396:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21485:23:0;;21477:71;;;;-1:-1:-1;;;21477:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21576:1;21567:6;:10;21559:64;;;;-1:-1:-1;;;21559:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21647:7;:5;:7::i;:::-;-1:-1:-1;;;;;21637:17:0;:6;-1:-1:-1;;;;;21637:17:0;;;:41;;;;;21671:7;:5;:7::i;:::-;-1:-1:-1;;;;;21658:20:0;:9;-1:-1:-1;;;;;21658:20:0;;;21637:41;21634:132;;;21709:12;;21699:6;:22;;21691:75;;;;-1:-1:-1;;;21691:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21795:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;21819:22:0;;;;;;:11;:22;;;;;;;;21818:23;21795:46;21791:597;;;21858:48;21880:6;21888:9;21899:6;21858:21;:48::i;:::-;21791:597;;;-1:-1:-1;;;;;21929:19:0;;;;;;:11;:19;;;;;;;;21928:20;:46;;;;-1:-1:-1;;;;;;21952:22:0;;;;;;:11;:22;;;;;;;;21928:46;21924:464;;;21991:46;22011:6;22019:9;22030:6;21991:19;:46::i;21924:464::-;-1:-1:-1;;;;;22060:19:0;;;;;;:11;:19;;;;;;;;22059:20;:47;;;;-1:-1:-1;;;;;;22084:22:0;;;;;;:11;:22;;;;;;;;22083:23;22059:47;22055:333;;;22123:44;22141:6;22149:9;22160:6;22123:17;:44::i;22055:333::-;-1:-1:-1;;;;;22189:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;22212:22:0;;;;;;:11;:22;;;;;;;;22189:45;22185:203;;;22251:48;22273:6;22281:9;22292:6;22251:21;:48::i;22185:203::-;22332:44;22350:6;22358:9;22369:6;22332:17;:44::i;:::-;21307:1088;;;:::o;4474:192::-;4560:7;4596:12;4588:6;;;;4580:29;;;;-1:-1:-1;;;4580:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4632:5:0;;;4474:192::o;25664:163::-;25705:7;25726:15;25743;25762:19;:17;:19::i;:::-;25725:56;;-1:-1:-1;25725:56:0;-1:-1:-1;25799:20:0;25725:56;;25799:11;:20::i;:::-;25792:27;;;;25664:163;:::o;5872:132::-;5930:7;5957:39;5961:1;5964;5957:39;;;;;;;;;;;;;;;;;:3;:39::i;4925:471::-;4983:7;5228:6;5224:47;;-1:-1:-1;5258:1:0;5251:8;;5224:47;5295:5;;;5299:1;5295;:5;:1;5319:5;;;;;:10;5311:56;;;;-1:-1:-1;;;5311:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25084:230;25144:7;;;25188:23;25209:1;25188:16;:7;25200:3;25188:11;:16::i;:::-;:20;;:23::i;:::-;25173:38;-1:-1:-1;25222:23:0;25248:17;:7;25173:38;25248:11;:17::i;:::-;25222:43;-1:-1:-1;25301:4:0;;-1:-1:-1;;25084:230:0;;;:::o;25322:334::-;25417:7;;;;25473:24;:7;25485:11;25473;:24::i;:::-;25455:42;-1:-1:-1;25508:12:0;25523:21;:4;25532:11;25523:8;:21::i;:::-;25508:36;-1:-1:-1;25555:23:0;25581:17;:7;25508:36;25581:11;:17::i;:::-;25617:7;;;;-1:-1:-1;25643:4:0;;-1:-1:-1;25322:334:0;;-1:-1:-1;;;;;25322:334:0:o;23400:509::-;23503:15;23520:23;23545:12;23559:23;23584:12;23600:19;23611:7;23600:10;:19::i;:::-;-1:-1:-1;;;;;23648:15:0;;;;;;:7;:15;;;;;;23502:117;;-1:-1:-1;23502:117:0;;-1:-1:-1;23502:117:0;;-1:-1:-1;23502:117:0;-1:-1:-1;23502:117:0;-1:-1:-1;23648:28:0;;23668:7;23648:19;:28::i;:::-;-1:-1:-1;;;;;23630:15:0;;;;;;:7;:15;;;;;;;;:46;;;;23705:7;:15;;;;:28;;23725:7;23705:19;:28::i;:::-;-1:-1:-1;;;;;23687:15:0;;;;;;;:7;:15;;;;;;:46;;;;23765:18;;;;;;;:39;;23788:15;23765:22;:39::i;:::-;-1:-1:-1;;;;;23744:18:0;;;;;;:7;:18;;;;;:60;23818:23;23830:4;23836;23818:11;:23::i;:::-;23874:9;-1:-1:-1;;;;;23857:44:0;23866:6;-1:-1:-1;;;;;23857:44:0;;23885:15;23857:44;;;;;;;;;;;;;;;;;;23400:509;;;;;;;;:::o;22863:529::-;22964:15;22981:23;23006:12;23020:23;23045:12;23061:19;23072:7;23061:10;:19::i;:::-;-1:-1:-1;;;;;23109:15:0;;;;;;:7;:15;;;;;;22963:117;;-1:-1:-1;22963:117:0;;-1:-1:-1;22963:117:0;;-1:-1:-1;22963:117:0;-1:-1:-1;22963:117:0;-1:-1:-1;23109:28:0;;22963:117;23109:19;:28::i;:::-;-1:-1:-1;;;;;23091:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;23169:18;;;;;:7;:18;;;;;:39;;23192:15;23169:22;:39::i;:::-;-1:-1:-1;;;;;23148:18:0;;;;;;:7;:18;;;;;;;;:60;;;;23240:7;:18;;;;:39;;23263:15;23240:22;:39::i;22403:452::-;22502:15;22519:23;22544:12;22558:23;22583:12;22599:19;22610:7;22599:10;:19::i;:::-;-1:-1:-1;;;;;22647:15:0;;;;;;:7;:15;;;;;;22501:117;;-1:-1:-1;22501:117:0;;-1:-1:-1;22501:117:0;;-1:-1:-1;22501:117:0;-1:-1:-1;22501:117:0;-1:-1:-1;22647:28:0;;22501:117;22647:19;:28::i;23917:585::-;24020:15;24037:23;24062:12;24076:23;24101:12;24117:19;24128:7;24117:10;:19::i;:::-;-1:-1:-1;;;;;24165:15:0;;;;;;:7;:15;;;;;;24019:117;;-1:-1:-1;24019:117:0;;-1:-1:-1;24019:117:0;;-1:-1:-1;24019:117:0;-1:-1:-1;24019:117:0;-1:-1:-1;24165:28:0;;24185:7;24165:19;:28::i;:::-;-1:-1:-1;;;;;24147:15:0;;;;;;:7;:15;;;;;;;;:46;;;;24222:7;:15;;;;:28;;24242:7;24222:19;:28::i;25835:561::-;25932:7;;25885;;;;-1:-1:-1;;;25885:7:0;25992:289;26016:9;:16;26012:20;;25992:289;;;26082:7;26058;:21;26066:9;26076:1;26066:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26066:12:0;26058:21;;;;;;;;;;;;;:31;;:66;;;26117:7;26093;:21;26101:9;26111:1;26101:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26101:12:0;26093:21;;;;;;;;;;;;;:31;26058:66;26054:97;;;26134:7;;-1:-1:-1;;;26126:25:0;;;;;;;;;26054:97;26176:34;26188:7;:21;26196:9;26206:1;26196:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26196:12:0;26188:21;;;;;;;;;;;;;26176:7;;:11;:34::i;:::-;26166:44;;26235:34;26247:7;:21;26255:9;26265:1;26255:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26255:12:0;26247:21;;;;;;;;;;;;;26235:7;;:11;:34::i;:::-;26225:44;-1:-1:-1;26034:3:0;;25992:289;;;-1:-1:-1;26305:7:0;;:20;;-1:-1:-1;;;26305:11:0;:20::i;:::-;26295:7;:30;26291:61;;;26335:7;;-1:-1:-1;;;26327:25:0;;;;;;;;26291:61;26371:7;;-1:-1:-1;26380:7:0;-1:-1:-1;25835:561:0;;;:::o;6500:278::-;6586:7;6621:12;6614:5;6606:28;;;;-1:-1:-1;;;6606:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6645:9;6661:1;6657;:5;;;;;;;6500:278;-1:-1:-1;;;;;6500:278:0:o;24510:147::-;24588:7;;:17;;24600:4;24588:11;:17::i;:::-;24578:7;:27;24629:10;;:20;;24644:4;24629:14;:20::i;:::-;24616:10;:33;-1:-1:-1;;24510:147:0:o

Swarm Source

ipfs://459760472d69800278ea35878926930ddc384d0c8c618bd2e175abab2ca55aa3
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.