Contract 0x1b605deaedc71f1a764e572b1ca68b5060978753

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x540d5f73499139068d21c74e4429634255f033e48ec109b96695bd81aa573ee9Transfer382352512023-01-18 15:24:4713 days 7 hrs ago0x0766f33ee51e895e39e373bc49e25b79ebb427a6 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.002051407334 58.569802553
0x2566c9a77b0ac37b2f0798d2b25c356d25371f5109d732c73ecafaf94f7d7bd3Buy For381916112023-01-17 12:18:4714 days 10 hrs ago0xed87cb2b02a4b5227a908680f01f5a0b71a9c7a0 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.021723129253 47.904648316
0x9074434e76f58c8a317763f6c8e31b5b640dd7d1465f689e6aaf9080ca357271Transfer381900702023-01-17 11:21:3114 days 11 hrs ago0x0766f33ee51e895e39e373bc49e25b79ebb427a6 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.001439595185 41.101932505
0x1eaec71a4cf60dbc6cab5cf5268ce9bf1e80290419c647e2c2966eb9686eeae4Buy For381515002023-01-16 12:50:4315 days 10 hrs ago0x28566e38107e7a3e8fedc9d0e3753ba94e82e50d IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.006948088179 41.55430866
0xebadc322c567da4a70737a4ff37d6ba91d9d147796d054b8f4c08d989dc1334aBuy For380406452023-01-13 20:53:0018 days 2 hrs ago0x10e6024de787f29aa1d46120c6ad4f308d35b3cb IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.018968407748 41.829834537
0x75821bbed20219f04ace5a0d5b5e8c9ee570416f7578d3c947a63c4d8b74a928Transfer380282482023-01-13 13:44:2218 days 9 hrs ago0x0766f33ee51e895e39e373bc49e25b79ebb427a6 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.001922931246 54.901677276
0xc79d5d9842f90b9e238b207f26e9cc42a2d64b72f95a6620a70231768f65bb61Buy For380280642023-01-13 13:38:0218 days 9 hrs ago0xc260adde039e4e328cd7562150f32a4ac34dac98 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.031002636773 68.368161611
0x990606c95230deb533bd16d413088d7be20034b2f384af5b1fe540ef2fad55c8Buy For380257622023-01-13 12:18:5418 days 10 hrs ago0xda3fbc55d3888dd37b7d260a9680e118c2020763 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.028889685302 63.041302001
0xcc033e1c73aac684495cd709157dad672bdd8b71df8c1753be33b7e3eafebf9bBuy For379938262023-01-12 17:51:3819 days 5 hrs ago0x414c3d8ea7622787d1db4333aeada65e09227295 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.007555407667 45.183250911
0x7443da0eb25a0e82ff2f32c866517f3682047a60bdd78328b08e960e1417e11fBuy For379873762023-01-12 14:09:2219 days 8 hrs ago0x0b0d83b818f7ce263293ae3e430c2b52e04c13e0 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.041069017674 90.569313921
0x6a0b0d351e128b92310e0efc34e81706f4bca6bc62e55ea007273fab5211f668Buy For379822272023-01-12 11:12:1119 days 11 hrs ago0x4edea34983e15b38f1553282d6689c54475a0c0b IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.008880450123 53.111151721
0xff0e745ed0fbe8085fac65dcee26adaca6c3ca3f9aadf6857edbbbbd8c8ecc5aTransfer379797982023-01-12 9:48:4119 days 13 hrs ago0xd00aa79b0d4fb5edcd995d0b0a4f3cb3bae1d93d IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.001536850048 43.863631274
0xa2832387969a10960878b7683a967f63dc3992c90ac2c14e62f9fcdd8a3c3a09Buy For376285982023-01-03 16:19:2228 days 6 hrs ago0x28566e38107e7a3e8fedc9d0e3753ba94e82e50d IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.013826234609 80.38274823
0xf7b8a65f087c8c0280cfff57bafb118160abc67e135b60b0ad13fa622bfc19fdBuy For373523262022-12-27 20:35:1435 days 2 hrs ago0xdac6ec33aa138985234fc2a9816f5d64ce982489 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.006094458956 36.446407702
0x7c9980e9d4d0ea6f23edf78503778ea90adced76bd519e7baeca8c529df253d8Buy For373452392022-12-27 16:05:5635 days 6 hrs ago0xed87cb2b02a4b5227a908680f01f5a0b71a9c7a0 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.009070995632 77.596862529
0xac3bfab82772e2f0e7770d88d706a81fc97cb25bcf20cc4ff3a413332f271552Buy For371149682022-12-21 22:38:3541 days 27 mins ago0x28566e38107e7a3e8fedc9d0e3753ba94e82e50d IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.006403324488 37.22754855
0xa4447f3a58060421b2d18c29eea0539accf21284f4006c53f9a20a40ccbd1b4bBuy For370727992022-12-20 21:51:5842 days 1 hr ago0xed87cb2b02a4b5227a908680f01f5a0b71a9c7a0 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.004426633076 37.867159485
0x5f78d9d6b11fec91efe94c5ad1af25a7804707e5f77618148fecd440fc518dbdBuy For370727422022-12-20 21:49:5242 days 1 hr ago0xed87cb2b02a4b5227a908680f01f5a0b71a9c7a0 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.004907330937 41.979237954
0xa436d405825a57338c7bddcb62a1074acb4210d8bde21c1dbbd9a814500168c2Transfer370651792022-12-20 17:11:1142 days 5 hrs ago0x0766f33ee51e895e39e373bc49e25b79ebb427a6 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.002807030993 80.143640073
0xf2415d35dd66a649adf9d3e262a98d0239eb22e757700bb3ab066f0f53464cfcBuy For368731392022-12-15 20:07:1747 days 2 hrs ago0x28566e38107e7a3e8fedc9d0e3753ba94e82e50d IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.007577718396 45.316674721
0x5f8f09a2e9e5d18d5025a2f353e8c93be8a6ea92332c09f19f870bc7436c33a3Buy For368730082022-12-15 20:02:4747 days 3 hrs ago0x28566e38107e7a3e8fedc9d0e3753ba94e82e50d IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.008372870475 48.67466864
0x19fae61da0d36d411e5719227aeb6177ef28ce15b10691f1e85f0667dc5ddea3Buy For367987202022-12-13 23:26:5348 days 23 hrs ago0xd3344abc2755bb0d400e12401fda1e83a10cb279 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.0151146551 34.260698016
0xbad1f50baa37c17707ff4898e55fb8deba57cf06a52affece7cfcbd844773609Transfer367935362022-12-13 20:23:5949 days 2 hrs ago0x9e28329a7f18ef5f402120b11a0c67356041b5c3 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.00311717854 59.788222198
0xc90b9118428b35626359f77637468ff24e190a4dffa4228ad050879e28e9ba8aBuy For367741592022-12-13 8:43:4149 days 14 hrs ago0x48ddf31b646a8d04a02130b957ad71b1d51b6182 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.002540431577 40.259129308
0x90456569227f1e0cb0cf8eb67f5cd5d58b4908e05440c447596e545f6b657334Buy For367741472022-12-13 8:43:1749 days 14 hrs ago0x48ddf31b646a8d04a02130b957ad71b1d51b6182 IN  0x1b605deaedc71f1a764e572b1ca68b50609787530 MATIC0.002554314725 40.479140529
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x2566c9a77b0ac37b2f0798d2b25c356d25371f5109d732c73ecafaf94f7d7bd3381916112023-01-17 12:18:4714 days 10 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xebadc322c567da4a70737a4ff37d6ba91d9d147796d054b8f4c08d989dc1334a380406452023-01-13 20:53:0018 days 2 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xc79d5d9842f90b9e238b207f26e9cc42a2d64b72f95a6620a70231768f65bb61380280642023-01-13 13:38:0218 days 9 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x990606c95230deb533bd16d413088d7be20034b2f384af5b1fe540ef2fad55c8380257622023-01-13 12:18:5418 days 10 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x7443da0eb25a0e82ff2f32c866517f3682047a60bdd78328b08e960e1417e11f379873762023-01-12 14:09:2219 days 8 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x19fae61da0d36d411e5719227aeb6177ef28ce15b10691f1e85f0667dc5ddea3367987202022-12-13 23:26:5348 days 23 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xf1513863f63b1a737861731eb81e8766303263b2669bc4612300a4b151f10e2a367042102022-12-11 15:20:3751 days 7 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xf013e3eb4ecafec161778c7247ac96c78a140fad9b37b06f7ed9b2cb2775e168366729702022-12-10 20:50:2652 days 2 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x28dbc6e885c6e2012a5cc330a3e0b64a6633bac17e5f28c29bb5cfcc37511336366657242022-12-10 16:35:5252 days 6 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x07b4c893008e8d16562bb6ee30f2955436d0c3c8d9938d127a56aabe997319f7366193422022-12-09 13:15:4553 days 9 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xba96d996b5d46ca9cd103a011d006124e850da985630d0cff0c1c5d996156877365867792022-12-08 17:47:5554 days 5 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xfde80388f34e02866df8c962f7318f2bf362ffb9d3ae2d4303eb9dbcc4a9f2e9365743862022-12-08 10:41:0754 days 12 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xd2625d161497cc4033b49c36d090c9f45387deed627d6f5bf0e7503c09b71ca4365521582022-12-07 21:32:0855 days 1 hr ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xf904e807eb79527f70256799ba6d4c850248da5d6bb02997a7c1b28352fbeb7d365150082022-12-06 23:37:3855 days 23 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xe4235c2f4f2c9a327e935d62f92445f95949b42c3a3f611f86bf831f73118d2f365062292022-12-06 18:28:4156 days 4 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x72fa0cffc62eda70cdbffa9f7a04dc5f4c3a0dbd9073ca7fb3cf75af0fbcb13c365010672022-12-06 15:30:3356 days 7 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x1102aafa9d2eecc67718812c64198bfc0a4f0c8c8b5bb184cd76b825019c01f1364975822022-12-06 13:28:1356 days 9 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x9af4cda0543f7afc3888a1848e8b8b6ac3f744116754a829132274868e7332d7363030312022-12-01 17:56:0661 days 5 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x86f93a3d1f9eb99171c8f7b232853d9b37e67fd06981a0644b63095847a09271359746442022-11-23 17:15:5169 days 5 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x98921224ad6978f6fb8fc78cefa21148b8048140ff286e419ea0f88c38cc66b8356785322022-11-16 12:35:2076 days 10 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x4bf86266929c6e3cc59c833505912cfc9dd928b26f9946c75f29b04c79b9ba94355126512022-11-12 10:57:0580 days 12 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x99c192bf2cac5466baa32bf68bff6d50d54832a487fcdb490c649d736726661f355122902022-11-12 10:40:2380 days 12 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x21cfd1ffc96a8f06191e0b01eac1eb0c410dd8ef69eb65291c290b183fdae520353564672022-11-08 13:34:5884 days 9 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0xde06311b0cec7afcb1436583a3aab153a261370b8337f4c3948fce09b4181397352378382022-11-05 16:21:2887 days 6 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
0x49eaabc2ebe7e6a25976c83efe2e27a2666b7c5abb7048af00487d032a6e9bce351161602022-11-02 16:59:1790 days 6 hrs ago 0x1b605deaedc71f1a764e572b1ca68b5060978753  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SMRT16

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-10-20
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;

