Contract 0xe0ccd451bb57851c1b2172c07d8b4a7c6952a54e 1

 

Contract Overview

CAP Finance: ETH Pool
Balance:
1,275.‍175300027789863956 ETH

ETH Value:
$2,410,629.64 (@ $1,890.43/ETH)
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xae7ee9b47dc030e46b6d89250177c007a96acfa893ef0f3a12aa827711e34b78Withdraw204409872022-08-16 21:29:434 hrs 17 mins ago0xd6a1aa4cc7f74ee162f10bf9fc58734735c07f59 IN  CAP Finance: ETH Pool0 ETH0.‍000091286517 ETH
0xc69429a95a18728224614f5931be9bffc32ad077742220376d7cdf9792ce1bf5Deposit204385412022-08-16 20:38:335 hrs 8 mins ago0x85e78f44b6b1f8ed5196b75c09b5b4ab49ebda5d IN  CAP Finance: ETH Pool0.‍28 ETH0.‍000100849353 ETH
0x5f5f779e88f8ef7b0d012e042cdf6ea7ebb0b366465120bf2f3f9915d18b0e18Withdraw204358862022-08-16 19:49:245 hrs 57 mins ago0x7d5b221d6e137cc2f6bdca5f4336776d83794404 IN  CAP Finance: ETH Pool0 ETH0.‍000088816542 ETH
0xf64c6438665af8670fb573327be1f395b82f5ed97cea2a1298558c7e01f87009Withdraw204241172022-08-16 16:52:088 hrs 54 mins ago0x30f85f405f731602c33c173788b69fca43b6f67f IN  CAP Finance: ETH Pool0 ETH0.‍000089035262 ETH
0x26f64a3dce5b197351efb5719c65a361423b892fbc6c02eb060ddfc12b94b909Withdraw204176542022-08-16 15:15:4410 hrs 31 mins ago0x0d508968c96d6436f8097513a182992d621fa877 IN  CAP Finance: ETH Pool0 ETH0.‍000077950388 ETH
0x2f2103e1f7b780a478b5106b04061bd3aab16245ba2de79fcf84134b8ba19948Withdraw204169052022-08-16 15:04:5010 hrs 42 mins ago0xe4354203713c37c0902e7be1aac758f499224637 IN  CAP Finance: ETH Pool0 ETH0.‍000086654927 ETH
0xbf4e1833639c7c2226772777aa10ff807315c3861c5869d15d72847ef69843f2Deposit204027482022-08-16 11:56:0413 hrs 50 mins ago0x1d665d81b22c931dd41eba3bc418ec185e9a21fc IN  CAP Finance: ETH Pool0.‍05 ETH0.‍000099324169 ETH
0x7f3e8ae63509e075cd5c7ea3a9264f1652b13c46d242a2c0069b9435a6bb59e3Withdraw204020702022-08-16 11:45:4014 hrs 1 min ago0x88280b50be8df4e7362cafe3b14fcdbfb35259c1 IN  CAP Finance: ETH Pool0 ETH0.‍000084702337 ETH
0xaf92212c47f3f31990e15c4fb44cb6e39bf44f53e0f07dcf9ecb74378c7db4aeWithdraw204018912022-08-16 11:42:5514 hrs 3 mins ago0x88280b50be8df4e7362cafe3b14fcdbfb35259c1 IN  CAP Finance: ETH Pool0 ETH0.‍000094126275 ETH
0xf67a5e023b8b7243274e80c73e24bc4f242f40209bbb22b8a77ebdcd1f461210Withdraw203963282022-08-16 10:20:5915 hrs 25 mins ago0x65d01c99e520819d01ddaeb3d08efbb4d8dcbd61 IN  CAP Finance: ETH Pool0 ETH0.‍000088498945 ETH
0xf98de6112052dca347c9494ed3ceb34136de06a1f5a20ac3c8840e62120f8340Withdraw203891252022-08-16 8:45:3617 hrs 1 min ago0x5481484616fd5bcc97dd5bbb4f58daadf34d099d IN  CAP Finance: ETH Pool0 ETH0.‍000080831628 ETH
0x501b130e10996f4a434d1a73aa8622ea985c51a120a00ed3a292c4401eaf1f04Deposit203811752022-08-16 6:56:1518 hrs 50 mins ago0x5481484616fd5bcc97dd5bbb4f58daadf34d099d IN  CAP Finance: ETH Pool0.‍125 ETH0.‍000090061187 ETH
0x0062ac736ebae75814fd4af13b91eba8aebf9e2bae422d6d81b2ab2cc657e91aDeposit203788842022-08-16 6:22:4419 hrs 24 mins ago0x6c06d1d7d95a18b3eb3534881019f57c2ee37511 IN  CAP Finance: ETH Pool0.‍1 ETH0.‍000089390263 ETH
0x185bed04c8884d7363ad235afb366c4b75652899d86dc2dabec3261b44ca238aDeposit203760892022-08-16 5:41:0120 hrs 5 mins ago0xcc42443cfa505121cbaf94c1e07ccc28d63dd238 IN  CAP Finance: ETH Pool0.‍107 ETH0.‍000109049055 ETH
0x1cd6911e60ee5b655e8888b1254aa5362f018bf65772e3e82c278b91e518191cWithdraw203599532022-08-16 1:25:021 day 21 mins ago0xe123348ac289c8e9c85bea553901f6739f42b71d IN  CAP Finance: ETH Pool0 ETH0.‍000108378941 ETH
0x6a5080d89ae914024447ac06ee9d1f966adf34496d0e7eef6606b901998ce559Withdraw203573532022-08-16 0:34:581 day 1 hr ago0x88280b50be8df4e7362cafe3b14fcdbfb35259c1 IN  CAP Finance: ETH Pool0 ETH0.‍000130568477 ETH
0xc233be9179ae14989c9e96188c6041a9743a944e0ea2b9789863d1064ea26960Withdraw203488772022-08-15 22:02:321 day 3 hrs ago0x42b0ac48d20f8580a957148a6442f430dbc13c71 IN  CAP Finance: ETH Pool0 ETH0.‍000114172322 ETH
0xbe078578976225878c7ba0251fc0a1a3a708d27eef625b16ea6e5b02ab4a3d10Withdraw203455432022-08-15 20:58:461 day 4 hrs ago0x3609462f90d6291735dccff4141b3e315e1cdb28 IN  CAP Finance: ETH Pool0 ETH0.‍000108382022 ETH
0x5f3c56fad8deac6d91145a35d58bc0e57877afd08b009c4b9d37a4dcbf645ad3Withdraw203455012022-08-15 20:57:181 day 4 hrs ago0xd7c737a195f75ccb819a1ce7474892e4ab6bff8f IN  CAP Finance: ETH Pool0 ETH0.‍000099073069 ETH
0x6f3e5199a7f566372083e0b9dc49429d7d60f0237c698e149358fa6d7c8aafa5Withdraw203453782022-08-15 20:54:491 day 4 hrs ago0xfacec1c32ae56097866a6c1dda1124f2c6844f40 IN  CAP Finance: ETH Pool0 ETH0.‍000108103195 ETH
0x2454fd68f500d4c6ac94071005370c6b25d0efca31a97e0430e013f17a48d48eWithdraw203446302022-08-15 20:38:061 day 5 hrs ago0x4e5f83d8d1b1223bbbbf88a3c951a5b3ca5c5041 IN  CAP Finance: ETH Pool0 ETH0.‍000099234173 ETH
0xafb797a5969adf13d36a8f7ed57ce38f4d00cfe25facbc839a638ff92a0b76b0Withdraw203444872022-08-15 20:35:151 day 5 hrs ago0x133d93566f9699b3af46fe150daa8a67a9563ed6 IN  CAP Finance: ETH Pool0 ETH0.‍000099772896 ETH
0x5cdd97c38c4b519b2f50d9478ceabeb8190b6b7d5dc9ea509bbd6ca750b0eba3Withdraw203328462022-08-15 17:13:471 day 8 hrs ago0x125dbe70459b36a4c71664dcc97224eafeb4aee0 IN  CAP Finance: ETH Pool0 ETH0.‍000094523069 ETH
0x47c4fd0b2c858b826f6adf9768feb6b7f6aae09308addb2b5d5f6a86ba5ed3eeWithdraw203325222022-08-15 17:07:401 day 8 hrs ago0xf332ed104ea96368c87af4f72326520411934cd7 IN  CAP Finance: ETH Pool0 ETH0.‍000094544016 ETH
0x4e6a37e2c02d2bf66bac9c1be8eb8ac63499695d4d0d9d3ed235804912fc5e64Withdraw203241092022-08-15 15:03:101 day 10 hrs ago0x3bb1db7eed4b388f646cad3a11d685920c0c24bb IN  CAP Finance: ETH Pool0 ETH0.‍000077739908 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc7c0c85a1128eb0373620e9f2716e34ca42f2e9dd2738bf6d2cf27d54328a606204561992022-08-17 1:41:435 mins ago CAP Finance: ETH Pool CAP Finance: Router0 ETH
0xc7c0c85a1128eb0373620e9f2716e34ca42f2e9dd2738bf6d2cf27d54328a606204561992022-08-17 1:41:435 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0xc7c0c85a1128eb0373620e9f2716e34ca42f2e9dd2738bf6d2cf27d54328a606204561992022-08-17 1:41:435 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x327df99cfdc0f99aabd86131d1506cd2648d57c3729d76709de783a73d298630204558562022-08-17 1:38:308 mins ago CAP Finance: ETH Pool CAP Finance: Router0 ETH
0x327df99cfdc0f99aabd86131d1506cd2648d57c3729d76709de783a73d298630204558562022-08-17 1:38:308 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x327df99cfdc0f99aabd86131d1506cd2648d57c3729d76709de783a73d298630204558562022-08-17 1:38:308 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x0b87a71f322f71408e2afba04f3a6b01ab3aed1cc5a349e3da648805bd25a82b204557872022-08-17 1:37:469 mins ago CAP Finance: ETH Pool CAP Finance: Router0 ETH
0x0b87a71f322f71408e2afba04f3a6b01ab3aed1cc5a349e3da648805bd25a82b204557872022-08-17 1:37:469 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x0b87a71f322f71408e2afba04f3a6b01ab3aed1cc5a349e3da648805bd25a82b204557872022-08-17 1:37:469 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0xa168b0e11047fc48d543d2a3de763ce47733eeb0db8e0c7cda2c2eacecf580c1204555662022-08-17 1:32:0514 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0xa168b0e11047fc48d543d2a3de763ce47733eeb0db8e0c7cda2c2eacecf580c1204555662022-08-17 1:32:0514 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0.‍03744279 ETH
0xb41b9156aa86d9891e3175d4593d566eb125f79bf91188319b74125277be7330204550472022-08-17 1:27:2219 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0xb41b9156aa86d9891e3175d4593d566eb125f79bf91188319b74125277be7330204550472022-08-17 1:27:2219 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0.‍04221307 ETH
0x6bd4e7d973ee8d1082d9e34680ac5bd556b97f5eb2784b7b6b92ab67d8f16a03204543712022-08-17 1:15:2431 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x6bd4e7d973ee8d1082d9e34680ac5bd556b97f5eb2784b7b6b92ab67d8f16a03204543712022-08-17 1:15:2431 mins ago CAP Finance: ETH Pool0x65b4f70084d86590c52d93cc9080e4f4d92ea61a0.‍01326697 ETH
0x6bd4e7d973ee8d1082d9e34680ac5bd556b97f5eb2784b7b6b92ab67d8f16a03204543712022-08-17 1:15:2431 mins ago CAP Finance: ETH Pool CAP Finance: Router0 ETH
0x6bd4e7d973ee8d1082d9e34680ac5bd556b97f5eb2784b7b6b92ab67d8f16a03204543712022-08-17 1:15:2431 mins ago CAP Finance: ETH Pool CAP Finance: Router0 ETH
0x6bd4e7d973ee8d1082d9e34680ac5bd556b97f5eb2784b7b6b92ab67d8f16a03204543712022-08-17 1:15:2431 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x874f92583501fd8d1a9e500e0ab13460faf8d03ac0b7644af32fae9c4c825de5204532392022-08-17 1:00:1946 mins ago CAP Finance: ETH Pool CAP Finance: Router0 ETH
0x874f92583501fd8d1a9e500e0ab13460faf8d03ac0b7644af32fae9c4c825de5204532392022-08-17 1:00:1946 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x874f92583501fd8d1a9e500e0ab13460faf8d03ac0b7644af32fae9c4c825de5204532392022-08-17 1:00:1946 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x8b01cbf1cf36808ffd3bdea958ffd3722f3fca99b64dacc94c3ef604a7d4e0b3204528982022-08-17 0:56:0950 mins ago CAP Finance: ETH Pool CAP Finance: Router0 ETH
0x8b01cbf1cf36808ffd3bdea958ffd3722f3fca99b64dacc94c3ef604a7d4e0b3204528982022-08-17 0:56:0950 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x8b01cbf1cf36808ffd3bdea958ffd3722f3fca99b64dacc94c3ef604a7d4e0b3204528982022-08-17 0:56:0950 mins ago 0xbed32937d8a5d1421241f52809908f1a17d75bdb CAP Finance: ETH Pool0 ETH
0x4151ffcf54250a4843c76a50cbd6cd9818f3f9eda1f86a411e3ddb4286d7481a204526362022-08-17 0:53:0453 mins ago CAP Finance: ETH Pool CAP Finance: Router0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pool

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, BSD-3-Clause license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2021-11-27
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns token decimals.
     */
    function decimals() external view returns (uint8);

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

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

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

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

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

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}
interface IRouter {
    function trading() external view returns (address);

