Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
FlowerNFTStaking
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-02-02 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/[email protected]/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/[email protected]/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); } // File: @openzeppelin/[email protected]/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File: @openzeppelin/[email protected]/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } } // File: @openzeppelin/[email protected]/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. 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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/[email protected]/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @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; 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 require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // 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/[email protected]/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: staking.sol pragma solidity ^0.8.0; interface IFlowerNFT { function levels(uint256 tokenId) external view returns (uint256); } contract FlowerNFTStaking is Ownable, ReentrancyGuard, Pausable { IERC721 public flowerNFT; IERC20 public flowerToken; IERC20 public stonerToken; uint256 public rewardRate; // Base reward per day per NFT level uint256 public stonerBonusMultiplier = 10; // % bonus per $STONER NFT staked uint256 public flowerNFTBonusMultiplier = 5; // % bonus per additional FlowerNFT staked uint256 public tapBonusAmount; // Flat bonus per claim uint256 public tapCooldown; // Cooldown time between tap bonuses struct Stake { uint256 tokenId; uint256 stakedAt; uint256 lastTapped; } mapping(address => Stake[]) public stakes; mapping(uint256 => address) public stakedTokenOwners; mapping(address => uint256) public stonerStakeCount; event Staked(address indexed user, uint256 tokenId); event Unstaked(address indexed user, uint256 tokenId); event RewardClaimed(address indexed user, uint256 amount); event TapBonusClaimed(address indexed user, uint256 amount); event RewardRateUpdated(uint256 newRate); event TapCooldownUpdated(uint256 newCooldown); event TapBonusUpdated(uint256 newBonus); event StonerBonusMultiplierUpdated(uint256 newMultiplier); event FlowerNFTBonusMultiplierUpdated(uint256 newMultiplier); constructor(address _flowerNFT, address _flowerToken, address _stonerToken) { flowerNFT = IERC721(_flowerNFT); flowerToken = IERC20(_flowerToken); stonerToken = IERC20(_stonerToken); rewardRate = 1 ether; tapBonusAmount = 0.1 ether; tapCooldown = 1 hours; } /** ADMIN FUNCTIONS **/ function setRewardRate(uint256 newRate) external onlyOwner { rewardRate = newRate; emit RewardRateUpdated(newRate); } function setTapBonusAmount(uint256 newBonus) external onlyOwner { tapBonusAmount = newBonus; emit TapBonusUpdated(newBonus); } function setTapCooldown(uint256 cooldown) external onlyOwner { tapCooldown = cooldown; emit TapCooldownUpdated(cooldown); } function setStonerBonusMultiplier(uint256 newMultiplier) external onlyOwner { stonerBonusMultiplier = newMultiplier; emit StonerBonusMultiplierUpdated(newMultiplier); } function setFlowerNFTBonusMultiplier(uint256 newMultiplier) external onlyOwner { flowerNFTBonusMultiplier = newMultiplier; emit FlowerNFTBonusMultiplierUpdated(newMultiplier); } function pause() external onlyOwner { _pause(); } function unpause() external onlyOwner { _unpause(); } /** STAKING **/ function stake(uint256 tokenId, uint256 stonerAmount) external nonReentrant whenNotPaused { require(flowerNFT.ownerOf(tokenId) == msg.sender, "You do not own this NFT"); require(stakedTokenOwners[tokenId] == address(0), "This NFT is already staked"); require(address(flowerNFT) != address(0), "FlowerNFT contract not set"); if (stonerAmount > 0) { require(stonerToken.transferFrom(msg.sender, address(this), stonerAmount), "Failed to stake $STONER"); stonerStakeCount[msg.sender] += stonerAmount; } stakes[msg.sender].push(Stake({ tokenId: tokenId, stakedAt: block.timestamp, lastTapped: 0 })); stakedTokenOwners[tokenId] = msg.sender; flowerNFT.safeTransferFrom(msg.sender, address(this), tokenId); emit Staked(msg.sender, tokenId); } function unstake(uint256 tokenId) external nonReentrant whenNotPaused { require(stakedTokenOwners[tokenId] == msg.sender, "You do not own this staked NFT"); uint256 reward = calculateReward(msg.sender, tokenId); _removeStake(msg.sender, tokenId); flowerNFT.safeTransferFrom(address(this), msg.sender, tokenId); if (reward > 0) { flowerToken.transfer(msg.sender, reward); } emit Unstaked(msg.sender, tokenId); } /** REWARD CLAIMING **/ function claimAllRewards() external nonReentrant whenNotPaused { uint256 totalReward = 0; uint256 nftCount = stakes[msg.sender].length; uint256 stonerBonus = stonerStakeCount[msg.sender]; for (uint256 i = 0; i < nftCount; i++) { Stake storage stakeInfo = stakes[msg.sender][i]; uint256 reward = calculateReward(msg.sender, stakeInfo.tokenId); if (stonerBonus > 0) { reward += (reward * stonerBonus * stonerBonusMultiplier) / 100; } if (nftCount > 1) { reward += (reward * (nftCount - 1) * flowerNFTBonusMultiplier) / 100; } totalReward += reward; stakeInfo.stakedAt = block.timestamp; } require(totalReward > 0, "No rewards to claim"); flowerToken.transfer(msg.sender, totalReward); emit RewardClaimed(msg.sender, totalReward); } function claimTapBonus() external nonReentrant whenNotPaused { uint256 totalBonus = 0; uint256 nftCount = stakes[msg.sender].length; for (uint256 i = 0; i < nftCount; i++) { Stake storage stakeInfo = stakes[msg.sender][i]; require(block.timestamp >= stakeInfo.lastTapped + tapCooldown, "Tap bonus is on cooldown"); totalBonus += tapBonusAmount; stakeInfo.lastTapped = block.timestamp; } require(totalBonus > 0, "No tap bonuses to claim"); flowerToken.transfer(msg.sender, totalBonus); emit TapBonusClaimed(msg.sender, totalBonus); } /** INTERNAL HELPERS **/ function calculateReward(address user, uint256 tokenId) public view returns (uint256) { for (uint256 i = 0; i < stakes[user].length; i++) { if (stakes[user][i].tokenId == tokenId) { uint256 timeStaked = block.timestamp - stakes[user][i].stakedAt; uint256 baseReward = (timeStaked * getFlowerNFTLevel(tokenId) * rewardRate) / 1 days; return baseReward; } } return 0; } function _removeStake(address user, uint256 tokenId) internal { for (uint256 i = 0; i < stakes[user].length; i++) { if (stakes[user][i].tokenId == tokenId) { stakes[user][i] = stakes[user][stakes[user].length - 1]; stakes[user].pop(); delete stakedTokenOwners[tokenId]; break; } } } function getFlowerNFTLevel(uint256 tokenId) internal view returns (uint256) { require(address(flowerNFT) != address(0), "FlowerNFT contract not set"); return IFlowerNFT(address(flowerNFT)).levels(tokenId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_flowerNFT","type":"address"},{"internalType":"address","name":"_flowerToken","type":"address"},{"internalType":"address","name":"_stonerToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"FlowerNFTBonusMultiplierUpdated","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":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"RewardRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"StonerBonusMultiplierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TapBonusClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBonus","type":"uint256"}],"name":"TapBonusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCooldown","type":"uint256"}],"name":"TapCooldownUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"calculateReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAllRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTapBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flowerNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flowerNFTBonusMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flowerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"setFlowerNFTBonusMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"setStonerBonusMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBonus","type":"uint256"}],"name":"setTapBonusAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"cooldown","type":"uint256"}],"name":"setTapCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"stonerAmount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedTokenOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"stakedAt","type":"uint256"},{"internalType":"uint256","name":"lastTapped","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stonerBonusMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stonerStakeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stonerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tapBonusAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tapCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600a60065560056007553480156200001b57600080fd5b5060405162002d0e38038062002d0e8339818101604052810190620000419190620002ac565b62000061620000556200017660201b60201c565b6200017e60201b60201c565b600180819055506000600260006101000a81548160ff02191690831515021790555082600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a764000060058190555067016345785d8a0000600881905550610e1060098190555050505062000308565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002748262000247565b9050919050565b620002868162000267565b81146200029257600080fd5b50565b600081519050620002a6816200027b565b92915050565b600080600060608486031215620002c857620002c762000242565b5b6000620002d88682870162000295565b9350506020620002eb8682870162000295565b9250506040620002fe8682870162000295565b9150509250925092565b6129f680620003186000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063602095ce116100f9578063878c5b511161009757806396e840a91161007157806396e840a91461043c5780639e447fc61461045a578063e7d554ac14610476578063f2fde38b14610492576101a9565b8063878c5b51146103e45780638b3d81b3146103ee5780638da5cb5b1461041e576101a9565b80637b0472f0116100d35780637b0472f0146103825780637b0a47ee1461039e5780638456cb59146103bc578063851fbb54146103c6576101a9565b8063602095ce1461033c578063715018a61461035a578063721a1f4514610364576101a9565b80633b3f944c1161016657806351f3db481161014057806351f3db48146102b4578063584b62a1146102d05780635c975abb146103025780635cae8f5914610320576101a9565b80633b3f944c1461026e5780633f4ba83a1461028c57806341cd5f7314610296576101a9565b8063099eb0bd146101ae5780630b83a727146101de5780631852e8d9146101e85780631cc6ec93146102185780632e17de78146102345780633b18dc7114610250575b600080fd5b6101c860048036038101906101c39190611e6a565b6104ae565b6040516101d59190611eb0565b60405180910390f35b6101e66104c6565b005b61020260048036038101906101fd9190611ef7565b6107d2565b60405161020f9190611eb0565b60405180910390f35b610232600480360381019061022d9190611f37565b61095c565b005b61024e60048036038101906102499190611f37565b6109a5565b005b610258610c04565b6040516102659190611eb0565b60405180910390f35b610276610c0a565b6040516102839190611eb0565b60405180910390f35b610294610c10565b005b61029e610c22565b6040516102ab9190611eb0565b60405180910390f35b6102ce60048036038101906102c99190611f37565b610c28565b005b6102ea60048036038101906102e59190611ef7565b610c71565b6040516102f993929190611f64565b60405180910390f35b61030a610cb8565b6040516103179190611fb6565b60405180910390f35b61033a60048036038101906103359190611f37565b610ccf565b005b610344610d18565b6040516103519190612030565b60405180910390f35b610362610d3e565b005b61036c610d52565b604051610379919061206c565b60405180910390f35b61039c60048036038101906103979190612087565b610d78565b005b6103a66112e6565b6040516103b39190611eb0565b60405180910390f35b6103c46112ec565b005b6103ce6112fe565b6040516103db9190612030565b60405180910390f35b6103ec611324565b005b61040860048036038101906104039190611f37565b6115aa565b60405161041591906120d6565b60405180910390f35b6104266115dd565b60405161043391906120d6565b60405180910390f35b610444611606565b6040516104519190611eb0565b60405180910390f35b610474600480360381019061046f9190611f37565b61160c565b005b610490600480360381019061048b9190611f37565b611655565b005b6104ac60048036038101906104a79190611e6a565b61169e565b005b600c6020528060005260406000206000915090505481565b6104ce611721565b6104d6611770565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b82811015610692576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106105c0576105bf6120f1565b5b9060005260206000209060030201905060006105e03383600001546107d2565b9050600084111561061e57606460065485836105fc919061214f565b610606919061214f565b61061091906121c0565b8161061b91906121f1565b90505b60018511156106665760646007546001876106399190612225565b83610644919061214f565b61064e919061214f565b61065891906121c0565b8161066391906121f1565b90505b808661067291906121f1565b95504282600101819055505050808061068a90612259565b915050610565565b50600083116106d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106cd906122fe565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b815260040161073392919061231e565b6020604051808303816000875af1158015610752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107769190612373565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241846040516107bd9190611eb0565b60405180910390a25050506107d06117ba565b565b600080600090505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156109505782600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610876576108756120f1565b5b9060005260206000209060030201600001540361093d576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106108e0576108df6120f1565b5b906000526020600020906003020160010154426108fd9190612225565b9050600062015180600554610911876117c3565b8461091c919061214f565b610926919061214f565b61093091906121c0565b9050809350505050610956565b808061094890612259565b9150506107da565b50600090505b92915050565b6109646118f8565b806009819055507fa292edce75c880178d165ee8473be051a702186c35b27ea86dab6c73ce88ff578160405161099a9190611eb0565b60405180910390a150565b6109ad611721565b6109b5611770565b3373ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d906123ec565b60405180910390fd5b6000610a6233836107d2565b9050610a6e3383611976565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033856040518463ffffffff1660e01b8152600401610acd9392919061240c565b600060405180830381600087803b158015610ae757600080fd5b505af1158015610afb573d6000803e3d6000fd5b505050506000811115610baa57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610b6592919061231e565b6020604051808303816000875af1158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190612373565b505b3373ffffffffffffffffffffffffffffffffffffffff167f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7583604051610bf09190611eb0565b60405180910390a250610c016117ba565b50565b60085481565b60075481565b610c186118f8565b610c20611c2c565b565b60095481565b610c306118f8565b806008819055507f984f97438a61d2a2abf6ae7cccfe9dc9c37c8e3111255c24be5ef1129c6f2c7681604051610c669190611eb0565b60405180910390a150565b600a6020528160005260406000208181548110610c8d57600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b6000600260009054906101000a900460ff16905090565b610cd76118f8565b806006819055507f82d11b838fe6759b50f04eff1d5395941e45d6616e08dc91359ef18c0a5d53cb81604051610d0d9190611eb0565b60405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d466118f8565b610d506000611c8f565b565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d80611721565b610d88611770565b3373ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401610dfa9190611eb0565b602060405180830381865afa158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190612458565b73ffffffffffffffffffffffffffffffffffffffff1614610e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e88906124d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a9061253d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb906125a9565b60405180910390fd5b600081111561110557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161102c9392919061240c565b6020604051808303816000875af115801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f9190612373565b6110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612615565b60405180910390fd5b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110fd91906121f1565b925050819055505b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040528084815260200142815260200160008152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001556020820151816001015560408201518160020155505033600b600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b815260040161125a9392919061240c565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040516112d29190611eb0565b60405180910390a26112e26117ba565b5050565b60055481565b6112f46118f8565b6112fc611d53565b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61132c611721565b611334611770565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b8181101561146b576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106113da576113d96120f1565b5b9060005260206000209060030201905060095481600201546113fc91906121f1565b42101561143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590612681565b60405180910390fd5b6008548461144c91906121f1565b935042816002018190555050808061146390612259565b91505061137f565b50600082116114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a6906126ed565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161150c92919061231e565b6020604051808303816000875af115801561152b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154f9190612373565b503373ffffffffffffffffffffffffffffffffffffffff167f6a0f4fe063f23e62798223a0c370a3dd6e2686f8de029beaed648542858f59d3836040516115969190611eb0565b60405180910390a250506115a86117ba565b565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6116146118f8565b806005819055507f41d466ebd06fb97e7786086ac8b69b7eb7da798592036251291d34e9791cde018160405161164a9190611eb0565b60405180910390a150565b61165d6118f8565b806007819055507fb19515f2a336787468acf8a8db6b652502c53f21356255541af6d857c51a1270816040516116939190611eb0565b60405180910390a150565b6116a66118f8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c9061277f565b60405180910390fd5b61171e81611c8f565b50565b600260015403611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d906127eb565b60405180910390fd5b6002600181905550565b611778610cb8565b156117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af90612857565b60405180910390fd5b565b60018081905550565b60008073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c906125a9565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2596a67836040518263ffffffff1660e01b81526004016118b09190611eb0565b602060405180830381865afa1580156118cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f1919061288c565b9050919050565b611900611db6565b73ffffffffffffffffffffffffffffffffffffffff1661191e6115dd565b73ffffffffffffffffffffffffffffffffffffffff1614611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90612905565b60405180910390fd5b565b60005b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611c275781600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611a1557611a146120f1565b5b90600052602060002090600302016000015403611c1457600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611aba9190612225565b81548110611acb57611aca6120f1565b5b9060005260206000209060030201600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611b2a57611b296120f1565b5b9060005260206000209060030201600082015481600001556001820154816001015560028201548160020155905050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480611ba857611ba7612925565b5b60019003818190600052602060002090600302016000808201600090556001820160009055600282016000905550509055600b600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611c27565b8080611c1f90612259565b915050611979565b505050565b611c34611dbe565b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611c78611db6565b604051611c8591906120d6565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611d5b611770565b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d9f611db6565b604051611dac91906120d6565b60405180910390a1565b600033905090565b611dc6610cb8565b611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc906129a0565b60405180910390fd5b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e3782611e0c565b9050919050565b611e4781611e2c565b8114611e5257600080fd5b50565b600081359050611e6481611e3e565b92915050565b600060208284031215611e8057611e7f611e07565b5b6000611e8e84828501611e55565b91505092915050565b6000819050919050565b611eaa81611e97565b82525050565b6000602082019050611ec56000830184611ea1565b92915050565b611ed481611e97565b8114611edf57600080fd5b50565b600081359050611ef181611ecb565b92915050565b60008060408385031215611f0e57611f0d611e07565b5b6000611f1c85828601611e55565b9250506020611f2d85828601611ee2565b9150509250929050565b600060208284031215611f4d57611f4c611e07565b5b6000611f5b84828501611ee2565b91505092915050565b6000606082019050611f796000830186611ea1565b611f866020830185611ea1565b611f936040830184611ea1565b949350505050565b60008115159050919050565b611fb081611f9b565b82525050565b6000602082019050611fcb6000830184611fa7565b92915050565b6000819050919050565b6000611ff6611ff1611fec84611e0c565b611fd1565b611e0c565b9050919050565b600061200882611fdb565b9050919050565b600061201a82611ffd565b9050919050565b61202a8161200f565b82525050565b60006020820190506120456000830184612021565b92915050565b600061205682611ffd565b9050919050565b6120668161204b565b82525050565b6000602082019050612081600083018461205d565b92915050565b6000806040838503121561209e5761209d611e07565b5b60006120ac85828601611ee2565b92505060206120bd85828601611ee2565b9150509250929050565b6120d081611e2c565b82525050565b60006020820190506120eb60008301846120c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061215a82611e97565b915061216583611e97565b925082820261217381611e97565b9150828204841483151761218a57612189612120565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006121cb82611e97565b91506121d683611e97565b9250826121e6576121e5612191565b5b828204905092915050565b60006121fc82611e97565b915061220783611e97565b925082820190508082111561221f5761221e612120565b5b92915050565b600061223082611e97565b915061223b83611e97565b925082820390508181111561225357612252612120565b5b92915050565b600061226482611e97565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361229657612295612120565b5b600182019050919050565b600082825260208201905092915050565b7f4e6f207265776172647320746f20636c61696d00000000000000000000000000600082015250565b60006122e86013836122a1565b91506122f3826122b2565b602082019050919050565b60006020820190508181036000830152612317816122db565b9050919050565b600060408201905061233360008301856120c7565b6123406020830184611ea1565b9392505050565b61235081611f9b565b811461235b57600080fd5b50565b60008151905061236d81612347565b92915050565b60006020828403121561238957612388611e07565b5b60006123978482850161235e565b91505092915050565b7f596f7520646f206e6f74206f776e2074686973207374616b6564204e46540000600082015250565b60006123d6601e836122a1565b91506123e1826123a0565b602082019050919050565b60006020820190508181036000830152612405816123c9565b9050919050565b600060608201905061242160008301866120c7565b61242e60208301856120c7565b61243b6040830184611ea1565b949350505050565b60008151905061245281611e3e565b92915050565b60006020828403121561246e5761246d611e07565b5b600061247c84828501612443565b91505092915050565b7f596f7520646f206e6f74206f776e2074686973204e4654000000000000000000600082015250565b60006124bb6017836122a1565b91506124c682612485565b602082019050919050565b600060208201905081810360008301526124ea816124ae565b9050919050565b7f54686973204e465420697320616c7265616479207374616b6564000000000000600082015250565b6000612527601a836122a1565b9150612532826124f1565b602082019050919050565b600060208201905081810360008301526125568161251a565b9050919050565b7f466c6f7765724e465420636f6e7472616374206e6f7420736574000000000000600082015250565b6000612593601a836122a1565b915061259e8261255d565b602082019050919050565b600060208201905081810360008301526125c281612586565b9050919050565b7f4661696c656420746f207374616b65202453544f4e4552000000000000000000600082015250565b60006125ff6017836122a1565b915061260a826125c9565b602082019050919050565b6000602082019050818103600083015261262e816125f2565b9050919050565b7f54617020626f6e7573206973206f6e20636f6f6c646f776e0000000000000000600082015250565b600061266b6018836122a1565b915061267682612635565b602082019050919050565b6000602082019050818103600083015261269a8161265e565b9050919050565b7f4e6f2074617020626f6e7573657320746f20636c61696d000000000000000000600082015250565b60006126d76017836122a1565b91506126e2826126a1565b602082019050919050565b60006020820190508181036000830152612706816126ca565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006127696026836122a1565b91506127748261270d565b604082019050919050565b600060208201905081810360008301526127988161275c565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006127d5601f836122a1565b91506127e08261279f565b602082019050919050565b60006020820190508181036000830152612804816127c8565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006128416010836122a1565b915061284c8261280b565b602082019050919050565b6000602082019050818103600083015261287081612834565b9050919050565b60008151905061288681611ecb565b92915050565b6000602082840312156128a2576128a1611e07565b5b60006128b084828501612877565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128ef6020836122a1565b91506128fa826128b9565b602082019050919050565b6000602082019050818103600083015261291e816128e2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061298a6014836122a1565b915061299582612954565b602082019050919050565b600060208201905081810360008301526129b98161297d565b905091905056fea2646970667358221220f325d2d5c5d4516476a66250381426ad93b28e4903a7d5ebb87c5aa7842d993a64736f6c63430008130033000000000000000000000000c6c9d0cc3d8891a9d9723b4beb0b0f62f850ed630000000000000000000000004def9d69abf2c49333da60a7d35937368c7af01b0000000000000000000000009b567e03d891f537b2b7874aa4a3308cfe2f4fbb
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c8063602095ce116100f9578063878c5b511161009757806396e840a91161007157806396e840a91461043c5780639e447fc61461045a578063e7d554ac14610476578063f2fde38b14610492576101a9565b8063878c5b51146103e45780638b3d81b3146103ee5780638da5cb5b1461041e576101a9565b80637b0472f0116100d35780637b0472f0146103825780637b0a47ee1461039e5780638456cb59146103bc578063851fbb54146103c6576101a9565b8063602095ce1461033c578063715018a61461035a578063721a1f4514610364576101a9565b80633b3f944c1161016657806351f3db481161014057806351f3db48146102b4578063584b62a1146102d05780635c975abb146103025780635cae8f5914610320576101a9565b80633b3f944c1461026e5780633f4ba83a1461028c57806341cd5f7314610296576101a9565b8063099eb0bd146101ae5780630b83a727146101de5780631852e8d9146101e85780631cc6ec93146102185780632e17de78146102345780633b18dc7114610250575b600080fd5b6101c860048036038101906101c39190611e6a565b6104ae565b6040516101d59190611eb0565b60405180910390f35b6101e66104c6565b005b61020260048036038101906101fd9190611ef7565b6107d2565b60405161020f9190611eb0565b60405180910390f35b610232600480360381019061022d9190611f37565b61095c565b005b61024e60048036038101906102499190611f37565b6109a5565b005b610258610c04565b6040516102659190611eb0565b60405180910390f35b610276610c0a565b6040516102839190611eb0565b60405180910390f35b610294610c10565b005b61029e610c22565b6040516102ab9190611eb0565b60405180910390f35b6102ce60048036038101906102c99190611f37565b610c28565b005b6102ea60048036038101906102e59190611ef7565b610c71565b6040516102f993929190611f64565b60405180910390f35b61030a610cb8565b6040516103179190611fb6565b60405180910390f35b61033a60048036038101906103359190611f37565b610ccf565b005b610344610d18565b6040516103519190612030565b60405180910390f35b610362610d3e565b005b61036c610d52565b604051610379919061206c565b60405180910390f35b61039c60048036038101906103979190612087565b610d78565b005b6103a66112e6565b6040516103b39190611eb0565b60405180910390f35b6103c46112ec565b005b6103ce6112fe565b6040516103db9190612030565b60405180910390f35b6103ec611324565b005b61040860048036038101906104039190611f37565b6115aa565b60405161041591906120d6565b60405180910390f35b6104266115dd565b60405161043391906120d6565b60405180910390f35b610444611606565b6040516104519190611eb0565b60405180910390f35b610474600480360381019061046f9190611f37565b61160c565b005b610490600480360381019061048b9190611f37565b611655565b005b6104ac60048036038101906104a79190611e6a565b61169e565b005b600c6020528060005260406000206000915090505481565b6104ce611721565b6104d6611770565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b82811015610692576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106105c0576105bf6120f1565b5b9060005260206000209060030201905060006105e03383600001546107d2565b9050600084111561061e57606460065485836105fc919061214f565b610606919061214f565b61061091906121c0565b8161061b91906121f1565b90505b60018511156106665760646007546001876106399190612225565b83610644919061214f565b61064e919061214f565b61065891906121c0565b8161066391906121f1565b90505b808661067291906121f1565b95504282600101819055505050808061068a90612259565b915050610565565b50600083116106d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106cd906122fe565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b815260040161073392919061231e565b6020604051808303816000875af1158015610752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107769190612373565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241846040516107bd9190611eb0565b60405180910390a25050506107d06117ba565b565b600080600090505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156109505782600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610876576108756120f1565b5b9060005260206000209060030201600001540361093d576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106108e0576108df6120f1565b5b906000526020600020906003020160010154426108fd9190612225565b9050600062015180600554610911876117c3565b8461091c919061214f565b610926919061214f565b61093091906121c0565b9050809350505050610956565b808061094890612259565b9150506107da565b50600090505b92915050565b6109646118f8565b806009819055507fa292edce75c880178d165ee8473be051a702186c35b27ea86dab6c73ce88ff578160405161099a9190611eb0565b60405180910390a150565b6109ad611721565b6109b5611770565b3373ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d906123ec565b60405180910390fd5b6000610a6233836107d2565b9050610a6e3383611976565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033856040518463ffffffff1660e01b8152600401610acd9392919061240c565b600060405180830381600087803b158015610ae757600080fd5b505af1158015610afb573d6000803e3d6000fd5b505050506000811115610baa57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610b6592919061231e565b6020604051808303816000875af1158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190612373565b505b3373ffffffffffffffffffffffffffffffffffffffff167f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7583604051610bf09190611eb0565b60405180910390a250610c016117ba565b50565b60085481565b60075481565b610c186118f8565b610c20611c2c565b565b60095481565b610c306118f8565b806008819055507f984f97438a61d2a2abf6ae7cccfe9dc9c37c8e3111255c24be5ef1129c6f2c7681604051610c669190611eb0565b60405180910390a150565b600a6020528160005260406000208181548110610c8d57600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b6000600260009054906101000a900460ff16905090565b610cd76118f8565b806006819055507f82d11b838fe6759b50f04eff1d5395941e45d6616e08dc91359ef18c0a5d53cb81604051610d0d9190611eb0565b60405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d466118f8565b610d506000611c8f565b565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d80611721565b610d88611770565b3373ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401610dfa9190611eb0565b602060405180830381865afa158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190612458565b73ffffffffffffffffffffffffffffffffffffffff1614610e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e88906124d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a9061253d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb906125a9565b60405180910390fd5b600081111561110557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161102c9392919061240c565b6020604051808303816000875af115801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f9190612373565b6110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612615565b60405180910390fd5b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110fd91906121f1565b925050819055505b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040528084815260200142815260200160008152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001556020820151816001015560408201518160020155505033600b600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b815260040161125a9392919061240c565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040516112d29190611eb0565b60405180910390a26112e26117ba565b5050565b60055481565b6112f46118f8565b6112fc611d53565b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61132c611721565b611334611770565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b8181101561146b576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106113da576113d96120f1565b5b9060005260206000209060030201905060095481600201546113fc91906121f1565b42101561143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590612681565b60405180910390fd5b6008548461144c91906121f1565b935042816002018190555050808061146390612259565b91505061137f565b50600082116114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a6906126ed565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161150c92919061231e565b6020604051808303816000875af115801561152b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154f9190612373565b503373ffffffffffffffffffffffffffffffffffffffff167f6a0f4fe063f23e62798223a0c370a3dd6e2686f8de029beaed648542858f59d3836040516115969190611eb0565b60405180910390a250506115a86117ba565b565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6116146118f8565b806005819055507f41d466ebd06fb97e7786086ac8b69b7eb7da798592036251291d34e9791cde018160405161164a9190611eb0565b60405180910390a150565b61165d6118f8565b806007819055507fb19515f2a336787468acf8a8db6b652502c53f21356255541af6d857c51a1270816040516116939190611eb0565b60405180910390a150565b6116a66118f8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c9061277f565b60405180910390fd5b61171e81611c8f565b50565b600260015403611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d906127eb565b60405180910390fd5b6002600181905550565b611778610cb8565b156117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af90612857565b60405180910390fd5b565b60018081905550565b60008073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c906125a9565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2596a67836040518263ffffffff1660e01b81526004016118b09190611eb0565b602060405180830381865afa1580156118cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f1919061288c565b9050919050565b611900611db6565b73ffffffffffffffffffffffffffffffffffffffff1661191e6115dd565b73ffffffffffffffffffffffffffffffffffffffff1614611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90612905565b60405180910390fd5b565b60005b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611c275781600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611a1557611a146120f1565b5b90600052602060002090600302016000015403611c1457600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611aba9190612225565b81548110611acb57611aca6120f1565b5b9060005260206000209060030201600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611b2a57611b296120f1565b5b9060005260206000209060030201600082015481600001556001820154816001015560028201548160020155905050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480611ba857611ba7612925565b5b60019003818190600052602060002090600302016000808201600090556001820160009055600282016000905550509055600b600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611c27565b8080611c1f90612259565b915050611979565b505050565b611c34611dbe565b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611c78611db6565b604051611c8591906120d6565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611d5b611770565b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d9f611db6565b604051611dac91906120d6565b60405180910390a1565b600033905090565b611dc6610cb8565b611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc906129a0565b60405180910390fd5b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e3782611e0c565b9050919050565b611e4781611e2c565b8114611e5257600080fd5b50565b600081359050611e6481611e3e565b92915050565b600060208284031215611e8057611e7f611e07565b5b6000611e8e84828501611e55565b91505092915050565b6000819050919050565b611eaa81611e97565b82525050565b6000602082019050611ec56000830184611ea1565b92915050565b611ed481611e97565b8114611edf57600080fd5b50565b600081359050611ef181611ecb565b92915050565b60008060408385031215611f0e57611f0d611e07565b5b6000611f1c85828601611e55565b9250506020611f2d85828601611ee2565b9150509250929050565b600060208284031215611f4d57611f4c611e07565b5b6000611f5b84828501611ee2565b91505092915050565b6000606082019050611f796000830186611ea1565b611f866020830185611ea1565b611f936040830184611ea1565b949350505050565b60008115159050919050565b611fb081611f9b565b82525050565b6000602082019050611fcb6000830184611fa7565b92915050565b6000819050919050565b6000611ff6611ff1611fec84611e0c565b611fd1565b611e0c565b9050919050565b600061200882611fdb565b9050919050565b600061201a82611ffd565b9050919050565b61202a8161200f565b82525050565b60006020820190506120456000830184612021565b92915050565b600061205682611ffd565b9050919050565b6120668161204b565b82525050565b6000602082019050612081600083018461205d565b92915050565b6000806040838503121561209e5761209d611e07565b5b60006120ac85828601611ee2565b92505060206120bd85828601611ee2565b9150509250929050565b6120d081611e2c565b82525050565b60006020820190506120eb60008301846120c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061215a82611e97565b915061216583611e97565b925082820261217381611e97565b9150828204841483151761218a57612189612120565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006121cb82611e97565b91506121d683611e97565b9250826121e6576121e5612191565b5b828204905092915050565b60006121fc82611e97565b915061220783611e97565b925082820190508082111561221f5761221e612120565b5b92915050565b600061223082611e97565b915061223b83611e97565b925082820390508181111561225357612252612120565b5b92915050565b600061226482611e97565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361229657612295612120565b5b600182019050919050565b600082825260208201905092915050565b7f4e6f207265776172647320746f20636c61696d00000000000000000000000000600082015250565b60006122e86013836122a1565b91506122f3826122b2565b602082019050919050565b60006020820190508181036000830152612317816122db565b9050919050565b600060408201905061233360008301856120c7565b6123406020830184611ea1565b9392505050565b61235081611f9b565b811461235b57600080fd5b50565b60008151905061236d81612347565b92915050565b60006020828403121561238957612388611e07565b5b60006123978482850161235e565b91505092915050565b7f596f7520646f206e6f74206f776e2074686973207374616b6564204e46540000600082015250565b60006123d6601e836122a1565b91506123e1826123a0565b602082019050919050565b60006020820190508181036000830152612405816123c9565b9050919050565b600060608201905061242160008301866120c7565b61242e60208301856120c7565b61243b6040830184611ea1565b949350505050565b60008151905061245281611e3e565b92915050565b60006020828403121561246e5761246d611e07565b5b600061247c84828501612443565b91505092915050565b7f596f7520646f206e6f74206f776e2074686973204e4654000000000000000000600082015250565b60006124bb6017836122a1565b91506124c682612485565b602082019050919050565b600060208201905081810360008301526124ea816124ae565b9050919050565b7f54686973204e465420697320616c7265616479207374616b6564000000000000600082015250565b6000612527601a836122a1565b9150612532826124f1565b602082019050919050565b600060208201905081810360008301526125568161251a565b9050919050565b7f466c6f7765724e465420636f6e7472616374206e6f7420736574000000000000600082015250565b6000612593601a836122a1565b915061259e8261255d565b602082019050919050565b600060208201905081810360008301526125c281612586565b9050919050565b7f4661696c656420746f207374616b65202453544f4e4552000000000000000000600082015250565b60006125ff6017836122a1565b915061260a826125c9565b602082019050919050565b6000602082019050818103600083015261262e816125f2565b9050919050565b7f54617020626f6e7573206973206f6e20636f6f6c646f776e0000000000000000600082015250565b600061266b6018836122a1565b915061267682612635565b602082019050919050565b6000602082019050818103600083015261269a8161265e565b9050919050565b7f4e6f2074617020626f6e7573657320746f20636c61696d000000000000000000600082015250565b60006126d76017836122a1565b91506126e2826126a1565b602082019050919050565b60006020820190508181036000830152612706816126ca565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006127696026836122a1565b91506127748261270d565b604082019050919050565b600060208201905081810360008301526127988161275c565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006127d5601f836122a1565b91506127e08261279f565b602082019050919050565b60006020820190508181036000830152612804816127c8565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006128416010836122a1565b915061284c8261280b565b602082019050919050565b6000602082019050818103600083015261287081612834565b9050919050565b60008151905061288681611ecb565b92915050565b6000602082840312156128a2576128a1611e07565b5b60006128b084828501612877565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128ef6020836122a1565b91506128fa826128b9565b602082019050919050565b6000602082019050818103600083015261291e816128e2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061298a6014836122a1565b915061299582612954565b602082019050919050565b600060208201905081810360008301526129b98161297d565b905091905056fea2646970667358221220f325d2d5c5d4516476a66250381426ad93b28e4903a7d5ebb87c5aa7842d993a64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c6c9d0cc3d8891a9d9723b4beb0b0f62f850ed630000000000000000000000004def9d69abf2c49333da60a7d35937368c7af01b0000000000000000000000009b567e03d891f537b2b7874aa4a3308cfe2f4fbb
-----Decoded View---------------
Arg [0] : _flowerNFT (address): 0xc6C9D0Cc3D8891A9d9723b4Beb0b0f62f850eD63
Arg [1] : _flowerToken (address): 0x4dEF9D69ABF2c49333DA60A7d35937368C7Af01b
Arg [2] : _stonerToken (address): 0x9b567e03d891F537b2B7874aA4A3308Cfe2F4FBb
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c6c9d0cc3d8891a9d9723b4beb0b0f62f850ed63
Arg [1] : 0000000000000000000000004def9d69abf2c49333da60a7d35937368c7af01b
Arg [2] : 0000000000000000000000009b567e03d891f537b2b7874aa4a3308cfe2f4fbb
Deployed Bytecode Sourcemap
18475:6969:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19237:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22660:954;;;:::i;:::-;;24320:476;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20483:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22124:497;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18887:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18794:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21115:67;;;:::i;:::-;;18947:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20326:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19130:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;17330:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20637:191;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18577:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11588:103;;;:::i;:::-;;18546:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21213:903;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18643:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21044:63;;;:::i;:::-;;18609:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23622:658;;;:::i;:::-;;19178:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10947:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18712:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20178:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20836:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11846:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19237:51;;;;;;;;;;;;;;;;;:::o;22660:954::-;14756:21;:19;:21::i;:::-;16935:19:::1;:17;:19::i;:::-;22734::::2;22768:16:::0;22787:6:::2;:18;22794:10;22787:18;;;;;;;;;;;;;;;:25;;;;22768:44;;22823:19;22845:16;:28;22862:10;22845:28;;;;;;;;;;;;;;;;22823:50;;22891:9;22886:551;22910:8;22906:1;:12;22886:551;;;22940:23;22966:6;:18;22973:10;22966:18;;;;;;;;;;;;;;;22985:1;22966:21;;;;;;;;:::i;:::-;;;;;;;;;;;;22940:47;;23002:14;23019:46;23035:10;23047:9;:17;;;23019:15;:46::i;:::-;23002:63;;23100:1;23086:11;:15;23082:118;;;23181:3;23156:21;;23142:11;23133:6;:20;;;;:::i;:::-;:44;;;;:::i;:::-;23132:52;;;;:::i;:::-;23122:62;;;;;:::i;:::-;;;23082:118;23231:1;23220:8;:12;23216:121;;;23318:3;23290:24;;23285:1;23274:8;:12;;;;:::i;:::-;23264:6;:23;;;;:::i;:::-;:50;;;;:::i;:::-;23263:58;;;;:::i;:::-;23253:68;;;;;:::i;:::-;;;23216:121;23368:6;23353:21;;;;;:::i;:::-;;;23410:15;23389:9;:18;;:36;;;;22925:512;;22920:3;;;;;:::i;:::-;;;;22886:551;;;;23471:1;23457:11;:15;23449:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;23507:11;;;;;;;;;;;:20;;;23528:10;23540:11;23507:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23582:10;23568:38;;;23594:11;23568:38;;;;;;:::i;:::-;;;;;;;;22723:891;;;14800:20:::0;:18;:20::i;:::-;22660:954::o;24320:476::-;24397:7;24422:9;24434:1;24422:13;;24417:353;24441:6;:12;24448:4;24441:12;;;;;;;;;;;;;;;:19;;;;24437:1;:23;24417:353;;;24513:7;24486:6;:12;24493:4;24486:12;;;;;;;;;;;;;;;24499:1;24486:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;:34;24482:277;;24541:18;24580:6;:12;24587:4;24580:12;;;;;;;;;;;;;;;24593:1;24580:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:24;;;24562:15;:42;;;;:::i;:::-;24541:63;;24623:18;24701:6;24687:10;;24658:26;24676:7;24658:17;:26::i;:::-;24645:10;:39;;;;:::i;:::-;:52;;;;:::i;:::-;24644:63;;;;:::i;:::-;24623:84;;24733:10;24726:17;;;;;;;24482:277;24462:3;;;;;:::i;:::-;;;;24417:353;;;;24787:1;24780:8;;24320:476;;;;;:::o;20483:146::-;10833:13;:11;:13::i;:::-;20569:8:::1;20555:11;:22;;;;20593:28;20612:8;20593:28;;;;;;:::i;:::-;;;;;;;;20483:146:::0;:::o;22124:497::-;14756:21;:19;:21::i;:::-;16935:19:::1;:17;:19::i;:::-;22243:10:::2;22213:40;;:17;:26;22231:7;22213:26;;;;;;;;;;;;;;;;;;;;;:40;;;22205:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;22301:14;22318:36;22334:10;22346:7;22318:15;:36::i;:::-;22301:53;;22365:33;22378:10;22390:7;22365:12;:33::i;:::-;22411:9;;;;;;;;;;;:26;;;22446:4;22453:10;22465:7;22411:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;22497:1;22488:6;:10;22484:83;;;22515:11;;;;;;;;;;;:20;;;22536:10;22548:6;22515:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22484:83;22593:10;22584:29;;;22605:7;22584:29;;;;;;:::i;:::-;;;;;;;;22194:427;14800:20:::0;:18;:20::i;:::-;22124:497;:::o;18887:29::-;;;;:::o;18794:43::-;;;;:::o;21115:67::-;10833:13;:11;:13::i;:::-;21164:10:::1;:8;:10::i;:::-;21115:67::o:0;18947:26::-;;;;:::o;20326:149::-;10833:13;:11;:13::i;:::-;20418:8:::1;20401:14;:25;;;;20442;20458:8;20442:25;;;;;;:::i;:::-;;;;;;;;20326:149:::0;:::o;19130:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17330:86::-;17377:4;17401:7;;;;;;;;;;;17394:14;;17330:86;:::o;20637:191::-;10833:13;:11;:13::i;:::-;20748::::1;20724:21;:37;;;;20777:43;20806:13;20777:43;;;;;;:::i;:::-;;;;;;;;20637:191:::0;:::o;18577:25::-;;;;;;;;;;;;;:::o;11588:103::-;10833:13;:11;:13::i;:::-;11653:30:::1;11680:1;11653:18;:30::i;:::-;11588:103::o:0;18546:24::-;;;;;;;;;;;;;:::o;21213:903::-;14756:21;:19;:21::i;:::-;16935:19:::1;:17;:19::i;:::-;21352:10:::2;21322:40;;:9;;;;;;;;;;;:17;;;21340:7;21322:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;21314:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;21447:1;21409:40;;:17;:26;21427:7;21409:26;;;;;;;;;;;;;;;;;;;;;:40;;;21401:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;21529:1;21499:32;;21507:9;;;;;;;;;;;21499:32;;::::0;21491:71:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;21594:1;21579:12;:16;21575:209;;;21620:11;;;;;;;;;;;:24;;;21645:10;21665:4;21672:12;21620:65;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21612:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;21760:12;21728:16;:28;21745:10;21728:28;;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;;;;;;;21575:209;21796:6;:18;21803:10;21796:18;;;;;;;;;;;;;;;21820:117;;;;;;;;21850:7;21820:117;;;;21882:15;21820:117;;;;21924:1;21820:117;;::::0;21796:142:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21980:10;21951:17;:26;21969:7;21951:26;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22001:9;;;;;;;;;;;:26;;;22028:10;22048:4;22055:7;22001:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;22088:10;22081:27;;;22100:7;22081:27;;;;;;:::i;:::-;;;;;;;;14800:20:::0;:18;:20::i;:::-;21213:903;;:::o;18643:25::-;;;;:::o;21044:63::-;10833:13;:11;:13::i;:::-;21091:8:::1;:6;:8::i;:::-;21044:63::o:0;18609:25::-;;;;;;;;;;;;;:::o;23622:658::-;14756:21;:19;:21::i;:::-;16935:19:::1;:17;:19::i;:::-;23694:18:::2;23727:16:::0;23746:6:::2;:18;23753:10;23746:18;;;;;;;;;;;;;;;:25;;;;23727:44;;23789:9;23784:316;23808:8;23804:1;:12;23784:316;;;23838:23;23864:6;:18;23871:10;23864:18;;;;;;;;;;;;;;;23883:1;23864:21;;;;;;;;:::i;:::-;;;;;;;;;;;;23838:47;;23950:11;;23927:9;:20;;;:34;;;;:::i;:::-;23908:15;:53;;23900:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;24021:14;;24007:28;;;;;:::i;:::-;;;24073:15;24050:9;:20;;:38;;;;23823:277;23818:3;;;;;:::i;:::-;;;;23784:316;;;;24133:1;24120:10;:14;24112:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;24173:11;;;;;;;;;;;:20;;;24194:10;24206;24173:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24249:10;24233:39;;;24261:10;24233:39;;;;;;:::i;:::-;;;;;;;;23683:597;;14800:20:::0;:18;:20::i;:::-;23622:658::o;19178:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;10947:87::-;10993:7;11020:6;;;;;;;;;;;11013:13;;10947:87;:::o;18712:41::-;;;;:::o;20178:140::-;10833:13;:11;:13::i;:::-;20261:7:::1;20248:10;:20;;;;20284:26;20302:7;20284:26;;;;;;:::i;:::-;;;;;;;;20178:140:::0;:::o;20836:200::-;10833:13;:11;:13::i;:::-;20953::::1;20926:24;:40;;;;20982:46;21014:13;20982:46;;;;;;:::i;:::-;;;;;;;;20836:200:::0;:::o;11846:201::-;10833:13;:11;:13::i;:::-;11955:1:::1;11935:22;;:8;:22;;::::0;11927:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12011:28;12030:8;12011:18;:28::i;:::-;11846:201:::0;:::o;14836:293::-;14238:1;14970:7;;:19;14962:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14238:1;15103:7;:18;;;;14836:293::o;17489:108::-;17560:8;:6;:8::i;:::-;17559:9;17551:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17489:108::o;15137:213::-;14194:1;15320:7;:22;;;;15137:213::o;25211:230::-;25278:7;25336:1;25306:32;;25314:9;;;;;;;;;;;25306:32;;;25298:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25406:9;;;;;;;;;;;25387:37;;;25425:7;25387:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25380:53;;25211:230;;;:::o;11112:132::-;11187:12;:10;:12::i;:::-;11176:23;;:7;:5;:7::i;:::-;:23;;;11168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11112:132::o;24804:399::-;24882:9;24877:319;24901:6;:12;24908:4;24901:12;;;;;;;;;;;;;;;:19;;;;24897:1;:23;24877:319;;;24973:7;24946:6;:12;24953:4;24946:12;;;;;;;;;;;;;;;24959:1;24946:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;:34;24942:243;;25019:6;:12;25026:4;25019:12;;;;;;;;;;;;;;;25054:1;25032:6;:12;25039:4;25032:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;25019:37;;;;;;;;:::i;:::-;;;;;;;;;;;;25001:6;:12;25008:4;25001:12;;;;;;;;;;;;;;;25014:1;25001:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;25075:6;:12;25082:4;25075:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25119:17;:26;25137:7;25119:26;;;;;;;;;;;;25112:33;;;;;;;;;;;25164:5;;24942:243;24922:3;;;;;:::i;:::-;;;;24877:319;;;;24804:399;;:::o;18185:120::-;17194:16;:14;:16::i;:::-;18254:5:::1;18244:7;;:15;;;;;;;;;;;;;;;;;;18275:22;18284:12;:10;:12::i;:::-;18275:22;;;;;;:::i;:::-;;;;;;;;18185:120::o:0;12207:191::-;12281:16;12300:6;;;;;;;;;;;12281:25;;12326:8;12317:6;;:17;;;;;;;;;;;;;;;;;;12381:8;12350:40;;12371:8;12350:40;;;;;;;;;;;;12270:128;12207:191;:::o;17926:118::-;16935:19;:17;:19::i;:::-;17996:4:::1;17986:7;;:14;;;;;;;;;;;;;;;;;;18016:20;18023:12;:10;:12::i;:::-;18016:20;;;;;;:::i;:::-;;;;;;;;17926:118::o:0;9492:98::-;9545:7;9572:10;9565:17;;9492:98;:::o;17674:108::-;17741:8;:6;:8::i;:::-;17733:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;17674:108::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:474::-;1952:6;1960;2009:2;1997:9;1988:7;1984:23;1980:32;1977:119;;;2015:79;;:::i;:::-;1977:119;2135:1;2160:53;2205:7;2196:6;2185:9;2181:22;2160:53;:::i;:::-;2150:63;;2106:117;2262:2;2288:53;2333:7;2324:6;2313:9;2309:22;2288:53;:::i;:::-;2278:63;;2233:118;1884:474;;;;;:::o;2364:329::-;2423:6;2472:2;2460:9;2451:7;2447:23;2443:32;2440:119;;;2478:79;;:::i;:::-;2440:119;2598:1;2623:53;2668:7;2659:6;2648:9;2644:22;2623:53;:::i;:::-;2613:63;;2569:117;2364:329;;;;:::o;2699:442::-;2848:4;2886:2;2875:9;2871:18;2863:26;;2899:71;2967:1;2956:9;2952:17;2943:6;2899:71;:::i;:::-;2980:72;3048:2;3037:9;3033:18;3024:6;2980:72;:::i;:::-;3062;3130:2;3119:9;3115:18;3106:6;3062:72;:::i;:::-;2699:442;;;;;;:::o;3147:90::-;3181:7;3224:5;3217:13;3210:21;3199:32;;3147:90;;;:::o;3243:109::-;3324:21;3339:5;3324:21;:::i;:::-;3319:3;3312:34;3243:109;;:::o;3358:210::-;3445:4;3483:2;3472:9;3468:18;3460:26;;3496:65;3558:1;3547:9;3543:17;3534:6;3496:65;:::i;:::-;3358:210;;;;:::o;3574:60::-;3602:3;3623:5;3616:12;;3574:60;;;:::o;3640:142::-;3690:9;3723:53;3741:34;3750:24;3768:5;3750:24;:::i;:::-;3741:34;:::i;:::-;3723:53;:::i;:::-;3710:66;;3640:142;;;:::o;3788:126::-;3838:9;3871:37;3902:5;3871:37;:::i;:::-;3858:50;;3788:126;;;:::o;3920:140::-;3984:9;4017:37;4048:5;4017:37;:::i;:::-;4004:50;;3920:140;;;:::o;4066:159::-;4167:51;4212:5;4167:51;:::i;:::-;4162:3;4155:64;4066:159;;:::o;4231:250::-;4338:4;4376:2;4365:9;4361:18;4353:26;;4389:85;4471:1;4460:9;4456:17;4447:6;4389:85;:::i;:::-;4231:250;;;;:::o;4487:141::-;4552:9;4585:37;4616:5;4585:37;:::i;:::-;4572:50;;4487:141;;;:::o;4634:161::-;4736:52;4782:5;4736:52;:::i;:::-;4731:3;4724:65;4634:161;;:::o;4801:252::-;4909:4;4947:2;4936:9;4932:18;4924:26;;4960:86;5043:1;5032:9;5028:17;5019:6;4960:86;:::i;:::-;4801:252;;;;:::o;5059:474::-;5127:6;5135;5184:2;5172:9;5163:7;5159:23;5155:32;5152:119;;;5190:79;;:::i;:::-;5152:119;5310:1;5335:53;5380:7;5371:6;5360:9;5356:22;5335:53;:::i;:::-;5325:63;;5281:117;5437:2;5463:53;5508:7;5499:6;5488:9;5484:22;5463:53;:::i;:::-;5453:63;;5408:118;5059:474;;;;;:::o;5539:118::-;5626:24;5644:5;5626:24;:::i;:::-;5621:3;5614:37;5539:118;;:::o;5663:222::-;5756:4;5794:2;5783:9;5779:18;5771:26;;5807:71;5875:1;5864:9;5860:17;5851:6;5807:71;:::i;:::-;5663:222;;;;:::o;5891:180::-;5939:77;5936:1;5929:88;6036:4;6033:1;6026:15;6060:4;6057:1;6050:15;6077:180;6125:77;6122:1;6115:88;6222:4;6219:1;6212:15;6246:4;6243:1;6236:15;6263:410;6303:7;6326:20;6344:1;6326:20;:::i;:::-;6321:25;;6360:20;6378:1;6360:20;:::i;:::-;6355:25;;6415:1;6412;6408:9;6437:30;6455:11;6437:30;:::i;:::-;6426:41;;6616:1;6607:7;6603:15;6600:1;6597:22;6577:1;6570:9;6550:83;6527:139;;6646:18;;:::i;:::-;6527:139;6311:362;6263:410;;;;:::o;6679:180::-;6727:77;6724:1;6717:88;6824:4;6821:1;6814:15;6848:4;6845:1;6838:15;6865:185;6905:1;6922:20;6940:1;6922:20;:::i;:::-;6917:25;;6956:20;6974:1;6956:20;:::i;:::-;6951:25;;6995:1;6985:35;;7000:18;;:::i;:::-;6985:35;7042:1;7039;7035:9;7030:14;;6865:185;;;;:::o;7056:191::-;7096:3;7115:20;7133:1;7115:20;:::i;:::-;7110:25;;7149:20;7167:1;7149:20;:::i;:::-;7144:25;;7192:1;7189;7185:9;7178:16;;7213:3;7210:1;7207:10;7204:36;;;7220:18;;:::i;:::-;7204:36;7056:191;;;;:::o;7253:194::-;7293:4;7313:20;7331:1;7313:20;:::i;:::-;7308:25;;7347:20;7365:1;7347:20;:::i;:::-;7342:25;;7391:1;7388;7384:9;7376:17;;7415:1;7409:4;7406:11;7403:37;;;7420:18;;:::i;:::-;7403:37;7253:194;;;;:::o;7453:233::-;7492:3;7515:24;7533:5;7515:24;:::i;:::-;7506:33;;7561:66;7554:5;7551:77;7548:103;;7631:18;;:::i;:::-;7548:103;7678:1;7671:5;7667:13;7660:20;;7453:233;;;:::o;7692:169::-;7776:11;7810:6;7805:3;7798:19;7850:4;7845:3;7841:14;7826:29;;7692:169;;;;:::o;7867:::-;8007:21;8003:1;7995:6;7991:14;7984:45;7867:169;:::o;8042:366::-;8184:3;8205:67;8269:2;8264:3;8205:67;:::i;:::-;8198:74;;8281:93;8370:3;8281:93;:::i;:::-;8399:2;8394:3;8390:12;8383:19;;8042:366;;;:::o;8414:419::-;8580:4;8618:2;8607:9;8603:18;8595:26;;8667:9;8661:4;8657:20;8653:1;8642:9;8638:17;8631:47;8695:131;8821:4;8695:131;:::i;:::-;8687:139;;8414:419;;;:::o;8839:332::-;8960:4;8998:2;8987:9;8983:18;8975:26;;9011:71;9079:1;9068:9;9064:17;9055:6;9011:71;:::i;:::-;9092:72;9160:2;9149:9;9145:18;9136:6;9092:72;:::i;:::-;8839:332;;;;;:::o;9177:116::-;9247:21;9262:5;9247:21;:::i;:::-;9240:5;9237:32;9227:60;;9283:1;9280;9273:12;9227:60;9177:116;:::o;9299:137::-;9353:5;9384:6;9378:13;9369:22;;9400:30;9424:5;9400:30;:::i;:::-;9299:137;;;;:::o;9442:345::-;9509:6;9558:2;9546:9;9537:7;9533:23;9529:32;9526:119;;;9564:79;;:::i;:::-;9526:119;9684:1;9709:61;9762:7;9753:6;9742:9;9738:22;9709:61;:::i;:::-;9699:71;;9655:125;9442:345;;;;:::o;9793:180::-;9933:32;9929:1;9921:6;9917:14;9910:56;9793:180;:::o;9979:366::-;10121:3;10142:67;10206:2;10201:3;10142:67;:::i;:::-;10135:74;;10218:93;10307:3;10218:93;:::i;:::-;10336:2;10331:3;10327:12;10320:19;;9979:366;;;:::o;10351:419::-;10517:4;10555:2;10544:9;10540:18;10532:26;;10604:9;10598:4;10594:20;10590:1;10579:9;10575:17;10568:47;10632:131;10758:4;10632:131;:::i;:::-;10624:139;;10351:419;;;:::o;10776:442::-;10925:4;10963:2;10952:9;10948:18;10940:26;;10976:71;11044:1;11033:9;11029:17;11020:6;10976:71;:::i;:::-;11057:72;11125:2;11114:9;11110:18;11101:6;11057:72;:::i;:::-;11139;11207:2;11196:9;11192:18;11183:6;11139:72;:::i;:::-;10776:442;;;;;;:::o;11224:143::-;11281:5;11312:6;11306:13;11297:22;;11328:33;11355:5;11328:33;:::i;:::-;11224:143;;;;:::o;11373:351::-;11443:6;11492:2;11480:9;11471:7;11467:23;11463:32;11460:119;;;11498:79;;:::i;:::-;11460:119;11618:1;11643:64;11699:7;11690:6;11679:9;11675:22;11643:64;:::i;:::-;11633:74;;11589:128;11373:351;;;;:::o;11730:173::-;11870:25;11866:1;11858:6;11854:14;11847:49;11730:173;:::o;11909:366::-;12051:3;12072:67;12136:2;12131:3;12072:67;:::i;:::-;12065:74;;12148:93;12237:3;12148:93;:::i;:::-;12266:2;12261:3;12257:12;12250:19;;11909:366;;;:::o;12281:419::-;12447:4;12485:2;12474:9;12470:18;12462:26;;12534:9;12528:4;12524:20;12520:1;12509:9;12505:17;12498:47;12562:131;12688:4;12562:131;:::i;:::-;12554:139;;12281:419;;;:::o;12706:176::-;12846:28;12842:1;12834:6;12830:14;12823:52;12706:176;:::o;12888:366::-;13030:3;13051:67;13115:2;13110:3;13051:67;:::i;:::-;13044:74;;13127:93;13216:3;13127:93;:::i;:::-;13245:2;13240:3;13236:12;13229:19;;12888:366;;;:::o;13260:419::-;13426:4;13464:2;13453:9;13449:18;13441:26;;13513:9;13507:4;13503:20;13499:1;13488:9;13484:17;13477:47;13541:131;13667:4;13541:131;:::i;:::-;13533:139;;13260:419;;;:::o;13685:176::-;13825:28;13821:1;13813:6;13809:14;13802:52;13685:176;:::o;13867:366::-;14009:3;14030:67;14094:2;14089:3;14030:67;:::i;:::-;14023:74;;14106:93;14195:3;14106:93;:::i;:::-;14224:2;14219:3;14215:12;14208:19;;13867:366;;;:::o;14239:419::-;14405:4;14443:2;14432:9;14428:18;14420:26;;14492:9;14486:4;14482:20;14478:1;14467:9;14463:17;14456:47;14520:131;14646:4;14520:131;:::i;:::-;14512:139;;14239:419;;;:::o;14664:173::-;14804:25;14800:1;14792:6;14788:14;14781:49;14664:173;:::o;14843:366::-;14985:3;15006:67;15070:2;15065:3;15006:67;:::i;:::-;14999:74;;15082:93;15171:3;15082:93;:::i;:::-;15200:2;15195:3;15191:12;15184:19;;14843:366;;;:::o;15215:419::-;15381:4;15419:2;15408:9;15404:18;15396:26;;15468:9;15462:4;15458:20;15454:1;15443:9;15439:17;15432:47;15496:131;15622:4;15496:131;:::i;:::-;15488:139;;15215:419;;;:::o;15640:174::-;15780:26;15776:1;15768:6;15764:14;15757:50;15640:174;:::o;15820:366::-;15962:3;15983:67;16047:2;16042:3;15983:67;:::i;:::-;15976:74;;16059:93;16148:3;16059:93;:::i;:::-;16177:2;16172:3;16168:12;16161:19;;15820:366;;;:::o;16192:419::-;16358:4;16396:2;16385:9;16381:18;16373:26;;16445:9;16439:4;16435:20;16431:1;16420:9;16416:17;16409:47;16473:131;16599:4;16473:131;:::i;:::-;16465:139;;16192:419;;;:::o;16617:173::-;16757:25;16753:1;16745:6;16741:14;16734:49;16617:173;:::o;16796:366::-;16938:3;16959:67;17023:2;17018:3;16959:67;:::i;:::-;16952:74;;17035:93;17124:3;17035:93;:::i;:::-;17153:2;17148:3;17144:12;17137:19;;16796:366;;;:::o;17168:419::-;17334:4;17372:2;17361:9;17357:18;17349:26;;17421:9;17415:4;17411:20;17407:1;17396:9;17392:17;17385:47;17449:131;17575:4;17449:131;:::i;:::-;17441:139;;17168:419;;;:::o;17593:225::-;17733:34;17729:1;17721:6;17717:14;17710:58;17802:8;17797:2;17789:6;17785:15;17778:33;17593:225;:::o;17824:366::-;17966:3;17987:67;18051:2;18046:3;17987:67;:::i;:::-;17980:74;;18063:93;18152:3;18063:93;:::i;:::-;18181:2;18176:3;18172:12;18165:19;;17824:366;;;:::o;18196:419::-;18362:4;18400:2;18389:9;18385:18;18377:26;;18449:9;18443:4;18439:20;18435:1;18424:9;18420:17;18413:47;18477:131;18603:4;18477:131;:::i;:::-;18469:139;;18196:419;;;:::o;18621:181::-;18761:33;18757:1;18749:6;18745:14;18738:57;18621:181;:::o;18808:366::-;18950:3;18971:67;19035:2;19030:3;18971:67;:::i;:::-;18964:74;;19047:93;19136:3;19047:93;:::i;:::-;19165:2;19160:3;19156:12;19149:19;;18808:366;;;:::o;19180:419::-;19346:4;19384:2;19373:9;19369:18;19361:26;;19433:9;19427:4;19423:20;19419:1;19408:9;19404:17;19397:47;19461:131;19587:4;19461:131;:::i;:::-;19453:139;;19180:419;;;:::o;19605:166::-;19745:18;19741:1;19733:6;19729:14;19722:42;19605:166;:::o;19777:366::-;19919:3;19940:67;20004:2;19999:3;19940:67;:::i;:::-;19933:74;;20016:93;20105:3;20016:93;:::i;:::-;20134:2;20129:3;20125:12;20118:19;;19777:366;;;:::o;20149:419::-;20315:4;20353:2;20342:9;20338:18;20330:26;;20402:9;20396:4;20392:20;20388:1;20377:9;20373:17;20366:47;20430:131;20556:4;20430:131;:::i;:::-;20422:139;;20149:419;;;:::o;20574:143::-;20631:5;20662:6;20656:13;20647:22;;20678:33;20705:5;20678:33;:::i;:::-;20574:143;;;;:::o;20723:351::-;20793:6;20842:2;20830:9;20821:7;20817:23;20813:32;20810:119;;;20848:79;;:::i;:::-;20810:119;20968:1;20993:64;21049:7;21040:6;21029:9;21025:22;20993:64;:::i;:::-;20983:74;;20939:128;20723:351;;;;:::o;21080:182::-;21220:34;21216:1;21208:6;21204:14;21197:58;21080:182;:::o;21268:366::-;21410:3;21431:67;21495:2;21490:3;21431:67;:::i;:::-;21424:74;;21507:93;21596:3;21507:93;:::i;:::-;21625:2;21620:3;21616:12;21609:19;;21268:366;;;:::o;21640:419::-;21806:4;21844:2;21833:9;21829:18;21821:26;;21893:9;21887:4;21883:20;21879:1;21868:9;21864:17;21857:47;21921:131;22047:4;21921:131;:::i;:::-;21913:139;;21640:419;;;:::o;22065:180::-;22113:77;22110:1;22103:88;22210:4;22207:1;22200:15;22234:4;22231:1;22224:15;22251:170;22391:22;22387:1;22379:6;22375:14;22368:46;22251:170;:::o;22427:366::-;22569:3;22590:67;22654:2;22649:3;22590:67;:::i;:::-;22583:74;;22666:93;22755:3;22666:93;:::i;:::-;22784:2;22779:3;22775:12;22768:19;;22427:366;;;:::o;22799:419::-;22965:4;23003:2;22992:9;22988:18;22980:26;;23052:9;23046:4;23042:20;23038:1;23027:9;23023:17;23016:47;23080:131;23206:4;23080:131;:::i;:::-;23072:139;;22799:419;;;:::o
Swarm Source
ipfs://f325d2d5c5d4516476a66250381426ad93b28e4903a7d5ebb87c5aa7842d993a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.