More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 12,648 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Compound | 60782492 | 2 hrs ago | IN | 0 AVAX | 0.0000063 | ||||
Compound | 60781925 | 3 hrs ago | IN | 0 AVAX | 0.00000932 | ||||
Compound | 60772089 | 6 hrs ago | IN | 0 AVAX | 0.00000638 | ||||
Compound | 60771383 | 7 hrs ago | IN | 0 AVAX | 0.00001139 | ||||
Compound | 60761313 | 10 hrs ago | IN | 0 AVAX | 0.00000608 | ||||
Compound | 60760377 | 11 hrs ago | IN | 0 AVAX | 0.00000672 | ||||
Compound | 60755473 | 13 hrs ago | IN | 0 AVAX | 0.00000616 | ||||
Compound | 60750499 | 14 hrs ago | IN | 0 AVAX | 0.00000912 | ||||
Compound | 60749314 | 15 hrs ago | IN | 0 AVAX | 0.0000051 | ||||
Compound | 60744599 | 17 hrs ago | IN | 0 AVAX | 0.00000611 | ||||
Compound | 60739856 | 18 hrs ago | IN | 0 AVAX | 0.00170674 | ||||
Compound | 60738771 | 19 hrs ago | IN | 0 AVAX | 0.00065453 | ||||
Compound | 60734451 | 21 hrs ago | IN | 0 AVAX | 0.00001276 | ||||
Compound | 60729534 | 22 hrs ago | IN | 0 AVAX | 0.00000574 | ||||
Compound | 60728102 | 23 hrs ago | IN | 0 AVAX | 0.00000533 | ||||
Compound | 60724222 | 25 hrs ago | IN | 0 AVAX | 0.00000696 | ||||
Compound | 60719274 | 26 hrs ago | IN | 0 AVAX | 0.00000532 | ||||
Compound | 60717712 | 27 hrs ago | IN | 0 AVAX | 0.00000874 | ||||
Compound | 60714074 | 29 hrs ago | IN | 0 AVAX | 0.00000797 | ||||
Compound | 60709848 | 30 hrs ago | IN | 0 AVAX | 0.00000518 | ||||
Compound | 60708063 | 31 hrs ago | IN | 0 AVAX | 0.00000528 | ||||
Compound | 60704460 | 33 hrs ago | IN | 0 AVAX | 0.00000684 | ||||
Withdraw | 60700055 | 34 hrs ago | IN | 0 AVAX | 0.00001075 | ||||
Compound | 60698262 | 35 hrs ago | IN | 0 AVAX | 0.00000513 | ||||
Compound | 60695126 | 37 hrs ago | IN | 0 AVAX | 0.00000582 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
53882337 | 140 days ago | 0.0985 AVAX | ||||
53882337 | 140 days ago | 0.0015 AVAX | ||||
53557707 | 148 days ago | 0.0985 AVAX | ||||
53557707 | 148 days ago | 0.0015 AVAX | ||||
53467875 | 150 days ago | 0.197 AVAX | ||||
53467875 | 150 days ago | 0.003 AVAX | ||||
52866855 | 164 days ago | 0.0985 AVAX | ||||
52866855 | 164 days ago | 0.0015 AVAX | ||||
51772817 | 190 days ago | 0.197 AVAX | ||||
51772817 | 190 days ago | 0.003 AVAX | ||||
51531530 | 196 days ago | 1.1229 AVAX | ||||
51531530 | 196 days ago | 0.0171 AVAX | ||||
51276880 | 202 days ago | 0.34475 AVAX | ||||
51276880 | 202 days ago | 0.00525 AVAX | ||||
51216534 | 204 days ago | 0.197 AVAX | ||||
51216534 | 204 days ago | 0.003 AVAX | ||||
50575023 | 219 days ago | 0.87665 AVAX | ||||
50575023 | 219 days ago | 0.01335 AVAX | ||||
50138082 | 230 days ago | 0.394 AVAX | ||||
50138082 | 230 days ago | 0.006 AVAX | ||||
49888790 | 236 days ago | 0.788 AVAX | ||||
49888790 | 236 days ago | 0.012 AVAX | ||||
49840227 | 237 days ago | 0.6895 AVAX | ||||
49840227 | 237 days ago | 0.0105 AVAX | ||||
48646970 | 266 days ago | 0.197 AVAX |
Loading...
Loading
Contract Name:
LaMiner
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at snowscan.xyz on 2024-04-01 */ // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @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 or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * 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. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @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`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) 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 FailedInnerCall(); } } } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. * * ==== Security Considerations * * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be * considered as an intention to spend the allowance in any specific way. The second is that because permits have * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be * generally recommended is: * * ```solidity * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public { * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {} * doThing(..., value); * } * * function doThing(..., uint256 value) public { * token.safeTransferFrom(msg.sender, address(this), value); * ... * } * ``` * * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also * {SafeERC20-safeTransferFrom}). * * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so * contracts should have entry points that don't rely on permit. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. * * CAUTION: See Security Considerations above. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); } // File: @openzeppelin/contracts/utils/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant NOT_ENTERED = 1; uint256 private constant ENTERED = 2; uint256 private _status; /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); constructor() { _status = NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be NOT_ENTERED if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // Any calls to nonReentrant after this point will fail _status = ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: IRouter.sol pragma solidity ^0.8.20; interface IRouter { function swapExactAVAXForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function WAVAX() external returns (address); } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.20; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; /** * @dev An operation with an ERC20 token failed. */ error SafeERC20FailedOperation(address token); /** * @dev Indicates a failed `decreaseAllowance` request. */ error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease); /** * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value))); } /** * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful. */ function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value))); } /** * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 oldAllowance = token.allowance(address(this), spender); forceApprove(token, spender, oldAllowance + value); } /** * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no * value, non-reverting calls are assumed to be successful. */ function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal { unchecked { uint256 currentAllowance = token.allowance(address(this), spender); if (currentAllowance < requestedDecrease) { revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease); } forceApprove(token, spender, currentAllowance - requestedDecrease); } } /** * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval * to be set to zero before setting it to a non-zero value, such as USDT. */ function forceApprove(IERC20 token, address spender, uint256 value) internal { bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value)); if (!_callOptionalReturnBool(token, approvalCall)) { _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0))); _callOptionalReturn(token, approvalCall); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data); if (returndata.length != 0 && !abi.decode(returndata, (bool))) { revert SafeERC20FailedOperation(address(token)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). * * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead. */ function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false // and not revert is the subcall reverts. (bool success, bytes memory returndata) = address(token).call(data); return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0; } } // File: LAMAMINERFINAL.sol // // #@@@@% // ### #@@@@@@@@@@@@@@@%#% *@@+.:#@@@% // %@@%%@@@ %@%-.:::-----::::.-*%@@@%% %@@.....:*@@% // *@%....*@@ %@#.:-==-:-++++==****++--*%@@%# %@*...:=.:+@@% // @@=:....%@@ %@*.:::::::::=-:--=**+++#%##+=#@@%@@=...+@%::#@@% // @@:*....+@@ %@*::::::====-:-+----=++**####%#+#@@@-..:*@*#.-@@% // @@.#:...-@@% %@%.:=:--..:-.:+=-=+=---+*#**###%#=%@@:..:*@*#-:#@@ // @@:%-....#@@ #@#.:=-:.-++--==:-+===**=-+++######**@@...-%#***:*@@ // @@:+*....-@@# %@%.:-.=+:.-==+::==-*=-:+**+*#+###%%#+@*...=@#+**:*@@ // @@=+%:...:*@@# *@@::::=:-=:==+-=+--+=+=-=****=#%#+*%#%@:..:#@#***:*@@ // %@#=##....:#@@**@@:++=++************++*****#**#**%##%#@%...=@%**#=-#@@ // +@@=*@%%@@@@%#*=-:.............:--=*#%%@@%%%%%###%%##*@=..:#@#**#.-@@@ // ##@@@%*=:.::..::*%*+++=.:=+++++++++-:::-+:=+=-:.:+#%@@@@@%:.:+@%****:*@@% // +%%@%*-..::::++-:+*#****#*#%%%%%%%####*****++++++***+:-:=:==--+#@@@@%#*#--%@@ // *%@@+:-=:=:=+++*##%%%##*-=**+-.-+**=*+:-+===*#+*#%%@@%%##****:****:*+=-+#@@@%@@ // +@@+:-****#+#%%#==+-==:.-+++::=#+*+-:+=:+*--+**++*=-*#-++-+##%@@%##**:***-+*=-+%@@@% // %@*::+++*%%#=..:-=+.-=*-+*=-=+#*=**=+#**+=+##==*+=+*==+#+-*--#--=###+%@@%#*+**##=**+%@@@# // %@-**#%==++==*-+**+==*-=#++#%*+*%%#%**##%%#**%%**####+=*%#*#+-**+*==+-###*#@@%##*=##%%*#@@@# // @@#%*++**+-:-==*=****#####%%###%%%%@@@@@@@@@%%%#######%#*##**#+*###**++#*%-+%%*#@@%#%%@@%#*@@@ // @@*.-****++*+*##*#%%%#%@@@@@@%*+=============++#%@@@@@@@@@%###%#%%###%+####=#*#%%++%@@%%@%%%+%@@% // %@#.-+**%#*%%%%##%@@@%*+=--=@+:........*=:.......:++=====+*%@@@@@%##%%%#%%%#*%#**%=*#+#%@@%%%%##@@% // %@#:*-**++###%@@@@@#....:..=@@*=-=*....................+*=+%===+*#%@@@%%%%%#%#**#%+%##%+#%@%%%#*@@% // %@@--%*###*%%%%@@@%....:=...-*###@+:..:...:*+...............:::=**%%*#%@@@%%%%%#%##%%%%*%##%@%%*@@ // #@@%-=*#**#%%##@@@@+:............=**+........::............-+---=+++++++*%@@@%###%%%%%#%%%%*%#*@@ // *@@@#=+*#*####@@@*:..............-*==-...........:*:....:::-*=-----==+**=-@@@@%%%%%%%#%%%%+*@@@ // %@@@%*=+###@@=...-=.....+:.........=.....::::=%@*::::---#%-:---==+++-=@@@%%@@#%%%%%%#%#=@@@ // #%@@@@%**@@@@%+@*-:-+@%-.....::+%-::::-=#@@*+@@#++#%@#-.::-=#%%%@@@@@@%%%%%*%%%%%*+%@@% // %%%@@@@=...-#@@@%+%@%*===*%@@@@@@@@%*=:..:=*#*+=:...:::-=-=@@@#%%%%%#%%*%*+#%@@@@ // %@@@#.........:+#%%%*=-...:::..................:::-==-:@@%##**+*#%@@@@@@@ // %@%...................::.....................:::::-=+=.@@@@@@@@@@@% // %@+......-@-#@+...#@%*+=+*%@@#:......#:#@#..:::..:---:+@@@@ // @@=......%@%#@@:+@-.......:--*@%....#@%-%@+......::-*@@@@% // %@@%+-...-@@@@--@@@%#*#%@%*---=%@:..=@@@@@:....:+:::-==+@@@% // @@%+.........-@=:-#@@@*------==@*....==-....:-:..::--==:%@@ // %@@*-........@*...:@#..::---===@%................::--++--@@ // %@@*...... .:@*::-*@%:::----=+%@*....... ....::::--=+=:%@@ // #@@-....... ..+@@@@%:#@%*++*#%@@@-..... ......:::----#@@@% // #@@*.............-@@#*+*@@@@@@@@@*..... ......*=---=@@@% // %@@@:+-..........%@@@@@@*+=+#*@%...... ...:#+*%*--==.#@@@ // @@+..:%%%=.......:@@%=-++++-#@*:...... .......:::---++.%@@ // @@#:...............*@@@@@@@@*-..... ......+....::=*+*+:@@@ // @@@@#...*=-.........:----:............---#*..:::--=+*@@@@% // #@@=.......................... ..............:*---===%@@ // #@@#........... ............. .....:..=...:::#+====.+@@% // @@@#.....:.......:......... ....-..:.:=#-:--+@+-=*@@@@% // @@@+::.*-.......+##-...... ....-..:::=%*%@@%+--=+--@@@ // %@@@%:#+:............=.........:::::-=%*..:::----=+=.@@@ // %@#..-%%+=*-........+=....:::-+-+#%@%-.-::::---=++-:@@@ // %@@@#..-=+%:........:%*:::--+@=.........*-::-=++=+@@@@ // @@@@%:..##::.......:+@@@@@*:....:...::#*::---+@@@@% // @@@-.....#@*-:::--+%-..:........-*::-#%-::---=+=%@@@ // @@%........:*%@@@@#-.............-%=*#+:::----==+=-@@@% // %@@=...... ....................-..=%:..::::--++++++.*@@@ // %@@=......................-...:=:=%=...::::--=++*+:+@@@% // @@@%*--=-.:.....::.:-.:+..:#+-=*%%=..:::::-*+====*@@@@@@ // @@@@%+..........+%#*%+.....-***-:...:+:::-=%====+-.+@@@@ // @@@@:........-....................:::-#*+*%%+===+*#:.%@@@ // @@@@-..........#:........-:.......:::*:::-+++====+***#-.%@@@ // @@@-.:..-=.:+...*%*......=#.....-::::#=::::---===++*##=.@@@ // @@@=-::::-+-.............:*%-:::=-::*%-:::-----==*+++#@@@@@@ // @@@@*=-:...........-*...-#:-%@%**#%@#-:*-----=+===%++++++%@@@@ // @@@@%:....--...:=..=%%%*:..::-===--:::=%=----=+*+@*+++**-.%@@@@ // %@@@=.......#%#%*.........::::::::::----=%%*+++*%@#+++*++#+%@@@% // @@@@@@-.::..::.:.......::.:::::::::=-:-------=*#%%#*+++++*%@@@@% // %@@@@%*=:--:-::=::-::-:::--::+::-#=-------=======++#%@@@@%# // %@@@@@%#++#-:++::=::=#-::-*##=-==-----=#**#%@@@@@%# // %%%@@@@@@@%#**%#---------=+#%%%@@@@@@@%% // ##%%@@@@@@@@@@@@@@@@@@%%** // // // // 88 88 // 88 88 // 88 88 // 88 88 ,adPPYYba, 88,dPYba,,adPYba, ,adPPYYba, // 88 88 "" `Y8 88P' "88" "8a "" `Y8 // 88 88 ,adPPPPP88 88 88 88 ,adPPPPP88 // 88 88 88, ,88 88 88 88 88, ,88 // 88 88 `"8bbdP"Y8 88 88 88 `"8bbdP"Y8 // // , // ~) // (_---; // /|~|\ // / / /| // // Website : https://avaxlama.com // Twitter : https://twitter.com/AvaxLama // Telegram : https://t.me/AvaxLama // // Spit Happens pragma solidity ^0.8.20; contract LaMiner is Ownable(msg.sender), ReentrancyGuard { using SafeERC20 for IERC20; uint256 public constant TREATS_TO_SPAWN_1TRAINER = 864_000; uint256 private constant PSN = 10_000; uint256 private constant PSNH = 5_000; bool public initialized = false; IERC20 public immutable lamaToken; IRouter public immutable routerDex; address public devAddress; address public protocolAddress; mapping(address => uint256) public lamaTrainers; mapping(address => uint256) public claimedLamas; mapping(address => uint256) public lastTraining; mapping(address => uint256) public lastWithdraw; mapping(address => address) public referrals; uint256 private constant TRAINING_STEP = 1 days; uint256 private constant TRAINING_STEP_MODIFIER = 0.1e18; uint256 private constant BASE_PERCENTAGE = 0.5e18; uint256 public marketLama; constructor() { lamaToken = IERC20(0x89A8633bcaD3af0951acC5137811ea21a17C37DC); // set lama token address routerDex = IRouter(0x60aE616a2155Ee3d9A68541Ba4544862310933d4); // set router address devAddress = 0xd6f88BF11BdA164EDB29c4aD05Fa30d1A9d07643; // set dev address protocolAddress = 0x000000000000000000000000000000000000dEaD; // set protocol address } /** Public/External call **/ function calculateTrade( uint256 rt, uint256 rs, uint256 bs ) public pure returns (uint256) { return (PSN * bs) / (PSNH + ((PSN * rs + PSNH * rt) / rt)); } function calculateTreatBuy( uint256 avax, uint256 contractBalance ) public view returns (uint256) { return calculateTrade(avax, contractBalance, marketLama); } function calculateTreatBuySimple( uint256 avax ) external view returns (uint256) { return calculateTreatBuy(avax, getBalance()); } function calculateTreatSell(uint256 treats) public view returns (uint256) { if (treats > 0) { return calculateTrade(treats, marketLama, getBalance()); } return 0; } function getHalvingPercentage() external view returns (uint256) { uint256 steps = (block.timestamp - lastWithdraw[msg.sender]) / TRAINING_STEP; return _min(1e18, BASE_PERCENTAGE + steps * TRAINING_STEP_MODIFIER); } function getBalance() public view returns (uint256) { return lamaToken.balanceOf(address(this)); } function getMyTreats() public view returns (uint256) { return claimedLamas[msg.sender] + getTreatsSinceLastHatch(msg.sender); } function getTreatsSinceLastHatch( address adr ) public view returns (uint256) { uint256 steps = (block.timestamp - lastWithdraw[msg.sender]) / TRAINING_STEP; // the percentage is capped at 100% // it takes 1 day to reach 100% after a withdrawal uint256 percentage = _min( 1e18, BASE_PERCENTAGE + steps * TRAINING_STEP_MODIFIER ); uint256 secondsPassed = _min( TREATS_TO_SPAWN_1TRAINER, block.timestamp - lastTraining[adr] ); return ((secondsPassed * lamaTrainers[adr]) * percentage) / 1e18; } /** Public/External TX **/ event Compound( address indexed sender, uint256 treatsUsed, uint256 newTrainers, address indexed ref, uint256 referrerTreatsUsed ); function compound(address ref) public { require(initialized, "ERROR_NOT_INITIALIZED"); uint256 treatsUsed = getMyTreats(); uint256 newTrainers = treatsUsed / TREATS_TO_SPAWN_1TRAINER; uint256 referrerTreatsUsed; if (referrals[msg.sender] == address(0) && ref != address(0) && ref != msg.sender) { referrals[msg.sender] = ref; referrerTreatsUsed = treatsUsed / 10; claimedLamas[ref] += referrerTreatsUsed; } lamaTrainers[msg.sender] += newTrainers; claimedLamas[msg.sender] = 0; lastTraining[msg.sender] = block.timestamp; marketLama += treatsUsed / 2; emit Compound(msg.sender, treatsUsed, newTrainers, ref, referrerTreatsUsed); } event DepositAvax( address indexed sender, uint256 amountToSpend, address devAddress, uint256 devFeeAvaxValue, uint256 minLamaAmount, uint256 lamaAmountOut, address indexed ref ); function depositAvax(uint256 minLamaAmount, address ref) external payable nonReentrant { require(initialized, "ERROR_NOT_INITIALIZED"); require(msg.value > 0, "ERROR_INVALID_AMOUNT"); uint256 amountToSpend = msg.value; uint256 devFeeAvaxValue = _devFeeAvax(amountToSpend); (bool sentAvax, ) = devAddress.call{value: devFeeAvaxValue}(""); require(sentAvax, "ERROR_AVAX_FEE_SEND"); amountToSpend = amountToSpend - devFeeAvaxValue; uint256 lamaAmountOut = _swap(minLamaAmount, amountToSpend); emit DepositAvax( msg.sender, amountToSpend, devAddress, devFeeAvaxValue, minLamaAmount, lamaAmountOut, ref ); _deposit(lamaAmountOut, ref, true); } event DepositLama( address indexed sender, uint256 amount, address indexed ref ); function depositLama(uint256 amount, address ref) external nonReentrant { require(initialized, "ERROR_NOT_INITIALIZED"); require(amount > 0, "ERROR_INVALID_AMOUNT"); emit DepositLama(msg.sender, amount, ref); lamaToken.safeTransferFrom(msg.sender, address(this), amount); _deposit(amount, ref, false); } event Withdraw( address indexed sender, uint256 senderTreatValue, address indexed devAddress, uint256 devFee, address indexed protocolAddress, uint256 protocolFee ); function withdraw() external { require(initialized, "ERROR_NOT_INITIALIZED"); uint256 hasTreats = getMyTreats(); require(hasTreats > 0, "ERROR_NO_LAMAS"); uint256 treatValue = calculateTreatSell(hasTreats); uint256 devFee = _devFeeLama(treatValue); uint256 protocolFee = _protocolFee(treatValue); uint256 senderTreatValue = treatValue - devFee - protocolFee; claimedLamas[msg.sender] = 0; lastTraining[msg.sender] = block.timestamp; lastWithdraw[msg.sender] = block.timestamp; marketLama += hasTreats; emit Withdraw(msg.sender, senderTreatValue, devAddress, devFee, protocolAddress, protocolFee); lamaToken.safeTransfer(msg.sender, senderTreatValue); lamaToken.safeTransfer(devAddress, devFee); lamaToken.safeTransfer(protocolAddress, protocolFee); } /** Public/External TX:Admin **/ event SeedMarket(bool initialized, uint256 marketLama); function seedMarket() external payable onlyOwner { require(marketLama == 0, "ERROR_MARKET_ALREADY_SEEDED"); initialized = true; marketLama = 86_400_000_000; emit SeedMarket(initialized, marketLama); } /** Private call **/ function _devFeeAvax(uint256 amount) private pure returns (uint256) { return (amount * 1_500) / 100_000; // 1.5% fees avax & 1.5% lama on deposit with avax } function _devFeeLama(uint256 amount) private pure returns (uint256) { return (amount * 3_000) / 100_000; // 3% fees on deposit & withdrawal with lama } function _min(uint256 a, uint256 b) private pure returns (uint256) { return a < b ? a : b; } function _protocolFee(uint256 amount) private pure returns (uint256) { return (amount * 1_000) / 100_000; // 1% fees on deposit & withdrawal with lama } /** Private TX **/ function _deposit(uint256 amount, address ref, bool avax) private { uint256 lamaBought = calculateTreatBuy(amount, getBalance() - amount); if (avax) { lamaBought -= _devFeeAvax(lamaBought); } else { lamaBought -= _devFeeLama(lamaBought) + _protocolFee(lamaBought); } claimedLamas[msg.sender] += lamaBought; compound(ref); uint256 devFee = 0; uint256 protocolFee = _protocolFee(amount); if (avax) { devFee = _devFeeAvax(amount); } else { devFee = _devFeeLama(amount); } lamaToken.safeTransfer(devAddress, devFee); lamaToken.safeTransfer(protocolAddress, protocolFee); } function _swap(uint256 minTokenOut, uint256 amountToSpend) private returns (uint256) { uint256 initialBalance = getBalance(); address[] memory path = new address[](2); path[0] = routerDex.WAVAX(); path[1] = address(lamaToken); routerDex.swapExactAVAXForTokens{value: amountToSpend}( minTokenOut, path, address(this), block.timestamp ); uint256 finalBalance = getBalance(); require(finalBalance > initialBalance, "ERROR_SWAP_AMOUNTS"); return finalBalance - initialBalance; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"treatsUsed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTrainers","type":"uint256"},{"indexed":true,"internalType":"address","name":"ref","type":"address"},{"indexed":false,"internalType":"uint256","name":"referrerTreatsUsed","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountToSpend","type":"uint256"},{"indexed":false,"internalType":"address","name":"devAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"devFeeAvaxValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minLamaAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lamaAmountOut","type":"uint256"},{"indexed":true,"internalType":"address","name":"ref","type":"address"}],"name":"DepositAvax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"ref","type":"address"}],"name":"DepositLama","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":"bool","name":"initialized","type":"bool"},{"indexed":false,"internalType":"uint256","name":"marketLama","type":"uint256"}],"name":"SeedMarket","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"senderTreatValue","type":"uint256"},{"indexed":true,"internalType":"address","name":"devAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"devFee","type":"uint256"},{"indexed":true,"internalType":"address","name":"protocolAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"protocolFee","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"TREATS_TO_SPAWN_1TRAINER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rt","type":"uint256"},{"internalType":"uint256","name":"rs","type":"uint256"},{"internalType":"uint256","name":"bs","type":"uint256"}],"name":"calculateTrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"avax","type":"uint256"},{"internalType":"uint256","name":"contractBalance","type":"uint256"}],"name":"calculateTreatBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"avax","type":"uint256"}],"name":"calculateTreatBuySimple","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"treats","type":"uint256"}],"name":"calculateTreatSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimedLamas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ref","type":"address"}],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minLamaAmount","type":"uint256"},{"internalType":"address","name":"ref","type":"address"}],"name":"depositAvax","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"ref","type":"address"}],"name":"depositLama","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHalvingPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMyTreats","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getTreatsSinceLastHatch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lamaToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lamaTrainers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTraining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketLama","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrals","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerDex","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"seedMarket","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040526002805460ff19169055348015610019575f80fd5b50338061003f57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610048816100c0565b50600180557389a8633bcad3af0951acc5137811ea21a17c37dc6080527360ae616a2155ee3d9a68541ba4544862310933d460a0526002805474d6f88bf11bda164edb29c4ad05fa30d1a9d0764300610100600160a81b0319909116179055600380546001600160a01b03191661dead17905561010f565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60805160a0516118c96101765f395f8181610416015281816110ae01526111b801525f81816102aa0152818161056701528181610ade01528181610b1601528181610b5501528181610ee6015281816111610152818161136e01526113ad01526118c95ff3fe6080604052600436106101af575f3560e01c8063624d7b72116100e75780639ca423b311610087578063d34bfc2811610062578063d34bfc28146104e9578063f2fde38b146104fd578063f7e24b671461051c578063ff7fa7841461053b575f80fd5b80639ca423b314610477578063ae9a8388146104ab578063cce3db26146104be575f80fd5b80638da5cb5b116100c25780638da5cb5b146103e957806393808fe214610405578063958ad1191461043857806399d43a9914610463575f80fd5b8063624d7b72146103945780636c441ed2146103bf578063715018a6146103d5575f80fd5b80633ad10ef6116101525780633ccfd60b1161012d5780633ccfd60b146103175780633dea04af1461032b57806343eeac6c1461034a5780636025622c14610369575f80fd5b80633ad10ef6146102cc5780633b62848d146102f05780633c5f07cb1461030f575f80fd5b8063229824c41161018d578063229824c41461023a578063284dac23146102595780632f5b36bb1461027a5780633176820b14610299575f80fd5b80630676c1b7146101b357806312065fe0146101ef578063158ef93e14610211575b5f80fd5b3480156101be575f80fd5b506003546101d2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101fa575f80fd5b50610203610550565b6040519081526020016101e6565b34801561021c575f80fd5b5060025461022a9060ff1681565b60405190151581526020016101e6565b348015610245575f80fd5b50610203610254366004611571565b6105dd565b348015610264575f80fd5b506102786102733660046115ae565b610637565b005b348015610285575f80fd5b506102036102943660046115ae565b6107df565b3480156102a4575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d7575f80fd5b506002546101d29061010090046001600160a01b031681565b3480156102fb575f80fd5b5061020361030a3660046115c9565b6108be565b6102786108d1565b348015610322575f80fd5b50610278610987565b348015610336575f80fd5b506102036103453660046115c9565b610b85565b348015610355575f80fd5b506102036103643660046115e0565b610ba2565b348015610374575f80fd5b506102036103833660046115ae565b60056020525f908152604090205481565b34801561039f575f80fd5b506102036103ae3660046115ae565b60076020525f908152604090205481565b3480156103ca575f80fd5b50610203620d2f0081565b3480156103e0575f80fd5b50610278610bb0565b3480156103f4575f80fd5b505f546001600160a01b03166101d2565b348015610410575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b348015610443575f80fd5b506102036104523660046115ae565b60066020525f908152604090205481565b34801561046e575f80fd5b50610203610bc3565b348015610482575f80fd5b506101d26104913660046115ae565b60086020525f90815260409020546001600160a01b031681565b6102786104b9366004611600565b610be6565b3480156104c9575f80fd5b506102036104d83660046115ae565b60046020525f908152604090205481565b3480156104f4575f80fd5b50610203610d9c565b348015610508575f80fd5b506102786105173660046115ae565b610dec565b348015610527575f80fd5b50610278610536366004611600565b610e29565b348015610546575f80fd5b5061020360095481565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156105b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d8919061162e565b905090565b5f836105eb81611388611659565b6105f785612710611659565b6106019190611670565b61060b9190611683565b61061790611388611670565b61062383612710611659565b61062d9190611683565b90505b9392505050565b60025460ff166106625760405162461bcd60e51b8152600401610659906116a2565b60405180910390fd5b5f61066b610bc3565b90505f61067b620d2f0083611683565b335f90815260086020526040812054919250906001600160a01b03161580156106ac57506001600160a01b03841615155b80156106c157506001600160a01b0384163314155b1561072a57335f90815260086020526040902080546001600160a01b0319166001600160a01b0386161790556106f8600a84611683565b6001600160a01b0385165f90815260056020526040812080549293508392909190610724908490611670565b90915550505b335f9081526004602052604081208054849290610748908490611670565b9091555050335f90815260056020908152604080832083905560069091529020429055610776600284611683565b60095f8282546107869190611670565b909155505060408051848152602081018490529081018290526001600160a01b0385169033907f248d32c5893569b95b2456762347aba3446d8168b38becf5e3b0f93cc5596d529060600160405180910390a350505050565b335f90815260076020526040812054819062015180906107ff90426116d1565b6108099190611683565b90505f610841670de0b6b3a764000061082a67016345785d8a000085611659565b61083c906706f05b59d3b20000611670565b610f22565b6001600160a01b0385165f908152600660205260408120549192509061087090620d2f009061083c90426116d1565b6001600160a01b0386165f90815260046020526040902054909150670de0b6b3a76400009083906108a19084611659565b6108ab9190611659565b6108b59190611683565b95945050505050565b5f6108cb82610364610550565b92915050565b6108d9610f37565b600954156109295760405162461bcd60e51b815260206004820152601b60248201527f4552524f525f4d41524b45545f414c52454144595f53454544454400000000006044820152606401610659565b6002805460ff1916600190811790915564141dd7600060098190556040517fcc48ac39a472c75fe3886f46d596129a5f4a98be24ad73eb95888b7edc4d58d49261097d929015158252602082015260400190565b60405180910390a1565b60025460ff166109a95760405162461bcd60e51b8152600401610659906116a2565b5f6109b2610bc3565b90505f81116109f45760405162461bcd60e51b815260206004820152600e60248201526d4552524f525f4e4f5f4c414d415360901b6044820152606401610659565b5f6109fe82610b85565b90505f610a0a82610f63565b90505f610a1683610f7e565b90505f81610a2484866116d1565b610a2e91906116d1565b335f9081526005602090815260408083208390556006825280832042908190556007909252822055600980549293508792909190610a6d908490611670565b909155505060035460025460408051848152602081018790529081018590526001600160a01b03928316926101009092049091169033907fa8af84333a074f5fddf18891494ce9f815b72cf90139f9a5822a120e477775959060600160405180910390a4610b056001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383610f8f565b600254610b44906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169161010090041685610f8f565b600354610b7e906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684610f8f565b5050505050565b5f8115610b9b576108cb82600954610254610550565b505f919050565b5f61063083836009546105dd565b610bb8610f37565b610bc15f610ff3565b565b5f610bcd336107df565b335f908152600560205260409020546105d89190611670565b610bee611042565b60025460ff16610c105760405162461bcd60e51b8152600401610659906116a2565b5f3411610c565760405162461bcd60e51b815260206004820152601460248201527311549493d497d253959053125117d05353d5539560621b6044820152606401610659565b345f610c618261106c565b6002546040519192505f916101009091046001600160a01b03169083908381818185875af1925050503d805f8114610cb4576040519150601f19603f3d011682016040523d82523d5f602084013e610cb9565b606091505b5050905080610d005760405162461bcd60e51b815260206004820152601360248201527211549493d497d055905617d1915157d4d15391606a1b6044820152606401610659565b610d0a82846116d1565b92505f610d17868561107d565b600254604080518781526001600160a01b0361010090930483166020820152908101869052606081018990526080810183905291925086169033907f4982324705f1b783518cfa8592ee149104478037dca210bd385db60b44bf24609060a00160405180910390a3610d8b8186600161129e565b50505050610d9860018055565b5050565b335f9081526007602052604081205481906201518090610dbc90426116d1565b610dc69190611683565b9050610de6670de0b6b3a764000061082a67016345785d8a000084611659565b91505090565b610df4610f37565b6001600160a01b038116610e1d57604051631e4fbdf760e01b81525f6004820152602401610659565b610e2681610ff3565b50565b610e31611042565b60025460ff16610e535760405162461bcd60e51b8152600401610659906116a2565b5f8211610e995760405162461bcd60e51b815260206004820152601460248201527311549493d497d253959053125117d05353d5539560621b6044820152606401610659565b6040518281526001600160a01b0382169033907f7b0bbff5b204fe2803b3fc0071c21a0603102432a3789c5a4de316826532ff979060200160405180910390a3610f0e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856113de565b610f1982825f61129e565b610d9860018055565b5f818310610f305781610630565b5090919050565b5f546001600160a01b03163314610bc15760405163118cdaa760e01b8152336004820152602401610659565b5f620186a0610f7483610bb8611659565b6108cb9190611683565b5f620186a0610f74836103e8611659565b6040516001600160a01b03838116602483015260448201839052610fee91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061141d565b505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60026001540361106557604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b5f620186a0610f74836105dc611659565b5f80611087610550565b6040805160028082526060820183529293505f9290916020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166373b295c26040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611109573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112d91906116f8565b815f8151811061113f5761113f611713565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061119357611193611713565b6001600160a01b03928316602091820292909201015260405163a2a1623d60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063a2a1623d9086906111f7908990869030904290600401611727565b5f6040518083038185885af1158015611212573d5f803e3d5ffd5b50505050506040513d5f823e601f3d908101601f1916820160405261123a919081019061178f565b505f611244610550565b905082811161128a5760405162461bcd60e51b81526020600482015260126024820152714552524f525f535741505f414d4f554e545360701b6044820152606401610659565b61129483826116d1565b9695505050505050565b5f6112b684856112ac610550565b61036491906116d1565b905081156112d8576112c78161106c565b6112d190826116d1565b9050611301565b6112e181610f7e565b6112ea82610f63565b6112f49190611670565b6112fe90826116d1565b90505b335f908152600560205260408120805483929061131f908490611670565b9091555061132e905083610637565b5f8061133986610f7e565b905083156113515761134a8661106c565b915061135d565b61135a86610f63565b91505b60025461139c906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169161010090041684610f8f565b6003546113d6906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683610f8f565b505050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526114179186918216906323b872dd90608401610fbc565b50505050565b5f6114316001600160a01b0384168361147e565b905080515f141580156114555750808060200190518101906114539190611848565b155b15610fee57604051635274afe760e01b81526001600160a01b0384166004820152602401610659565b606061063083835f845f80856001600160a01b031684866040516114a29190611867565b5f6040518083038185875af1925050503d805f81146114dc576040519150601f19603f3d011682016040523d82523d5f602084013e6114e1565b606091505b5091509150611294868383606082611501576114fc82611548565b610630565b815115801561151857506001600160a01b0384163b155b1561154157604051639996b31560e01b81526001600160a01b0385166004820152602401610659565b5080610630565b8051156115585780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f805f60608486031215611583575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610e26575f80fd5b5f602082840312156115be575f80fd5b81356106308161159a565b5f602082840312156115d9575f80fd5b5035919050565b5f80604083850312156115f1575f80fd5b50508035926020909101359150565b5f8060408385031215611611575f80fd5b8235915060208301356116238161159a565b809150509250929050565b5f6020828403121561163e575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108cb576108cb611645565b808201808211156108cb576108cb611645565b5f8261169d57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526015908201527411549493d497d393d517d253925512505312569151605a1b604082015260600190565b818103818111156108cb576108cb611645565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611708575f80fd5b81516106308161159a565b634e487b7160e01b5f52603260045260245ffd5b5f60808201868352602060808185015281875180845260a08601915082890193505f5b8181101561176f5784516001600160a01b03168352938301939183019160010161174a565b50506001600160a01b039690961660408501525050506060015292915050565b5f60208083850312156117a0575f80fd5b825167ffffffffffffffff808211156117b7575f80fd5b818501915085601f8301126117ca575f80fd5b8151818111156117dc576117dc6116e4565b8060051b604051601f19603f83011681018181108582111715611801576118016116e4565b60405291825284820192508381018501918883111561181e575f80fd5b938501935b8285101561183c57845184529385019392850192611823565b98975050505050505050565b5f60208284031215611858575f80fd5b81518015158114610630575f80fd5b5f82515f5b81811015611886576020818601810151858301520161186c565b505f92019182525091905056fea2646970667358221220c5bd15d97b25364cddc21939c13317557c46056060e3ad214986fcfca5c10f3564736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101af575f3560e01c8063624d7b72116100e75780639ca423b311610087578063d34bfc2811610062578063d34bfc28146104e9578063f2fde38b146104fd578063f7e24b671461051c578063ff7fa7841461053b575f80fd5b80639ca423b314610477578063ae9a8388146104ab578063cce3db26146104be575f80fd5b80638da5cb5b116100c25780638da5cb5b146103e957806393808fe214610405578063958ad1191461043857806399d43a9914610463575f80fd5b8063624d7b72146103945780636c441ed2146103bf578063715018a6146103d5575f80fd5b80633ad10ef6116101525780633ccfd60b1161012d5780633ccfd60b146103175780633dea04af1461032b57806343eeac6c1461034a5780636025622c14610369575f80fd5b80633ad10ef6146102cc5780633b62848d146102f05780633c5f07cb1461030f575f80fd5b8063229824c41161018d578063229824c41461023a578063284dac23146102595780632f5b36bb1461027a5780633176820b14610299575f80fd5b80630676c1b7146101b357806312065fe0146101ef578063158ef93e14610211575b5f80fd5b3480156101be575f80fd5b506003546101d2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101fa575f80fd5b50610203610550565b6040519081526020016101e6565b34801561021c575f80fd5b5060025461022a9060ff1681565b60405190151581526020016101e6565b348015610245575f80fd5b50610203610254366004611571565b6105dd565b348015610264575f80fd5b506102786102733660046115ae565b610637565b005b348015610285575f80fd5b506102036102943660046115ae565b6107df565b3480156102a4575f80fd5b506101d27f00000000000000000000000089a8633bcad3af0951acc5137811ea21a17c37dc81565b3480156102d7575f80fd5b506002546101d29061010090046001600160a01b031681565b3480156102fb575f80fd5b5061020361030a3660046115c9565b6108be565b6102786108d1565b348015610322575f80fd5b50610278610987565b348015610336575f80fd5b506102036103453660046115c9565b610b85565b348015610355575f80fd5b506102036103643660046115e0565b610ba2565b348015610374575f80fd5b506102036103833660046115ae565b60056020525f908152604090205481565b34801561039f575f80fd5b506102036103ae3660046115ae565b60076020525f908152604090205481565b3480156103ca575f80fd5b50610203620d2f0081565b3480156103e0575f80fd5b50610278610bb0565b3480156103f4575f80fd5b505f546001600160a01b03166101d2565b348015610410575f80fd5b506101d27f00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d481565b348015610443575f80fd5b506102036104523660046115ae565b60066020525f908152604090205481565b34801561046e575f80fd5b50610203610bc3565b348015610482575f80fd5b506101d26104913660046115ae565b60086020525f90815260409020546001600160a01b031681565b6102786104b9366004611600565b610be6565b3480156104c9575f80fd5b506102036104d83660046115ae565b60046020525f908152604090205481565b3480156104f4575f80fd5b50610203610d9c565b348015610508575f80fd5b506102786105173660046115ae565b610dec565b348015610527575f80fd5b50610278610536366004611600565b610e29565b348015610546575f80fd5b5061020360095481565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000089a8633bcad3af0951acc5137811ea21a17c37dc6001600160a01b0316906370a0823190602401602060405180830381865afa1580156105b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d8919061162e565b905090565b5f836105eb81611388611659565b6105f785612710611659565b6106019190611670565b61060b9190611683565b61061790611388611670565b61062383612710611659565b61062d9190611683565b90505b9392505050565b60025460ff166106625760405162461bcd60e51b8152600401610659906116a2565b60405180910390fd5b5f61066b610bc3565b90505f61067b620d2f0083611683565b335f90815260086020526040812054919250906001600160a01b03161580156106ac57506001600160a01b03841615155b80156106c157506001600160a01b0384163314155b1561072a57335f90815260086020526040902080546001600160a01b0319166001600160a01b0386161790556106f8600a84611683565b6001600160a01b0385165f90815260056020526040812080549293508392909190610724908490611670565b90915550505b335f9081526004602052604081208054849290610748908490611670565b9091555050335f90815260056020908152604080832083905560069091529020429055610776600284611683565b60095f8282546107869190611670565b909155505060408051848152602081018490529081018290526001600160a01b0385169033907f248d32c5893569b95b2456762347aba3446d8168b38becf5e3b0f93cc5596d529060600160405180910390a350505050565b335f90815260076020526040812054819062015180906107ff90426116d1565b6108099190611683565b90505f610841670de0b6b3a764000061082a67016345785d8a000085611659565b61083c906706f05b59d3b20000611670565b610f22565b6001600160a01b0385165f908152600660205260408120549192509061087090620d2f009061083c90426116d1565b6001600160a01b0386165f90815260046020526040902054909150670de0b6b3a76400009083906108a19084611659565b6108ab9190611659565b6108b59190611683565b95945050505050565b5f6108cb82610364610550565b92915050565b6108d9610f37565b600954156109295760405162461bcd60e51b815260206004820152601b60248201527f4552524f525f4d41524b45545f414c52454144595f53454544454400000000006044820152606401610659565b6002805460ff1916600190811790915564141dd7600060098190556040517fcc48ac39a472c75fe3886f46d596129a5f4a98be24ad73eb95888b7edc4d58d49261097d929015158252602082015260400190565b60405180910390a1565b60025460ff166109a95760405162461bcd60e51b8152600401610659906116a2565b5f6109b2610bc3565b90505f81116109f45760405162461bcd60e51b815260206004820152600e60248201526d4552524f525f4e4f5f4c414d415360901b6044820152606401610659565b5f6109fe82610b85565b90505f610a0a82610f63565b90505f610a1683610f7e565b90505f81610a2484866116d1565b610a2e91906116d1565b335f9081526005602090815260408083208390556006825280832042908190556007909252822055600980549293508792909190610a6d908490611670565b909155505060035460025460408051848152602081018790529081018590526001600160a01b03928316926101009092049091169033907fa8af84333a074f5fddf18891494ce9f815b72cf90139f9a5822a120e477775959060600160405180910390a4610b056001600160a01b037f00000000000000000000000089a8633bcad3af0951acc5137811ea21a17c37dc163383610f8f565b600254610b44906001600160a01b037f00000000000000000000000089a8633bcad3af0951acc5137811ea21a17c37dc81169161010090041685610f8f565b600354610b7e906001600160a01b037f00000000000000000000000089a8633bcad3af0951acc5137811ea21a17c37dc8116911684610f8f565b5050505050565b5f8115610b9b576108cb82600954610254610550565b505f919050565b5f61063083836009546105dd565b610bb8610f37565b610bc15f610ff3565b565b5f610bcd336107df565b335f908152600560205260409020546105d89190611670565b610bee611042565b60025460ff16610c105760405162461bcd60e51b8152600401610659906116a2565b5f3411610c565760405162461bcd60e51b815260206004820152601460248201527311549493d497d253959053125117d05353d5539560621b6044820152606401610659565b345f610c618261106c565b6002546040519192505f916101009091046001600160a01b03169083908381818185875af1925050503d805f8114610cb4576040519150601f19603f3d011682016040523d82523d5f602084013e610cb9565b606091505b5050905080610d005760405162461bcd60e51b815260206004820152601360248201527211549493d497d055905617d1915157d4d15391606a1b6044820152606401610659565b610d0a82846116d1565b92505f610d17868561107d565b600254604080518781526001600160a01b0361010090930483166020820152908101869052606081018990526080810183905291925086169033907f4982324705f1b783518cfa8592ee149104478037dca210bd385db60b44bf24609060a00160405180910390a3610d8b8186600161129e565b50505050610d9860018055565b5050565b335f9081526007602052604081205481906201518090610dbc90426116d1565b610dc69190611683565b9050610de6670de0b6b3a764000061082a67016345785d8a000084611659565b91505090565b610df4610f37565b6001600160a01b038116610e1d57604051631e4fbdf760e01b81525f6004820152602401610659565b610e2681610ff3565b50565b610e31611042565b60025460ff16610e535760405162461bcd60e51b8152600401610659906116a2565b5f8211610e995760405162461bcd60e51b815260206004820152601460248201527311549493d497d253959053125117d05353d5539560621b6044820152606401610659565b6040518281526001600160a01b0382169033907f7b0bbff5b204fe2803b3fc0071c21a0603102432a3789c5a4de316826532ff979060200160405180910390a3610f0e6001600160a01b037f00000000000000000000000089a8633bcad3af0951acc5137811ea21a17c37dc163330856113de565b610f1982825f61129e565b610d9860018055565b5f818310610f305781610630565b5090919050565b5f546001600160a01b03163314610bc15760405163118cdaa760e01b8152336004820152602401610659565b5f620186a0610f7483610bb8611659565b6108cb9190611683565b5f620186a0610f74836103e8611659565b6040516001600160a01b03838116602483015260448201839052610fee91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061141d565b505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60026001540361106557604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b5f620186a0610f74836105dc611659565b5f80611087610550565b6040805160028082526060820183529293505f9290916020830190803683370190505090507f00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d46001600160a01b03166373b295c26040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611109573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112d91906116f8565b815f8151811061113f5761113f611713565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000089a8633bcad3af0951acc5137811ea21a17c37dc8160018151811061119357611193611713565b6001600160a01b03928316602091820292909201015260405163a2a1623d60e01b81527f00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d49091169063a2a1623d9086906111f7908990869030904290600401611727565b5f6040518083038185885af1158015611212573d5f803e3d5ffd5b50505050506040513d5f823e601f3d908101601f1916820160405261123a919081019061178f565b505f611244610550565b905082811161128a5760405162461bcd60e51b81526020600482015260126024820152714552524f525f535741505f414d4f554e545360701b6044820152606401610659565b61129483826116d1565b9695505050505050565b5f6112b684856112ac610550565b61036491906116d1565b905081156112d8576112c78161106c565b6112d190826116d1565b9050611301565b6112e181610f7e565b6112ea82610f63565b6112f49190611670565b6112fe90826116d1565b90505b335f908152600560205260408120805483929061131f908490611670565b9091555061132e905083610637565b5f8061133986610f7e565b905083156113515761134a8661106c565b915061135d565b61135a86610f63565b91505b60025461139c906001600160a01b037f00000000000000000000000089a8633bcad3af0951acc5137811ea21a17c37dc81169161010090041684610f8f565b6003546113d6906001600160a01b037f00000000000000000000000089a8633bcad3af0951acc5137811ea21a17c37dc8116911683610f8f565b505050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526114179186918216906323b872dd90608401610fbc565b50505050565b5f6114316001600160a01b0384168361147e565b905080515f141580156114555750808060200190518101906114539190611848565b155b15610fee57604051635274afe760e01b81526001600160a01b0384166004820152602401610659565b606061063083835f845f80856001600160a01b031684866040516114a29190611867565b5f6040518083038185875af1925050503d805f81146114dc576040519150601f19603f3d011682016040523d82523d5f602084013e6114e1565b606091505b5091509150611294868383606082611501576114fc82611548565b610630565b815115801561151857506001600160a01b0384163b155b1561154157604051639996b31560e01b81526001600160a01b0385166004820152602401610659565b5080610630565b8051156115585780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f805f60608486031215611583575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610e26575f80fd5b5f602082840312156115be575f80fd5b81356106308161159a565b5f602082840312156115d9575f80fd5b5035919050565b5f80604083850312156115f1575f80fd5b50508035926020909101359150565b5f8060408385031215611611575f80fd5b8235915060208301356116238161159a565b809150509250929050565b5f6020828403121561163e575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108cb576108cb611645565b808201808211156108cb576108cb611645565b5f8261169d57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526015908201527411549493d497d393d517d253925512505312569151605a1b604082015260600190565b818103818111156108cb576108cb611645565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611708575f80fd5b81516106308161159a565b634e487b7160e01b5f52603260045260245ffd5b5f60808201868352602060808185015281875180845260a08601915082890193505f5b8181101561176f5784516001600160a01b03168352938301939183019160010161174a565b50506001600160a01b039690961660408501525050506060015292915050565b5f60208083850312156117a0575f80fd5b825167ffffffffffffffff808211156117b7575f80fd5b818501915085601f8301126117ca575f80fd5b8151818111156117dc576117dc6116e4565b8060051b604051601f19603f83011681018181108582111715611801576118016116e4565b60405291825284820192508381018501918883111561181e575f80fd5b938501935b8285101561183c57845184529385019392850192611823565b98975050505050505050565b5f60208284031215611858575f80fd5b81518015158114610630575f80fd5b5f82515f5b81811015611886576020818601810151858301520161186c565b505f92019182525091905056fea2646970667358221220c5bd15d97b25364cddc21939c13317557c46056060e3ad214986fcfca5c10f3564736f6c63430008140033
Deployed Bytecode Sourcemap
35052:9540:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35459:30;;;;;;;;;;-1:-1:-1;35459:30:0;;;;-1:-1:-1;;;;;35459:30:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;35459:30:0;;;;;;;;37478:112;;;;;;;;;;;;;:::i;:::-;;;368:25:1;;;356:2;341:18;37478:112:0;222:177:1;35304:31:0;;;;;;;;;;-1:-1:-1;35304:31:0;;;;;;;;;;;569:14:1;;562:22;544:41;;532:2;517:18;35304:31:0;404:187:1;36424:201:0;;;;;;;;;;-1:-1:-1;36424:201:0;;;;;:::i;:::-;;:::i;38633:783::-;;;;;;;;;;-1:-1:-1;38633:783:0;;;;;:::i;:::-;;:::i;:::-;;37747:654;;;;;;;;;;-1:-1:-1;37747:654:0;;;;;:::i;:::-;;:::i;35344:33::-;;;;;;;;;;;;;;;35427:25;;;;;;;;;;-1:-1:-1;35427:25:0;;;;;;;-1:-1:-1;;;;;35427:25:0;;;36837:158;;;;;;;;;;-1:-1:-1;36837:158:0;;;;;:::i;:::-;;:::i;42264:241::-;;;:::i;41250:902::-;;;;;;;;;;;;;:::i;37003:209::-;;;;;;;;;;-1:-1:-1;37003:209:0;;;;;:::i;:::-;;:::i;36633:196::-;;;;;;;;;;-1:-1:-1;36633:196:0;;;;;:::i;:::-;;:::i;35552:47::-;;;;;;;;;;-1:-1:-1;35552:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;35660;;;;;;;;;;-1:-1:-1;35660:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;35151:58;;;;;;;;;;;;35202:7;35151:58;;17104:103;;;;;;;;;;;;;:::i;16429:87::-;;;;;;;;;;-1:-1:-1;16475:7:0;16502:6;-1:-1:-1;;;;;16502:6:0;16429:87;;35384:34;;;;;;;;;;;;;;;35606:47;;;;;;;;;;-1:-1:-1;35606:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;37598:141;;;;;;;;;;;;;:::i;35714:44::-;;;;;;;;;;-1:-1:-1;35714:44:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;35714:44:0;;;39679:845;;;;;;:::i;:::-;;:::i;35498:47::-;;;;;;;;;;-1:-1:-1;35498:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;37220:250;;;;;;;;;;;;;:::i;17362:220::-;;;;;;;;;;-1:-1:-1;17362:220:0;;;;;:::i;:::-;;:::i;40653:357::-;;;;;;;;;;-1:-1:-1;40653:357:0;;;;;:::i;:::-;;:::i;35942:25::-;;;;;;;;;;;;;;;;37478:112;37548:34;;-1:-1:-1;;;37548:34:0;;37576:4;37548:34;;;160:51:1;37521:7:0;;37548:9;-1:-1:-1;;;;;37548:19:0;;;;133:18:1;;37548:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37541:41;;37478:112;:::o;36424:201::-;36539:7;36613:2;36600:9;36613:2;35292:5;36600:9;:::i;:::-;36589:8;36595:2;35247:6;36589:8;:::i;:::-;:20;;;;:::i;:::-;36588:27;;;;:::i;:::-;36580:36;;35292:5;36580:36;:::i;:::-;36567:8;36573:2;35247:6;36567:8;:::i;:::-;36566:51;;;;:::i;:::-;36559:58;;36424:201;;;;;;:::o;38633:783::-;38690:11;;;;38682:45;;;;-1:-1:-1;;;38682:45:0;;;;;;;:::i;:::-;;;;;;;;;38740:18;38761:13;:11;:13::i;:::-;38740:34;-1:-1:-1;38785:19:0;38807:37;35202:7;38740:34;38807:37;:::i;:::-;38908:10;38855:26;38898:21;;;:9;:21;;;;;;38785:59;;-1:-1:-1;38855:26:0;-1:-1:-1;;;;;38898:21:0;:35;:56;;;;-1:-1:-1;;;;;;38937:17:0;;;;38898:56;:77;;;;-1:-1:-1;;;;;;38958:17:0;;38965:10;38958:17;;38898:77;38894:242;;;39002:10;38992:21;;;;:9;:21;;;;;:27;;-1:-1:-1;;;;;;38992:27:0;-1:-1:-1;;;;;38992:27:0;;;;;39055:15;39068:2;39055:10;:15;:::i;:::-;-1:-1:-1;;;;;39085:17:0;;;;;;:12;:17;;;;;:39;;39034:36;;-1:-1:-1;39034:36:0;;39085:17;;;:39;;39034:36;;39085:39;:::i;:::-;;;;-1:-1:-1;;38894:242:0;39161:10;39148:24;;;;:12;:24;;;;;:39;;39176:11;;39148:24;:39;;39176:11;;39148:39;:::i;:::-;;;;-1:-1:-1;;39211:10:0;39225:1;39198:24;;;:12;:24;;;;;;;;:28;;;39237:12;:24;;;;;39264:15;39237:42;;39306:14;39319:1;39306:10;:14;:::i;:::-;39292:10;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;39338:70:0;;;3906:25:1;;;3962:2;3947:18;;3940:34;;;3990:18;;;3983:34;;;-1:-1:-1;;;;;39338:70:0;;;39347:10;;39338:70;;3894:2:1;3879:18;39338:70:0;;;;;;;38671:745;;;38633:783;:::o;37747:654::-;37898:10;37830:7;37885:24;;;:12;:24;;;;;;37830:7;;35808:6;;37867:42;;:15;:42;:::i;:::-;37866:73;;;;:::i;:::-;37850:89;-1:-1:-1;38057:18:0;38078:97;38097:4;38134:30;35871:6;37850:89;38134:30;:::i;:::-;38116:48;;35927:6;38116:48;:::i;:::-;38078:4;:97::i;:::-;-1:-1:-1;;;;;38288:17:0;;38188:21;38288:17;;;:12;:17;;;;;;38057:118;;-1:-1:-1;38188:21:0;38212:104;;35202:7;;38270:35;;:15;:35;:::i;38212:104::-;-1:-1:-1;;;;;38354:17:0;;;;;;:12;:17;;;;;;38188:128;;-1:-1:-1;38389:4:0;;38375:10;;38338:33;;38188:128;38338:33;:::i;:::-;38337:48;;;;:::i;:::-;38336:57;;;;:::i;:::-;38329:64;37747:654;-1:-1:-1;;;;;37747:654:0:o;36837:158::-;36923:7;36950:37;36968:4;36974:12;:10;:12::i;36950:37::-;36943:44;36837:158;-1:-1:-1;;36837:158:0:o;42264:241::-;16315:13;:11;:13::i;:::-;42332:10:::1;::::0;:15;42324:55:::1;;;::::0;-1:-1:-1;;;42324:55:0;;4363:2:1;42324:55:0::1;::::0;::::1;4345:21:1::0;4402:2;4382:18;;;4375:30;4441:29;4421:18;;;4414:57;4488:18;;42324:55:0::1;4161:351:1::0;42324:55:0::1;42390:11;:18:::0;;-1:-1:-1;;42390:18:0::1;42404:4;42390:18:::0;;::::1;::::0;;;42432:14:::1;42419:10;:27:::0;;;42462:35:::1;::::0;::::1;::::0;::::1;::::0;42404:4;4710:14:1;4703:22;4685:41;;4757:2;4742:18;;4735:34;4673:2;4658:18;;4517:258;42462:35:0::1;;;;;;;;42264:241::o:0;41250:902::-;41298:11;;;;41290:45;;;;-1:-1:-1;;;41290:45:0;;;;;;;:::i;:::-;41348:17;41368:13;:11;:13::i;:::-;41348:33;;41412:1;41400:9;:13;41392:40;;;;-1:-1:-1;;;41392:40:0;;4982:2:1;41392:40:0;;;4964:21:1;5021:2;5001:18;;;4994:30;-1:-1:-1;;;5040:18:1;;;5033:44;5094:18;;41392:40:0;4780:338:1;41392:40:0;41445:18;41466:29;41485:9;41466:18;:29::i;:::-;41445:50;;41506:14;41523:23;41535:10;41523:11;:23::i;:::-;41506:40;;41557:19;41579:24;41592:10;41579:12;:24::i;:::-;41557:46;-1:-1:-1;41614:24:0;41557:46;41641:19;41654:6;41641:10;:19;:::i;:::-;:33;;;;:::i;:::-;41700:10;41714:1;41687:24;;;:12;:24;;;;;;;;:28;;;41726:12;:24;;;;;41753:15;41726:42;;;;41779:12;:24;;;;;:42;41834:10;:23;;41614:60;;-1:-1:-1;41848:9:0;;41834:10;;41714:1;41834:23;;41848:9;;41834:23;:::i;:::-;;;;-1:-1:-1;;41934:15:0;;41914:10;;41875:88;;;3906:25:1;;;3962:2;3947:18;;3940:34;;;3990:18;;;3983:34;;;-1:-1:-1;;;;;41934:15:0;;;;;41914:10;;;;;;;41884;;41875:88;;3894:2:1;3879:18;41875:88:0;;;;;;;41976:52;-1:-1:-1;;;;;41976:9:0;:22;41999:10;42011:16;41976:22;:52::i;:::-;42062:10;;42039:42;;-1:-1:-1;;;;;42039:9:0;:22;;;42062:10;;;;42074:6;42039:22;:42::i;:::-;42115:15;;42092:52;;-1:-1:-1;;;;;42092:9:0;:22;;;42115:15;42132:11;42092:22;:52::i;:::-;41279:873;;;;;41250:902::o;37003:209::-;37068:7;37092:10;;37088:98;;37126:48;37141:6;37149:10;;37161:12;:10;:12::i;37088:98::-;-1:-1:-1;37203:1:0;;37003:209;-1:-1:-1;37003:209:0:o;36633:196::-;36745:7;36772:49;36787:4;36793:15;36810:10;;36772:14;:49::i;17104:103::-;16315:13;:11;:13::i;:::-;17169:30:::1;17196:1;17169:18;:30::i;:::-;17104:103::o:0;37598:141::-;37642:7;37696:35;37720:10;37696:23;:35::i;:::-;37682:10;37669:24;;;;:12;:24;;;;;;:62;;;;:::i;39679:845::-;12828:21;:19;:21::i;:::-;39785:11:::1;::::0;::::1;;39777:45;;;;-1:-1:-1::0;;;39777:45:0::1;;;;;;;:::i;:::-;39853:1;39841:9;:13;39833:46;;;::::0;-1:-1:-1;;;39833:46:0;;5325:2:1;39833:46:0::1;::::0;::::1;5307:21:1::0;5364:2;5344:18;;;5337:30;-1:-1:-1;;;5383:18:1;;;5376:50;5443:18;;39833:46:0::1;5123:344:1::0;39833:46:0::1;39916:9;39892:21;39962:26;39916:9:::0;39962:11:::1;:26::i;:::-;40021:10;::::0;:43:::1;::::0;39936:52;;-1:-1:-1;40002:13:0::1;::::0;40021:10:::1;::::0;;::::1;-1:-1:-1::0;;;;;40021:10:0::1;::::0;39936:52;;40002:13;40021:43;40002:13;40021:43;39936:52;40021:10;:43:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40001:63;;;40083:8;40075:40;;;::::0;-1:-1:-1;;;40075:40:0;;5884:2:1;40075:40:0::1;::::0;::::1;5866:21:1::0;5923:2;5903:18;;;5896:30;-1:-1:-1;;;5942:18:1;;;5935:49;6001:18;;40075:40:0::1;5682:343:1::0;40075:40:0::1;40144:31;40160:15:::0;40144:13;:31:::1;:::i;:::-;40128:47;;40188:21;40212:35;40218:13;40233;40212:5;:35::i;:::-;40344:10;::::0;40265:204:::1;::::0;;6289:25:1;;;-1:-1:-1;;;;;40344:10:0::1;::::0;;::::1;::::0;::::1;6345:2:1::0;6330:18;;6323:60;6399:18;;;6392:34;;;6457:2;6442:18;;6435:34;;;6500:3;6485:19;;6478:35;;;;;-1:-1:-1;40265:204:0;::::1;::::0;40291:10:::1;::::0;40265:204:::1;::::0;6276:3:1;6261:19;40265:204:0::1;;;;;;;40482:34;40491:13;40506:3;40511:4;40482:8;:34::i;:::-;39766:758;;;;12872:20:::0;12163:1;13414:21;;13231:212;12872:20;39679:845;;:::o;37220:250::-;37343:10;37275:7;37330:24;;;:12;:24;;;;;;37275:7;;35808:6;;37312:42;;:15;:42;:::i;:::-;37311:73;;;;:::i;:::-;37295:89;-1:-1:-1;37402:60:0;37407:4;37431:30;35871:6;37295:89;37431:30;:::i;37402:60::-;37395:67;;;37220:250;:::o;17362:220::-;16315:13;:11;:13::i;:::-;-1:-1:-1;;;;;17447:22:0;::::1;17443:93;;17493:31;::::0;-1:-1:-1;;;17493:31:0;;17521:1:::1;17493:31;::::0;::::1;160:51:1::0;133:18;;17493:31:0::1;14:203:1::0;17443:93:0::1;17546:28;17565:8;17546:18;:28::i;:::-;17362:220:::0;:::o;40653:357::-;12828:21;:19;:21::i;:::-;40744:11:::1;::::0;::::1;;40736:45;;;;-1:-1:-1::0;;;40736:45:0::1;;;;;;;:::i;:::-;40809:1;40800:6;:10;40792:43;;;::::0;-1:-1:-1;;;40792:43:0;;5325:2:1;40792:43:0::1;::::0;::::1;5307:21:1::0;5364:2;5344:18;;;5337:30;-1:-1:-1;;;5383:18:1;;;5376:50;5443:18;;40792:43:0::1;5123:344:1::0;40792:43:0::1;40853:36;::::0;368:25:1;;;-1:-1:-1;;;;;40853:36:0;::::1;::::0;40865:10:::1;::::0;40853:36:::1;::::0;356:2:1;341:18;40853:36:0::1;;;;;;;40902:61;-1:-1:-1::0;;;;;40902:9:0::1;:26;40929:10;40949:4;40956:6:::0;40902:26:::1;:61::i;:::-;40974:28;40983:6;40991:3;40996:5;40974:8;:28::i;:::-;12872:20:::0;12163:1;13414:21;;13231:212;42893:106;42951:7;42982:1;42978;:5;:13;;42990:1;42978:13;;;-1:-1:-1;42986:1:0;;42893:106;-1:-1:-1;42893:106:0:o;16594:166::-;16475:7;16502:6;-1:-1:-1;;;;;16502:6:0;14518:10;16654:23;16650:103;;16701:40;;-1:-1:-1;;;16701:40:0;;14518:10;16701:40;;;160:51:1;133:18;;16701:40:0;14:203:1;42720:165:0;42779:7;42825;42807:14;:6;42816:5;42807:14;:::i;:::-;42806:26;;;;:::i;43007:166::-;43067:7;43113;43095:14;:6;43104:5;43095:14;:::i;22393:162::-;22503:43;;-1:-1:-1;;;;;6716:32:1;;;22503:43:0;;;6698:51:1;6765:18;;;6758:34;;;22476:71:0;;22496:5;;22518:14;;;;;6671:18:1;;22503:43:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22503:43:0;;;;;;;;;;;22476:19;:71::i;:::-;22393:162;;;:::o;17742:191::-;17816:16;17835:6;;-1:-1:-1;;;;;17852:17:0;;;-1:-1:-1;;;;;;17852:17:0;;;;;;17885:40;;17835:6;;;;;;;17885:40;;17816:16;17885:40;17805:128;17742:191;:::o;12908:315::-;12206:1;13037:7;;:18;13033:88;;13079:30;;-1:-1:-1;;;13079:30:0;;;;;;;;;;;13033:88;12206:1;13198:7;:17;12908:315::o;42541:171::-;42600:7;42646;42628:14;:6;42637:5;42628:14;:::i;43969:620::-;44045:7;44065:22;44090:12;:10;:12::i;:::-;44139:16;;;44153:1;44139:16;;;;;;;;44065:37;;-1:-1:-1;44115:21:0;;44139:16;;;;;;;;;;;;-1:-1:-1;44139:16:0;44115:40;;44176:9;-1:-1:-1;;;;;44176:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44166:4;44171:1;44166:7;;;;;;;;:::i;:::-;;;;;;:27;-1:-1:-1;;;;;44166:27:0;;;-1:-1:-1;;;;;44166:27:0;;;;;44222:9;44204:4;44209:1;44204:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;44204:28:0;;;:7;;;;;;;;;:28;44245:168;;-1:-1:-1;;;44245:168:0;;:9;:32;;;;;;44285:13;;44245:168;;44314:11;;44340:4;;44367;;44387:15;;44245:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;44245:168:0;;;;;;;;;;;;:::i;:::-;;44426:20;44449:12;:10;:12::i;:::-;44426:35;;44495:14;44480:12;:29;44472:60;;;;-1:-1:-1;;;44472:60:0;;9540:2:1;44472:60:0;;;9522:21:1;9579:2;9559:18;;;9552:30;-1:-1:-1;;;9598:18:1;;;9591:48;9656:18;;44472:60:0;9338:342:1;44472:60:0;44552:29;44567:14;44552:12;:29;:::i;:::-;44545:36;43969:620;-1:-1:-1;;;;;;43969:620:0:o;43207:754::-;43284:18;43305:48;43323:6;43346;43331:12;:10;:12::i;:::-;:21;;;;:::i;43305:48::-;43284:69;;43370:4;43366:171;;;43405:23;43417:10;43405:11;:23::i;:::-;43391:37;;;;:::i;:::-;;;43366:171;;;43501:24;43514:10;43501:12;:24::i;:::-;43475:23;43487:10;43475:11;:23::i;:::-;:50;;;;:::i;:::-;43461:64;;;;:::i;:::-;;;43366:171;43562:10;43549:24;;;;:12;:24;;;;;:38;;43577:10;;43549:24;:38;;43577:10;;43549:38;:::i;:::-;;;;-1:-1:-1;43600:13:0;;-1:-1:-1;43609:3:0;43600:8;:13::i;:::-;43626:14;43655:19;43677:20;43690:6;43677:12;:20::i;:::-;43655:42;;43714:4;43710:126;;;43744:19;43756:6;43744:11;:19::i;:::-;43735:28;;43710:126;;;43805:19;43817:6;43805:11;:19::i;:::-;43796:28;;43710:126;43871:10;;43848:42;;-1:-1:-1;;;;;43848:9:0;:22;;;43871:10;;;;43883:6;43848:22;:42::i;:::-;43924:15;;43901:52;;-1:-1:-1;;;;;43901:9:0;:22;;;43924:15;43941:11;43901:22;:52::i;:::-;43273:688;;;43207:754;;;:::o;22800:190::-;22928:53;;-1:-1:-1;;;;;9943:15:1;;;22928:53:0;;;9925:34:1;9995:15;;;9975:18;;;9968:43;10027:18;;;10020:34;;;22901:81:0;;22921:5;;22943:18;;;;;9860::1;;22928:53:0;9685:375:1;22901:81:0;22800:190;;;;:::o;25204:638::-;25628:23;25654:33;-1:-1:-1;;;;;25654:27:0;;25682:4;25654:27;:33::i;:::-;25628:59;;25702:10;:17;25723:1;25702:22;;:57;;;;;25740:10;25729:30;;;;;;;;;;;;:::i;:::-;25728:31;25702:57;25698:137;;;25783:40;;-1:-1:-1;;;25783:40:0;;-1:-1:-1;;;;;178:32:1;;25783:40:0;;;160:51:1;133:18;;25783:40:0;14:203:1;2797:153:0;2872:12;2904:38;2926:6;2934:4;2940:1;2872:12;3530;3544:23;3571:6;-1:-1:-1;;;;;3571:11:0;3590:5;3597:4;3571:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3529:73;;;;3620:55;3647:6;3655:7;3664:10;4909:12;4939:7;4934:417;;4963:19;4971:10;4963:7;:19::i;:::-;4934:417;;;5191:17;;:22;:49;;;;-1:-1:-1;;;;;;5217:18:0;;;:23;5191:49;5187:121;;;5268:24;;-1:-1:-1;;;5268:24:0;;-1:-1:-1;;;;;178:32:1;;5268:24:0;;;160:51:1;133:18;;5268:24:0;14:203:1;5187:121:0;-1:-1:-1;5329:10:0;5322:17;;5911:528;6044:17;;:21;6040:392;;6276:10;6270:17;6333:15;6320:10;6316:2;6312:19;6305:44;6040:392;6403:17;;-1:-1:-1;;;6403:17:0;;;;;;;;;;;596:316:1;673:6;681;689;742:2;730:9;721:7;717:23;713:32;710:52;;;758:1;755;748:12;710:52;-1:-1:-1;;781:23:1;;;851:2;836:18;;823:32;;-1:-1:-1;902:2:1;887:18;;;874:32;;596:316;-1:-1:-1;596:316:1:o;917:131::-;-1:-1:-1;;;;;992:31:1;;982:42;;972:70;;1038:1;1035;1028:12;1053:247;1112:6;1165:2;1153:9;1144:7;1140:23;1136:32;1133:52;;;1181:1;1178;1171:12;1133:52;1220:9;1207:23;1239:31;1264:5;1239:31;:::i;1527:180::-;1586:6;1639:2;1627:9;1618:7;1614:23;1610:32;1607:52;;;1655:1;1652;1645:12;1607:52;-1:-1:-1;1678:23:1;;1527:180;-1:-1:-1;1527:180:1:o;1712:248::-;1780:6;1788;1841:2;1829:9;1820:7;1816:23;1812:32;1809:52;;;1857:1;1854;1847:12;1809:52;-1:-1:-1;;1880:23:1;;;1950:2;1935:18;;;1922:32;;-1:-1:-1;1712:248:1:o;2188:315::-;2256:6;2264;2317:2;2305:9;2296:7;2292:23;2288:32;2285:52;;;2333:1;2330;2323:12;2285:52;2369:9;2356:23;2346:33;;2429:2;2418:9;2414:18;2401:32;2442:31;2467:5;2442:31;:::i;:::-;2492:5;2482:15;;;2188:315;;;;;:::o;2508:184::-;2578:6;2631:2;2619:9;2610:7;2606:23;2602:32;2599:52;;;2647:1;2644;2637:12;2599:52;-1:-1:-1;2670:16:1;;2508:184;-1:-1:-1;2508:184:1:o;2697:127::-;2758:10;2753:3;2749:20;2746:1;2739:31;2789:4;2786:1;2779:15;2813:4;2810:1;2803:15;2829:168;2902:9;;;2933;;2950:15;;;2944:22;;2930:37;2920:71;;2971:18;;:::i;3002:125::-;3067:9;;;3088:10;;;3085:36;;;3101:18;;:::i;3132:217::-;3172:1;3198;3188:132;;3242:10;3237:3;3233:20;3230:1;3223:31;3277:4;3274:1;3267:15;3305:4;3302:1;3295:15;3188:132;-1:-1:-1;3334:9:1;;3132:217::o;3354:345::-;3556:2;3538:21;;;3595:2;3575:18;;;3568:30;-1:-1:-1;;;3629:2:1;3614:18;;3607:51;3690:2;3675:18;;3354:345::o;4028:128::-;4095:9;;;4116:11;;;4113:37;;;4130:18;;:::i;6803:127::-;6864:10;6859:3;6855:20;6852:1;6845:31;6895:4;6892:1;6885:15;6919:4;6916:1;6909:15;6935:251;7005:6;7058:2;7046:9;7037:7;7033:23;7029:32;7026:52;;;7074:1;7071;7064:12;7026:52;7106:9;7100:16;7125:31;7150:5;7125:31;:::i;7191:127::-;7252:10;7247:3;7243:20;7240:1;7233:31;7283:4;7280:1;7273:15;7307:4;7304:1;7297:15;7323:900;7549:4;7597:3;7586:9;7582:19;7628:6;7617:9;7610:25;7654:2;7692:3;7687:2;7676:9;7672:18;7665:31;7716:6;7751;7745:13;7782:6;7774;7767:22;7820:3;7809:9;7805:19;7798:26;;7859:2;7851:6;7847:15;7833:29;;7880:1;7890:195;7904:6;7901:1;7898:13;7890:195;;;7969:13;;-1:-1:-1;;;;;7965:39:1;7953:52;;8060:15;;;;8025:12;;;;8001:1;7919:9;7890:195;;;-1:-1:-1;;;;;;;8141:32:1;;;;8136:2;8121:18;;8114:60;-1:-1:-1;;;8205:2:1;8190:18;8183:34;8102:3;7323:900;-1:-1:-1;;7323:900:1:o;8228:1105::-;8323:6;8354:2;8397;8385:9;8376:7;8372:23;8368:32;8365:52;;;8413:1;8410;8403:12;8365:52;8446:9;8440:16;8475:18;8516:2;8508:6;8505:14;8502:34;;;8532:1;8529;8522:12;8502:34;8570:6;8559:9;8555:22;8545:32;;8615:7;8608:4;8604:2;8600:13;8596:27;8586:55;;8637:1;8634;8627:12;8586:55;8666:2;8660:9;8688:2;8684;8681:10;8678:36;;;8694:18;;:::i;:::-;8740:2;8737:1;8733:10;8772:2;8766:9;8835:2;8831:7;8826:2;8822;8818:11;8814:25;8806:6;8802:38;8890:6;8878:10;8875:22;8870:2;8858:10;8855:18;8852:46;8849:72;;;8901:18;;:::i;:::-;8937:2;8930:22;8987:18;;;9021:15;;;;-1:-1:-1;9063:11:1;;;9059:20;;;9091:19;;;9088:39;;;9123:1;9120;9113:12;9088:39;9147:11;;;;9167:135;9183:6;9178:3;9175:15;9167:135;;;9249:10;;9237:23;;9200:12;;;;9280;;;;9167:135;;;9321:6;8228:1105;-1:-1:-1;;;;;;;;8228:1105:1:o;10065:277::-;10132:6;10185:2;10173:9;10164:7;10160:23;10156:32;10153:52;;;10201:1;10198;10191:12;10153:52;10233:9;10227:16;10286:5;10279:13;10272:21;10265:5;10262:32;10252:60;;10308:1;10305;10298:12;10347:412;10476:3;10514:6;10508:13;10539:1;10549:129;10563:6;10560:1;10557:13;10549:129;;;10661:4;10645:14;;;10641:25;;10635:32;10622:11;;;10615:53;10578:12;10549:129;;;-1:-1:-1;10733:1:1;10697:16;;10722:13;;;-1:-1:-1;10697:16:1;10347:412;-1:-1:-1;10347:412:1:o
Swarm Source
ipfs://c5bd15d97b25364cddc21939c13317557c46056060e3ad214986fcfca5c10f35
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.