    function capPool() external view returns (address);

    function oracle() external view returns (address);

    function treasury() external view returns (address);

    function darkOracle() external view returns (address);

    function isSupportedCurrency(address currency) external view returns (bool);

    function currencies(uint256 index) external view returns (address);

    function currenciesLength() external view returns (uint256);

    function getDecimals(address currency) external view returns(uint8);

    function getPool(address currency) external view returns (address);

    function getPoolShare(address currency) external view returns(uint256);

    function getCapShare(address currency) external view returns(uint256);

    function getPoolRewards(address currency) external view returns (address);

    function getCapRewards(address currency) external view returns (address);
}
interface IRewards {
    function updateRewards(address account) external;

    function notifyRewardReceived(uint256 amount) external;
}
contract Pool {

	using SafeERC20 for IERC20; 
    using Address for address payable;

    // Contracts
	address public owner;
	address public router;
	address public trading;

	uint256 public withdrawFee = 30; // 0.3%

    address public currency;
    address public rewards; // contract

    uint256 public utilizationMultiplier = 100; // in bps

    uint256 public maxCap = 1000000 ether;

    mapping(address => uint256) private balances; // account => amount staked
    uint256 public totalSupply;

    mapping(address => uint256) lastDeposited;
    uint256 public minDepositTime = 1 hours;

    uint256 public openInterest;

	uint256 public constant UNIT = 10**18;

    // Events
    event Deposit(
    	address indexed user, 
    	address indexed currency,
    	uint256 amount, 
    	uint256 clpAmount
    );
    event Withdraw(
    	address indexed user, 
    	address indexed currency,
    	uint256 amount, 
    	uint256 clpAmount
    );

	constructor(address _currency) {
		owner = msg.sender;
		currency = _currency;
	}

	// Governance methods

	function setOwner(address newOwner) external onlyOwner {
		owner = newOwner;
	}

	function setRouter(address _router) external onlyOwner {
		router = _router;
		trading = IRouter(router).trading();
		rewards = IRouter(router).getPoolRewards(currency);
	}

	function setParams(
		uint256 _minDepositTime,
		uint256 _utilizationMultiplier,
		uint256 _maxCap,
		uint256 _withdrawFee
	) external onlyOwner {
		minDepositTime = _minDepositTime;
		utilizationMultiplier = _utilizationMultiplier;
		maxCap = _maxCap;
		withdrawFee = _withdrawFee;
	}

	// Open interest
	function updateOpenInterest(uint256 amount, bool isDecrease) external onlyTrading {
		if (isDecrease) {
			if (openInterest <= amount) {
				openInterest = 0;
			} else {
				openInterest -= amount;
			}
		} else {
			openInterest += amount;
		}
	}

	// Methods

	function deposit(uint256 amount) external payable {

		uint256 lastBalance = _getCurrentBalance();

		if (currency == address(0)) {
			amount = msg.value;
			lastBalance -= amount;
		} else {
			_transferIn(amount);
		}

		require(amount > 0, "!amount");
		require(amount + lastBalance <= maxCap, "!max-cap");

        uint256 clpAmountToMint = lastBalance == 0 || totalSupply == 0 ? amount : amount * totalSupply / lastBalance;

        lastDeposited[msg.sender] = block.timestamp;

        IRewards(rewards).updateRewards(msg.sender);

        totalSupply += clpAmountToMint;
        balances[msg.sender] += clpAmountToMint;

        emit Deposit(
        	msg.sender,
        	currency,
        	amount,
        	clpAmountToMint
        );

	}

	function withdraw(uint256 currencyAmount) external {

		require(currencyAmount > 0, "!amount");
		require(block.timestamp > lastDeposited[msg.sender] + minDepositTime, "!cooldown");

		IRewards(rewards).updateRewards(msg.sender);

		// Determine corresponding CLP amount

		uint256 currentBalance = _getCurrentBalance();
		require(currentBalance > 0 && totalSupply > 0, "!empty");

		uint256 utilization = getUtilization();
		require(utilization < 10**4, "!utilization");
		
		// CLP amount
		uint256 amount = currencyAmount * totalSupply / currentBalance;

		// Set to max if above max
		if (amount >= balances[msg.sender]) {
			amount = balances[msg.sender];
			currencyAmount = amount * currentBalance / totalSupply;
		}

		uint256 availableBalance = currentBalance * (10**4 - utilization) / 10**4;
		uint256 currencyAmountAfterFee = currencyAmount * (10**4 - withdrawFee) / 10**4;
		require(currencyAmountAfterFee <= availableBalance, "!available-balance");

		totalSupply -= amount;
		balances[msg.sender] -= amount;

		_transferOut(msg.sender, currencyAmountAfterFee);

		// Send fee to this pool's rewards contract
		uint256 feeAmount = currencyAmount - currencyAmountAfterFee;
		_transferOut(rewards, feeAmount);
		IRewards(rewards).notifyRewardReceived(feeAmount);

		emit Withdraw(
			msg.sender,
			currency,
			currencyAmountAfterFee,
			amount
		);
		
	}

	function creditUserProfit(address destination, uint256 amount) external onlyTrading {
		if (amount == 0) return;
		uint256 currentBalance = _getCurrentBalance();
		require(amount < currentBalance, "!balance");
		_transferOut(destination, amount);
	}

	// To receive ETH
	fallback() external payable {}
	receive() external payable {}

	// Utils

	function _transferIn(uint256 amount) internal {
		// adjust decimals
		uint256 decimals = IRouter(router).getDecimals(currency);
		amount = amount * (10**decimals) / UNIT;
		IERC20(currency).safeTransferFrom(msg.sender, address(this), amount);
	}

	function _transferOut(address to, uint256 amount) internal {
		if (amount == 0 || to == address(0)) return;
		// adjust decimals
		uint256 decimals = IRouter(router).getDecimals(currency);
		amount = amount * (10**decimals) / UNIT;
		if (currency == address(0)) {
			payable(to).sendValue(amount);
		} else {
			IERC20(currency).safeTransfer(to, amount);
		}
	}

	function _getCurrentBalance() internal view returns(uint256) {
		uint256 currentBalance;
		if (currency == address(0)) {
			currentBalance = address(this).balance;
		} else {
			currentBalance = IERC20(currency).balanceOf(address(this));
		}
		uint256 decimals = IRouter(router).getDecimals(currency);
		return currentBalance * UNIT / (10**decimals);
	}

	// Getters

	function getUtilization() public view returns(uint256) {
		uint256 currentBalance = _getCurrentBalance();
		if (currentBalance == 0) return 0;
		return openInterest * utilizationMultiplier / currentBalance; // in bps
	}

	function getCurrencyBalance(address account) external view returns(uint256) {
		if (totalSupply == 0) return 0;
		uint256 currentBalance = _getCurrentBalance();
		return balances[account] * currentBalance / totalSupply;
	}

	// In Clp
	function getBalance(address account) external view returns(uint256) {
		return balances[account];
	}

	// Modifier

	modifier onlyOwner() {
		require(msg.sender == owner, "!owner");
		_;
	}

	modifier onlyTrading() {
		require(msg.sender == trading, "!trading");
		_;
	}

}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_currency","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"currency","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"clpAmount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"currency","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"clpAmount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"UNIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"creditUserProfit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currency","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrencyBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUtilization","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDepositTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minDepositTime","type":"uint256"},{"internalType":"uint256","name":"_utilizationMultiplier","type":"uint256"},{"internalType":"uint256","name":"_maxCap","type":"uint256"},{"internalType":"uint256","name":"_withdrawFee","type":"uint256"}],"name":"setParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isDecrease","type":"bool"}],"name":"updateOpenInterest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"utilizationMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"currencyAmount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601e600355606460065569d3c21bcecceda1000000600755610e10600b5534801561002e57600080fd5b506040516118c93803806118c983398101604081905261004d91610080565b60008054336001600160a01b031991821617909155600480549091166001600160a01b03929092169190911790556100b0565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b61180a806100bf6000396000f3fe60806040526004361061012d5760003560e01c80639ec5a894116100a5578063ec44acf21161006c578063ec44acf214610313578063ed68350414610333578063f887ea4014610353578063f8b2cb4f14610373578063fa5a2e62146103a9578063fbbc7d7f146103bf57005b80639ec5a8941461028a578063b6b55f25146102aa578063c0d78655146102bd578063e5a6b10f146102dd578063e941fa78146102fd57005b80635b382989116100f45780635b382989146101d55780637eb71131146101eb5780637ece45e8146102005780638da5cb5b14610220578063934472f5146102585780639d8e21771461026e57005b806313af40351461013657806318160ddd1461015657806323548b8b1461017f5780632e1a7d4d14610195578063532f6690146101b557005b3661013457005b005b34801561014257600080fd5b50610134610151366004611466565b6103df565b34801561016257600080fd5b5061016c60095481565b6040519081526020015b60405180910390f35b34801561018b57600080fd5b5061016c60075481565b3480156101a157600080fd5b506101346101b03660046114e9565b610434565b3480156101c157600080fd5b506101346101d036600461151b565b6107d1565b3480156101e157600080fd5b5061016c60065481565b3480156101f757600080fd5b5061016c610867565b34801561020c57600080fd5b5061013461021b36600461154b565b6108a2565b34801561022c57600080fd5b50600054610240906001600160a01b031681565b6040516001600160a01b039091168152602001610176565b34801561026457600080fd5b5061016c600b5481565b34801561027a57600080fd5b5061016c670de0b6b3a764000081565b34801561029657600080fd5b50600554610240906001600160a01b031681565b6101346102b83660046114e9565b6108e0565b3480156102c957600080fd5b506101346102d8366004611466565b610acc565b3480156102e957600080fd5b50600454610240906001600160a01b031681565b34801561030957600080fd5b5061016c60035481565b34801561031f57600080fd5b50600254610240906001600160a01b031681565b34801561033f57600080fd5b5061016c61034e366004611466565b610c3b565b34801561035f57600080fd5b50600154610240906001600160a01b031681565b34801561037f57600080fd5b5061016c61038e366004611466565b6001600160a01b031660009081526008602052604090205490565b3480156103b557600080fd5b5061016c600c5481565b3480156103cb57600080fd5b506101346103da3660046114a0565b610c96565b6000546001600160a01b031633146104125760405162461bcd60e51b8152600401610409906115ef565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000811161046e5760405162461bcd60e51b815260206004820152600760248201526608585b5bdd5b9d60ca1b6044820152606401610409565b600b54336000908152600a602052604090205461048b919061160f565b42116104c55760405162461bcd60e51b815260206004820152600960248201526810b1b7b7b63237bbb760b91b6044820152606401610409565b600554604051635fd6196560e01b81523360048201526001600160a01b0390911690635fd6196590602401600060405180830381600087803b15801561050a57600080fd5b505af115801561051e573d6000803e3d6000fd5b50505050600061052c610d39565b905060008111801561054057506000600954115b6105755760405162461bcd60e51b815260206004820152600660248201526521656d70747960d01b6044820152606401610409565b600061057f610867565b905061271081106105c15760405162461bcd60e51b815260206004820152600c60248201526b10baba34b634bd30ba34b7b760a11b6044820152606401610409565b600082600954856105d29190611736565b6105dc9190611627565b3360009081526008602052604090205490915081106106205750336000908152600860205260409020546009546106138483611736565b61061d9190611627565b93505b600061271061062f8482611755565b6106399086611736565b6106439190611627565b9050600061271060035461271061065a9190611755565b6106649088611736565b61066e9190611627565b9050818111156106b55760405162461bcd60e51b815260206004820152601260248201527121617661696c61626c652d62616c616e636560701b6044820152606401610409565b82600960008282546106c79190611755565b909155505033600090815260086020526040812080548592906106eb908490611755565b909155506106fb90503382610e8b565b60006107078288611755565b600554909150610720906001600160a01b031682610e8b565b60055460405163e38a195b60e01b8152600481018390526001600160a01b039091169063e38a195b90602401600060405180830381600087803b15801561076657600080fd5b505af115801561077a573d6000803e3d6000fd5b505060045460408051868152602081018990526001600160a01b0390921693503392507ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567910160405180910390a350505050505050565b6002546001600160a01b031633146108165760405162461bcd60e51b81526020600482015260086024820152672174726164696e6760c01b6044820152606401610409565b801561084b5781600c541161082e576000600c555050565b81600c60008282546108409190611755565b909155506108639050565b81600c600082825461085d919061160f565b90915550505b5050565b600080610872610d39565b90508061088157600091505090565b80600654600c546108929190611736565b61089c9190611627565b91505090565b6000546001600160a01b031633146108cc5760405162461bcd60e51b8152600401610409906115ef565b600b93909355600691909155600755600355565b60006108ea610d39565b6004549091506001600160a01b03166109115734915061090a8282611755565b905061091a565b61091a82610f96565b600082116109545760405162461bcd60e51b815260206004820152600760248201526608585b5bdd5b9d60ca1b6044820152606401610409565b600754610961828461160f565b111561099a5760405162461bcd60e51b81526020600482015260086024820152670216d61782d6361760c41b6044820152606401610409565b60008115806109a95750600954155b6109cb5781600954846109bc9190611736565b6109c69190611627565b6109cd565b825b336000818152600a6020526040908190204290556005549051635fd6196560e01b815260048101929092529192506001600160a01b0390911690635fd6196590602401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050508060096000828254610a54919061160f565b90915550503360009081526008602052604081208054839290610a7890849061160f565b909155505060045460408051858152602081018490526001600160a01b039092169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a3505050565b6000546001600160a01b03163314610af65760405162461bcd60e51b8152600401610409906115ef565b600180546001600160a01b0319166001600160a01b03831690811790915560408051637622567960e11b8152905163ec44acf291600480820192602092909190829003018186803b158015610b4a57600080fd5b505afa158015610b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b829190611483565b600280546001600160a01b0319166001600160a01b03928316179055600154600480546040516356e8b9cd60e11b81529084169181019190915291169063add1739a9060240160206040518083038186803b158015610be057600080fd5b505afa158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c189190611483565b600580546001600160a01b0319166001600160a01b039290921691909117905550565b600060095460001415610c5057506000919050565b6000610c5a610d39565b6009546001600160a01b03851660009081526008602052604090205491925090610c85908390611736565b610c8f9190611627565b9392505050565b6002546001600160a01b03163314610cdb5760405162461bcd60e51b81526020600482015260086024820152672174726164696e6760c01b6044820152606401610409565b80610ce4575050565b6000610cee610d39565b9050808210610d2a5760405162461bcd60e51b81526020600482015260086024820152672162616c616e636560c01b6044820152606401610409565b610d348383610e8b565b505050565b60045460009081906001600160a01b0316610d55575047610dd4565b600480546040516370a0823160e01b815230928101929092526001600160a01b0316906370a082319060240160206040518083038186803b158015610d9957600080fd5b505afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd19190611502565b90505b6001546004805460405163067aa55560e51b81526001600160a01b0391821692810192909252600092169063cf54aaa09060240160206040518083038186803b158015610e2057600080fd5b505afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e58919061157d565b60ff169050610e6881600a61168c565b610e7a670de0b6b3a764000084611736565b610e849190611627565b9250505090565b801580610e9f57506001600160a01b038216155b15610ea8575050565b6001546004805460405163067aa55560e51b81526001600160a01b0391821692810192909252600092169063cf54aaa09060240160206040518083038186803b158015610ef457600080fd5b505afa158015610f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2c919061157d565b60ff169050670de0b6b3a7640000610f4582600a61168c565b610f4f9084611736565b610f599190611627565b6004549092506001600160a01b0316610f7f57610d346001600160a01b03841683611062565b600454610d34906001600160a01b0316848461117b565b6001546004805460405163067aa55560e51b81526001600160a01b0391821692810192909252600092169063cf54aaa09060240160206040518083038186803b158015610fe257600080fd5b505afa158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a919061157d565b60ff169050670de0b6b3a764000061103382600a61168c565b61103d9084611736565b6110479190611627565b600454909250610863906001600160a01b03163330856111de565b804710156110b25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610409565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146110ff576040519150601f19603f3d011682016040523d82523d6000602084013e611104565b606091505b5050905080610d345760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610409565b6040516001600160a01b038316602482015260448101829052610d3490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261121c565b6040516001600160a01b03808516602483015283166044820152606481018290526112169085906323b872dd60e01b906084016111a7565b50505050565b6000611271826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112ee9092919063ffffffff16565b805190915015610d34578080602001905181019061128f91906114cc565b610d345760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610409565b60606112fd8484600085611305565b949350505050565b6060824710156113665760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610409565b843b6113b45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610409565b600080866001600160a01b031685876040516113d091906115a0565b60006040518083038185875af1925050503d806000811461140d576040519150601f19603f3d011682016040523d82523d6000602084013e611412565b606091505b509150915061142282828661142d565b979650505050505050565b6060831561143c575081610c8f565b82511561144c5782518084602001fd5b8160405162461bcd60e51b815260040161040991906115bc565b60006020828403121561147857600080fd5b8135610c8f816117ae565b60006020828403121561149557600080fd5b8151610c8f816117ae565b600080604083850312156114b357600080fd5b82356114be816117ae565b946020939093013593505050565b6000602082840312156114de57600080fd5b8151610c8f816117c6565b6000602082840312156114fb57600080fd5b5035919050565b60006020828403121561151457600080fd5b5051919050565b6000806040838503121561152e57600080fd5b823591506020830135611540816117c6565b809150509250929050565b6000806000806080858703121561156157600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561158f57600080fd5b815160ff81168114610c8f57600080fd5b600082516115b281846020870161176c565b9190910192915050565b60208152600082518060208401526115db81604085016020870161176c565b601f01601f19169190910160400192915050565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b6000821982111561162257611622611798565b500190565b60008261164457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561168457816000190482111561166a5761166a611798565b8085161561167757918102915b93841c939080029061164e565b509250929050565b6000610c8f83836000826116a257506001611730565b816116af57506000611730565b81600181146116c557600281146116cf576116eb565b6001915050611730565b60ff8411156116e0576116e0611798565b50506001821b611730565b5060208310610133831016604e8410600b841016171561170e575081810a611730565b6117188383611649565b806000190482111561172c5761172c611798565b0290505b92915050565b600081600019048311821515161561175057611750611798565b500290565b60008282101561176757611767611798565b500390565b60005b8381101561178757818101518382015260200161176f565b838111156112165750506000910152565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146117c357600080fd5b50565b80151581146117c357600080fdfea2646970667358221220d33894dcbe3f7275da874ed2c3a9eaf53a43b6f9a69dc8d31bd350269ec0b03664736f6c634300080700330000000000000000000000000000000000000000000000000000000000000000

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

