Contract 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b

Contract Overview

Balance:
0.942826662716522322 MATIC

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xaa085ec9d40e6bde55eee45b423b0c8aa4e9c9160eb1b8574585b7a33cc186b5Edit Task Time L...292972922022-11-23 14:05:554 days 1 hr ago0x757c008f0ac1df63ff88ef1bb83ce05426273c95 IN  0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b0 MATIC0.000046862249 1.131009557
0xaecb274dbce44119e4aa77d8ae776f6cb3c62420a671549b9ce40ef3b28afb50Edit Task Interv...292972812022-11-23 14:05:004 days 1 hr ago0x757c008f0ac1df63ff88ef1bb83ce05426273c95 IN  0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b0 MATIC0.000033294659 1.13100956
0x6b9ee74f3d9cbf5dc3db20c1604756d1654039145a4045c8db659c2012009b39Create Task292971072022-11-23 13:50:274 days 1 hr ago0x757c008f0ac1df63ff88ef1bb83ce05426273c95 IN  0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b1 MATIC0.0021152231211.131009557
0x30e3c2ed98cc25bba8671ae124c573732f7f663b40847e68359798b5e95a5704Deposit USDT292971062022-11-23 13:50:224 days 1 hr ago0x757c008f0ac1df63ff88ef1bb83ce05426273c95 IN  0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b0 MATIC0.0001041580631.131009557
0x832abab805617220bde21918e9281de4fb09499d1c9200a4b48d0142a30d18660x61012060292970952022-11-23 13:49:274 days 1 hr ago0x757c008f0ac1df63ff88ef1bb83ce05426273c95 IN  Create: swapHelperDiyTask20 MATIC0.0047308659491.131009558
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa3996350609458c835f20d913d200ca4a32acd6fd6acd99b4da502b822330f27293158572022-11-24 15:57:502 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.00090313523519702 MATIC
0x7394c616c516a1274c713620643ac337e4ce3a5d7e41c3ab2f0c36d4de12c8ef293158192022-11-24 15:54:392 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000889687910321119 MATIC
0xf37a0d8b6b6ed4cb1d0f555052a7b08596c588264cd98c4763c8bfa05492555c293157742022-11-24 15:50:532 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000891163788816665 MATIC
0x4dfc9a2a503f6fb915979c44841ef6f993ae3fd18af6403cf95e2af755e92563293157242022-11-24 15:46:432 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000868428737910902 MATIC
0x18945fae5dd6349e26e1ec1834d8f07a031e59a3abd0915e8c317ca93ee0c32b293156762022-11-24 15:42:422 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000858132118248482 MATIC
0x39d9fb3b0e9922a0ed175fdd32544093f61ddcc470926baa60ac9f6a187d072d293156302022-11-24 15:38:512 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000918888642391307 MATIC
0x9f281506e0f8c24d3dd66fc35909fd85e38fbb300ef5da979eb8b4a3af5b9f8c293155882022-11-24 15:35:212 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000947702625344125 MATIC
0x85f0bd935ca87e607d113367328f830dec398a60a08febee61325cbac7205406293155342022-11-24 15:30:502 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000904929653651786 MATIC
0x66f31cb6d27ddefb9e2b435023620f50faf63e4e915fbd6ebf6cfa77a3f83255293155002022-11-24 15:27:592 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000880075257130446 MATIC
0xc2890a719a131bae9bba1ef7d1a9b7f7226b09447725d8ebd9d98dfa73d2219a293154682022-11-24 15:25:192 days 23 hrs ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000883999023780392 MATIC
0xd8f6f67bdec6767170c6bd927663e31bbb29795d14884bc86c1165a212db0c6a293154142022-11-24 15:20:483 days 3 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000851668398988722 MATIC
0x5265c269ce9e9e27fba5fd616257364d7f762d8081ddd60c22f2928ae9b94ed0293153682022-11-24 15:16:573 days 6 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000900019317352428 MATIC
0x61ef9547705f6fb617908a088fb69195373538f608527ea9916ce97a63cd543f293153292022-11-24 15:13:423 days 10 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000868105217753163 MATIC
0xedbcfcf737a32c967f0ba1c1f4095b9963c949514b3fcbe8f6983f165908bb78293153012022-11-24 15:11:213 days 12 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.00087831224560378 MATIC
0xf6ea6a5dddc97aaafc235b30d3822ad5e09671767755dd3b8b8e8279af48340b293152572022-11-24 15:07:403 days 16 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000881491713338859 MATIC
0x5eafc9a0dfe3b84519105deba349469c225d1733e4d526d4aa04a77050acbfea293152112022-11-24 15:03:503 days 20 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000893344122162597 MATIC
0x0b914b4ab0cedbb0d7f7f288b26c2488a7e1f3b7f86271b9a55641351cdcfe38293151772022-11-24 15:00:593 days 22 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000915045173384678 MATIC
0xc695140378f1a296f22e77850f2fa27f15dd541e2940dd715ffd81cdc9913ac4293151352022-11-24 14:57:283 days 26 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000872677241594305 MATIC
0x01059f97f3ec5cc23264edc59dec4551440907b6332cc6c249933a3896a7f6a0293150832022-11-24 14:53:083 days 30 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000876966399230915 MATIC
0xe074d07b6204743bacaff76394ac51ae1133447daf55c2a14d829c19022a5fe7293150442022-11-24 14:49:523 days 34 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000871500873218577 MATIC
0x35bda8dff8167b787e1f6da803fb6376eaa472b9058bc8d698327dd57339278c293149902022-11-24 14:45:213 days 38 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000462180578875547 MATIC
0xe5eb53507e28f3d2e651ea27e0898d132677ef84cf0af515df673c5399970524293149422022-11-24 14:41:203 days 42 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000722359746984386 MATIC
0xdd8c4508ac819768dcc6b75a4e96631aad71c70c1d3def1b7830e09a91dcf5a9293149102022-11-24 14:38:403 days 45 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000742631677496464 MATIC
0x536550a7cca8dc86540f08cd7eebb196c271adbd72bc9a4f06ac9e25eabd290b293148752022-11-24 14:35:443 days 48 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000715233362996845 MATIC
0x48b6c3ca727c73acb0266f7acc7d0f0051a83a1ed65d41c5873e74951e121ff2293148272022-11-24 14:31:443 days 52 mins ago 0x5341ebcd8b6bf97cbd19fb932cd87774efa89f0b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000713188932821008 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
swapHelperDiyTask2

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 1 : createDiyTask2.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity =0.8.12;
    enum Module {
        RESOLVER,
        TIME,
        PROXY,
        SINGLE_EXEC
    }
    struct ModuleData {
        Module[] modules;
        bytes[] args;
    }
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "e5");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "e6");
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "e7");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "e8");
        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "e9");
        return a % b;
    }
}

interface IOps {
    function createTask(
        address execAddress,
        bytes calldata execDataOrSelector,
        ModuleData calldata moduleData,
        address feeToken
    ) external returns (bytes32 taskId);

    function cancelTask(bytes32 taskId) external;

    function getFeeDetails() external view returns (uint256, address);

    function gelato() external view returns (address payable);

    function taskTreasury() external view returns (ITaskTreasuryUpgradable);
}

interface ITaskTreasuryUpgradable {
    function depositFunds(
        address receiver,
        address token,
        uint256 amount
    ) external payable;

    function withdrawFunds(
        address payable receiver,
        address token,
        uint256 amount
    ) external;
}

interface IOpsProxyFactory {
    function getProxyOf(address account) external view returns (address, bool);
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);

    function approve(address spender, uint value) external returns (bool);

    function allowance(address _owner, address spender) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 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://consensys.net/diligence/blog/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 functionCallWithValue(target, data, 0, "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");
        (bool success, bytes memory returndata) = target.call{value : value}(data);
        return verifyCallResultFromTarget(target, 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) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, 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) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or 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 {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // 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
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

library SafeERC20 {
    using SafeMath for uint256;
    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));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "e0");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "e1");
        }
    }
}

abstract contract OpsReady {
    IOps public immutable ops;
    address public immutable dedicatedMsgSender;
    address private immutable _gelato;
    address internal constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
    address private constant OPS_PROXY_FACTORY =
    0xC815dB16D4be6ddf2685C201937905aBf338F5D7;

    /**
     * @dev
     * Only tasks created by _taskCreator defined in constructor can call
     * the functions with this modifier.
     */
    modifier onlyDedicatedMsgSender() {
        require(msg.sender == dedicatedMsgSender, "Only dedicated msg.sender");
        _;
    }

    /**
     * @dev
     * _taskCreator is the address which will create tasks for this contract.
     */
    constructor(address _ops, address _taskCreator) {
        ops = IOps(_ops);
        _gelato = IOps(_ops).gelato();
        (dedicatedMsgSender,) = IOpsProxyFactory(OPS_PROXY_FACTORY).getProxyOf(
            _taskCreator
        );
    }

    /**
     * @dev
     * Transfers fee to gelato for synchronous fee payments.
     *
     * _fee & _feeToken should be queried from IOps.getFeeDetails()
     */
    function _transfer(uint256 _fee, address _feeToken) internal {
        if (_feeToken == ETH) {
            (bool success,) = _gelato.call{value : _fee}("");
            require(success, "_transfer: ETH transfer failed");
        } else {
            SafeERC20.safeTransfer(IERC20(_feeToken), _gelato, _fee);
        }
    }

    function _getFeeDetails()
    internal
    view
    returns (uint256 fee, address feeToken)
    {
        (fee, feeToken) = ops.getFeeDetails();
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "k002");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "k003");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