/**
 * @author Maxim Vasilkov <[email protected]>
 * @title  SMRT16 Token
 * @notice For more info: https://smrt16.com
 * @dev flattened
 */


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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 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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

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

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

/**
 * @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.
 */
abstract 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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 6;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


/**
* @dev This contract creates Personal SMRT16 contracts
*/
contract SMRT16Factory {

  // ref wallet => contract
  mapping(address => address) private contracts;

  // contract => ref wallet
  mapping(address => address) private wallets;

  function _createPersonalContract (address account, address smrt16) internal {
      if (contracts[account] == address(0)) { // we dont overwrite
        SMRT16Personal newContract = new SMRT16Personal(account, smrt16);
        contracts[account] = address(newContract);
        wallets[address(newContract)] = account;
      }
  }

  function getPersonalContractAddress() external view returns (address) {
    return contracts[msg.sender];
  }


  function getPersonalContractAddressOf(address account) external view returns (address) {
    return contracts[account];
  }

  function getWalletOf(address contractAddres) external view returns (address) {
    return wallets[contractAddres];
  }

}

contract SMRT16 is ERC20, SMRT16Factory, Ownable {

    // address of the token contract which is recognized as 'money'
    IERC20 _usd;

    constructor() ERC20("SMRT16", "S16") {
        address usdt = address(0xc2132D05D31c914a87C6611C10748AEb04B58e8F); 
        _usd = IERC20(usdt);
        // premint of 16 millions tokens
        _mint(msg.sender, 16000000 * 10**decimals());
    }
        
    //  Remember all the referrers
    mapping(address => address) private _referrers;

    // Event about a Referral bonus sent successfully
    event Purchased(address indexed account, uint256 indexed amount, address indexed referrer);

    /**
     * @dev Returns the address of the current usd token contract.
     */
    function currency() public view virtual returns (IERC20) {
        return _usd;
    }

    /**
     * @dev Owner can mint    
     */
    function mint(  address account,
                    uint256 amount) public onlyOwner {
        _mint(account, amount);                
    }

    /**
     * @dev function to call to buy S16 Tokens
     *      use Personal SMRT16 contracts to avoid the need to specify the referrer
     *      Price is 1:1    
     */
    function buyFor(address buyer, uint256 amount, address referrer) public {
        _setReferrer(buyer, referrer);
        _payBonuses(buyer, amount);
        _createPersonalContract(buyer, address(this));
        _mint(buyer, amount);  
        emit Purchased(buyer, amount, referrer);              
    }


    /**
     * @dev sets the referrer who will receive the referral bonuses
     * @param _referrer - address must have non zero s16 balance
     **/
    function _setReferrer(address buyer, address _referrer) internal returns (bool) { 
      // let it set but not change
      if(_referrers[buyer]==address(0)) {
        // referrer should be already a one who has non-zero balance
        if(balanceOf(_referrer)>uint(0)) {
            _referrers[buyer] = _referrer;
            return true;
        }
      }
      return false;
    }


    /**
    * @dev The function which does the actual referrals payments 
    * Logic: 1st receives 50%, 2nd - 25%, 3rd - 12.5%, 4th - 6.125%
    * Emits Bonuses event, notifiying about bonuses payed
    **/
    function _payBonuses(address buyer, uint amount) internal {
        // Amount of tokens to be sent for the price
        // Assume 1:1 rate
        // The amount is too small to generate any bonuses (less than 16 Weis)
        if(amount<16) return;

        address r1 = referrerOf(buyer);
        uint r1d8 = _min(amount / 2, balanceOf(r1)/2);  
        require(_usd.transferFrom(buyer, r1, r1d8), "SMRT16: level 1 referral payment failed");
        // fee for the ref payments
        _burn(r1, r1d8/16);

        address r2 = referrerOf(r1);
        uint r2d4 = _min(amount / 4, balanceOf(r2)/4);
        require(_usd.transferFrom(buyer, r2, r2d4), "SMRT16: level 2 referral payment failed");
        // fee for the ref payments
        _burn(r2, r2d4/16);
        
        address r3 = referrerOf(r2);
        uint r3d2 = _min(amount / 8, balanceOf(r3)/8);
        require(_usd.transferFrom(buyer, r3, r3d2), "SMRT16: level 3 referral payment failed");
        // fee for the ref payments
        _burn(r3, r3d2/16);
        
        address r4 = referrerOf(r3);
        uint r4d1 = _min(amount / 16, balanceOf(r4)/16);
        require(_usd.transferFrom(buyer, r4, r4d1), "SMRT16: level 4 referral payment failed");
        // fee for the ref payments
        _burn(r4, r4d1/16);
        
        // the rest is to the owner
        uint rest = amount-r4d1-r3d2-r2d4-r1d8;
        _usd.transferFrom(buyer, owner(), rest);
    }

    /**
     * @dev in the situation of missing referrer
     *  by default the address of owner will be used.
     * @param `account` the address to get referrer of
     **/
    function referrerOf(address account) public view returns (address) {
      if (_referrers[account]==address(0)) {
          // cant have no referrer
          return owner();
      }
      return _referrers[account];
    }

    /**
    * @dev simple routine function, returns minimum between two given uint256 numbers
    */
    function _min(uint256 a, uint256 b) internal pure returns(uint256) {
        if(a>b) return b;
        
        return a;
    }

    /**
    * @dev impossible operation
    */
    function renounceOwnership() public view override onlyOwner {
        revert("SMRT16: Can not renounce Ownership");
    }

    /**
     * @dev transfer the token from address of this contract  
     * to address of the owner 
     */
    function withdrawToken(address _tokenContract, uint256 _amount) public onlyOwner {
        IERC20 tokenContract = IERC20(_tokenContract);

        // needs to execute `approve()` on the token contract to allow itself the transfer
        tokenContract.approve(address(this), _amount);

        tokenContract.transferFrom(address(this), owner(), _amount);
    }


    function setCurrency(address _tokenContract) public onlyOwner {
        _usd = IERC20(_tokenContract); 

    } 

    
}