0000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _currency (address): 0x0000000000000000000000000000000000000000

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


Deployed ByteCode Sourcemap

15913:6302:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17020:81;;;;;;;;;;-1:-1:-1;17020:81:0;;;;;:::i;:::-;;:::i;16408:26::-;;;;;;;;;;;;;;;;;;;9335:25:1;;;9323:2;9308:18;16408:26:0;;;;;;;;16283:37;;;;;;;;;;;;;;;;18665:1412;;;;;;;;;;-1:-1:-1;18665:1412:0;;;;;:::i;:::-;;:::i;17606:258::-;;;;;;;;;;-1:-1:-1;17606:258:0;;;;;:::i;:::-;;:::i;16222:42::-;;;;;;;;;;;;;;;;21455:223;;;;;;;;;;;;;:::i;17287:295::-;;;;;;;;;;-1:-1:-1;17287:295:0;;;;;:::i;:::-;;:::i;16024:20::-;;;;;;;;;;-1:-1:-1;16024:20:0;;;;-1:-1:-1;;;;;16024:20:0;;;;;;-1:-1:-1;;;;;3101:32:1;;;3083:51;;3071:2;3056:18;16024:20:0;2937:203:1;16491:39:0;;;;;;;;;;;;;;;;16572:37;;;;;;;;;;;;16603:6;16572:37;;16179:22;;;;;;;;;;-1:-1:-1;16179:22:0;;;;-1:-1:-1;;;;;16179:22:0;;;17884:776;;;;;;:::i;:::-;;:::i;17106:176::-;;;;;;;;;;-1:-1:-1;17106:176:0;;;;;:::i;:::-;;:::i;16149:23::-;;;;;;;;;;-1:-1:-1;16149:23:0;;;;-1:-1:-1;;;;;16149:23:0;;;16101:31;;;;;;;;;;;;;;;;16073:22;;;;;;;;;;-1:-1:-1;16073:22:0;;;;-1:-1:-1;;;;;16073:22:0;;;21683:226;;;;;;;;;;-1:-1:-1;21683:226:0;;;;;:::i;:::-;;:::i;16048:21::-;;;;;;;;;;-1:-1:-1;16048:21:0;;;;-1:-1:-1;;;;;16048:21:0;;;21926:102;;;;;;;;;;-1:-1:-1;21926:102:0;;;;;:::i;:::-;-1:-1:-1;;;;;22006:17:0;21985:7;22006:17;;;:8;:17;;;;;;;21926:102;16539:27;;;;;;;;;;;;;;;;20082:254;;;;;;;;;;-1:-1:-1;20082:254:0;;;;;:::i;:::-;;:::i;17020:81::-;22097:5;;-1:-1:-1;;;;;22097:5:0;22083:10;:19;22075:38;;;;-1:-1:-1;;;22075:38:0;;;;;;;:::i;:::-;;;;;;;;;17080:5:::1;:16:::0;;-1:-1:-1;;;;;;17080:16:0::1;-1:-1:-1::0;;;;;17080:16:0;;;::::1;::::0;;;::::1;::::0;;17020:81::o;18665:1412::-;18748:1;18731:14;:18;18723:38;;;;-1:-1:-1;;;18723:38:0;;8311:2:1;18723:38:0;;;8293:21:1;8350:1;8330:18;;;8323:29;-1:-1:-1;;;8368:18:1;;;8361:37;8415:18;;18723:38:0;8109:330:1;18723:38:0;18820:14;;18806:10;18792:25;;;;:13;:25;;;;;;:42;;18820:14;18792:42;:::i;:::-;18774:15;:60;18766:82;;;;-1:-1:-1;;;18766:82:0;;4730:2:1;18766:82:0;;;4712:21:1;4769:1;4749:18;;;4742:29;-1:-1:-1;;;4787:18:1;;;4780:39;4836:18;;18766:82:0;4528:332:1;18766:82:0;18864:7;;18855:43;;-1:-1:-1;;;18855:43:0;;18887:10;18855:43;;;3083:51:1;-1:-1:-1;;;;;18864:7:0;;;;18855:31;;3056:18:1;;18855:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18948:22;18973:20;:18;:20::i;:::-;18948:45;;19023:1;19006:14;:18;:37;;;;;19042:1;19028:11;;:15;19006:37;18998:56;;;;-1:-1:-1;;;18998:56:0;;5739:2:1;18998:56:0;;;5721:21:1;5778:1;5758:18;;;5751:29;-1:-1:-1;;;5796:18:1;;;5789:36;5842:18;;18998:56:0;5537:329:1;18998:56:0;19061:19;19083:16;:14;:16::i;:::-;19061:38;;19126:5;19112:11;:19;19104:44;;;;-1:-1:-1;;;19104:44:0;;7265:2:1;19104:44:0;;;7247:21:1;7304:2;7284:18;;;7277:30;-1:-1:-1;;;7323:18:1;;;7316:42;7375:18;;19104:44:0;7063:336:1;19104:44:0;19174:14;19222;19208:11;;19191:14;:28;;;;:::i;:::-;:45;;;;:::i;:::-;19296:10;19287:20;;;;:8;:20;;;;;;19174:62;;-1:-1:-1;19277:30:0;;19273:137;;-1:-1:-1;19333:10:0;19324:20;;;;:8;:20;;;;;;19393:11;;19367:23;19376:14;19324:20;19367:23;:::i;:::-;:37;;;;:::i;:::-;19350:54;;19273:137;19416:24;19484:5;19461:19;19469:11;19484:5;19461:19;:::i;:::-;19443:38;;:14;:38;:::i;:::-;:46;;;;:::i;:::-;19416:73;;19494:30;19568:5;19553:11;;19545:5;:19;;;;:::i;:::-;19527:38;;:14;:38;:::i;:::-;:46;;;;:::i;:::-;19494:79;;19612:16;19586:22;:42;;19578:73;;;;-1:-1:-1;;;19578:73:0;;7606:2:1;19578:73:0;;;7588:21:1;7645:2;7625:18;;;7618:30;-1:-1:-1;;;7664:18:1;;;7657:48;7722:18;;19578:73:0;7404:342:1;19578:73:0;19673:6;19658:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;19693:10:0;19684:20;;;;:8;:20;;;;;:30;;19708:6;;19684:20;:30;;19708:6;;19684:30;:::i;:::-;;;;-1:-1:-1;19721:48:0;;-1:-1:-1;19734:10:0;19746:22;19721:12;:48::i;:::-;19823:17;19843:39;19860:22;19843:14;:39;:::i;:::-;19900:7;;19823:59;;-1:-1:-1;19887:32:0;;-1:-1:-1;;;;;19900:7:0;19823:59;19887:12;:32::i;:::-;19933:7;;19924:49;;-1:-1:-1;;;19924:49:0;;;;;9335:25:1;;;-1:-1:-1;;;;;19933:7:0;;;;19924:38;;9308:18:1;;19924:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20015:8:0;;19985:83;;;9545:25:1;;;9601:2;9586:18;;9579:34;;;-1:-1:-1;;;;;20015:8:0;;;;-1:-1:-1;19999:10:0;;-1:-1:-1;19985:83:0;;9518:18:1;19985:83:0;;;;;;;18716:1361;;;;;;18665:1412;:::o;17606:258::-;22179:7;;-1:-1:-1;;;;;22179:7:0;22165:10;:21;22157:42;;;;-1:-1:-1;;;22157:42:0;;4394:2:1;22157:42:0;;;4376:21:1;4433:1;4413:18;;;4406:29;-1:-1:-1;;;4451:18:1;;;4444:38;4499:18;;22157:42:0;4192:331:1;22157:42:0;17697:10:::1;17693:167;;;17735:6;17719:12;;:22;17715:100;;17765:1;17750:12;:16:::0;17606:258;;:::o;17715:100::-:1;17802:6;17786:12;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;17693:167:0::1;::::0;-1:-1:-1;17693:167:0::1;;17848:6;17832:12;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17693:167:0::1;17606:258:::0;;:::o;21455:223::-;21501:7;21515:22;21540:20;:18;:20::i;:::-;21515:45;-1:-1:-1;21569:19:0;21565:33;;21597:1;21590:8;;;21455:223;:::o;21565:33::-;21649:14;21625:21;;21610:12;;:36;;;;:::i;:::-;:53;;;;:::i;:::-;21603:60;;;21455:223;:::o;17287:295::-;22097:5;;-1:-1:-1;;;;;22097:5:0;22083:10;:19;22075:38;;;;-1:-1:-1;;;22075:38:0;;;;;;;:::i;:::-;17442:14:::1;:32:::0;;;;17479:21:::1;:46:::0;;;;17530:6:::1;:16:::0;17551:11:::1;:26:::0;17287:295::o;17884:776::-;17941:19;17963:20;:18;:20::i;:::-;17994:8;;17941:42;;-1:-1:-1;;;;;;17994:8:0;17990:122;;18033:9;;-1:-1:-1;18048:21:0;18033:9;18048:21;;:::i;:::-;;;17990:122;;;18087:19;18099:6;18087:11;:19::i;:::-;18135:1;18126:6;:10;18118:30;;;;-1:-1:-1;;;18118:30:0;;8311:2:1;18118:30:0;;;8293:21:1;8350:1;8330:18;;;8323:29;-1:-1:-1;;;8368:18:1;;;8361:37;8415:18;;18118:30:0;8109:330:1;18118:30:0;18185:6;;18161:20;18170:11;18161:6;:20;:::i;:::-;:30;;18153:51;;;;-1:-1:-1;;;18153:51:0;;5067:2:1;18153:51:0;;;5049:21:1;5106:1;5086:18;;;5079:29;-1:-1:-1;;;5124:18:1;;;5117:38;5172:18;;18153:51:0;4865:331:1;18153:51:0;18217:23;18243:16;;;:36;;-1:-1:-1;18263:11:0;;:16;18243:36;:82;;18314:11;18300;;18291:6;:20;;;;:::i;:::-;:34;;;;:::i;:::-;18243:82;;;18282:6;18243:82;18352:10;18338:25;;;;:13;:25;;;;;;;18366:15;18338:43;;18403:7;;18394:43;;-1:-1:-1;;;18394:43:0;;;;;3083:51:1;;;;18217:108:0;;-1:-1:-1;;;;;;18403:7:0;;;;18394:31;;3056:18:1;;18394:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18465:15;18450:11;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;18500:10:0;18491:20;;;;:8;:20;;;;;:39;;18515:15;;18491:20;:39;;18515:15;;18491:39;:::i;:::-;;;;-1:-1:-1;;18589:8:0;;18548:105;;;9545:25:1;;;9601:2;9586:18;;9579:34;;;-1:-1:-1;;;;;18589:8:0;;;;18567:10;;18548:105;;9518:18:1;18548:105:0;;;;;;;17934:726;;17884:776;:::o;17106:176::-;22097:5;;-1:-1:-1;;;;;22097:5:0;22083:10;:19;22075:38;;;;-1:-1:-1;;;22075:38:0;;;;;;;:::i;:::-;17166:6:::1;:16:::0;;-1:-1:-1;;;;;;17166:16:0::1;-1:-1:-1::0;;;;;17166:16:0;::::1;::::0;;::::1;::::0;;;17197:25:::1;::::0;;-1:-1:-1;;;17197:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;17166:16;17197:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17187:7;:35:::0;;-1:-1:-1;;;;;;17187:35:0::1;-1:-1:-1::0;;;;;17187:35:0;;::::1;;::::0;;-1:-1:-1;17245:6:0;17268:8:::1;::::0;;17237:40:::1;::::0;-1:-1:-1;;;17237:40:0;;17268:8;;::::1;17237:40:::0;;::::1;3083:51:1::0;;;;17245:6:0;::::1;::::0;17237:30:::1;::::0;3056:18:1;;17237:40:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17227:7;:50:::0;;-1:-1:-1;;;;;;17227:50:0::1;-1:-1:-1::0;;;;;17227:50:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;17106:176:0:o;21683:226::-;21750:7;21768:11;;21783:1;21768:16;21764:30;;;-1:-1:-1;21793:1:0;;21683:226;-1:-1:-1;21683:226:0:o;21764:30::-;21799:22;21824:20;:18;:20::i;:::-;21893:11;;-1:-1:-1;;;;;21856:17:0;;;;;;:8;:17;;;;;;21799:45;;-1:-1:-1;21893:11:0;21856:34;;21799:45;;21856:34;:::i;:::-;:48;;;;:::i;:::-;21849:55;21683:226;-1:-1:-1;;;21683:226:0:o;20082:254::-;22179:7;;-1:-1:-1;;;;;22179:7:0;22165:10;:21;22157:42;;;;-1:-1:-1;;;22157:42:0;;4394:2:1;22157:42:0;;;4376:21:1;4433:1;4413:18;;;4406:29;-1:-1:-1;;;4451:18:1;;;4444:38;4499:18;;22157:42:0;4192:331:1;22157:42:0;20175:11;20171:24:::1;;17606:258:::0;;:::o;20171:24::-:1;20199:22;20224:20;:18;:20::i;:::-;20199:45;;20266:14;20257:6;:23;20249:44;;;::::0;-1:-1:-1;;;20249:44:0;;5403:2:1;20249:44:0::1;::::0;::::1;5385:21:1::0;5442:1;5422:18;;;5415:29;-1:-1:-1;;;5460:18:1;;;5453:38;5508:18;;20249:44:0::1;5201:331:1::0;20249:44:0::1;20298:33;20311:11;20324:6;20298:12;:33::i;:::-;20166:170;20082:254:::0;;:::o;21073:362::-;21170:8;;21125:7;;;;-1:-1:-1;;;;;21170:8:0;21166:154;;-1:-1:-1;21217:21:0;21166:154;;;21280:8;;;21273:41;;-1:-1:-1;;;21273:41:0;;21308:4;21273:41;;;3083:51:1;;;;-1:-1:-1;;;;;21280:8:0;;21273:26;;3056:18:1;;21273:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21256:58;;21166:154;21351:6;;21371:8;;;21343:37;;-1:-1:-1;;;21343:37:0;;-1:-1:-1;;;;;21371:8:0;;;21343:37;;;3083:51:1;;;;21324:16:0;;21351:6;;21343:27;;3056:18:1;;21343:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21324:56;;;-1:-1:-1;21417:12:0;21324:56;21417:2;:12;:::i;:::-;21392:21;16603:6;21392:14;:21;:::i;:::-;:38;;;;:::i;:::-;21385:45;;;;21073:362;:::o;20697:371::-;20765:11;;;:31;;-1:-1:-1;;;;;;20780:16:0;;;20765:31;20761:44;;;20697:371;;:::o;20761:44::-;20858:6;;20878:8;;;20850:37;;-1:-1:-1;;;20850:37:0;;-1:-1:-1;;;;;20878:8:0;;;20850:37;;;3083:51:1;;;;20831:16:0;;20858:6;;20850:27;;3056:18:1;;20850:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20831:56;;;-1:-1:-1;16603:6:0;20911:12;20831:56;20911:2;:12;:::i;:::-;20901:23;;:6;:23;:::i;:::-;:30;;;;:::i;:::-;20940:8;;20892:39;;-1:-1:-1;;;;;;20940:8:0;20936:128;;20970:29;-1:-1:-1;;;;;20970:21:0;;20992:6;20970:21;:29::i;20936:128::-;21024:8;;21017:41;;-1:-1:-1;;;;;21024:8:0;21047:2;21051:6;21017:29;:41::i;20441:251::-;20541:6;;20561:8;;;20533:37;;-1:-1:-1;;;20533:37:0;;-1:-1:-1;;;;;20561:8:0;;;20533:37;;;3083:51:1;;;;20514:16:0;;20541:6;;20533:27;;3056:18:1;;20533:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20514:56;;;-1:-1:-1;16603:6:0;20594:12;20514:56;20594:2;:12;:::i;:::-;20584:23;;:6;:23;:::i;:::-;:30;;;;:::i;:::-;20626:8;;20575:39;;-1:-1:-1;20619:68:0;;-1:-1:-1;;;;;20626:8:0;20653:10;20673:4;20575:39;20619:33;:68::i;4925:317::-;5040:6;5015:21;:31;;5007:73;;;;-1:-1:-1;;;5007:73:0;;6500:2:1;5007:73:0;;;6482:21:1;6539:2;6519:18;;;6512:30;6578:31;6558:18;;;6551:59;6627:18;;5007:73:0;6298:353:1;5007:73:0;5094:12;5112:9;-1:-1:-1;;;;;5112:14:0;5134:6;5112:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5093:52;;;5164:7;5156:78;;;;-1:-1:-1;;;5156:78:0;;6073:2:1;5156:78:0;;;6055:21:1;6112:2;6092:18;;;6085:30;6151:34;6131:18;;;6124:62;6222:28;6202:18;;;6195:56;6268:19;;5156:78:0;5871:422:1;11458:211:0;11602:58;;-1:-1:-1;;;;;3717:32:1;;11602:58:0;;;3699:51:1;3766:18;;;3759:34;;;11575:86:0;;11595:5;;-1:-1:-1;;;11625:23:0;3672:18:1;;11602:58:0;;;;-1:-1:-1;;11602:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;11602:58:0;-1:-1:-1;;;;;;11602:58:0;;;;;;;;;;11575:19;:86::i;11677:248::-;11848:68;;-1:-1:-1;;;;;3403:15:1;;;11848:68:0;;;3385:34:1;3455:15;;3435:18;;;3428:43;3487:18;;;3480:34;;;11821:96:0;;11841:5;;-1:-1:-1;;;11871:27:0;3320:18:1;;11848:68:0;3145:375:1;11821:96:0;11677:248;;;;:::o;14031:716::-;14455:23;14481:69;14509:4;14481:69;;;;;;;;;;;;;;;;;14489:5;-1:-1:-1;;;;;14481:27:0;;;:69;;;;;:::i;:::-;14565:17;;14455:95;;-1:-1:-1;14565:21:0;14561:179;;14662:10;14651:30;;;;;;;;;;;;:::i;:::-;14643:85;;;;-1:-1:-1;;;14643:85:0;;8646:2:1;14643:85:0;;;8628:21:1;8685:2;8665:18;;;8658:30;8724:34;8704:18;;;8697:62;-1:-1:-1;;;8775:18:1;;;8768:40;8825:19;;14643:85:0;8444:406:1;6409:229:0;6546:12;6578:52;6600:6;6608:4;6614:1;6617:12;6578:21;:52::i;:::-;6571:59;6409:229;-1:-1:-1;;;;6409:229:0:o;7529:510::-;7699:12;7757:5;7732:21;:30;;7724:81;;;;-1:-1:-1;;;7724:81:0;;6858:2:1;7724:81:0;;;6840:21:1;6897:2;6877:18;;;6870:30;6936:34;6916:18;;;6909:62;-1:-1:-1;;;6987:18:1;;;6980:36;7033:19;;7724:81:0;6656:402:1;7724:81:0;3926:20;;7816:60;;;;-1:-1:-1;;;7816:60:0;;7953:2:1;7816:60:0;;;7935:21:1;7992:2;7972:18;;;7965:30;8031:31;8011:18;;;8004:59;8080:18;;7816:60:0;7751:353:1;7816:60:0;7890:12;7904:23;7931:6;-1:-1:-1;;;;;7931:11:0;7950:5;7957:4;7931:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7889:73;;;;7980:51;7997:7;8006:10;8018:12;7980:16;:51::i;:::-;7973:58;7529:510;-1:-1:-1;;;;;;;7529:510:0:o;10215:712::-;10365:12;10394:7;10390:530;;;-1:-1:-1;10425:10:0;10418:17;;10390:530;10539:17;;:21;10535:374;;10737:10;10731:17;10798:15;10785:10;10781:2;10777:19;10770:44;10535:374;10880:12;10873:20;;-1:-1:-1;;;10873:20:0;;;;;;;;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:315::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;827:2;812:18;;;;799:32;;-1:-1:-1;;;522:315:1:o;842:245::-;909:6;962:2;950:9;941:7;937:23;933:32;930:52;;;978:1;975;968:12;930:52;1010:9;1004:16;1029:28;1051:5;1029:28;:::i;1092:180::-;1151:6;1204:2;1192:9;1183:7;1179:23;1175:32;1172:52;;;1220:1;1217;1210:12;1172:52;-1:-1:-1;1243:23:1;;1092:180;-1:-1:-1;1092:180:1:o;1277:184::-;1347:6;1400:2;1388:9;1379:7;1375:23;1371:32;1368:52;;;1416:1;1413;1406:12;1368:52;-1:-1:-1;1439:16:1;;1277:184;-1:-1:-1;1277:184:1:o;1466:309::-;1531:6;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1644:9;1631:23;1621:33;;1704:2;1693:9;1689:18;1676:32;1717:28;1739:5;1717:28;:::i;:::-;1764:5;1754:15;;;1466:309;;;;;:::o;1780:385::-;1866:6;1874;1882;1890;1943:3;1931:9;1922:7;1918:23;1914:33;1911:53;;;1960:1;1957;1950:12;1911:53;-1:-1:-1;;1983:23:1;;;2053:2;2038:18;;2025:32;;-1:-1:-1;2104:2:1;2089:18;;2076:32;;2155:2;2140:18;2127:32;;-1:-1:-1;1780:385:1;-1:-1:-1;1780:385:1:o;2170:273::-;2238:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:52;;;2307:1;2304;2297:12;2259:52;2339:9;2333:16;2389:4;2382:5;2378:16;2371:5;2368:27;2358:55;;2409:1;2406;2399:12;2448:274;2577:3;2615:6;2609:13;2631:53;2677:6;2672:3;2665:4;2657:6;2653:17;2631:53;:::i;:::-;2700:16;;;;;2448:274;-1:-1:-1;;2448:274:1:o;3804:383::-;3953:2;3942:9;3935:21;3916:4;3985:6;3979:13;4028:6;4023:2;4012:9;4008:18;4001:34;4044:66;4103:6;4098:2;4087:9;4083:18;4078:2;4070:6;4066:15;4044:66;:::i;:::-;4171:2;4150:15;-1:-1:-1;;4146:29:1;4131:45;;;;4178:2;4127:54;;3804:383;-1:-1:-1;;3804:383:1:o;8855:329::-;9057:2;9039:21;;;9096:1;9076:18;;;9069:29;-1:-1:-1;;;9129:2:1;9114:18;;9107:36;9175:2;9160:18;;8855:329::o;9624:128::-;9664:3;9695:1;9691:6;9688:1;9685:13;9682:39;;;9701:18;;:::i;:::-;-1:-1:-1;9737:9:1;;9624:128::o;9757:217::-;9797:1;9823;9813:132;;9867:10;9862:3;9858:20;9855:1;9848:31;9902:4;9899:1;9892:15;9930:4;9927:1;9920:15;9813:132;-1:-1:-1;9959:9:1;;9757:217::o;9979:422::-;10068:1;10111:5;10068:1;10125:270;10146:7;10136:8;10133:21;10125:270;;;10205:4;10201:1;10197:6;10193:17;10187:4;10184:27;10181:53;;;10214:18;;:::i;:::-;10264:7;10254:8;10250:22;10247:55;;;10284:16;;;;10247:55;10363:22;;;;10323:15;;;;10125:270;;;10129:3;9979:422;;;;;:::o;10406:131::-;10466:5;10495:36;10522:8;10516:4;10591:5;10621:8;10611:80;;-1:-1:-1;10662:1:1;10676:5;;10611:80;10710:4;10700:76;;-1:-1:-1;10747:1:1;10761:5;;10700:76;10792:4;10810:1;10805:59;;;;10878:1;10873:130;;;;10785:218;;10805:59;10835:1;10826:10;;10849:5;;;10873:130;10910:3;10900:8;10897:17;10894:43;;;10917:18;;:::i;:::-;-1:-1:-1;;10973:1:1;10959:16;;10988:5;;10785:218;;11087:2;11077:8;11074:16;11068:3;11062:4;11059:13;11055:36;11049:2;11039:8;11036:16;11031:2;11025:4;11022:12;11018:35;11015:77;11012:159;;;-1:-1:-1;11124:19:1;;;11156:5;;11012:159;11203:34;11228:8;11222:4;11203:34;:::i;:::-;11273:6;11269:1;11265:6;11261:19;11252:7;11249:32;11246:58;;;11284:18;;:::i;:::-;11322:20;;-1:-1:-1;10542:806:1;;;;;:::o;11353:168::-;11393:7;11459:1;11455;11451:6;11447:14;11444:1;11441:21;11436:1;11429:9;11422:17;11418:45;11415:71;;;11466:18;;:::i;:::-;-1:-1:-1;11506:9:1;;11353:168::o;11526:125::-;11566:4;11594:1;11591;11588:8;11585:34;;;11599:18;;:::i;:::-;-1:-1:-1;11636:9:1;;11526:125::o;11656:258::-;11728:1;11738:113;11752:6;11749:1;11746:13;11738:113;;;11828:11;;;11822:18;11809:11;;;11802:39;11774:2;11767:10;11738:113;;;11869:6;11866:1;11863:13;11860:48;;;-1:-1:-1;;11904:1:1;11886:16;;11879:27;11656:258::o;11919:127::-;11980:10;11975:3;11971:20;11968:1;11961:31;12011:4;12008:1;12001:15;12035:4;12032:1;12025:15;12051:131;-1:-1:-1;;;;;12126:31:1;;12116:42;;12106:70;;12172:1;12169;12162:12;12106:70;12051:131;:::o;12187:118::-;12273:5;12266:13;12259:21;12252:5;12249:32;12239:60;;12295:1;12292;12285:12

Metadata Hash

d33894dcbe3f7275da874ed2c3a9eaf53a43b6f9a69dc8d31bd350269ec0b036
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.