//interface IAocoRouter01 {
//    function factory() external pure returns (address);
//
//    function WETH() external pure returns (address);
//
//    // function addLiquidity(
//    //     address tokenA,
//    //     address tokenB,
//    //     uint amountADesired,
//    //     uint amountBDesired,
//    //     uint amountAMin,
//    //     uint amountBMin,
//    //     address to,
//    //     uint deadline
//    // ) external returns (uint amountA, uint amountB, uint liquidity);
//
//    // function addLiquidityETH(
//    //     address token,
//    //     uint amountTokenDesired,
//    //     uint amountTokenMin,
//    //     uint amountETHMin,
//    //     address to,
//    //     uint deadline
//    // ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
//
//    // function removeLiquidity(
//    //     address tokenA,
//    //     address tokenB,
//    //     uint liquidity,
//    //     uint amountAMin,
//    //     uint amountBMin,
//    //     address to,
//    //     uint deadline
//    // ) external returns (uint amountA, uint amountB);
//
//    // function removeLiquidityETH(
//    //     address token,
//    //     uint liquidity,
//    //     uint amountTokenMin,
//    //     uint amountETHMin,
//    //     address to,
//    //     uint deadline
//    // ) external returns (uint amountToken, uint amountETH);
//
//    // function removeLiquidityWithPermit(
//    //     address tokenA,
//    //     address tokenB,
//    //     uint liquidity,
//    //     uint amountAMin,
//    //     uint amountBMin,
//    //     address to,
//    //     uint deadline,
//    //     bool approveMax, uint8 v, bytes32 r, bytes32 s
//    // ) external returns (uint amountA, uint amountB);
//
//    // function removeLiquidityETHWithPermit(
//    //     address token,
//    //     uint liquidity,
//    //     uint amountTokenMin,
//    //     uint amountETHMin,
//    //     address to,
//    //     uint deadline,
//    //     bool approveMax, uint8 v, bytes32 r, bytes32 s
//    // ) external returns (uint amountToken, uint amountETH);
//
//    function swapExactTokensForTokens(
//        uint amountIn,
//        uint amountOutMin,
//        address[] calldata path,
//        address to,
//        uint deadline
//    ) external returns (uint[] memory amounts);
//
//    function swapTokensForExactTokens(
//        uint amountOut,
//        uint amountInMax,
//        address[] calldata path,
//        address to,
//        uint deadline
//    ) external returns (uint[] memory amounts);
//
//    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
//    external
//    payable
//    returns (uint[] memory amounts);
//
//    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
//    external
//    returns (uint[] memory amounts);
//
//    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
//    external
//    returns (uint[] memory amounts);
//
//    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
//    external
//    payable
//    returns (uint[] memory amounts);
//
//    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
//
//    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut, address token0, address token1, address factory_) external view returns (uint amountOut);
//
//    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut, address token0, address token1, address factory_) external view returns (uint amountIn);
//
//    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
//
//    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
//}

interface IAocoRouter02 {
    // function removeLiquidityETHSupportingFeeOnTransferTokens(
    //     address token,
    //     uint liquidity,
    //     uint amountTokenMin,
    //     uint amountETHMin,
    //     address to,
    //     uint deadline
    // ) external returns (uint amountETH);

    // function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
    //     address token,
    //     uint liquidity,
    //     uint amountTokenMin,
    //     uint amountETHMin,
    //     address to,
    //     uint deadline,
    //     bool approveMax, uint8 v, bytes32 r, bytes32 s
    // ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    //    function swapExactETHForTokensSupportingFeeOnTransferTokens(
    //        uint amountOutMin,
    //        address[] calldata path,
    //        address to,
    //        uint deadline
    //    ) external payable;
    //
    //    function swapExactTokensForETHSupportingFeeOnTransferTokens(
    //        uint amountIn,
    //        uint amountOutMin,
    //        address[] calldata path,
    //        address to,
    //        uint deadline
    //    ) external;
}

abstract contract OpsTaskCreator is OpsReady {
    using SafeERC20 for IERC20;

    address public immutable fundsOwner;
    ITaskTreasuryUpgradable public immutable taskTreasury;

    constructor(address _ops, address _fundsOwner)
    OpsReady(_ops, address(this))
    {
        fundsOwner = _fundsOwner;
        taskTreasury = ops.taskTreasury();
    }

    /**
     * @dev
     * Withdraw funds from this contract's Gelato balance to fundsOwner.
     */
    function withdrawFunds(uint256 _amount, address _token) external {
        require(
            msg.sender == fundsOwner,
            "Only funds owner can withdraw funds"
        );

        taskTreasury.withdrawFunds(payable(fundsOwner), _token, _amount);
    }

    function _depositFunds(uint256 _amount, address _token) internal {
        uint256 ethValue = _token == ETH ? _amount : 0;
        taskTreasury.depositFunds{value : ethValue}(
            address(this),
            _token,
            _amount
        );
    }

    function _createTask(
        address _execAddress,
        bytes memory _execDataOrSelector,
        ModuleData memory _moduleData,
        address _feeToken
    ) internal returns (bytes32) {
        return
        ops.createTask(
            _execAddress,
            _execDataOrSelector,
            _moduleData,
            _feeToken
        );
    }

    function _cancelTask(bytes32 _taskId) internal {
        ops.cancelTask(_taskId);
    }

    function _resolverModuleArg(
        address _resolverAddress,
        bytes memory _resolverData
    ) internal pure returns (bytes memory) {
        return abi.encode(_resolverAddress, _resolverData);
    }

    function _timeModuleArg(uint256 _startTime, uint256 _interval)
    internal
    pure
    returns (bytes memory)
    {
        return abi.encode(uint128(_startTime), uint128(_interval));
    }

    function _proxyModuleArg() internal pure returns (bytes memory) {
        return bytes("");
    }

    function _singleExecModuleArg() internal pure returns (bytes memory) {
        return bytes("");
    }
}

interface USDTPool {
    function userInfoList(address _user) external view returns (bool _canClaim, uint256 _maxAmount);

    function claimUSDT(address _user, uint256 _amount) external;

    function USDT() external view returns (IERC20);

    function swapRate() external view returns (uint256);

    function swapAllRate() external view returns (uint256);
}