/**
* @dev the main bone which makes referral program easy 
*/
contract SMRT16Personal {
    // address of the guy who invated you
    address private _referrer;

    // reference to the parent smart contract
    SMRT16 private _smrt16;

    // Event which notifies about new Personal Smart contract created
    event CreatedSMRT16Personal(address indexed addr, address indexed ref);

    /**
    * @dev every participant of the project will have his own smart contract
    * which he will be able to share to his referrals
    * this smart contract does proxy sales of the tokens 
    * and unsure that the referrals structure is right
    */
    constructor(address referrer_, address smrt16_) {
        _referrer = referrer_;
        _smrt16 = SMRT16(smrt16_);
        emit CreatedSMRT16Personal(address(this), referrer_);
    }

  
  /**
  * @dev The function to buy SMRT16 tokens.
  *     As a payment used specified USD Token.
  *     Remember to make approval in advance.
  */
  function buy(uint256 amount) public {
    _smrt16.buyFor(address(msg.sender), amount, _referrer);
  }

    /**
     * @dev Returns the address of the referrer stored in this contract.
     */
    function referrer() public view virtual returns (address) {
        return _referrer;
    }
    
}

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":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"Purchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","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":[{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"}],"name":"buyFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currency","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPersonalContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getPersonalContractAddressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddres","type":"address"}],"name":"getWalletOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"referrerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"setCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600681526020017f534d5254313600000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f5331360000000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620003c1565b508060049080519060200190620000af929190620003c1565b505050620000d2620000c66200017260201b60201c565b6200017a60201b60201c565b600073c2132d05d31c914a87c6611c10748aeb04b58e8f905080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200016b33620001416200024060201b60201c565b600a6200014f9190620005b1565b62f424006200015f9190620006ee565b6200024960201b60201c565b5062000830565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006006905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002b390620004a9565b60405180910390fd5b620002d060008383620003b760201b60201c565b8060026000828254620002e49190620004f9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003979190620004cb565b60405180910390a3620003b360008383620003bc60201b60201c565b5050565b505050565b505050565b828054620003cf9062000766565b90600052602060002090601f016020900481019282620003f357600085556200043f565b82601f106200040e57805160ff19168380011785556200043f565b828001600101855582156200043f579182015b828111156200043e57825182559160200191906001019062000421565b5b5090506200044e919062000452565b5090565b5b808211156200046d57600081600090555060010162000453565b5090565b600062000480601f83620004e8565b91506200048d8262000807565b602082019050919050565b620004a3816200074f565b82525050565b60006020820190508181036000830152620004c48162000471565b9050919050565b6000602082019050620004e2600083018462000498565b92915050565b600082825260208201905092915050565b600062000506826200074f565b915062000513836200074f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200054b576200054a6200079c565b5b828201905092915050565b6000808291508390505b6001851115620005a85780860481111562000580576200057f6200079c565b5b6001851615620005905780820291505b8081029050620005a085620007fa565b945062000560565b94509492505050565b6000620005be826200074f565b9150620005cb8362000759565b9250620005fa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000602565b905092915050565b600082620006145760019050620006e7565b81620006245760009050620006e7565b81600181146200063d576002811462000648576200067e565b6001915050620006e7565b60ff8411156200065d576200065c6200079c565b5b8360020a9150848211156200067757620006766200079c565b5b50620006e7565b5060208310610133831016604e8410600b8410161715620006b85782820a905083811115620006b257620006b16200079c565b5b620006e7565b620006c7848484600162000556565b92509050818404811115620006e157620006e06200079c565b5b81810290505b9392505050565b6000620006fb826200074f565b915062000708836200074f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200074457620007436200079c565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200077f57607f821691505b60208210811415620007965762000795620007cb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61363a80620008406000396000f3fe60806040523480156200001157600080fd5b50600436106200016c5760003560e01c806371fb7f2311620000d5578063a457c2d71162000087578063a457c2d7146200040d578063a9059cbb1462000443578063d21cacdf1462000479578063dd62ed3e14620004af578063e5a6b10f14620004e5578063f2fde38b1462000507576200016c565b806371fb7f2314620003315780637cce81e214620003675780637e8abc1114620003875780638da5cb5b14620003a957806395d89b4114620003cb5780639e281a9814620003ed576200016c565b80632f84c391116200012f5780632f84c3911462000257578063313ce567146200027757806339509351146200029957806340c10f1914620002cf57806370a0823114620002ef578063715018a61462000325576200016c565b806306fdde031462000171578063095ea7b3146200019357806318160ddd14620001c95780631fd497bf14620001eb57806323b872dd1462000221575b600080fd5b6200017b62000527565b6040516200018a919062002777565b60405180910390f35b620001b16004803603810190620001ab919062002287565b620005c1565b604051620001c091906200273d565b60405180910390f35b620001d3620005e8565b604051620001e29190620029dd565b60405180910390f35b620002096004803603810190620002039190620021b2565b620005f2565b60405162000218919062002689565b60405180910390f35b6200023f60048036038101906200023991906200222b565b6200065b565b6040516200024e91906200273d565b60405180910390f35b6200027560048036038101906200026f9190620021b2565b62000690565b005b62000281620006de565b604051620002909190620029fa565b60405180910390f35b620002b76004803603810190620002b1919062002287565b620006e7565b604051620002c691906200273d565b60405180910390f35b620002ed6004803603810190620002e7919062002287565b62000726565b005b6200030d6004803603810190620003079190620021b2565b62000740565b6040516200031c9190620029dd565b60405180910390f35b6200032f62000788565b005b6200034f6004803603810190620003499190620021b2565b620007cf565b6040516200035e919062002689565b60405180910390f35b6200038560048036038101906200037f9190620022ce565b62000838565b005b62000391620008c9565b604051620003a0919062002689565b60405180910390f35b620003b362000930565b604051620003c2919062002689565b60405180910390f35b620003d56200095a565b604051620003e4919062002777565b60405180910390f35b6200040b600480360381019062000405919062002287565b620009f4565b005b6200042b600480360381019062000425919062002287565b62000b3b565b6040516200043a91906200273d565b60405180910390f35b6200046160048036038101906200045b919062002287565b62000bbb565b6040516200047091906200273d565b60405180910390f35b620004976004803603810190620004919190620021b2565b62000be2565b604051620004a6919062002689565b60405180910390f35b620004cd6004803603810190620004c79190620021e4565b62000cf2565b604051620004dc9190620029dd565b60405180910390f35b620004ef62000d79565b604051620004fe91906200275a565b60405180910390f35b6200052560048036038101906200051f9190620021b2565b62000da3565b005b606060038054620005389062002bb8565b80601f0160208091040260200160405190810160405280929190818152602001828054620005669062002bb8565b8015620005b75780601f106200058b57610100808354040283529160200191620005b7565b820191906000526020600020905b8154815290600101906020018083116200059957829003601f168201915b5050505050905090565b600080620005ce62000e2e565b9050620005dd81858562000e36565b600191505092915050565b6000600254905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000806200066862000e2e565b90506200067785828562001009565b620006848585856200109d565b60019150509392505050565b6200069a62001324565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006006905090565b600080620006f462000e2e565b90506200071b81858562000709858962000cf2565b62000715919062002a33565b62000e36565b600191505092915050565b6200073062001324565b6200073c8282620013a9565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6200079262001324565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c690620027df565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6200084483826200150b565b5062000851838362001649565b6200085d833062001cc1565b620008698383620013a9565b8073ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff167f2a5afa5a2d5969eb89e4910a871816cf04409fa055cd559786ad39f71a1aa4fc60405160405180910390a4505050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546200096b9062002bb8565b80601f0160208091040260200160405190810160405280929190818152602001828054620009999062002bb8565b8015620009ea5780601f10620009be57610100808354040283529160200191620009ea565b820191906000526020600020905b815481529060010190602001808311620009cc57829003601f168201915b5050505050905090565b620009fe62001324565b60008290508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b330846040518363ffffffff1660e01b815260040162000a4092919062002710565b602060405180830381600087803b15801562000a5b57600080fd5b505af115801562000a70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a9691906200232a565b508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3062000abe62000930565b856040518463ffffffff1660e01b815260040162000adf93929190620026d3565b602060405180830381600087803b15801562000afa57600080fd5b505af115801562000b0f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b3591906200232a565b50505050565b60008062000b4862000e2e565b9050600062000b58828662000cf2565b90508381101562000ba0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b979062002999565b60405180910390fd5b62000baf828686840362000e36565b60019250505092915050565b60008062000bc862000e2e565b905062000bd78185856200109d565b600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141562000c8a5762000c8262000930565b905062000ced565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000dad62001324565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000e20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e179062002801565b60405180910390fd5b62000e2b8162001e97565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea09062002933565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f139062002823565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000ffc9190620029dd565b60405180910390a3505050565b600062001017848462000cf2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811462001097578181101562001087576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200107e9062002867565b60405180910390fd5b62001096848484840362000e36565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562001110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620011079062002911565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562001183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200117a906200279b565b60405180910390fd5b6200119083838362001f5d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562001219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012109062002889565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620013099190620029dd565b60405180910390a36200131e84848462001f62565b50505050565b6200132e62000e2e565b73ffffffffffffffffffffffffffffffffffffffff166200134e62000930565b73ffffffffffffffffffffffffffffffffffffffff1614620013a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200139e90620028cd565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200141c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200141390620029bb565b60405180910390fd5b6200142a6000838362001f5d565b80600260008282546200143e919062002a33565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620014f19190620029dd565b60405180910390a3620015076000838362001f62565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff16600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156200163e576000620015ae8362000740565b11156200163d5781600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905062001643565b5b600090505b92915050565b6010811015620016595762001cbd565b6000620016668362000be2565b905060006200169c6002846200167d919062002a90565b60026200168a8562000740565b62001696919062002a90565b62001f67565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8584846040518463ffffffff1660e01b8152600401620016ff93929190620026d3565b602060405180830381600087803b1580156200171a57600080fd5b505af11580156200172f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200175591906200232a565b62001797576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200178e9062002845565b60405180910390fd5b620017b182601083620017ab919062002a90565b62001f85565b6000620017be8362000be2565b90506000620017f4600486620017d5919062002a90565b6004620017e28562000740565b620017ee919062002a90565b62001f67565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8784846040518463ffffffff1660e01b81526004016200185793929190620026d3565b602060405180830381600087803b1580156200187257600080fd5b505af115801562001887573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018ad91906200232a565b620018ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018e69062002955565b60405180910390fd5b620019098260108362001903919062002a90565b62001f85565b6000620019168362000be2565b905060006200194c6008886200192d919062002a90565b60086200193a8562000740565b62001946919062002a90565b62001f67565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8984846040518463ffffffff1660e01b8152600401620019af93929190620026d3565b602060405180830381600087803b158015620019ca57600080fd5b505af1158015620019df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a0591906200232a565b62001a47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001a3e90620028ab565b60405180910390fd5b62001a618260108362001a5b919062002a90565b62001f85565b600062001a6e8362000be2565b9050600062001aa460108a62001a85919062002a90565b601062001a928562000740565b62001a9e919062002a90565b62001f67565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8b84846040518463ffffffff1660e01b815260040162001b0793929190620026d3565b602060405180830381600087803b15801562001b2257600080fd5b505af115801562001b37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b5d91906200232a565b62001b9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001b969062002977565b60405180910390fd5b62001bb98260108362001bb3919062002a90565b62001f85565b6000878685848d62001bcc919062002ac8565b62001bd8919062002ac8565b62001be4919062002ac8565b62001bf0919062002ac8565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8c62001c3b62000930565b846040518463ffffffff1660e01b815260040162001c5c93929190620026d3565b602060405180830381600087803b15801562001c7757600080fd5b505af115801562001c8c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb291906200232a565b505050505050505050505b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141562001e93576000828260405162001d68906200215f565b62001d75929190620026a6565b604051809103906000f08015801562001d92573d6000803e3d6000fd5b50905080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b60008183111562001f7b5781905062001f7f565b8290505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562001ff8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001fef90620028ef565b60405180910390fd5b620020068260008362001f5d565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156200208f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200208690620027bd565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620021449190620029dd565b60405180910390a36200215a8360008462001f62565b505050565b61045880620031ad83390190565b6000813590506200217e816200315e565b92915050565b600081519050620021958162003178565b92915050565b600081359050620021ac8162003192565b92915050565b600060208284031215620021cb57620021ca62002c7b565b5b6000620021db848285016200216d565b91505092915050565b60008060408385031215620021fe57620021fd62002c7b565b5b60006200220e858286016200216d565b925050602062002221858286016200216d565b9150509250929050565b60008060006060848603121562002247576200224662002c7b565b5b600062002257868287016200216d565b93505060206200226a868287016200216d565b92505060406200227d868287016200219b565b9150509250925092565b60008060408385031215620022a157620022a062002c7b565b5b6000620022b1858286016200216d565b9250506020620022c4858286016200219b565b9150509250929050565b600080600060608486031215620022ea57620022e962002c7b565b5b6000620022fa868287016200216d565b93505060206200230d868287016200219b565b925050604062002320868287016200216d565b9150509250925092565b60006020828403121562002343576200234262002c7b565b5b6000620023538482850162002184565b91505092915050565b620023678162002b03565b82525050565b620023788162002b17565b82525050565b620023898162002b5a565b82525050565b60006200239c8262002a17565b620023a8818562002a22565b9350620023ba81856020860162002b82565b620023c58162002c80565b840191505092915050565b6000620023df60238362002a22565b9150620023ec8262002c91565b604082019050919050565b60006200240660228362002a22565b9150620024138262002ce0565b604082019050919050565b60006200242d60228362002a22565b91506200243a8262002d2f565b604082019050919050565b60006200245460268362002a22565b9150620024618262002d7e565b604082019050919050565b60006200247b60228362002a22565b9150620024888262002dcd565b604082019050919050565b6000620024a260278362002a22565b9150620024af8262002e1c565b604082019050919050565b6000620024c9601d8362002a22565b9150620024d68262002e6b565b602082019050919050565b6000620024f060268362002a22565b9150620024fd8262002e94565b604082019050919050565b60006200251760278362002a22565b9150620025248262002ee3565b604082019050919050565b60006200253e60208362002a22565b91506200254b8262002f32565b602082019050919050565b60006200256560218362002a22565b9150620025728262002f5b565b604082019050919050565b60006200258c60258362002a22565b9150620025998262002faa565b604082019050919050565b6000620025b360248362002a22565b9150620025c08262002ff9565b604082019050919050565b6000620025da60278362002a22565b9150620025e78262003048565b604082019050919050565b60006200260160278362002a22565b91506200260e8262003097565b604082019050919050565b60006200262860258362002a22565b91506200263582620030e6565b604082019050919050565b60006200264f601f8362002a22565b91506200265c8262003135565b602082019050919050565b620026728162002b43565b82525050565b620026838162002b4d565b82525050565b6000602082019050620026a060008301846200235c565b92915050565b6000604082019050620026bd60008301856200235c565b620026cc60208301846200235c565b9392505050565b6000606082019050620026ea60008301866200235c565b620026f960208301856200235c565b62002708604083018462002667565b949350505050565b60006040820190506200272760008301856200235c565b62002736602083018462002667565b9392505050565b60006020820190506200275460008301846200236d565b92915050565b60006020820190506200277160008301846200237e565b92915050565b600060208201905081810360008301526200279381846200238f565b905092915050565b60006020820190508181036000830152620027b681620023d0565b9050919050565b60006020820190508181036000830152620027d881620023f7565b9050919050565b60006020820190508181036000830152620027fa816200241e565b9050919050565b600060208201905081810360008301526200281c8162002445565b9050919050565b600060208201905081810360008301526200283e816200246c565b9050919050565b60006020820190508181036000830152620028608162002493565b9050919050565b600060208201905081810360008301526200288281620024ba565b9050919050565b60006020820190508181036000830152620028a481620024e1565b9050919050565b60006020820190508181036000830152620028c68162002508565b9050919050565b60006020820190508181036000830152620028e8816200252f565b9050919050565b600060208201905081810360008301526200290a8162002556565b9050919050565b600060208201905081810360008301526200292c816200257d565b9050919050565b600060208201905081810360008301526200294e81620025a4565b9050919050565b600060208201905081810360008301526200297081620025cb565b9050919050565b600060208201905081810360008301526200299281620025f2565b9050919050565b60006020820190508181036000830152620029b48162002619565b9050919050565b60006020820190508181036000830152620029d68162002640565b9050919050565b6000602082019050620029f4600083018462002667565b92915050565b600060208201905062002a11600083018462002678565b92915050565b600081519050919050565b600082825260208201905092915050565b600062002a408262002b43565b915062002a4d8362002b43565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562002a855762002a8462002bee565b5b828201905092915050565b600062002a9d8262002b43565b915062002aaa8362002b43565b92508262002abd5762002abc62002c1d565b5b828204905092915050565b600062002ad58262002b43565b915062002ae28362002b43565b92508282101562002af85762002af762002bee565b5b828203905092915050565b600062002b108262002b23565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600062002b678262002b6e565b9050919050565b600062002b7b8262002b23565b9050919050565b60005b8381101562002ba257808201518184015260208101905062002b85565b8381111562002bb2576000848401525b50505050565b6000600282049050600182168062002bd157607f821691505b6020821081141562002be85762002be762002c4c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f534d525431363a2043616e206e6f742072656e6f756e6365204f776e6572736860008201527f6970000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f534d525431363a206c6576656c203120726566657272616c207061796d656e7460008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f534d525431363a206c6576656c203320726566657272616c207061796d656e7460008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f534d525431363a206c6576656c203220726566657272616c207061796d656e7460008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b7f534d525431363a206c6576656c203420726566657272616c207061796d656e7460008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620031698162002b03565b81146200317557600080fd5b50565b620031838162002b17565b81146200318f57600080fd5b50565b6200319d8162002b43565b8114620031a957600080fd5b5056fe608060405234801561001057600080fd5b5060405161045838038061045883398181016040528101906100329190610129565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8a870d62456164d35d1ffd07c50fd69392e3b021b6c5b854f1e8699b43a572d360405160405180910390a350506101b7565b600081519050610123816101a0565b92915050565b600080604083850312156101405761013f61019b565b5b600061014e85828601610114565b925050602061015f85828601610114565b9150509250929050565b60006101748261017b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6101a981610169565b81146101b457600080fd5b50565b610292806101c66000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806368447c931461003b578063d96a094a14610059575b600080fd5b610043610075565b60405161005091906101b2565b60405180910390f35b610073600480360381019061006e9190610167565b61009e565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cce81e2338360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b815260040161011d939291906101cd565b600060405180830381600087803b15801561013757600080fd5b505af115801561014b573d6000803e3d6000fd5b5050505050565b60008135905061016181610245565b92915050565b60006020828403121561017d5761017c610240565b5b600061018b84828501610152565b91505092915050565b61019d81610204565b82525050565b6101ac81610236565b82525050565b60006020820190506101c76000830184610194565b92915050565b60006060820190506101e26000830186610194565b6101ef60208301856101a3565b6101fc6040830184610194565b949350505050565b600061020f82610216565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b61024e81610236565b811461025957600080fd5b5056fea26469706673582212201710a88068825d83356fd3a66e6ede92d773d80fba0c2b33f1eb4c056a54bca264736f6c63430008060033a2646970667358221220b71c6e944e9cf7332280adfc5b95a424416c24ab7bce71a83f4667dafaf99a8864736f6c63430008060033

Deployed ByteCode Sourcemap

20907:5241:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8742:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11092:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9861:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20778:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11873:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26023:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9704:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12577:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21796:144;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10032:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25400:123;;;:::i;:::-;;20647:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22129:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20528:111;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5301:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8961:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25646:367;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13318:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10365:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24871:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10621:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21651:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6207:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8742:100;8796:13;8829:5;8822:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8742:100;:::o;11092:201::-;11175:4;11192:13;11208:12;:10;:12::i;:::-;11192:28;;11231:32;11240:5;11247:7;11256:6;11231:8;:32::i;:::-;11281:4;11274:11;;;11092:201;;;;:::o;9861:108::-;9922:7;9949:12;;9942:19;;9861:108;:::o;20778:120::-;20846:7;20869;:23;20877:14;20869:23;;;;;;;;;;;;;;;;;;;;;;;;;20862:30;;20778:120;;;:::o;11873:295::-;12004:4;12021:15;12039:12;:10;:12::i;:::-;12021:30;;12062:38;12078:4;12084:7;12093:6;12062:15;:38::i;:::-;12111:27;12121:4;12127:2;12131:6;12111:9;:27::i;:::-;12156:4;12149:11;;;11873:295;;;;;:::o;26023:113::-;5187:13;:11;:13::i;:::-;26110:14:::1;26096:4;;:29;;;;;;;;;;;;;;;;;;26023:113:::0;:::o;9704:92::-;9762:5;9787:1;9780:8;;9704:92;:::o;12577:238::-;12665:4;12682:13;12698:12;:10;:12::i;:::-;12682:28;;12721:64;12730:5;12737:7;12774:10;12746:25;12756:5;12763:7;12746:9;:25::i;:::-;:38;;;;:::i;:::-;12721:8;:64::i;:::-;12803:4;12796:11;;;12577:238;;;;:::o;21796:144::-;5187:13;:11;:13::i;:::-;21894:22:::1;21900:7;21909:6;21894:5;:22::i;:::-;21796:144:::0;;:::o;10032:127::-;10106:7;10133:9;:18;10143:7;10133:18;;;;;;;;;;;;;;;;10126:25;;10032:127;;;:::o;25400:123::-;5187:13;:11;:13::i;:::-;25471:44:::1;;;;;;;;;;:::i;:::-;;;;;;;;20647:125:::0;20725:7;20748:9;:18;20758:7;20748:18;;;;;;;;;;;;;;;;;;;;;;;;;20741:25;;20647:125;;;:::o;22129:310::-;22212:29;22225:5;22232:8;22212:12;:29::i;:::-;;22252:26;22264:5;22271:6;22252:11;:26::i;:::-;22289:45;22313:5;22328:4;22289:23;:45::i;:::-;22345:20;22351:5;22358:6;22345:5;:20::i;:::-;22408:8;22383:34;;22400:6;22393:5;22383:34;;;;;;;;;;;;22129:310;;;:::o;20528:111::-;20589:7;20612:9;:21;20622:10;20612:21;;;;;;;;;;;;;;;;;;;;;;;;;20605:28;;20528:111;:::o;5301:87::-;5347:7;5374:6;;;;;;;;;;;5367:13;;5301:87;:::o;8961:104::-;9017:13;9050:7;9043:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8961:104;:::o;25646:367::-;5187:13;:11;:13::i;:::-;25738:20:::1;25768:14;25738:45;;25888:13;:21;;;25918:4;25925:7;25888:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25946:13;:26;;;25981:4;25988:7;:5;:7::i;:::-;25997;25946:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25727:286;25646:367:::0;;:::o;13318:436::-;13411:4;13428:13;13444:12;:10;:12::i;:::-;13428:28;;13467:24;13494:25;13504:5;13511:7;13494:9;:25::i;:::-;13467:52;;13558:15;13538:16;:35;;13530:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13651:60;13660:5;13667:7;13695:15;13676:16;:34;13651:8;:60::i;:::-;13742:4;13735:11;;;;13318:436;;;;:::o;10365:193::-;10444:4;10461:13;10477:12;:10;:12::i;:::-;10461:28;;10500;10510:5;10517:2;10521:6;10500:9;:28::i;:::-;10546:4;10539:11;;;10365:193;;;;:::o;24871:228::-;24929:7;24980:1;24951:31;;:10;:19;24962:7;24951:19;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;24947:110;;;25040:7;:5;:7::i;:::-;25033:14;;;;24947:110;25072:10;:19;25083:7;25072:19;;;;;;;;;;;;;;;;;;;;;;;;;25065:26;;24871:228;;;;:::o;10621:151::-;10710:7;10737:11;:18;10749:5;10737:18;;;;;;;;;;;;;;;:27;10756:7;10737:27;;;;;;;;;;;;;;;;10730:34;;10621:151;;;;:::o;21651:87::-;21700:6;21726:4;;;;;;;;;;;21719:11;;21651:87;:::o;6207:201::-;5187:13;:11;:13::i;:::-;6316:1:::1;6296:22;;:8;:22;;;;6288:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6372:28;6391:8;6372:18;:28::i;:::-;6207:201:::0;:::o;4010:98::-;4063:7;4090:10;4083:17;;4010:98;:::o;17345:380::-;17498:1;17481:19;;:5;:19;;;;17473:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17579:1;17560:21;;:7;:21;;;;17552:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17663:6;17633:11;:18;17645:5;17633:18;;;;;;;;;;;;;;;:27;17652:7;17633:27;;;;;;;;;;;;;;;:36;;;;17701:7;17685:32;;17694:5;17685:32;;;17710:6;17685:32;;;;;;:::i;:::-;;;;;;;;17345:380;;;:::o;18016:453::-;18151:24;18178:25;18188:5;18195:7;18178:9;:25::i;:::-;18151:52;;18238:17;18218:16;:37;18214:248;;18300:6;18280:16;:26;;18272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18384:51;18393:5;18400:7;18428:6;18409:16;:25;18384:8;:51::i;:::-;18214:248;18140:329;18016:453;;;:::o;14224:840::-;14371:1;14355:18;;:4;:18;;;;14347:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14448:1;14434:16;;:2;:16;;;;14426:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14503:38;14524:4;14530:2;14534:6;14503:20;:38::i;:::-;14554:19;14576:9;:15;14586:4;14576:15;;;;;;;;;;;;;;;;14554:37;;14625:6;14610:11;:21;;14602:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14742:6;14728:11;:20;14710:9;:15;14720:4;14710:15;;;;;;;;;;;;;;;:38;;;;14945:6;14928:9;:13;14938:2;14928:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14995:2;14980:26;;14989:4;14980:26;;;14999:6;14980:26;;;;;;:::i;:::-;;;;;;;;15019:37;15039:4;15045:2;15049:6;15019:19;:37::i;:::-;14336:728;14224:840;;;:::o;5466:132::-;5541:12;:10;:12::i;:::-;5530:23;;:7;:5;:7::i;:::-;:23;;;5522:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5466:132::o;15351:548::-;15454:1;15435:21;;:7;:21;;;;15427:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15505:49;15534:1;15538:7;15547:6;15505:20;:49::i;:::-;15583:6;15567:12;;:22;;;;;;;:::i;:::-;;;;;;;;15760:6;15738:9;:18;15748:7;15738:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;15814:7;15793:37;;15810:1;15793:37;;;15823:6;15793:37;;;;;;:::i;:::-;;;;;;;;15843:48;15871:1;15875:7;15884:6;15843:19;:48::i;:::-;15351:548;;:::o;22603:393::-;22677:4;22759:1;22732:29;;:10;:17;22743:5;22732:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;22729:239;;;22873:1;22847:20;22857:9;22847;:20::i;:::-;:28;22844:115;;;22912:9;22892:10;:17;22903:5;22892:17;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22943:4;22936:11;;;;22844:115;22729:239;22983:5;22976:12;;22603:393;;;;;:::o;23219:1464::-;23460:2;23453:6;:9;23450:21;;;23464:7;;23450:21;23483:10;23496:17;23507:5;23496:10;:17::i;:::-;23483:30;;23524:9;23536:33;23550:1;23541:6;:10;;;;:::i;:::-;23567:1;23553:13;23563:2;23553:9;:13::i;:::-;:15;;;;:::i;:::-;23536:4;:33::i;:::-;23524:45;;23590:4;;;;;;;;;;;:17;;;23608:5;23615:2;23619:4;23590:34;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23582:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;23716:18;23722:2;23731;23726:4;:7;;;;:::i;:::-;23716:5;:18::i;:::-;23747:10;23760:14;23771:2;23760:10;:14::i;:::-;23747:27;;23785:9;23797:33;23811:1;23802:6;:10;;;;:::i;:::-;23828:1;23814:13;23824:2;23814:9;:13::i;:::-;:15;;;;:::i;:::-;23797:4;:33::i;:::-;23785:45;;23849:4;;;;;;;;;;;:17;;;23867:5;23874:2;23878:4;23849:34;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23841:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;23975:18;23981:2;23990;23985:4;:7;;;;:::i;:::-;23975:5;:18::i;:::-;24014:10;24027:14;24038:2;24027:10;:14::i;:::-;24014:27;;24052:9;24064:33;24078:1;24069:6;:10;;;;:::i;:::-;24095:1;24081:13;24091:2;24081:9;:13::i;:::-;:15;;;;:::i;:::-;24064:4;:33::i;:::-;24052:45;;24116:4;;;;;;;;;;;:17;;;24134:5;24141:2;24145:4;24116:34;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24108:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;24242:18;24248:2;24257;24252:4;:7;;;;:::i;:::-;24242:5;:18::i;:::-;24281:10;24294:14;24305:2;24294:10;:14::i;:::-;24281:27;;24319:9;24331:35;24345:2;24336:6;:11;;;;:::i;:::-;24363:2;24349:13;24359:2;24349:9;:13::i;:::-;:16;;;;:::i;:::-;24331:4;:35::i;:::-;24319:47;;24385:4;;;;;;;;;;;:17;;;24403:5;24410:2;24414:4;24385:34;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24377:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;24511:18;24517:2;24526;24521:4;:7;;;;:::i;:::-;24511:5;:18::i;:::-;24587:9;24621:4;24616;24611;24606;24599:6;:11;;;;:::i;:::-;:16;;;;:::i;:::-;:21;;;;:::i;:::-;:26;;;;:::i;:::-;24587:38;;24636:4;;;;;;;;;;;:17;;;24654:5;24661:7;:5;:7::i;:::-;24670:4;24636:39;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23277:1406;;;;;;;;;23219:1464;;;:::o;20186:336::-;20305:1;20275:32;;:9;:18;20285:7;20275:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;20271:246;;;20341:26;20389:7;20398:6;20370:35;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;20341:64;;20445:11;20416:9;:18;20426:7;20416:18;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;20500:7;20468;:29;20484:11;20468:29;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20309:208;20271:246;20186:336;;:::o;6568:191::-;6642:16;6661:6;;;;;;;;;;;6642:25;;6687:8;6678:6;;:17;;;;;;;;;;;;;;;;;;6742:8;6711:40;;6732:8;6711:40;;;;;;;;;;;;6631:128;6568:191;:::o;19069:125::-;;;;:::o;19798:124::-;;;;:::o;25211:131::-;25269:7;25294:1;25292;:3;25289:16;;;25304:1;25297:8;;;;25289:16;25333:1;25326:8;;25211:131;;;;;:::o;16232:675::-;16335:1;16316:21;;:7;:21;;;;16308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16388:49;16409:7;16426:1;16430:6;16388:20;:49::i;:::-;16450:22;16475:9;:18;16485:7;16475:18;;;;;;;;;;;;;;;;16450:43;;16530:6;16512:14;:24;;16504:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16649:6;16632:14;:23;16611:9;:18;16621:7;16611:18;;;;;;;;;;;;;;;:44;;;;16766:6;16750:12;;:22;;;;;;;;;;;16827:1;16801:37;;16810:7;16801:37;;;16831:6;16801:37;;;;;;:::i;:::-;;;;;;;;16851:48;16871:7;16888:1;16892:6;16851:19;:48::i;:::-;16297:610;16232:675;;:::o;-1:-1:-1:-;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;206:5;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;212:77;;;;:::o;295:139::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;440:329::-;499:6;548:2;536:9;527:7;523:23;519:32;516:2;;;554:79;;:::i;:::-;516:2;674:1;699:53;744:7;735:6;724:9;720:22;699:53;:::i;:::-;689:63;;645:117;506:263;;;;:::o;775:474::-;843:6;851;900:2;888:9;879:7;875:23;871:32;868:2;;;906:79;;:::i;:::-;868:2;1026:1;1051:53;1096:7;1087:6;1076:9;1072:22;1051:53;:::i;:::-;1041:63;;997:117;1153:2;1179:53;1224:7;1215:6;1204:9;1200:22;1179:53;:::i;:::-;1169:63;;1124:118;858:391;;;;;:::o;1255:619::-;1332:6;1340;1348;1397:2;1385:9;1376:7;1372:23;1368:32;1365:2;;;1403:79;;:::i;:::-;1365:2;1523:1;1548:53;1593:7;1584:6;1573:9;1569:22;1548:53;:::i;:::-;1538:63;;1494:117;1650:2;1676:53;1721:7;1712:6;1701:9;1697:22;1676:53;:::i;:::-;1666:63;;1621:118;1778:2;1804:53;1849:7;1840:6;1829:9;1825:22;1804:53;:::i;:::-;1794:63;;1749:118;1355:519;;;;;:::o;1880:474::-;1948:6;1956;2005:2;1993:9;1984:7;1980:23;1976:32;1973:2;;;2011:79;;:::i;:::-;1973:2;2131:1;2156:53;2201:7;2192:6;2181:9;2177:22;2156:53;:::i;:::-;2146:63;;2102:117;2258:2;2284:53;2329:7;2320:6;2309:9;2305:22;2284:53;:::i;:::-;2274:63;;2229:118;1963:391;;;;;:::o;2360:619::-;2437:6;2445;2453;2502:2;2490:9;2481:7;2477:23;2473:32;2470:2;;;2508:79;;:::i;:::-;2470:2;2628:1;2653:53;2698:7;2689:6;2678:9;2674:22;2653:53;:::i;:::-;2643:63;;2599:117;2755:2;2781:53;2826:7;2817:6;2806:9;2802:22;2781:53;:::i;:::-;2771:63;;2726:118;2883:2;2909:53;2954:7;2945:6;2934:9;2930:22;2909:53;:::i;:::-;2899:63;;2854:118;2460:519;;;;;:::o;2985:345::-;3052:6;3101:2;3089:9;3080:7;3076:23;3072:32;3069:2;;;3107:79;;:::i;:::-;3069:2;3227:1;3252:61;3305:7;3296:6;3285:9;3281:22;3252:61;:::i;:::-;3242:71;;3198:125;3059:271;;;;:::o;3336:118::-;3423:24;3441:5;3423:24;:::i;:::-;3418:3;3411:37;3401:53;;:::o;3460:109::-;3541:21;3556:5;3541:21;:::i;:::-;3536:3;3529:34;3519:50;;:::o;3575:157::-;3675:50;3719:5;3675:50;:::i;:::-;3670:3;3663:63;3653:79;;:::o;3738:364::-;3826:3;3854:39;3887:5;3854:39;:::i;:::-;3909:71;3973:6;3968:3;3909:71;:::i;:::-;3902:78;;3989:52;4034:6;4029:3;4022:4;4015:5;4011:16;3989:52;:::i;:::-;4066:29;4088:6;4066:29;:::i;:::-;4061:3;4057:39;4050:46;;3830:272;;;;;:::o;4108:366::-;4250:3;4271:67;4335:2;4330:3;4271:67;:::i;:::-;4264:74;;4347:93;4436:3;4347:93;:::i;:::-;4465:2;4460:3;4456:12;4449:19;;4254:220;;;:::o;4480:366::-;4622:3;4643:67;4707:2;4702:3;4643:67;:::i;:::-;4636:74;;4719:93;4808:3;4719:93;:::i;:::-;4837:2;4832:3;4828:12;4821:19;;4626:220;;;:::o;4852:366::-;4994:3;5015:67;5079:2;5074:3;5015:67;:::i;:::-;5008:74;;5091:93;5180:3;5091:93;:::i;:::-;5209:2;5204:3;5200:12;5193:19;;4998:220;;;:::o;5224:366::-;5366:3;5387:67;5451:2;5446:3;5387:67;:::i;:::-;5380:74;;5463:93;5552:3;5463:93;:::i;:::-;5581:2;5576:3;5572:12;5565:19;;5370:220;;;:::o;5596:366::-;5738:3;5759:67;5823:2;5818:3;5759:67;:::i;:::-;5752:74;;5835:93;5924:3;5835:93;:::i;:::-;5953:2;5948:3;5944:12;5937:19;;5742:220;;;:::o;5968:366::-;6110:3;6131:67;6195:2;6190:3;6131:67;:::i;:::-;6124:74;;6207:93;6296:3;6207:93;:::i;:::-;6325:2;6320:3;6316:12;6309:19;;6114:220;;;:::o;6340:366::-;6482:3;6503:67;6567:2;6562:3;6503:67;:::i;:::-;6496:74;;6579:93;6668:3;6579:93;:::i;:::-;6697:2;6692:3;6688:12;6681:19;;6486:220;;;:::o;6712:366::-;6854:3;6875:67;6939:2;6934:3;6875:67;:::i;:::-;6868:74;;6951:93;7040:3;6951:93;:::i;:::-;7069:2;7064:3;7060:12;7053:19;;6858:220;;;:::o;7084:366::-;7226:3;7247:67;7311:2;7306:3;7247:67;:::i;:::-;7240:74;;7323:93;7412:3;7323:93;:::i;:::-;7441:2;7436:3;7432:12;7425:19;;7230:220;;;:::o;7456:366::-;7598:3;7619:67;7683:2;7678:3;7619:67;:::i;:::-;7612:74;;7695:93;7784:3;7695:93;:::i;:::-;7813:2;7808:3;7804:12;7797:19;;7602:220;;;:::o;7828:366::-;7970:3;7991:67;8055:2;8050:3;7991:67;:::i;:::-;7984:74;;8067:93;8156:3;8067:93;:::i;:::-;8185:2;8180:3;8176:12;8169:19;;7974:220;;;:::o;8200:366::-;8342:3;8363:67;8427:2;8422:3;8363:67;:::i;:::-;8356:74;;8439:93;8528:3;8439:93;:::i;:::-;8557:2;8552:3;8548:12;8541:19;;8346:220;;;:::o;8572:366::-;8714:3;8735:67;8799:2;8794:3;8735:67;:::i;:::-;8728:74;;8811:93;8900:3;8811:93;:::i;:::-;8929:2;8924:3;8920:12;8913:19;;8718:220;;;:::o;8944:366::-;9086:3;9107:67;9171:2;9166:3;9107:67;:::i;:::-;9100:74;;9183:93;9272:3;9183:93;:::i;:::-;9301:2;9296:3;9292:12;9285:19;;9090:220;;;:::o;9316:366::-;9458:3;9479:67;9543:2;9538:3;9479:67;:::i;:::-;9472:74;;9555:93;9644:3;9555:93;:::i;:::-;9673:2;9668:3;9664:12;9657:19;;9462:220;;;:::o;9688:366::-;9830:3;9851:67;9915:2;9910:3;9851:67;:::i;:::-;9844:74;;9927:93;10016:3;9927:93;:::i;:::-;10045:2;10040:3;10036:12;10029:19;;9834:220;;;:::o;10060:366::-;10202:3;10223:67;10287:2;10282:3;10223:67;:::i;:::-;10216:74;;10299:93;10388:3;10299:93;:::i;:::-;10417:2;10412:3;10408:12;10401:19;;10206:220;;;:::o;10432:118::-;10519:24;10537:5;10519:24;:::i;:::-;10514:3;10507:37;10497:53;;:::o;10556:112::-;10639:22;10655:5;10639:22;:::i;:::-;10634:3;10627:35;10617:51;;:::o;10674:222::-;10767:4;10805:2;10794:9;10790:18;10782:26;;10818:71;10886:1;10875:9;10871:17;10862:6;10818:71;:::i;:::-;10772:124;;;;:::o;10902:332::-;11023:4;11061:2;11050:9;11046:18;11038:26;;11074:71;11142:1;11131:9;11127:17;11118:6;11074:71;:::i;:::-;11155:72;11223:2;11212:9;11208:18;11199:6;11155:72;:::i;:::-;11028:206;;;;;:::o;11240:442::-;11389:4;11427:2;11416:9;11412:18;11404:26;;11440:71;11508:1;11497:9;11493:17;11484:6;11440:71;:::i;:::-;11521:72;11589:2;11578:9;11574:18;11565:6;11521:72;:::i;:::-;11603;11671:2;11660:9;11656:18;11647:6;11603:72;:::i;:::-;11394:288;;;;;;:::o;11688:332::-;11809:4;11847:2;11836:9;11832:18;11824:26;;11860:71;11928:1;11917:9;11913:17;11904:6;11860:71;:::i;:::-;11941:72;12009:2;11998:9;11994:18;11985:6;11941:72;:::i;:::-;11814:206;;;;;:::o;12026:210::-;12113:4;12151:2;12140:9;12136:18;12128:26;;12164:65;12226:1;12215:9;12211:17;12202:6;12164:65;:::i;:::-;12118:118;;;;:::o;12242:248::-;12348:4;12386:2;12375:9;12371:18;12363:26;;12399:84;12480:1;12469:9;12465:17;12456:6;12399:84;:::i;:::-;12353:137;;;;:::o;12496:313::-;12609:4;12647:2;12636:9;12632:18;12624:26;;12696:9;12690:4;12686:20;12682:1;12671:9;12667:17;12660:47;12724:78;12797:4;12788:6;12724:78;:::i;:::-;12716:86;;12614:195;;;;:::o;12815:419::-;12981:4;13019:2;13008:9;13004:18;12996:26;;13068:9;13062:4;13058:20;13054:1;13043:9;13039:17;13032:47;13096:131;13222:4;13096:131;:::i;:::-;13088:139;;12986:248;;;:::o;13240:419::-;13406:4;13444:2;13433:9;13429:18;13421:26;;13493:9;13487:4;13483:20;13479:1;13468:9;13464:17;13457:47;13521:131;13647:4;13521:131;:::i;:::-;13513:139;;13411:248;;;:::o;13665:419::-;13831:4;13869:2;13858:9;13854:18;13846:26;;13918:9;13912:4;13908:20;13904:1;13893:9;13889:17;13882:47;13946:131;14072:4;13946:131;:::i;:::-;13938:139;;13836:248;;;:::o;14090:419::-;14256:4;14294:2;14283:9;14279:18;14271:26;;14343:9;14337:4;14333:20;14329:1;14318:9;14314:17;14307:47;14371:131;14497:4;14371:131;:::i;:::-;14363:139;;14261:248;;;:::o;14515:419::-;14681:4;14719:2;14708:9;14704:18;14696:26;;14768:9;14762:4;14758:20;14754:1;14743:9;14739:17;14732:47;14796:131;14922:4;14796:131;:::i;:::-;14788:139;;14686:248;;;:::o;14940:419::-;15106:4;15144:2;15133:9;15129:18;15121:26;;15193:9;15187:4;15183:20;15179:1;15168:9;15164:17;15157:47;15221:131;15347:4;15221:131;:::i;:::-;15213:139;;15111:248;;;:::o;15365:419::-;15531:4;15569:2;15558:9;15554:18;15546:26;;15618:9;15612:4;15608:20;15604:1;15593:9;15589:17;15582:47;15646:131;15772:4;15646:131;:::i;:::-;15638:139;;15536:248;;;:::o;15790:419::-;15956:4;15994:2;15983:9;15979:18;15971:26;;16043:9;16037:4;16033:20;16029:1;16018:9;16014:17;16007:47;16071:131;16197:4;16071:131;:::i;:::-;16063:139;;15961:248;;;:::o;16215:419::-;16381:4;16419:2;16408:9;16404:18;16396:26;;16468:9;16462:4;16458:20;16454:1;16443:9;16439:17;16432:47;16496:131;16622:4;16496:131;:::i;:::-;16488:139;;16386:248;;;:::o;16640:419::-;16806:4;16844:2;16833:9;16829:18;16821:26;;16893:9;16887:4;16883:20;16879:1;16868:9;16864:17;16857:47;16921:131;17047:4;16921:131;:::i;:::-;16913:139;;16811:248;;;:::o;17065:419::-;17231:4;17269:2;17258:9;17254:18;17246:26;;17318:9;17312:4;17308:20;17304:1;17293:9;17289:17;17282:47;17346:131;17472:4;17346:131;:::i;:::-;17338:139;;17236:248;;;:::o;17490:419::-;17656:4;17694:2;17683:9;17679:18;17671:26;;17743:9;17737:4;17733:20;17729:1;17718:9;17714:17;17707:47;17771:131;17897:4;17771:131;:::i;:::-;17763:139;;17661:248;;;:::o;17915:419::-;18081:4;18119:2;18108:9;18104:18;18096:26;;18168:9;18162:4;18158:20;18154:1;18143:9;18139:17;18132:47;18196:131;18322:4;18196:131;:::i;:::-;18188:139;;18086:248;;;:::o;18340:419::-;18506:4;18544:2;18533:9;18529:18;18521:26;;18593:9;18587:4;18583:20;18579:1;18568:9;18564:17;18557:47;18621:131;18747:4;18621:131;:::i;:::-;18613:139;;18511:248;;;:::o;18765:419::-;18931:4;18969:2;18958:9;18954:18;18946:26;;19018:9;19012:4;19008:20;19004:1;18993:9;18989:17;18982:47;19046:131;19172:4;19046:131;:::i;:::-;19038:139;;18936:248;;;:::o;19190:419::-;19356:4;19394:2;19383:9;19379:18;19371:26;;19443:9;19437:4;19433:20;19429:1;19418:9;19414:17;19407:47;19471:131;19597:4;19471:131;:::i;:::-;19463:139;;19361:248;;;:::o;19615:419::-;19781:4;19819:2;19808:9;19804:18;19796:26;;19868:9;19862:4;19858:20;19854:1;19843:9;19839:17;19832:47;19896:131;20022:4;19896:131;:::i;:::-;19888:139;;19786:248;;;:::o;20040:222::-;20133:4;20171:2;20160:9;20156:18;20148:26;;20184:71;20252:1;20241:9;20237:17;20228:6;20184:71;:::i;:::-;20138:124;;;;:::o;20268:214::-;20357:4;20395:2;20384:9;20380:18;20372:26;;20408:67;20472:1;20461:9;20457:17;20448:6;20408:67;:::i;:::-;20362:120;;;;:::o;20569:99::-;20621:6;20655:5;20649:12;20639:22;;20628:40;;;:::o;20674:169::-;20758:11;20792:6;20787:3;20780:19;20832:4;20827:3;20823:14;20808:29;;20770:73;;;;:::o;20849:305::-;20889:3;20908:20;20926:1;20908:20;:::i;:::-;20903:25;;20942:20;20960:1;20942:20;:::i;:::-;20937:25;;21096:1;21028:66;21024:74;21021:1;21018:81;21015:2;;;21102:18;;:::i;:::-;21015:2;21146:1;21143;21139:9;21132:16;;20893:261;;;;:::o;21160:185::-;21200:1;21217:20;21235:1;21217:20;:::i;:::-;21212:25;;21251:20;21269:1;21251:20;:::i;:::-;21246:25;;21290:1;21280:2;;21295:18;;:::i;:::-;21280:2;21337:1;21334;21330:9;21325:14;;21202:143;;;;:::o;21351:191::-;21391:4;21411:20;21429:1;21411:20;:::i;:::-;21406:25;;21445:20;21463:1;21445:20;:::i;:::-;21440:25;;21484:1;21481;21478:8;21475:2;;;21489:18;;:::i;:::-;21475:2;21534:1;21531;21527:9;21519:17;;21396:146;;;;:::o;21548:96::-;21585:7;21614:24;21632:5;21614:24;:::i;:::-;21603:35;;21593:51;;;:::o;21650:90::-;21684:7;21727:5;21720:13;21713:21;21702:32;;21692:48;;;:::o;21746:126::-;21783:7;21823:42;21816:5;21812:54;21801:65;;21791:81;;;:::o;21878:77::-;21915:7;21944:5;21933:16;;21923:32;;;:::o;21961:86::-;21996:7;22036:4;22029:5;22025:16;22014:27;;22004:43;;;:::o;22053:152::-;22116:9;22149:50;22193:5;22149:50;:::i;:::-;22136:63;;22126:79;;;:::o;22211:126::-;22274:9;22307:24;22325:5;22307:24;:::i;:::-;22294:37;;22284:53;;;:::o;22343:307::-;22411:1;22421:113;22435:6;22432:1;22429:13;22421:113;;;22520:1;22515:3;22511:11;22505:18;22501:1;22496:3;22492:11;22485:39;22457:2;22454:1;22450:10;22445:15;;22421:113;;;22552:6;22549:1;22546:13;22543:2;;;22632:1;22623:6;22618:3;22614:16;22607:27;22543:2;22392:258;;;;:::o;22656:320::-;22700:6;22737:1;22731:4;22727:12;22717:22;;22784:1;22778:4;22774:12;22805:18;22795:2;;22861:4;22853:6;22849:17;22839:27;;22795:2;22923;22915:6;22912:14;22892:18;22889:38;22886:2;;;22942:18;;:::i;:::-;22886:2;22707:269;;;;:::o;22982:180::-;23030:77;23027:1;23020:88;23127:4;23124:1;23117:15;23151:4;23148:1;23141:15;23168:180;23216:77;23213:1;23206:88;23313:4;23310:1;23303:15;23337:4;23334:1;23327:15;23354:180;23402:77;23399:1;23392:88;23499:4;23496:1;23489:15;23523:4;23520:1;23513:15;23663:117;23772:1;23769;23762:12;23786:102;23827:6;23878:2;23874:7;23869:2;23862:5;23858:14;23854:28;23844:38;;23834:54;;;:::o;23894:222::-;24034:34;24030:1;24022:6;24018:14;24011:58;24103:5;24098:2;24090:6;24086:15;24079:30;24000:116;:::o;24122:221::-;24262:34;24258:1;24250:6;24246:14;24239:58;24331:4;24326:2;24318:6;24314:15;24307:29;24228:115;:::o;24349:221::-;24489:34;24485:1;24477:6;24473:14;24466:58;24558:4;24553:2;24545:6;24541:15;24534:29;24455:115;:::o;24576:225::-;24716:34;24712:1;24704:6;24700:14;24693:58;24785:8;24780:2;24772:6;24768:15;24761:33;24682:119;:::o;24807:221::-;24947:34;24943:1;24935:6;24931:14;24924:58;25016:4;25011:2;25003:6;24999:15;24992:29;24913:115;:::o;25034:226::-;25174:34;25170:1;25162:6;25158:14;25151:58;25243:9;25238:2;25230:6;25226:15;25219:34;25140:120;:::o;25266:179::-;25406:31;25402:1;25394:6;25390:14;25383:55;25372:73;:::o;25451:225::-;25591:34;25587:1;25579:6;25575:14;25568:58;25660:8;25655:2;25647:6;25643:15;25636:33;25557:119;:::o;25682:226::-;25822:34;25818:1;25810:6;25806:14;25799:58;25891:9;25886:2;25878:6;25874:15;25867:34;25788:120;:::o;25914:182::-;26054:34;26050:1;26042:6;26038:14;26031:58;26020:76;:::o;26102:220::-;26242:34;26238:1;26230:6;26226:14;26219:58;26311:3;26306:2;26298:6;26294:15;26287:28;26208:114;:::o;26328:224::-;26468:34;26464:1;26456:6;26452:14;26445:58;26537:7;26532:2;26524:6;26520:15;26513:32;26434:118;:::o;26558:223::-;26698:34;26694:1;26686:6;26682:14;26675:58;26767:6;26762:2;26754:6;26750:15;26743:31;26664:117;:::o;26787:226::-;26927:34;26923:1;26915:6;26911:14;26904:58;26996:9;26991:2;26983:6;26979:15;26972:34;26893:120;:::o;27019:226::-;27159:34;27155:1;27147:6;27143:14;27136:58;27228:9;27223:2;27215:6;27211:15;27204:34;27125:120;:::o;27251:224::-;27391:34;27387:1;27379:6;27375:14;27368:58;27460:7;27455:2;27447:6;27443:15;27436:32;27357:118;:::o;27481:181::-;27621:33;27617:1;27609:6;27605:14;27598:57;27587:75;:::o;27668:122::-;27741:24;27759:5;27741:24;:::i;:::-;27734:5;27731:35;27721:2;;27780:1;27777;27770:12;27721:2;27711:79;:::o;27796:116::-;27866:21;27881:5;27866:21;:::i;:::-;27859:5;27856:32;27846:2;;27902:1;27899;27892:12;27846:2;27836:76;:::o;27918:122::-;27991:24;28009:5;27991:24;:::i;:::-;27984:5;27981:35;27971:2;;28030:1;28027;28020:12;27971:2;27961:79;:::o

Swarm Source

ipfs://b71c6e944e9cf7332280adfc5b95a424416c24ab7bce71a83f4667dafaf99a88
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.