contract swapHelperDiyTask2 is OpsTaskCreator, Ownable {
    using SafeMath for uint256;
    uint256 public approveAmount;
    uint256 public taskAmount;
    USDTPool public USDTPoolAddress;
    mapping(uint256 => bytes32) public taskList;
    mapping(address => userInfoItem) public userInfoList;
    mapping(address => bytes32[]) public userTaskList;
    mapping(bytes32 => bool) public md5List;
    mapping(bytes32 => bytes32) public md5TaskList;
    mapping(bytes32 => taskConfig) public taskConfigList;
    mapping(bytes32 => uint256) public lastExecutedTimeList;

    struct userInfoItem {
        uint256 ethDepositAmount;
        uint256 ethAmount;
        uint256 usdtAmount;
        uint256 ethUsedAmount;
    }

    struct swapTokenItem {
        uint256 startGas;
        uint256 _swapIn;
        address swapInToken;
        address swapOutToken;
        uint256 balanceOfIn0;
        uint256 balanceOfOut0;
        uint256 balanceOfOut1;
        uint256 balanceOfIn1;
        uint256 spendSwapInToken;
        uint256 gasUsed;
    }

    struct taskDataItem {
        address _execAddress;
        bytes _execDataOrSelector;
        ModuleData _moduleData;
        address _feeToken;
        bool _status;
        string _taskName;
        uint256[] _start_end_Time;
        uint256[] _timeList;
    }

    struct taskConfig {
        IAocoRouter02 _routerAddress;
        address _owner;
        address[] _swapRouter;
        address[] _swapRouter2;
        uint256 _swapAmount;
        uint256 _interval;
        uint256 _taskExTimes;
        uint256 _index;
        bytes32 _md5;
        taskDataItem _taskData;
    }

    event CounterTaskCreated(uint256 _time, address _user, uint256 _taskAmount, bytes32 _taskId);
    event swapToenEvent(address _tx_origin, address _msg_sender, uint256 _gasUsed, uint256 _spendSwapInToken, uint256 _timestamp, address _user);
    event swapToenTaskEvent(uint256 _index, address _user, bytes32 _md5, bytes32 _taskID);

    constructor(uint256 _approveAmount, address payable _ops, address _fundsOwner, USDTPool _USDTPoolAddress) OpsTaskCreator(_ops, _fundsOwner){
        setDefaultSwapInfo(_approveAmount);
        setUSDTPoolAddress(_USDTPoolAddress);
    }

    function setDefaultSwapInfo(uint256 _approveAmount) public onlyOwner {
        approveAmount = _approveAmount;
    }

    function setUSDTPoolAddress(USDTPool _USDTPoolAddress) public onlyOwner {
        USDTPoolAddress = _USDTPoolAddress;
    }

    function setSwapInfo(IAocoRouter02 _routerAddress, address[] memory _swapRouter, address[] memory _swapRouter2) private {
        require(_swapRouter[0] == address(USDTPoolAddress.USDT()) && _swapRouter2[_swapRouter2.length - 1] == address(USDTPoolAddress.USDT()), "e001");
        require(_swapRouter2[0] != address(USDTPoolAddress.USDT()) && _swapRouter[_swapRouter2.length - 1] != address(USDTPoolAddress.USDT()), "e002");
        require(_swapRouter[0] == _swapRouter2[_swapRouter2.length - 1], "e003");
        require(_swapRouter2[0] == _swapRouter[_swapRouter2.length - 1], "e004");
        IERC20(_swapRouter[0]).approve(address(_routerAddress), approveAmount);
        IERC20(_swapRouter2[0]).approve(address(_routerAddress), approveAmount);
    }

    struct createTaskItem {
        bytes32 _md5;
        bytes _execData;
        bytes32 _id;
        ModuleData _moduleData;
        taskConfig _taskConfig;
    }

    function createTask(string memory _taskName, IAocoRouter02 _routerAddress, address[] memory _swapRouter, address[] memory _swapRouter2, uint256 _swapAmount, uint256 _interval, uint256[] memory _start_end_Time, uint256[] memory _timeList) external payable {
        createTaskItem memory _createTaskItem = new createTaskItem[](1)[0];
        setSwapInfo(_routerAddress, _swapRouter, _swapRouter2);
        _createTaskItem._md5 = keccak256(abi.encodePacked(_taskName, block.timestamp, block.difficulty, msg.sender, _start_end_Time));
        require(!md5List[_createTaskItem._md5], "e001");
        md5List[_createTaskItem._md5] = true;
        userInfoList[msg.sender].ethDepositAmount = userInfoList[msg.sender].ethDepositAmount.add(msg.value);
        userInfoList[msg.sender].ethAmount = userInfoList[msg.sender].ethAmount.add(msg.value);
        _createTaskItem._execData = abi.encodeCall(this.swapToken, (msg.sender, _createTaskItem._md5));
        //ModuleData memory moduleData;
        // if (_interval > 0) {
        //     moduleData = ModuleData({
        //     modules : new Module[](2),
        //     args : new bytes[](2)
        //     });
        //     moduleData.modules[0] = Module.TIME;
        //     moduleData.modules[1] = Module.PROXY;
        //     moduleData.args[0] = _timeModuleArg(block.timestamp, _interval);
        //     moduleData.args[1] = _proxyModuleArg();
        // } else {
        _createTaskItem._moduleData = ModuleData({
        modules : new Module[](1),
        args : new bytes[](1)
        });
        //            moduleData.modules[0] = Module.PROXY;
        //            moduleData.modules[1] = Module.SINGLE_EXEC;
        //            moduleData.args[0] = _proxyModuleArg();
        //            moduleData.args[1] = _singleExecModuleArg();
        //测试whenever
        _createTaskItem._moduleData.modules[0] = Module.PROXY;
        //            moduleData.modules[1] = Module.SINGLE_EXEC;
        _createTaskItem._moduleData.args[0] = _proxyModuleArg();
        //            moduleData.args[1] = _singleExecModuleArg();
        // }
        _createTaskItem._id = _createTask(address(this), _createTaskItem._execData, _createTaskItem._moduleData, ETH);
        taskList[taskAmount] = _createTaskItem._id;
        userTaskList[msg.sender].push(_createTaskItem._id);
        md5TaskList[_createTaskItem._md5] = _createTaskItem._id;
        _createTaskItem._taskConfig = taskConfig(_routerAddress, msg.sender, _swapRouter, _swapRouter2, _swapAmount, _interval, 0, taskAmount, _createTaskItem._md5, taskDataItem(address(this), _createTaskItem._execData, _createTaskItem._moduleData, ETH, true, _taskName, _start_end_Time, _timeList));
        taskConfigList[_createTaskItem._id] = _createTaskItem._taskConfig;
        emit CounterTaskCreated(block.timestamp, msg.sender, taskAmount, _createTaskItem._id);
        taskAmount = taskAmount.add(1);
    }

    modifier onlyEditer(bytes32 _taskID) {
        taskConfig storage y = taskConfigList[_taskID];
        require(msg.sender == owner() || msg.sender == y._owner, "e003");
        _;
    }

    function editTaskSwapAmount(bytes32 _taskID, uint256 _swapAmount) external onlyEditer(_taskID) {
        taskConfig storage y = taskConfigList[_taskID];
        y._swapAmount = _swapAmount;
    }

    function editTaskInterval(bytes32 _taskID, uint256 _interval) external onlyEditer(_taskID) {
        taskConfig storage y = taskConfigList[_taskID];
        y._interval = _interval;
    }

    function editTaskStartEndTime(bytes32 _taskID, uint256[] memory _start_end_Time) external onlyEditer(_taskID) {
        require((_start_end_Time.length == 2) && (_start_end_Time[1] > _start_end_Time[0]), "e001");
        taskConfig storage y = taskConfigList[_taskID];
        y._taskData._start_end_Time = _start_end_Time;
    }

    function editTaskTimeList(bytes32 _taskID, uint256[] memory _timeList) external onlyEditer(_taskID) {
        require(_timeList.length % 2 == 0, "e001");
        taskConfig storage y = taskConfigList[_taskID];
        y._taskData._timeList = _timeList;
    }

    function getInTimeZone(uint256[] memory _start_end_Time, uint256[] memory _timeList) public view returns (bool _inTimeZone) {
        _inTimeZone = false;
        uint256 all = (block.timestamp + 3600 * 8) % (3600 * 24);
        uint256 TimeListLength = _timeList.length / 2;
        for (uint256 i = 0; i < TimeListLength; i++) {
            if (all >= _timeList[i * 2] && all < _timeList[i * 2 + 1] && block.timestamp >= _start_end_Time[0] && block.timestamp <= _start_end_Time[1]) {
                _inTimeZone = true;
                break;
            }
        }
    }

    function getAddTime(uint256 _interval) public view returns (uint256) {
        uint256 all = (block.number + _interval + 1) * (block.timestamp - _interval - 1);
        return _interval + all % _interval;
    }

    modifier onlyTime(bytes32 _md5) {
        taskConfig storage y = taskConfigList[md5TaskList[_md5]];
        require(block.timestamp >= (lastExecutedTimeList[_md5]).add(getAddTime(y._interval)), "t001");
        require(getInTimeZone(y._taskData._start_end_Time, y._taskData._timeList), "t002");
        _;
    }

    function swapToken(address _user, bytes32 _md5) external onlyDedicatedMsgSender onlyTime(_md5) {
        taskConfig storage y = taskConfigList[md5TaskList[_md5]];
        swapTokenItem memory x = swapTokenItem(gasleft(), y._swapAmount, y._swapRouter[0], y._swapRouter[1], 0, 0, 0, 0, 0, 0);
        if (x._swapIn == 0) {
            return;
        } else {
            if (address(USDTPoolAddress.USDT()) == x.swapInToken) {
                USDTPoolAddress.claimUSDT(_user, y._swapAmount);
            }
            if (IERC20(x.swapInToken).allowance(address(this), address(y._routerAddress)) < x._swapIn) {
                IERC20(x.swapInToken).approve(address(y._routerAddress), approveAmount);
            }
            x.balanceOfIn0 = IERC20(x.swapInToken).balanceOf(address(this));
            x.balanceOfOut0 = IERC20(x.swapOutToken).balanceOf(address(this));
            y._routerAddress.swapExactTokensForTokensSupportingFeeOnTransferTokens(x._swapIn, 0, y._swapRouter, address(this), block.timestamp);
            x.balanceOfOut1 = IERC20(x.swapOutToken).balanceOf(address(this));
            x._swapIn = x.balanceOfOut1.sub(x.balanceOfOut0);
            if (IERC20(x.swapOutToken).allowance(address(this), address(y._routerAddress)) < x._swapIn) {
                IERC20(x.swapOutToken).approve(address(y._routerAddress), approveAmount);
            }
            y._routerAddress.swapExactTokensForTokensSupportingFeeOnTransferTokens(x._swapIn, 0, y._swapRouter2, address(this), block.timestamp);
            x.balanceOfIn1 = IERC20(x.swapInToken).balanceOf(address(this));
            x.spendSwapInToken = x.balanceOfIn0.sub(x.balanceOfIn1);
            x.gasUsed = x.startGas - gasleft();
            emit swapToenEvent(tx.origin, msg.sender, x.gasUsed, x.spendSwapInToken, block.timestamp, _user);
            emit swapToenTaskEvent(y._index, _user, y._md5, md5TaskList[_md5]);
            (uint256 fee, address feeToken) = _getFeeDetails();
            _transfer(fee, feeToken);
            require(userInfoList[_user].ethAmount >= fee);
            userInfoList[_user].ethAmount = userInfoList[_user].ethAmount.sub(fee);
            userInfoList[_user].ethUsedAmount = userInfoList[_user].ethUsedAmount.add(fee);
            y._taskExTimes = y._taskExTimes.add(1);
            if (address(USDTPoolAddress.USDT()) == x.swapInToken) {
                uint256 poolFee = y._swapAmount.mul(USDTPoolAddress.swapRate()).div(USDTPoolAddress.swapAllRate());
                uint256 allFee = x.spendSwapInToken.add(poolFee);
                require(userInfoList[_user].usdtAmount >= allFee, "k001");
                userInfoList[_user].usdtAmount = userInfoList[_user].usdtAmount.sub(allFee);
                IERC20(x.swapInToken).transfer(address(USDTPoolAddress), y._swapAmount.add(poolFee));
            }
        }
        lastExecutedTimeList[_md5] = block.timestamp;
    }

    function depositUSDT(uint256 _amount) external {
        USDTPoolAddress.USDT().transferFrom(msg.sender, address(this), _amount);
        userInfoList[msg.sender].usdtAmount = userInfoList[msg.sender].usdtAmount.add(_amount);
    }

    function withdrawUSDT(uint256 _amount) external {
        require(_amount <= userInfoList[msg.sender].usdtAmount, "e001");
        USDTPoolAddress.USDT().transfer(msg.sender, _amount);
        userInfoList[msg.sender].usdtAmount = userInfoList[msg.sender].usdtAmount.sub(_amount);
    }

    function depositEth() external payable {
        userInfoList[msg.sender].ethDepositAmount = userInfoList[msg.sender].ethDepositAmount.add(msg.value);
        userInfoList[msg.sender].ethAmount = userInfoList[msg.sender].ethAmount.add(msg.value);
    }

    function withdrawETH(uint256 _amount) external {
        require(_amount <= userInfoList[msg.sender].ethAmount, "e001");
        payable(msg.sender).transfer(_amount);
        userInfoList[msg.sender].ethAmount = userInfoList[msg.sender].ethAmount.sub(_amount);
    }

    function claimToken(IERC20 _token, uint256 _amount) external onlyOwner {
        _token.transfer(msg.sender, _amount);
    }

    function claimEth(uint256 _amount) external onlyOwner {
        payable(msg.sender).transfer(_amount);
    }

    function cancelTask(bytes32 _taskID) external {
        taskConfig storage y = taskConfigList[_taskID];
        require(y._owner == msg.sender, "e001");
        require(y._taskData._status, "e002");
        _cancelTask(_taskID);
        y._taskData._status = false;
    }

    function restartTask(bytes32 _taskID) external {
        taskConfig storage y = taskConfigList[_taskID];
        require(y._owner == msg.sender, "e001");
        require(!y._taskData._status, "e002");
        _createTask(y._taskData._execAddress, y._taskData._execDataOrSelector, y._taskData._moduleData, y._taskData._feeToken);
        y._taskData._status = true;
    }

    function getUserTaskList(address _user) external view returns (bytes32[] memory) {
        return userTaskList[_user];
    }

    function getUserTaskListNum(address _user) external view returns (uint256) {
        return userTaskList[_user].length;
    }

    function getUserTaskListByList(address _user, uint256[] memory _indexList) external view returns (bytes32[] memory taskIdList) {
        taskIdList = new bytes32[](_indexList.length);
        for (uint256 i = 0; i < _indexList.length; i++) {
            taskIdList[i] = userTaskList[_user][_indexList[i]];
        }
    }

    receive() external payable {
        userInfoList[msg.sender].ethDepositAmount = userInfoList[msg.sender].ethDepositAmount.add(msg.value);
        userInfoList[msg.sender].ethAmount = userInfoList[msg.sender].ethAmount.add(msg.value);
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_approveAmount","type":"uint256"},{"internalType":"address payable","name":"_ops","type":"address"},{"internalType":"address","name":"_fundsOwner","type":"address"},{"internalType":"contract USDTPool","name":"_USDTPoolAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"},{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_taskAmount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_taskId","type":"bytes32"}],"name":"CounterTaskCreated","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":false,"internalType":"address","name":"_tx_origin","type":"address"},{"indexed":false,"internalType":"address","name":"_msg_sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_gasUsed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_spendSwapInToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"_user","type":"address"}],"name":"swapToenEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_index","type":"uint256"},{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_md5","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"_taskID","type":"bytes32"}],"name":"swapToenTaskEvent","type":"event"},{"inputs":[],"name":"USDTPoolAddress","outputs":[{"internalType":"contract USDTPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approveAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_taskID","type":"bytes32"}],"name":"cancelTask","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"claimEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_taskName","type":"string"},{"internalType":"contract IAocoRouter02","name":"_routerAddress","type":"address"},{"internalType":"address[]","name":"_swapRouter","type":"address[]"},{"internalType":"address[]","name":"_swapRouter2","type":"address[]"},{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_interval","type":"uint256"},{"internalType":"uint256[]","name":"_start_end_Time","type":"uint256[]"},{"internalType":"uint256[]","name":"_timeList","type":"uint256[]"}],"name":"createTask","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dedicatedMsgSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_taskID","type":"bytes32"},{"internalType":"uint256","name":"_interval","type":"uint256"}],"name":"editTaskInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_taskID","type":"bytes32"},{"internalType":"uint256[]","name":"_start_end_Time","type":"uint256[]"}],"name":"editTaskStartEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_taskID","type":"bytes32"},{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"editTaskSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_taskID","type":"bytes32"},{"internalType":"uint256[]","name":"_timeList","type":"uint256[]"}],"name":"editTaskTimeList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fundsOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_interval","type":"uint256"}],"name":"getAddTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_start_end_Time","type":"uint256[]"},{"internalType":"uint256[]","name":"_timeList","type":"uint256[]"}],"name":"getInTimeZone","outputs":[{"internalType":"bool","name":"_inTimeZone","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserTaskList","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256[]","name":"_indexList","type":"uint256[]"}],"name":"getUserTaskListByList","outputs":[{"internalType":"bytes32[]","name":"taskIdList","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserTaskListNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"lastExecutedTimeList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"md5List","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"md5TaskList","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ops","outputs":[{"internalType":"contract IOps","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_taskID","type":"bytes32"}],"name":"restartTask","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_approveAmount","type":"uint256"}],"name":"setDefaultSwapInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract USDTPool","name":"_USDTPoolAddress","type":"address"}],"name":"setUSDTPoolAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bytes32","name":"_md5","type":"bytes32"}],"name":"swapToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taskAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"taskConfigList","outputs":[{"internalType":"contract IAocoRouter02","name":"_routerAddress","type":"address"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_interval","type":"uint256"},{"internalType":"uint256","name":"_taskExTimes","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes32","name":"_md5","type":"bytes32"},{"components":[{"internalType":"address","name":"_execAddress","type":"address"},{"internalType":"bytes","name":"_execDataOrSelector","type":"bytes"},{"components":[{"internalType":"enum Module[]","name":"modules","type":"uint8[]"},{"internalType":"bytes[]","name":"args","type":"bytes[]"}],"internalType":"struct ModuleData","name":"_moduleData","type":"tuple"},{"internalType":"address","name":"_feeToken","type":"address"},{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"string","name":"_taskName","type":"string"},{"internalType":"uint256[]","name":"_start_end_Time","type":"uint256[]"},{"internalType":"uint256[]","name":"_timeList","type":"uint256[]"}],"internalType":"struct swapHelperDiyTask2.taskDataItem","name":"_taskData","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"taskList","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taskTreasury","outputs":[{"internalType":"contract ITaskTreasuryUpgradable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfoList","outputs":[{"internalType":"uint256","name":"ethDepositAmount","type":"uint256"},{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"uint256","name":"usdtAmount","type":"uint256"},{"internalType":"uint256","name":"ethUsedAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userTaskList","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101206040523480156200001257600080fd5b5060405162004cdf38038062004cdf83398101604081905262000035916200031b565b82828130816001600160a01b03166080816001600160a01b031681525050816001600160a01b031663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b8919062000377565b6001600160a01b0390811660c0526040516337b6269f60e21b8152908216600482015273c815db16d4be6ddf2685c201937905abf338f5d79063ded89a7c906024016040805180830381865afa15801562000117573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013d91906200039e565b506001600160a01b0390811660a05283811660e0526080516040805163e60a321360e01b8152905191909216935063e60a3213925060048083019260209291908290030181865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd919062000377565b6001600160a01b03166101005250620001d8905033620001f8565b620001e38462000248565b620001ee816200029b565b50505050620003e1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620002965760405162461bcd60e51b81526004016200028d906020808252600490820152633598181960e11b604082015260600190565b60405180910390fd5b600155565b6000546001600160a01b03163314620002e05760405162461bcd60e51b81526004016200028d906020808252600490820152633598181960e11b604082015260600190565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146200031857600080fd5b50565b600080600080608085870312156200033257600080fd5b845193506020850151620003468162000302565b6040860151909350620003598162000302565b60608601519092506200036c8162000302565b939692955090935050565b6000602082840312156200038a57600080fd5b8151620003978162000302565b9392505050565b60008060408385031215620003b257600080fd5b8251620003bf8162000302565b60208401519092508015158114620003d657600080fd5b809150509250929050565b60805160a05160c05160e051610100516148816200045e600039600081816107220152610eea01526000818161045701528181610e230152610eb301526000818161360601526136cb0152600081816103340152611b41015260008181610756015281816134c90152818161355501526137a201526148816000f3fe6080604052600436106102345760003560e01c806391f61de71161012e578063d9981a8a116100ab578063f14210a61161006f578063f14210a6146107b8578063f29dd914146107d8578063f2fde38b1461080e578063f8741ea31461082e578063fceb0f3b1461084e57600080fd5b8063d9981a8a146106f0578063e60a321314610710578063e70abe9214610744578063e7c80f1714610778578063ee8ca3b51461079857600080fd5b8063bbd6c391116100f2578063bbd6c3911461064d578063c326b0d01461066d578063c3a33ee914610683578063cbd99868146106a3578063d30c6ac3146106c357600080fd5b806391f61de7146105a6578063a9c0c082146105c6578063b8e999c0146105e6578063b9bd065d1461061a578063baf34fc71461063a57600080fd5b806344ce90a8116101bc578063744bfe6111610180578063744bfe61146104db5780637c2eafd5146104fb5780637fd571761461051b5780638d5a6d361461055b5780638da5cb5b1461058857600080fd5b806344ce90a81461042557806346ee3c59146104455780634d864255146104795780637141696414610499578063715018a6146104c657600080fd5b806328f150eb1161020357806328f150eb146103225780632a1c52a51461036e5780633ea521ef1461039b5780634081dd20146103bb578063439370b11461041d57600080fd5b8063024e5d8d1461028d578063028b6d1e146102c05780631698755f146102e25780631a4ee63a1461030257600080fd5b3661028857336000908152600560205260409020546102539034610864565b336000908152600560205260409020908155600101546102739034610864565b33600090815260056020526040902060010155005b600080fd5b34801561029957600080fd5b506102ad6102a8366004613daf565b6108b6565b6040519081526020015b60405180910390f35b3480156102cc57600080fd5b506102e06102db366004613e9e565b61090b565b005b3480156102ee57600080fd5b506102e06102fd366004613efa565b6109cd565b34801561030e57600080fd5b506102e061031d366004613f26565b610a6d565b34801561032e57600080fd5b506103567f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102b7565b34801561037a57600080fd5b506102ad610389366004613daf565b60046020526000908152604090205481565b3480156103a757600080fd5b506102e06103b6366004613daf565b610aed565b3480156103c757600080fd5b506103fd6103d6366004613f48565b60056020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016102b7565b6102e0610c3a565b34801561043157600080fd5b50600354610356906001600160a01b031681565b34801561045157600080fd5b506103567f000000000000000000000000000000000000000000000000000000000000000081565b34801561048557600080fd5b506102e0610494366004613f26565b610c89565b3480156104a557600080fd5b506104b96104b4366004613f65565b610d09565b6040516102b79190613f9f565b3480156104d257600080fd5b506102e0610de2565b3480156104e757600080fd5b506102e06104f6366004613fe3565b610e18565b34801561050757600080fd5b506104b9610516366004613f48565b610f42565b34801561052757600080fd5b5061054b610536366004613daf565b60076020526000908152604090205460ff1681565b60405190151581526020016102b7565b34801561056757600080fd5b506102ad610576366004613daf565b60086020526000908152604090205481565b34801561059457600080fd5b506000546001600160a01b0316610356565b3480156105b257600080fd5b5061054b6105c1366004614013565b610fae565b3480156105d257600080fd5b506102e06105e1366004613daf565b6110bf565b3480156105f257600080fd5b50610606610601366004613daf565b6110ee565b6040516102b79897969594939291906141d3565b34801561062657600080fd5b506102ad610635366004613efa565b6114c9565b6102e06106483660046143d9565b6114fa565b34801561065957600080fd5b506102e0610668366004613efa565b611b36565b34801561067957600080fd5b506102ad60025481565b34801561068f57600080fd5b506102e061069e366004613e9e565b612844565b3480156106af57600080fd5b506102e06106be366004613daf565b612933565b3480156106cf57600080fd5b506102ad6106de366004613daf565b600a6020526000908152604090205481565b3480156106fc57600080fd5b506102e061070b366004613daf565b61298e565b34801561071c57600080fd5b506103567f000000000000000000000000000000000000000000000000000000000000000081565b34801561075057600080fd5b506103567f000000000000000000000000000000000000000000000000000000000000000081565b34801561078457600080fd5b506102e0610793366004613daf565b612c27565b3480156107a457600080fd5b506102e06107b3366004613daf565b612d35565b3480156107c457600080fd5b506102e06107d3366004613daf565b612db4565b3480156107e457600080fd5b506102ad6107f3366004613f48565b6001600160a01b031660009081526006602052604090205490565b34801561081a57600080fd5b506102e0610829366004613f48565b612e47565b34801561083a57600080fd5b506102e0610849366004613f48565b612ebc565b34801561085a57600080fd5b506102ad60015481565b60008061087183856144e5565b9050838110156108ad5760405162461bcd60e51b8152602060048201526002602482015261653560f01b60448201526064015b60405180910390fd5b90505b92915050565b60008060016108c584426144fd565b6108cf91906144fd565b6108d984436144e5565b6108e49060016144e5565b6108ee9190614514565b90506108fa8382614549565b61090490846144e5565b9392505050565b6000828152600960205260409020829061092d6000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610958575060018101546001600160a01b031633145b6109745760405162461bcd60e51b81526004016108a49061455d565b600283516109829190614549565b1561099f5760405162461bcd60e51b81526004016108a49061457b565b6000848152600960209081526040909120845190916109c5916010840191870190613a03565b505050505050565b6000546001600160a01b031633146109f75760405162461bcd60e51b81526004016108a490614599565b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb90610a2590339085906004016145b7565b6020604051808303816000875af1158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6891906145d0565b505050565b60008281526009602052604090208290610a8f6000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610aba575060018101546001600160a01b031633145b610ad65760405162461bcd60e51b81526004016108a49061455d565b505060009182526009602052604090912060050155565b33600090815260056020526040902060020154811115610b1f5760405162461bcd60e51b81526004016108a49061457b565b600360009054906101000a90046001600160a01b03166001600160a01b031663c54e44eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9691906145f2565b6001600160a01b031663a9059cbb33836040518363ffffffff1660e01b8152600401610bc39291906145b7565b6020604051808303816000875af1158015610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0691906145d0565b5033600090815260056020526040902060020154610c249082612f08565b3360009081526005602052604090206002015550565b33600090815260056020526040902054610c549034610864565b33600090815260056020526040902090815560010154610c749034610864565b33600090815260056020526040902060010155565b60008281526009602052604090208290610cab6000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610cd6575060018101546001600160a01b031633145b610cf25760405162461bcd60e51b81526004016108a49061455d565b505060009182526009602052604090912060040155565b6060815167ffffffffffffffff811115610d2557610d25613dc8565b604051908082528060200260200182016040528015610d4e578160200160208202803683370190505b50905060005b8251811015610ddb576001600160a01b03841660009081526006602052604090208351849083908110610d8957610d8961460f565b602002602001015181548110610da157610da161460f565b9060005260206000200154828281518110610dbe57610dbe61460f565b602090810291909101015280610dd381614625565b915050610d54565b5092915050565b6000546001600160a01b03163314610e0c5760405162461bcd60e51b81526004016108a490614599565b610e166000612f53565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e9c5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792066756e6473206f776e65722063616e2077697468647261772066756044820152626e647360e81b60648201526084016108a4565b604051631c20fadd60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528281166024830152604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631c20fadd90606401600060405180830381600087803b158015610f2e57600080fd5b505af11580156109c5573d6000803e3d6000fd5b6001600160a01b038116600090815260066020908152604091829020805483518184028101840190945280845260609392830182828015610fa257602002820191906000526020600020905b815481526020019060010190808311610f8e575b50505050509050919050565b60008062015180610fc1426170806144e5565b610fcb9190614549565b9050600060028451610fdd9190614640565b905060005b818110156110b65784610ff6826002614514565b815181106110065761100661460f565b6020026020010151831015801561104a575084611024826002614514565b61102f9060016144e5565b8151811061103f5761103f61460f565b602002602001015183105b80156110705750856000815181106110645761106461460f565b60200260200101514210155b801561109657508560018151811061108a5761108a61460f565b60200260200101514211155b156110a457600193506110b6565b806110ae81614625565b915050610fe2565b50505092915050565b6000546001600160a01b031633146110e95760405162461bcd60e51b81526004016108a490614599565b600155565b60096020818152600092835260409283902080546001820154600483015460058401546006850154600786015460088701548a516101008101909b5298870180546001600160a01b039081168c52600a890180549882169c979091169a9599949893979296939491929184019161116490614654565b80601f016020809104026020016040519081016040528092919081815260200182805461119090614654565b80156111dd5780601f106111b2576101008083540402835291602001916111dd565b820191906000526020600020905b8154815290600101906020018083116111c057829003601f168201915b50505050508152602001600282016040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561127557602002820191906000526020600020906000905b82829054906101000a900460ff166003811115611253576112536140c5565b8152602060019283018181049485019490930390920291018084116112345790505b5050505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561134f5783829060005260206000200180546112c290614654565b80601f01602080910402602001604051908101604052809291908181526020018280546112ee90614654565b801561133b5780601f106113105761010080835404028352916020019161133b565b820191906000526020600020905b81548152906001019060200180831161131e57829003601f168201915b5050505050815260200190600101906112a3565b50505091525050815260048201546001600160a01b0381166020830152600160a01b900460ff161515604082015260058201805460609092019161139290614654565b80601f01602080910402602001604051908101604052809291908181526020018280546113be90614654565b801561140b5780601f106113e05761010080835404028352916020019161140b565b820191906000526020600020905b8154815290600101906020018083116113ee57829003601f168201915b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561146357602002820191906000526020600020905b81548152602001906001019080831161144f575b50505050508152602001600782018054806020026020016040519081016040528092919081815260200182805480156114bb57602002820191906000526020600020905b8154815260200190600101908083116114a7575b505050505081525050905088565b600660205281600052604060002081815481106114e557600080fd5b90600052602060002001600091509150505481565b604080516001808252818301909252600091816020015b611519613a4e565b8152602001906001900390816115115790505060008151811061153e5761153e61460f565b60200260200101519050611553888888612fa3565b884244338660405160200161156c95949392919061468f565b60408051601f1981840301815291815281516020928301208084526000908152600790925290205460ff16156115b45760405162461bcd60e51b81526004016108a49061457b565b80516000908152600760209081526040808320805460ff1916600117905533835260059091529020546115e79034610864565b336000908152600560205260409020908155600101546116079034610864565b33600081815260056020526040908190206001019290925582519151309263bbd6c3919261163a929091906024016145b7565b60408051601f19818403018152918152602080830180516001600160e01b031660e09590951b94909417909352848301919091528051600181830181815260808301909352909350839260608401908036833701905050815260408051600180825281830190925260209092019190816020015b60608152602001906001900390816116ae575050905260608201819052518051600291906000906116e1576116e161460f565b602002602001019060038111156116fa576116fa6140c5565b9081600381111561170d5761170d6140c5565b90525060408051602081019091526000815281606001516020015160008151811061173a5761173a61460f565b602002602001018190525061176d308260200151836060015173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6134af565b81604001818152505080604001516004600060025481526020019081526020016000208190555060066000336001600160a01b03166001600160a01b03168152602001908152602001600020816040015190806001815401808255809150506001900390600052602060002001600090919091909150558060400151600860008360000151815260200190815260200160002081905550604051806101400160405280896001600160a01b03168152602001336001600160a01b0316815260200188815260200187815260200186815260200185815260200160008152602001600254815260200182600001518152602001604051806101000160405280306001600160a01b03168152602001846020015181526020018460600151815260200173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b031681526020016001151581526020018c81526020018681526020018581525081525081608001819052508060800151600960008360400151815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816002019080519060200190611967929190613aa3565b5060608201518051611983916003840191602090910190613aa3565b506080820151600482015560a0820151600582015560c0820151600682015560e08201516007820155610100820151600882015561012082015180516009830180546001600160a01b0319166001600160a01b0390921691909117815560208083015180516119f892600a8701920190613af8565b506040820151805180516002840191611a1691839160200190613b6b565b506020828101518051611a2f9260018501920190613c1a565b505050606082015160048201805460808501511515600160a01b026001600160a81b03199091166001600160a01b039093169290921791909117905560a08201518051611a86916005840191602090910190613af8565b5060c08201518051611aa2916006840191602090910190613a03565b5060e08201518051611abe916007840191602090910190613a03565b505060025460408086015181514281523360208201529182019290925260608101919091527f75d79f1179f9c22b409e032daf360405a38481f3f67b40b383e3eda586ae7bff93506080019150611b129050565b60405180910390a1600254611b28906001610864565b600255505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611bae5760405162461bcd60e51b815260206004820152601960248201527f4f6e6c7920646564696361746564206d73672e73656e6465720000000000000060448201526064016108a4565b6000818152600860209081526040808320548352600990915290206005810154829190611bf390611bde906108b6565b6000848152600a602052604090205490610864565b421015611c2b5760405162461bcd60e51b81526004016108a4906020808252600490820152637430303160e01b604082015260600190565b611cd781600901600601805480602002602001604051908101604052809291908181526020018280548015611c7f57602002820191906000526020600020905b815481526020019060010190808311611c6b575b50505050601084018054604080516020808402820181019092528281529350830182828015611ccd57602002820191906000526020600020905b815481526020019060010190808311611cb9575b5050505050610fae565b611d0c5760405162461bcd60e51b81526004016108a4906020808252600490820152633a18181960e11b604082015260600190565b60008381526008602090815260408083205483526009909152808220815161014081019092529190805a81526020018360040154815260200183600201600081548110611d5b57611d5b61460f565b600091825260209182902001546001600160a01b0316825260028501805492909101916001908110611d8f57611d8f61460f565b60009182526020808320909101546001600160a01b0316835282810182905260408301829052606083018290526080830182905260a0830182905260c090920152810151909150611de157505061283e565b80604001516001600160a01b0316600360009054906101000a90046001600160a01b03166001600160a01b031663c54e44eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6691906145f2565b6001600160a01b03161415611ede57600354600480840154604051630726edd760e01b81526001600160a01b0390931692630726edd792611eab928b929091016145b7565b600060405180830381600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b505050505b602081015160408083015184549151636eb1769f60e11b81523060048201526001600160a01b03928316602482015291169063dd62ed3e90604401602060405180830381865afa158015611f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5a9190614701565b1015611fdc576040808201518354600154925163095ea7b360e01b81526001600160a01b039283169363095ea7b393611f979316916004016145b7565b6020604051808303816000875af1158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fda91906145d0565b505b60408082015190516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204a9190614701565b608082015260608101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bd9190614701565b60a082015281546020820151604051635c11d79560e01b81526001600160a01b0390921691635c11d795916121009160009060028801903090429060040161471a565b600060405180830381600087803b15801561211a57600080fd5b505af115801561212e573d6000803e3d6000fd5b50505060608201516040516370a0823160e01b81523060048201526001600160a01b0390911691506370a0823190602401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a09190614701565b60c0820181905260a08201516121b69190612f08565b6020820181905260608201518354604051636eb1769f60e11b81523060048201526001600160a01b03918216602482015291169063dd62ed3e90604401602060405180830381865afa158015612210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122349190614701565b10156122b7576060810151825460015460405163095ea7b360e01b81526001600160a01b039384169363095ea7b393612272939116916004016145b7565b6020604051808303816000875af1158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b591906145d0565b505b81546020820151604051635c11d79560e01b81526001600160a01b0390921691635c11d795916122f59160009060038801903090429060040161471a565b600060405180830381600087803b15801561230f57600080fd5b505af1158015612323573d6000803e3d6000fd5b50505060408083015190516370a0823160e01b81523060048201526001600160a01b0390911691506370a0823190602401602060405180830381865afa158015612371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123959190614701565b60e0820181905260808201516123aa91612f08565b6101008201525a81516123bd91906144fd565b6101208201819052610100820151604080513281523360208201529081019290925260608201524260808201526001600160a01b03871660a08201527fa0d9b65f09b17e1dcced5c00595ea6716a194b77d97686eab539c0ebb7cc03b89060c00160405180910390a16007820154600880840154600088815260209283526040908190205481519485526001600160a01b038b169385019390935283015260608201527f80e5c66e5ffb3aad0b45468110664d533ae9d7488b0b67ef7fe3c2c96e9a28ac9060800160405180910390a1600080612498613550565b915091506124a682826135dd565b6001600160a01b0388166000908152600560205260409020600101548211156124ce57600080fd5b6001600160a01b0388166000908152600560205260409020600101546124f49083612f08565b6001600160a01b03891660009081526005602052604090206001810191909155600301546125229083610864565b6001600160a01b038916600090815260056020526040902060030155600684015461254e906001610864565b846006018190555082604001516001600160a01b0316600360009054906101000a90046001600160a01b03166001600160a01b031663c54e44eb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db91906145f2565b6001600160a01b031614156128285760006126e6600360009054906101000a90046001600160a01b03166001600160a01b031663253244f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126669190614701565b6003546040805163698518e560e01b815290516126e0926001600160a01b03169163698518e59160048083019260209291908290030181865afa1580156126b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d59190614701565b6004890154906136f0565b9061374a565b905060006127028286610100015161086490919063ffffffff16565b6001600160a01b038b166000908152600560205260409020600201549091508111156127595760405162461bcd60e51b81526004016108a4906020808252600490820152636b30303160e01b604082015260600190565b6001600160a01b038a1660009081526005602052604090206002015461277f9082612f08565b6001600160a01b03808c1660009081526005602052604090819020600201929092559086015160035460048901549183169263a9059cbb929116906127c49086610864565b6040518363ffffffff1660e01b81526004016127e19291906145b7565b6020604051808303816000875af1158015612800573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282491906145d0565b5050505b505050506000838152600a602052604090204290555b50505050565b600082815260096020526040902082906128666000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480612891575060018101546001600160a01b031633145b6128ad5760405162461bcd60e51b81526004016108a49061455d565b825160021480156128f15750826000815181106128cc576128cc61460f565b6020026020010151836001815181106128e7576128e761460f565b6020026020010151115b61290d5760405162461bcd60e51b81526004016108a49061457b565b6000848152600960209081526040909120845190916109c591600f840191870190613a03565b6000546001600160a01b0316331461295d5760405162461bcd60e51b81526004016108a490614599565b604051339082156108fc029083906000818181858888f1935050505015801561298a573d6000803e3d6000fd5b5050565b600081815260096020526040902060018101546001600160a01b031633146129c85760405162461bcd60e51b81526004016108a49061457b565b600d810154600160a01b900460ff16156129f45760405162461bcd60e51b81526004016108a490614790565b6009810154600a82018054612c0f926001600160a01b03169190612a1790614654565b80601f0160208091040260200160405190810160405280929190818152602001828054612a4390614654565b8015612a905780601f10612a6557610100808354040283529160200191612a90565b820191906000526020600020905b815481529060010190602001808311612a7357829003601f168201915b505060408051600b890180546060602082028401810185529383018181529296509094508593509091849190840182828015612b1b57602002820191906000526020600020906000905b82829054906101000a900460ff166003811115612af957612af96140c5565b815260206001928301818104948501949093039092029101808411612ada5790505b5050505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015612bf5578382906000526020600020018054612b6890614654565b80601f0160208091040260200160405190810160405280929190818152602001828054612b9490614654565b8015612be15780601f10612bb657610100808354040283529160200191612be1565b820191906000526020600020905b815481529060010190602001808311612bc457829003601f168201915b505050505081526020019060010190612b49565b50505091525050600d8501546001600160a01b03166134af565b50600d01805460ff60a01b1916600160a01b17905550565b600360009054906101000a90046001600160a01b03166001600160a01b031663c54e44eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9e91906145f2565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b0391909116906323b872dd906064016020604051808303816000875af1158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1791906145d0565b5033600090815260056020526040902060020154610c249082610864565b600081815260096020526040902060018101546001600160a01b03163314612d6f5760405162461bcd60e51b81526004016108a49061457b565b600d810154600160a01b900460ff16612d9a5760405162461bcd60e51b81526004016108a490614790565b612da38261378c565b600d01805460ff60a01b1916905550565b33600090815260056020526040902060010154811115612de65760405162461bcd60e51b81526004016108a49061457b565b604051339082156108fc029083906000818181858888f19350505050158015612e13573d6000803e3d6000fd5b5033600090815260056020526040902060010154612e319082612f08565b3360009081526005602052604090206001015550565b6000546001600160a01b03163314612e715760405162461bcd60e51b81526004016108a490614599565b6001600160a01b038116612eb05760405162461bcd60e51b81526004016108a4906020808252600490820152636b30303360e01b604082015260600190565b612eb981612f53565b50565b6000546001600160a01b03163314612ee65760405162461bcd60e51b81526004016108a490614599565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115612f3f5760405162461bcd60e51b8152602060048201526002602482015261329b60f11b60448201526064016108a4565b6000612f4b83856144fd565b949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600360009054906101000a90046001600160a01b03166001600160a01b031663c54e44eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301a91906145f2565b6001600160a01b0316826000815181106130365761303661460f565b60200260200101516001600160a01b03161480156131015750600360009054906101000a90046001600160a01b03166001600160a01b031663c54e44eb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c691906145f2565b6001600160a01b031681600183516130de91906144fd565b815181106130ee576130ee61460f565b60200260200101516001600160a01b0316145b61311d5760405162461bcd60e51b81526004016108a49061457b565b600360009054906101000a90046001600160a01b03166001600160a01b031663c54e44eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613170573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319491906145f2565b6001600160a01b0316816000815181106131b0576131b061460f565b60200260200101516001600160a01b03161415801561327d5750600360009054906101000a90046001600160a01b03166001600160a01b031663c54e44eb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561321d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324191906145f2565b6001600160a01b0316826001835161325991906144fd565b815181106132695761326961460f565b60200260200101516001600160a01b031614155b6132995760405162461bcd60e51b81526004016108a490614790565b80600182516132a891906144fd565b815181106132b8576132b861460f565b60200260200101516001600160a01b0316826000815181106132dc576132dc61460f565b60200260200101516001600160a01b03161461330a5760405162461bcd60e51b81526004016108a49061455d565b816001825161331991906144fd565b815181106133295761332961460f565b60200260200101516001600160a01b03168160008151811061334d5761334d61460f565b60200260200101516001600160a01b0316146133945760405162461bcd60e51b81526004016108a490602080825260049082015263194c0c0d60e21b604082015260600190565b816000815181106133a7576133a761460f565b60200260200101516001600160a01b031663095ea7b3846001546040518363ffffffff1660e01b81526004016133de9291906145b7565b6020604051808303816000875af11580156133fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342191906145d0565b50806000815181106134355761343561460f565b60200260200101516001600160a01b031663095ea7b3846001546040518363ffffffff1660e01b815260040161346c9291906145b7565b6020604051808303816000875af115801561348b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283e91906145d0565b604051633323b46760e01b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633323b467906135049088908890889088906004016147ae565b6020604051808303816000875af1158015613523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135479190614701565b95945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b810c6366040518163ffffffff1660e01b81526004016040805180830381865afa1580156135b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d491906147f7565b90939092509050565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156136c55760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168360405160006040518083038185875af1925050503d806000811461366f576040519150601f19603f3d011682016040523d82523d6000602084013e613674565b606091505b5050905080610a685760405162461bcd60e51b815260206004820152601e60248201527f5f7472616e736665723a20455448207472616e73666572206661696c6564000060448201526064016108a4565b61298a817f000000000000000000000000000000000000000000000000000000000000000084613809565b6000826136ff575060006108b0565b600061370b8385614514565b9050826137188583614640565b146108ad5760405162461bcd60e51b8152602060048201526002602482015261653760f01b60448201526064016108a4565b60008082116137805760405162461bcd60e51b81526020600482015260026024820152610ca760f31b60448201526064016108a4565b6000612f4b8385614640565b60405163ee8ca3b560e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ee8ca3b590602401600060405180830381600087803b1580156137ee57600080fd5b505af1158015613802573d6000803e3d6000fd5b5050505050565b610a688363a9059cbb60e01b84846040516024016138289291906145b7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260006138948260405180604001604052806002815260200161065360f41b815250856001600160a01b03166138e39092919063ffffffff16565b805190915015610a6857808060200190518101906138b291906145d0565b610a685760405162461bcd60e51b8152602060048201526002602482015261653160f01b60448201526064016108a4565b6060612f4b848460008585600080866001600160a01b0316858760405161390a919061481c565b60006040518083038185875af1925050503d8060008114613947576040519150601f19603f3d011682016040523d82523d6000602084013e61394c565b606091505b509150915061395d87838387613968565b979650505050505050565b606083156139d45782516139cd576001600160a01b0385163b6139cd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108a4565b5081612f4b565b612f4b83838151156139e95781518083602001fd5b8060405162461bcd60e51b81526004016108a49190614838565b828054828255906000526020600020908101928215613a3e579160200282015b82811115613a3e578251825591602001919060010190613a23565b50613a4a929150613c73565b5090565b6040518060a00160405280600080191681526020016060815260200160008019168152602001613a91604051806040016040528060608152602001606081525090565b8152602001613a9e613c88565b905290565b828054828255906000526020600020908101928215613a3e579160200282015b82811115613a3e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613ac3565b828054613b0490614654565b90600052602060002090601f016020900481019282613b265760008555613a3e565b82601f10613b3f57805160ff1916838001178555613a3e565b82800160010185558215613a3e5791820182811115613a3e578251825591602001919060010190613a23565b82805482825590600052602060002090601f01602090048101928215613a3e5791602002820160005b83821115613be057835183826101000a81548160ff02191690836003811115613bbf57613bbf6140c5565b02179055509260200192600101602081600001049283019260010302613b94565b8015613c0d5782816101000a81549060ff0219169055600101602081600001049283019260010302613be0565b5050613a4a929150613c73565b828054828255906000526020600020908101928215613c67579160200282015b82811115613c675782518051613c57918491602090910190613af8565b5091602001919060010190613c3a565b50613a4a929150613cf0565b5b80821115613a4a5760008155600101613c74565b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160008019168152602001613a9e613d0d565b80821115613a4a576000613d048282613d75565b50600101613cf0565b60405180610100016040528060006001600160a01b0316815260200160608152602001613d4d604051806040016040528060608152602001606081525090565b8152600060208201819052604082015260608082018190526080820181905260a09091015290565b508054613d8190614654565b6000825580601f10613d91575050565b601f016020900490600052602060002090810190612eb99190613c73565b600060208284031215613dc157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0757613e07613dc8565b604052919050565b600067ffffffffffffffff821115613e2957613e29613dc8565b5060051b60200190565b600082601f830112613e4457600080fd5b81356020613e59613e5483613e0f565b613dde565b82815260059290921b84018101918181019086841115613e7857600080fd5b8286015b84811015613e935780358352918301918301613e7c565b509695505050505050565b60008060408385031215613eb157600080fd5b82359150602083013567ffffffffffffffff811115613ecf57600080fd5b613edb85828601613e33565b9150509250929050565b6001600160a01b0381168114612eb957600080fd5b60008060408385031215613f0d57600080fd5b8235613f1881613ee5565b946020939093013593505050565b60008060408385031215613f3957600080fd5b50508035926020909101359150565b600060208284031215613f5a57600080fd5b81356108ad81613ee5565b60008060408385031215613f7857600080fd5b8235613f8381613ee5565b9150602083013567ffffffffffffffff811115613ecf57600080fd5b6020808252825182820181905260009190848201906040850190845b81811015613fd757835183529284019291840191600101613fbb565b50909695505050505050565b60008060408385031215613ff657600080fd5b82359150602083013561400881613ee5565b809150509250929050565b6000806040838503121561402657600080fd5b823567ffffffffffffffff8082111561403e57600080fd5b61404a86838701613e33565b9350602085013591508082111561406057600080fd5b50613edb85828601613e33565b60005b83811015614088578181015183820152602001614070565b8381111561283e5750506000910152565b600081518084526140b181602086016020860161406d565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b805160408084528151908401819052600091602091908201906060860190845b81811015614136578351600480821061412357634e487b7160e01b6000526021815260246000fd5b50835292840192918401916001016140fb565b505084830151868203878501528051808352908401925081840190600581901b8301850160005b8281101561418b57601f19858303018452614179828751614099565b9587019593870193915060010161415d565b5098975050505050505050565b600081518084526020808501945080840160005b838110156141c8578151875295820195908201906001016141ac565b509495945050505050565b600061010060018060a01b03808c168452808b166020850152508860408401528760608401528660808401528560a08401528460c08401528060e084015261422681840185516001600160a01b03169052565b602084015181610120850152614240610200850182614099565b915050604084015160ff19808584030161014086015261426083836140db565b92506060860151915061427f6101608601836001600160a01b03169052565b6080860151151561018086015260a086015185840382016101a087015291506142a88383614099565b925060c0860151915080858403016101c08601526142c68383614198565b925060e0860151915080858403016101e0860152506142e58282614198565b9c9b505050505050505050505050565b600082601f83011261430657600080fd5b813567ffffffffffffffff81111561432057614320613dc8565b614333601f8201601f1916602001613dde565b81815284602083860101111561434857600080fd5b816020850160208301376000918101602001919091529392505050565b803561437081613ee5565b919050565b600082601f83011261438657600080fd5b81356020614396613e5483613e0f565b82815260059290921b840181019181810190868411156143b557600080fd5b8286015b84811015613e935780356143cc81613ee5565b83529183019183016143b9565b600080600080600080600080610100898b0312156143f657600080fd5b883567ffffffffffffffff8082111561440e57600080fd5b61441a8c838d016142f5565b995061442860208c01614365565b985060408b013591508082111561443e57600080fd5b61444a8c838d01614375565b975060608b013591508082111561446057600080fd5b61446c8c838d01614375565b965060808b0135955060a08b0135945060c08b013591508082111561449057600080fd5b61449c8c838d01613e33565b935060e08b01359150808211156144b257600080fd5b506144bf8b828c01613e33565b9150509295985092959890939650565b634e487b7160e01b600052601160045260246000fd5b600082198211156144f8576144f86144cf565b500190565b60008282101561450f5761450f6144cf565b500390565b600081600019048311821515161561452e5761452e6144cf565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261455857614558614533565b500690565b6020808252600490820152636530303360e01b604082015260600190565b6020808252600490820152636530303160e01b604082015260600190565b6020808252600490820152633598181960e11b604082015260600190565b6001600160a01b03929092168252602082015260400190565b6000602082840312156145e257600080fd5b815180151581146108ad57600080fd5b60006020828403121561460457600080fd5b81516108ad81613ee5565b634e487b7160e01b600052603260045260246000fd5b6000600019821415614639576146396144cf565b5060010190565b60008261464f5761464f614533565b500490565b600181811c9082168061466857607f821691505b6020821081141561468957634e487b7160e01b600052602260045260246000fd5b50919050565b6000865160206146a28285838c0161406d565b818401915087825286818301526bffffffffffffffffffffffff198660601b166040830152605482019150845181860160005b828110156146f1578151855293830193908301906001016146d5565b50929a9950505050505050505050565b60006020828403121561471357600080fd5b5051919050565b600060a082018783526020878185015260a0604085015281875480845260c0860191508860005282600020935060005b8181101561476f5784546001600160a01b03168352600194850194928401920161474a565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252600490820152633298181960e11b604082015260600190565b600060018060a01b038087168352608060208401526147d06080840187614099565b83810360408501526147e281876140db565b92505080841660608401525095945050505050565b6000806040838503121561480a57600080fd5b82519150602083015161400881613ee5565b6000825161482e81846020870161406d565b9190910192915050565b602081526000610904602083018461409956fea26469706673582212209ace9bbc6f525571f7b93b78971c47e5003c7bec9efc6f1d6f93038957ddf01f64736f6c634300080c00330000000000000000000000000000000000c097ce7bc90715b34b9f1000000000000000000000000000000000b3f5503f93d5ef84b06993a1975b9d21b962892f000000000000000000000000757c008f0ac1df63ff88ef1bb83ce05426273c95000000000000000000000000c631ffe3cafaef2ea12c6ee0a3633693c66fb71d

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

0000000000000000000000000000000000c097ce7bc90715b34b9f1000000000000000000000000000000000b3f5503f93d5ef84b06993a1975b9d21b962892f000000000000000000000000757c008f0ac1df63ff88ef1bb83ce05426273c95000000000000000000000000c631ffe3cafaef2ea12c6ee0a3633693c66fb71d

-----Decoded View---------------
Arg [0] : _approveAmount (uint256): 1000000000000000000000000000000000000
Arg [1] : _ops (address): 0xb3f5503f93d5ef84b06993a1975b9d21b962892f
Arg [2] : _fundsOwner (address): 0x757c008f0ac1df63ff88ef1bb83ce05426273c95
Arg [3] : _USDTPoolAddress (address): 0xc631ffe3cafaef2ea12c6ee0a3633693c66fb71d

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000c097ce7bc90715b34b9f1000000000
Arg [1] : 000000000000000000000000b3f5503f93d5ef84b06993a1975b9d21b962892f
Arg [2] : 000000000000000000000000757c008f0ac1df63ff88ef1bb83ce05426273c95
Arg [3] : 000000000000000000000000c631ffe3cafaef2ea12c6ee0a3633693c66fb71d


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading