More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 181 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Reward | 21432262 | 2 days ago | IN | 0 ETH | 0.00343351 | ||||
Claim Reward | 19450904 | 279 days ago | IN | 0 ETH | 0.0020978 | ||||
Claim Reward | 19245957 | 307 days ago | IN | 0 ETH | 0.00289873 | ||||
Unstake | 18439464 | 420 days ago | IN | 0 ETH | 0.0014084 | ||||
Recover ERC20 | 18060946 | 473 days ago | IN | 0 ETH | 0.00063266 | ||||
Claim Reward | 18011459 | 480 days ago | IN | 0 ETH | 0.00108978 | ||||
Unstake | 18011456 | 480 days ago | IN | 0 ETH | 0.00122308 | ||||
Unstake | 18006317 | 481 days ago | IN | 0 ETH | 0.00166731 | ||||
Recover ERC20 | 17996264 | 483 days ago | IN | 0 ETH | 0.00077611 | ||||
Unstake | 17989897 | 483 days ago | IN | 0 ETH | 0.00190149 | ||||
Unstake | 17939953 | 490 days ago | IN | 0 ETH | 0.00151438 | ||||
Unstake | 17939950 | 490 days ago | IN | 0 ETH | 0.00161129 | ||||
Unstake | 17939947 | 490 days ago | IN | 0 ETH | 0.00247118 | ||||
Claim Reward | 17939930 | 490 days ago | IN | 0 ETH | 0.00316448 | ||||
Unstake | 17927079 | 492 days ago | IN | 0 ETH | 0.00057312 | ||||
Unstake | 17926970 | 492 days ago | IN | 0 ETH | 0.00261252 | ||||
Unstake | 17881928 | 499 days ago | IN | 0 ETH | 0.00190187 | ||||
Unstake | 17835140 | 505 days ago | IN | 0 ETH | 0.00441605 | ||||
Unstake | 17826548 | 506 days ago | IN | 0 ETH | 0.00232442 | ||||
Unstake | 17811635 | 508 days ago | IN | 0 ETH | 0.00164855 | ||||
Claim Reward | 17792179 | 511 days ago | IN | 0 ETH | 0.00331387 | ||||
Unstake | 17792145 | 511 days ago | IN | 0 ETH | 0.00382671 | ||||
Claim Reward | 17792024 | 511 days ago | IN | 0 ETH | 0.00680785 | ||||
Unstake | 17790045 | 511 days ago | IN | 0 ETH | 0.00347508 | ||||
Unstake | 17789948 | 511 days ago | IN | 0 ETH | 0.00335475 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
StakingSPR
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-05 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) /** * @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; } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/utils/ERC721Holder.sol) /** * @dev Implementation of the {IERC721Receiver} interface. * * Accepts all token transfers. * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}. */ contract ERC721Holder is IERC721Receiver { /** * @dev See {IERC721Receiver-onERC721Received}. * * Always returns `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address, address, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC721Received.selector; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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/contracts/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) /** * @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: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) /** * @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/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) /** * @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/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol) /** * @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: StakingSPR.sol // StakingSPR contract contract StakingSPR is Ownable, ERC721Holder, ReentrancyGuard, Pausable { IERC721 public stakingToken; // Sheepoori SPR NFT IERC20 public rewardToken; // HAN token constructor(address _stakingToken, address _rewardToken) onlyOwner { stakingToken = IERC721(_stakingToken); rewardToken = IERC20(_rewardToken); } struct Staker { uint[] tokenIds; // Stacked NFT tokenID uint totalReward; // The total amount of HAN Token received as reward uint unclaimedRewards; // The accumulated amount of HAN token before "CLAIM" uint amountStaked; // The amount of NFT tokenID staked uint timeOfLastUpdate; // Last updated time by NFT tokenID } uint public constant rewardTokenPerstakingToken = 1157407407407; // Quantity of HAN tokens rewarded per NFT tokenID uint public totalSupply; // Total amount of NFT tokenID staked uint public rewardsDuration = 31536000; // The total amount of HAN token available for reward = rewardTokenPerstakingToken * rewardsDuration mapping(uint => address) public tokenOwner; // Return owner address when NFT tokenID is entered mapping(address => Staker) public stakers; // ------------------ Admin ------------------ // // Pause Staking function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function setRewardsDuration(uint _newDuration) public onlyOwner { rewardsDuration = _newDuration; } // Lookup function for NFT tokenID deposited by mistake (not by staking) function unappliedStakingToken() public view returns (uint) { uint unappliedToken; uint balance = stakingToken.balanceOf(address(this)); unappliedToken = balance - totalSupply; return unappliedToken; } function transferStakingToken(uint _tokenId) public onlyOwner { require(tokenOwner[_tokenId] == address(0), "The owner of NFT tokenID must not exist"); stakingToken.safeTransferFrom(address(this), msg.sender, _tokenId); } function recoverERC20(address _tokenAddress, uint _tokenAmount) external onlyOwner { require(_tokenAddress != address(stakingToken), "Cannot withdraw the staking token"); IERC20(_tokenAddress).transfer(msg.sender, _tokenAmount); emit RecoveredERC20(_tokenAddress, _tokenAmount); } function recoverERC721(address _tokenAddress, uint _tokenId) external onlyOwner { require(_tokenAddress != address(stakingToken), "Cannot withdraw the staking token"); IERC721(_tokenAddress).safeTransferFrom(address(this), msg.sender, _tokenId); emit RecoveredERC721(_tokenAddress, _tokenId); } // ------------------ Transaction Functions ------------------ // // "STAKE" function function stake(uint _tokenId) public nonReentrant whenNotPaused { require(stakingToken.ownerOf(_tokenId) == msg.sender, "user must be the owner of the token"); require(rewardToken.balanceOf(address(this)) > 0, "Reward Token 0"); require(rewardToken.balanceOf(address(this)) - rewardsDuration * (totalSupply * rewardTokenPerstakingToken) > rewardsDuration * rewardTokenPerstakingToken, "Total amount of rewards is too high"); Staker storage staker = stakers[msg.sender]; if(staker.amountStaked == 0) { staker.timeOfLastUpdate = block.timestamp; tokenOwner[_tokenId] = msg.sender; staker.amountStaked += 1; totalSupply += 1; staker.tokenIds.push(_tokenId); stakingToken.safeTransferFrom(msg.sender, address(this), _tokenId); emit Staked(msg.sender, _tokenId); }else { staker.unclaimedRewards += calculateRewards(msg.sender); staker.timeOfLastUpdate = block.timestamp; tokenOwner[_tokenId] = msg.sender; staker.amountStaked += 1; totalSupply += 1; staker.tokenIds.push(_tokenId); stakingToken.safeTransferFrom(msg.sender, address(this), _tokenId); emit Staked(msg.sender, _tokenId); } } // "UNSTAKE" function function unstake(uint _tokenId) public nonReentrant { Staker storage staker = stakers[msg.sender]; require(tokenOwner[_tokenId] == msg.sender,"user must be the owner of the token"); staker.unclaimedRewards += calculateRewards(msg.sender); staker.timeOfLastUpdate = block.timestamp; tokenOwner[_tokenId] = address(0); staker.amountStaked --; totalSupply --; removeByValue(_tokenId, staker.tokenIds); stakingToken.safeTransferFrom(address(this), msg.sender, _tokenId); emit Unstaked(msg.sender, _tokenId); } // "CLAIM" function function claimReward() public nonReentrant { Staker storage staker = stakers[msg.sender]; uint rewards = calculateRewards(msg.sender) + staker.unclaimedRewards; require(rewards > 0,"You have no rewards to claim"); require(block.timestamp - uint(staker.timeOfLastUpdate) != 0, "Too Early"); require(rewards < rewardToken.balanceOf(address(this)), "Not enough tokens"); staker.totalReward += rewards; staker.timeOfLastUpdate = block.timestamp; staker.unclaimedRewards = 0; rewardToken.transfer(msg.sender, rewards); emit RewardPaid(msg.sender, rewards); } // ------------------ View Functions ------------------ // function amountRewards() public view returns (uint) { Staker storage staker = stakers[msg.sender]; uint reward; reward = staker.amountStaked * rewardTokenPerstakingToken; return reward; } function getStakedTokenIds(address _user) public view returns(uint[] memory tokenIds) { return stakers[_user].tokenIds; } // The total amount of HAN Token received as reward function getTotalReward(address _user) public view returns(uint) { return stakers[_user].totalReward; } // The accumulated amount of HAN token before "CLAIM" function getUnclaimedRewards(address _user) public view returns(uint) { return stakers[_user].unclaimedRewards; } // The amount of tokenId staked function getAmountStaked(address _user) public view returns(uint) { return stakers[_user].amountStaked; } // Last updated time by NFT tokenID function getTimeOfLastUpdate(address _user) public view returns(uint) { return stakers[_user].timeOfLastUpdate; } // ------------------ Private Functions ------------------ // // Reward amount check function function calculateRewards(address _user) private view returns (uint) { Staker storage staker = stakers[_user]; uint reward; uint stakedTime = block.timestamp - staker.timeOfLastUpdate; reward = stakedTime * (staker.amountStaked * rewardTokenPerstakingToken); return reward; } function find(uint value, uint[] storage tokenIds) private view returns(uint) { uint i = 0; while (tokenIds[i] != value) { i++; } return i; } function removeByValue(uint value, uint[] storage tokenIds) private{ uint i = find(value, tokenIds); removeByIndex(i, tokenIds); } function removeByIndex(uint i, uint[] storage tokenIds) private{ while (i < tokenIds.length - 1) { tokenIds[i] = tokenIds[i + 1]; i++; } tokenIds.pop(); } // ------------------ Event ------------------ // event Unstaked(address owner, uint tokenId); event Staked(address owner, uint tokenId); event RewardPaid(address indexed user, uint256 reward); event RecoveredERC20(address token, uint256 amount); event RecoveredERC721(address token, uint256 tokenId); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_stakingToken","type":"address"},{"internalType":"address","name":"_rewardToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RecoveredERC20","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"RecoveredERC721","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"amountRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getAmountStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getStakedTokenIds","outputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getTimeOfLastUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getTotalReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUnclaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"recoverERC721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardTokenPerstakingToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDuration","type":"uint256"}],"name":"setRewardsDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakers","outputs":[{"internalType":"uint256","name":"totalReward","type":"uint256"},{"internalType":"uint256","name":"unclaimedRewards","type":"uint256"},{"internalType":"uint256","name":"amountStaked","type":"uint256"},{"internalType":"uint256","name":"timeOfLastUpdate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","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":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferStakingToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unappliedStakingToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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
60806040526301e133806005553480156200001957600080fd5b506040516200314f3803806200314f83398181016040528101906200003f9190620002b8565b6200005f620000536200011b60201b60201c565b6200012360201b60201c565b600180819055506000600260006101000a81548160ff02191690831515021790555062000091620001e760201b60201c565b81600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003bc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001f76200011b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200021d6200027860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000276576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026d906200033b565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620002b281620003a2565b92915050565b60008060408385031215620002cc57600080fd5b6000620002dc85828601620002a1565b9250506020620002ef85828601620002a1565b9150509250929050565b6000620003086020836200035d565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600060208201905081810360008301526200035681620002f9565b9050919050565b600082825260208201905092915050565b60006200037b8262000382565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620003ad816200036e565b8114620003b957600080fd5b50565b612d8380620003cc6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063819d4cc6116100f9578063baee9c9a11610097578063e3d83c9311610071578063e3d83c93146104d0578063f2fde38b146104ee578063f7c618c11461050a578063ff26127d14610528576101c4565b8063baee9c9a1461047a578063cc1a378f14610498578063d0ee1aee146104b4576101c4565b80638da5cb5b116100d35780638da5cb5b146104035780639168ae7214610421578063a694fc3a14610454578063b88a802f14610470576101c4565b8063819d4cc6146103c15780638456cb59146103dd5780638980f11f146103e7576101c4565b80633f4ba83a1161016657806369a69e291161014057806369a69e29146103395780637047bc5214610369578063715018a61461039957806372f702f3146103a3576101c4565b80633f4ba83a146102e15780635104c819146102eb5780635c975abb1461031b576101c4565b80631caaa487116101a25780631caaa487146102475780632e17de78146102775780633438174914610293578063386a9525146102c3576101c4565b806309ee1cc0146101c9578063150b7a02146101f957806318160ddd14610229575b600080fd5b6101e360048036038101906101de9190612073565b610546565b6040516101f0919061297d565b60405180910390f35b610213600480360381019061020e91906120c5565b610592565b604051610220919061278c565b60405180910390f35b6102316105a6565b60405161023e919061297d565b60405180910390f35b610261600480360381019061025c91906121a5565b6105ac565b60405161026e91906126d4565b60405180910390f35b610291600480360381019061028c91906121a5565b6105df565b005b6102ad60048036038101906102a89190612073565b61085f565b6040516102ba919061297d565b60405180910390f35b6102cb6108ab565b6040516102d8919061297d565b60405180910390f35b6102e96108b1565b005b61030560048036038101906103009190612073565b6108c3565b604051610312919061297d565b60405180910390f35b61032361090f565b6040516103309190612771565b60405180910390f35b610353600480360381019061034e9190612073565b610926565b604051610360919061297d565b60405180910390f35b610383600480360381019061037e9190612073565b610972565b604051610390919061274f565b60405180910390f35b6103a1610a0c565b005b6103ab610a20565b6040516103b891906127c2565b60405180910390f35b6103db60048036038101906103d69190612140565b610a46565b005b6103e5610b8b565b005b61040160048036038101906103fc9190612140565b610b9d565b005b61040b610d01565b60405161041891906126d4565b60405180910390f35b61043b60048036038101906104369190612073565b610d2a565b60405161044b9493929190612998565b60405180910390f35b61046e600480360381019061046991906121a5565b610d5a565b005b61047861142a565b005b61048261174b565b60405161048f919061297d565b60405180910390f35b6104b260048036038101906104ad91906121a5565b611815565b005b6104ce60048036038101906104c991906121a5565b611827565b005b6104d8611965565b6040516104e5919061297d565b60405180910390f35b61050860048036038101906105039190612073565b6119cb565b005b610512611a4f565b60405161051f91906127a7565b60405180910390f35b610530611a75565b60405161053d919061297d565b60405180910390f35b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050919050565b600063150b7a0260e01b9050949350505050565b60045481565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105e7611a7f565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c29061283d565b60405180910390fd5b6106d433611acf565b8160020160008282546106e79190612a88565b9250508190555042816004018190555060006006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600301600081548092919061075f90612c37565b91905055506004600081548092919061077790612c37565b91905055506107898282600001611b56565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033856040518463ffffffff1660e01b81526004016107e8939291906126ef565b600060405180830381600087803b15801561080257600080fd5b505af1158015610816573d6000803e3d6000fd5b505050507f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75338360405161084b929190612726565b60405180910390a15061085c611b73565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60055481565b6108b9611b7c565b6108c1611bfa565b565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b6000600260009054906101000a900460ff16905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b6060600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805480602002602001604051908101604052809291908181526020018280548015610a0057602002820191906000526020600020905b8154815260200190600101908083116109ec575b50505050509050919050565b610a14611b7c565b610a1e6000611c5d565b565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a4e611b7c565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad69061295d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b8152600401610b1c939291906126ef565b600060405180830381600087803b158015610b3657600080fd5b505af1158015610b4a573d6000803e3d6000fd5b505050507f57519b6a0997d7d44511836bcee0a36871aa79d445816f6c464abb0cd9d3f3e88282604051610b7f929190612726565b60405180910390a15050565b610b93611b7c565b610b9b611d21565b565b610ba5611b7c565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d9061295d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c71929190612726565b602060405180830381600087803b158015610c8b57600080fd5b505af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc3919061217c565b507f55350610fe57096d8c0ffa30beede987326bccfcb0b4415804164d0dd50ce8b18282604051610cf5929190612726565b60405180910390a15050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528060005260406000206000915090508060010154908060020154908060030154908060040154905084565b610d62611a7f565b610d6a611d84565b3373ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610ddc919061297d565b60206040518083038186803b158015610df457600080fd5b505afa158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c919061209c565b73ffffffffffffffffffffffffffffffffffffffff1614610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e799061283d565b60405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610edf91906126d4565b60206040518083038186803b158015610ef757600080fd5b505afa158015610f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2f91906121ce565b11610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f669061281d565b60405180910390fd5b65010d7adb7d2f600554610f839190612ade565b65010d7adb7d2f600454610f979190612ade565b600554610fa49190612ade565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fff91906126d4565b60206040518083038186803b15801561101757600080fd5b505afa15801561102b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104f91906121ce565b6110599190612b38565b11611099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110909061287d565b60405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160030154141561127457428160040181905550336006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018160030160008282546111599190612a88565b925050819055506001600460008282546111739190612a88565b9250508190555080600001829080600181540180825580915050600190039060005260206000200160009091909190915055600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b8152600401611204939291906126ef565b600060405180830381600087803b15801561121e57600080fd5b505af1158015611232573d6000803e3d6000fd5b505050507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d3383604051611267929190612726565b60405180910390a161141e565b61127d33611acf565b8160020160008282546112909190612a88565b92505081905550428160040181905550336006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018160030160008282546113079190612a88565b925050819055506001600460008282546113219190612a88565b9250508190555080600001829080600181540180825580915050600190039060005260206000200160009091909190915055600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b81526004016113b2939291906126ef565b600060405180830381600087803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d3383604051611415929190612726565b60405180910390a15b50611427611b73565b50565b611432611a7f565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816002015461148533611acf565b61148f9190612a88565b9050600081116114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb906128fd565b60405180910390fd5b60008260040154426114e69190612b38565b1415611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e9061285d565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161158291906126d4565b60206040518083038186803b15801561159a57600080fd5b505afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d291906121ce565b8110611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a9061291d565b60405180910390fd5b808260010160008282546116279190612a88565b9250508190555042826004018190555060008260020181905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161169e929190612726565b602060405180830381600087803b1580156116b857600080fd5b505af11580156116cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f0919061217c565b503373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048682604051611737919061297d565b60405180910390a25050611749611b73565b565b6000806000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117ab91906126d4565b60206040518083038186803b1580156117c357600080fd5b505afa1580156117d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fb91906121ce565b90506004548161180b9190612b38565b9150819250505090565b61181d611b7c565b8060058190555050565b61182f611b7c565b600073ffffffffffffffffffffffffffffffffffffffff166006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c8906128dd565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b8152600401611930939291906126ef565b600060405180830381600087803b15801561194a57600080fd5b505af115801561195e573d6000803e3d6000fd5b5050505050565b600080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600065010d7adb7d2f82600301546119c19190612ade565b9050809250505090565b6119d3611b7c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906127fd565b60405180910390fd5b611a4c81611c5d565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b65010d7adb7d2f81565b60026001541415611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc9061293d565b60405180910390fd5b6002600181905550565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080826004015442611b269190612b38565b905065010d7adb7d2f8360030154611b3e9190612ade565b81611b499190612ade565b9150819350505050919050565b6000611b628383611dce565b9050611b6e8183611e3d565b505050565b60018081905550565b611b84611f51565b73ffffffffffffffffffffffffffffffffffffffff16611ba2610d01565b73ffffffffffffffffffffffffffffffffffffffff1614611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef906128bd565b60405180910390fd5b565b611c02611f59565b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611c46611f51565b604051611c5391906126d4565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611d29611d84565b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d6d611f51565b604051611d7a91906126d4565b60405180910390a1565b611d8c61090f565b15611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc39061289d565b60405180910390fd5b565b600080600090505b83838281548110611e10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015414611e33578080611e2b90612c61565b915050611dd6565b8091505092915050565b5b60018180549050611e4f9190612b38565b821015611f005780600183611e649190612a88565b81548110611e9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154818381548110611edf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508180611ef890612c61565b925050611e3e565b80805480611f37577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600190038181906000526020600020016000905590555050565b600033905090565b611f6161090f565b611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f97906127dd565b60405180910390fd5b565b6000611fb5611fb084612a0e565b6129dd565b905082815260208101848484011115611fcd57600080fd5b611fd8848285612c28565b509392505050565b600081359050611fef81612d08565b92915050565b60008151905061200481612d08565b92915050565b60008151905061201981612d1f565b92915050565b600082601f83011261203057600080fd5b8135612040848260208601611fa2565b91505092915050565b60008135905061205881612d36565b92915050565b60008151905061206d81612d36565b92915050565b60006020828403121561208557600080fd5b600061209384828501611fe0565b91505092915050565b6000602082840312156120ae57600080fd5b60006120bc84828501611ff5565b91505092915050565b600080600080608085870312156120db57600080fd5b60006120e987828801611fe0565b94505060206120fa87828801611fe0565b935050604061210b87828801612049565b925050606085013567ffffffffffffffff81111561212857600080fd5b6121348782880161201f565b91505092959194509250565b6000806040838503121561215357600080fd5b600061216185828601611fe0565b925050602061217285828601612049565b9150509250929050565b60006020828403121561218e57600080fd5b600061219c8482850161200a565b91505092915050565b6000602082840312156121b757600080fd5b60006121c584828501612049565b91505092915050565b6000602082840312156121e057600080fd5b60006121ee8482850161205e565b91505092915050565b600061220383836126b6565b60208301905092915050565b61221881612b6c565b82525050565b600061222982612a4e565b6122338185612a66565b935061223e83612a3e565b8060005b8381101561226f57815161225688826121f7565b975061226183612a59565b925050600181019050612242565b5085935050505092915050565b61228581612b7e565b82525050565b61229481612b8a565b82525050565b6122a381612be0565b82525050565b6122b281612c04565b82525050565b60006122c5601483612a77565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000612305602683612a77565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061236b600e83612a77565b91507f52657761726420546f6b656e20300000000000000000000000000000000000006000830152602082019050919050565b60006123ab602383612a77565b91507f75736572206d75737420626520746865206f776e6572206f662074686520746f60008301527f6b656e00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612411600983612a77565b91507f546f6f204561726c7900000000000000000000000000000000000000000000006000830152602082019050919050565b6000612451602383612a77565b91507f546f74616c20616d6f756e74206f66207265776172647320697320746f6f206860008301527f69676800000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006124b7601083612a77565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b60006124f7602083612a77565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612537602783612a77565b91507f546865206f776e6572206f66204e465420746f6b656e4944206d757374206e6f60008301527f74206578697374000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061259d601c83612a77565b91507f596f752068617665206e6f207265776172647320746f20636c61696d000000006000830152602082019050919050565b60006125dd601183612a77565b91507f4e6f7420656e6f75676820746f6b656e730000000000000000000000000000006000830152602082019050919050565b600061261d601f83612a77565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b600061265d602183612a77565b91507f43616e6e6f7420776974686472617720746865207374616b696e6720746f6b6560008301527f6e000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6126bf81612bd6565b82525050565b6126ce81612bd6565b82525050565b60006020820190506126e9600083018461220f565b92915050565b6000606082019050612704600083018661220f565b612711602083018561220f565b61271e60408301846126c5565b949350505050565b600060408201905061273b600083018561220f565b61274860208301846126c5565b9392505050565b60006020820190508181036000830152612769818461221e565b905092915050565b6000602082019050612786600083018461227c565b92915050565b60006020820190506127a1600083018461228b565b92915050565b60006020820190506127bc600083018461229a565b92915050565b60006020820190506127d760008301846122a9565b92915050565b600060208201905081810360008301526127f6816122b8565b9050919050565b60006020820190508181036000830152612816816122f8565b9050919050565b600060208201905081810360008301526128368161235e565b9050919050565b600060208201905081810360008301526128568161239e565b9050919050565b6000602082019050818103600083015261287681612404565b9050919050565b6000602082019050818103600083015261289681612444565b9050919050565b600060208201905081810360008301526128b6816124aa565b9050919050565b600060208201905081810360008301526128d6816124ea565b9050919050565b600060208201905081810360008301526128f68161252a565b9050919050565b6000602082019050818103600083015261291681612590565b9050919050565b60006020820190508181036000830152612936816125d0565b9050919050565b6000602082019050818103600083015261295681612610565b9050919050565b6000602082019050818103600083015261297681612650565b9050919050565b600060208201905061299260008301846126c5565b92915050565b60006080820190506129ad60008301876126c5565b6129ba60208301866126c5565b6129c760408301856126c5565b6129d460608301846126c5565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715612a0457612a03612cd9565b5b8060405250919050565b600067ffffffffffffffff821115612a2957612a28612cd9565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612a9382612bd6565b9150612a9e83612bd6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ad357612ad2612caa565b5b828201905092915050565b6000612ae982612bd6565b9150612af483612bd6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b2d57612b2c612caa565b5b828202905092915050565b6000612b4382612bd6565b9150612b4e83612bd6565b925082821015612b6157612b60612caa565b5b828203905092915050565b6000612b7782612bb6565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612beb82612bf2565b9050919050565b6000612bfd82612bb6565b9050919050565b6000612c0f82612c16565b9050919050565b6000612c2182612bb6565b9050919050565b82818337600083830152505050565b6000612c4282612bd6565b91506000821415612c5657612c55612caa565b5b600182039050919050565b6000612c6c82612bd6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c9f57612c9e612caa565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d1181612b6c565b8114612d1c57600080fd5b50565b612d2881612b7e565b8114612d3357600080fd5b50565b612d3f81612bd6565b8114612d4a57600080fd5b5056fea2646970667358221220c53a3f804d52ca14e270e67e7960bd14c373a320e0dc7fb45550782fd4644d6764736f6c63430008000033000000000000000000000000cee864b8633b96f5542f25e0b9942bf7557cc5c30000000000000000000000000c90c57aaf95a3a87eadda6ec3974c99d786511f
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063819d4cc6116100f9578063baee9c9a11610097578063e3d83c9311610071578063e3d83c93146104d0578063f2fde38b146104ee578063f7c618c11461050a578063ff26127d14610528576101c4565b8063baee9c9a1461047a578063cc1a378f14610498578063d0ee1aee146104b4576101c4565b80638da5cb5b116100d35780638da5cb5b146104035780639168ae7214610421578063a694fc3a14610454578063b88a802f14610470576101c4565b8063819d4cc6146103c15780638456cb59146103dd5780638980f11f146103e7576101c4565b80633f4ba83a1161016657806369a69e291161014057806369a69e29146103395780637047bc5214610369578063715018a61461039957806372f702f3146103a3576101c4565b80633f4ba83a146102e15780635104c819146102eb5780635c975abb1461031b576101c4565b80631caaa487116101a25780631caaa487146102475780632e17de78146102775780633438174914610293578063386a9525146102c3576101c4565b806309ee1cc0146101c9578063150b7a02146101f957806318160ddd14610229575b600080fd5b6101e360048036038101906101de9190612073565b610546565b6040516101f0919061297d565b60405180910390f35b610213600480360381019061020e91906120c5565b610592565b604051610220919061278c565b60405180910390f35b6102316105a6565b60405161023e919061297d565b60405180910390f35b610261600480360381019061025c91906121a5565b6105ac565b60405161026e91906126d4565b60405180910390f35b610291600480360381019061028c91906121a5565b6105df565b005b6102ad60048036038101906102a89190612073565b61085f565b6040516102ba919061297d565b60405180910390f35b6102cb6108ab565b6040516102d8919061297d565b60405180910390f35b6102e96108b1565b005b61030560048036038101906103009190612073565b6108c3565b604051610312919061297d565b60405180910390f35b61032361090f565b6040516103309190612771565b60405180910390f35b610353600480360381019061034e9190612073565b610926565b604051610360919061297d565b60405180910390f35b610383600480360381019061037e9190612073565b610972565b604051610390919061274f565b60405180910390f35b6103a1610a0c565b005b6103ab610a20565b6040516103b891906127c2565b60405180910390f35b6103db60048036038101906103d69190612140565b610a46565b005b6103e5610b8b565b005b61040160048036038101906103fc9190612140565b610b9d565b005b61040b610d01565b60405161041891906126d4565b60405180910390f35b61043b60048036038101906104369190612073565b610d2a565b60405161044b9493929190612998565b60405180910390f35b61046e600480360381019061046991906121a5565b610d5a565b005b61047861142a565b005b61048261174b565b60405161048f919061297d565b60405180910390f35b6104b260048036038101906104ad91906121a5565b611815565b005b6104ce60048036038101906104c991906121a5565b611827565b005b6104d8611965565b6040516104e5919061297d565b60405180910390f35b61050860048036038101906105039190612073565b6119cb565b005b610512611a4f565b60405161051f91906127a7565b60405180910390f35b610530611a75565b60405161053d919061297d565b60405180910390f35b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050919050565b600063150b7a0260e01b9050949350505050565b60045481565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105e7611a7f565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c29061283d565b60405180910390fd5b6106d433611acf565b8160020160008282546106e79190612a88565b9250508190555042816004018190555060006006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600301600081548092919061075f90612c37565b91905055506004600081548092919061077790612c37565b91905055506107898282600001611b56565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033856040518463ffffffff1660e01b81526004016107e8939291906126ef565b600060405180830381600087803b15801561080257600080fd5b505af1158015610816573d6000803e3d6000fd5b505050507f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75338360405161084b929190612726565b60405180910390a15061085c611b73565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60055481565b6108b9611b7c565b6108c1611bfa565b565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b6000600260009054906101000a900460ff16905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b6060600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805480602002602001604051908101604052809291908181526020018280548015610a0057602002820191906000526020600020905b8154815260200190600101908083116109ec575b50505050509050919050565b610a14611b7c565b610a1e6000611c5d565b565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a4e611b7c565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad69061295d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b8152600401610b1c939291906126ef565b600060405180830381600087803b158015610b3657600080fd5b505af1158015610b4a573d6000803e3d6000fd5b505050507f57519b6a0997d7d44511836bcee0a36871aa79d445816f6c464abb0cd9d3f3e88282604051610b7f929190612726565b60405180910390a15050565b610b93611b7c565b610b9b611d21565b565b610ba5611b7c565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d9061295d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c71929190612726565b602060405180830381600087803b158015610c8b57600080fd5b505af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc3919061217c565b507f55350610fe57096d8c0ffa30beede987326bccfcb0b4415804164d0dd50ce8b18282604051610cf5929190612726565b60405180910390a15050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528060005260406000206000915090508060010154908060020154908060030154908060040154905084565b610d62611a7f565b610d6a611d84565b3373ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610ddc919061297d565b60206040518083038186803b158015610df457600080fd5b505afa158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c919061209c565b73ffffffffffffffffffffffffffffffffffffffff1614610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e799061283d565b60405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610edf91906126d4565b60206040518083038186803b158015610ef757600080fd5b505afa158015610f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2f91906121ce565b11610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f669061281d565b60405180910390fd5b65010d7adb7d2f600554610f839190612ade565b65010d7adb7d2f600454610f979190612ade565b600554610fa49190612ade565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fff91906126d4565b60206040518083038186803b15801561101757600080fd5b505afa15801561102b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104f91906121ce565b6110599190612b38565b11611099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110909061287d565b60405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160030154141561127457428160040181905550336006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018160030160008282546111599190612a88565b925050819055506001600460008282546111739190612a88565b9250508190555080600001829080600181540180825580915050600190039060005260206000200160009091909190915055600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b8152600401611204939291906126ef565b600060405180830381600087803b15801561121e57600080fd5b505af1158015611232573d6000803e3d6000fd5b505050507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d3383604051611267929190612726565b60405180910390a161141e565b61127d33611acf565b8160020160008282546112909190612a88565b92505081905550428160040181905550336006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018160030160008282546113079190612a88565b925050819055506001600460008282546113219190612a88565b9250508190555080600001829080600181540180825580915050600190039060005260206000200160009091909190915055600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b81526004016113b2939291906126ef565b600060405180830381600087803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d3383604051611415929190612726565b60405180910390a15b50611427611b73565b50565b611432611a7f565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816002015461148533611acf565b61148f9190612a88565b9050600081116114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb906128fd565b60405180910390fd5b60008260040154426114e69190612b38565b1415611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e9061285d565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161158291906126d4565b60206040518083038186803b15801561159a57600080fd5b505afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d291906121ce565b8110611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a9061291d565b60405180910390fd5b808260010160008282546116279190612a88565b9250508190555042826004018190555060008260020181905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161169e929190612726565b602060405180830381600087803b1580156116b857600080fd5b505af11580156116cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f0919061217c565b503373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048682604051611737919061297d565b60405180910390a25050611749611b73565b565b6000806000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117ab91906126d4565b60206040518083038186803b1580156117c357600080fd5b505afa1580156117d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fb91906121ce565b90506004548161180b9190612b38565b9150819250505090565b61181d611b7c565b8060058190555050565b61182f611b7c565b600073ffffffffffffffffffffffffffffffffffffffff166006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c8906128dd565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b8152600401611930939291906126ef565b600060405180830381600087803b15801561194a57600080fd5b505af115801561195e573d6000803e3d6000fd5b5050505050565b600080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600065010d7adb7d2f82600301546119c19190612ade565b9050809250505090565b6119d3611b7c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906127fd565b60405180910390fd5b611a4c81611c5d565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b65010d7adb7d2f81565b60026001541415611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc9061293d565b60405180910390fd5b6002600181905550565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080826004015442611b269190612b38565b905065010d7adb7d2f8360030154611b3e9190612ade565b81611b499190612ade565b9150819350505050919050565b6000611b628383611dce565b9050611b6e8183611e3d565b505050565b60018081905550565b611b84611f51565b73ffffffffffffffffffffffffffffffffffffffff16611ba2610d01565b73ffffffffffffffffffffffffffffffffffffffff1614611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef906128bd565b60405180910390fd5b565b611c02611f59565b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611c46611f51565b604051611c5391906126d4565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611d29611d84565b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d6d611f51565b604051611d7a91906126d4565b60405180910390a1565b611d8c61090f565b15611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc39061289d565b60405180910390fd5b565b600080600090505b83838281548110611e10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015414611e33578080611e2b90612c61565b915050611dd6565b8091505092915050565b5b60018180549050611e4f9190612b38565b821015611f005780600183611e649190612a88565b81548110611e9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154818381548110611edf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508180611ef890612c61565b925050611e3e565b80805480611f37577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600190038181906000526020600020016000905590555050565b600033905090565b611f6161090f565b611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f97906127dd565b60405180910390fd5b565b6000611fb5611fb084612a0e565b6129dd565b905082815260208101848484011115611fcd57600080fd5b611fd8848285612c28565b509392505050565b600081359050611fef81612d08565b92915050565b60008151905061200481612d08565b92915050565b60008151905061201981612d1f565b92915050565b600082601f83011261203057600080fd5b8135612040848260208601611fa2565b91505092915050565b60008135905061205881612d36565b92915050565b60008151905061206d81612d36565b92915050565b60006020828403121561208557600080fd5b600061209384828501611fe0565b91505092915050565b6000602082840312156120ae57600080fd5b60006120bc84828501611ff5565b91505092915050565b600080600080608085870312156120db57600080fd5b60006120e987828801611fe0565b94505060206120fa87828801611fe0565b935050604061210b87828801612049565b925050606085013567ffffffffffffffff81111561212857600080fd5b6121348782880161201f565b91505092959194509250565b6000806040838503121561215357600080fd5b600061216185828601611fe0565b925050602061217285828601612049565b9150509250929050565b60006020828403121561218e57600080fd5b600061219c8482850161200a565b91505092915050565b6000602082840312156121b757600080fd5b60006121c584828501612049565b91505092915050565b6000602082840312156121e057600080fd5b60006121ee8482850161205e565b91505092915050565b600061220383836126b6565b60208301905092915050565b61221881612b6c565b82525050565b600061222982612a4e565b6122338185612a66565b935061223e83612a3e565b8060005b8381101561226f57815161225688826121f7565b975061226183612a59565b925050600181019050612242565b5085935050505092915050565b61228581612b7e565b82525050565b61229481612b8a565b82525050565b6122a381612be0565b82525050565b6122b281612c04565b82525050565b60006122c5601483612a77565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000612305602683612a77565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061236b600e83612a77565b91507f52657761726420546f6b656e20300000000000000000000000000000000000006000830152602082019050919050565b60006123ab602383612a77565b91507f75736572206d75737420626520746865206f776e6572206f662074686520746f60008301527f6b656e00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612411600983612a77565b91507f546f6f204561726c7900000000000000000000000000000000000000000000006000830152602082019050919050565b6000612451602383612a77565b91507f546f74616c20616d6f756e74206f66207265776172647320697320746f6f206860008301527f69676800000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006124b7601083612a77565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b60006124f7602083612a77565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612537602783612a77565b91507f546865206f776e6572206f66204e465420746f6b656e4944206d757374206e6f60008301527f74206578697374000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061259d601c83612a77565b91507f596f752068617665206e6f207265776172647320746f20636c61696d000000006000830152602082019050919050565b60006125dd601183612a77565b91507f4e6f7420656e6f75676820746f6b656e730000000000000000000000000000006000830152602082019050919050565b600061261d601f83612a77565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b600061265d602183612a77565b91507f43616e6e6f7420776974686472617720746865207374616b696e6720746f6b6560008301527f6e000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6126bf81612bd6565b82525050565b6126ce81612bd6565b82525050565b60006020820190506126e9600083018461220f565b92915050565b6000606082019050612704600083018661220f565b612711602083018561220f565b61271e60408301846126c5565b949350505050565b600060408201905061273b600083018561220f565b61274860208301846126c5565b9392505050565b60006020820190508181036000830152612769818461221e565b905092915050565b6000602082019050612786600083018461227c565b92915050565b60006020820190506127a1600083018461228b565b92915050565b60006020820190506127bc600083018461229a565b92915050565b60006020820190506127d760008301846122a9565b92915050565b600060208201905081810360008301526127f6816122b8565b9050919050565b60006020820190508181036000830152612816816122f8565b9050919050565b600060208201905081810360008301526128368161235e565b9050919050565b600060208201905081810360008301526128568161239e565b9050919050565b6000602082019050818103600083015261287681612404565b9050919050565b6000602082019050818103600083015261289681612444565b9050919050565b600060208201905081810360008301526128b6816124aa565b9050919050565b600060208201905081810360008301526128d6816124ea565b9050919050565b600060208201905081810360008301526128f68161252a565b9050919050565b6000602082019050818103600083015261291681612590565b9050919050565b60006020820190508181036000830152612936816125d0565b9050919050565b6000602082019050818103600083015261295681612610565b9050919050565b6000602082019050818103600083015261297681612650565b9050919050565b600060208201905061299260008301846126c5565b92915050565b60006080820190506129ad60008301876126c5565b6129ba60208301866126c5565b6129c760408301856126c5565b6129d460608301846126c5565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715612a0457612a03612cd9565b5b8060405250919050565b600067ffffffffffffffff821115612a2957612a28612cd9565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612a9382612bd6565b9150612a9e83612bd6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ad357612ad2612caa565b5b828201905092915050565b6000612ae982612bd6565b9150612af483612bd6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b2d57612b2c612caa565b5b828202905092915050565b6000612b4382612bd6565b9150612b4e83612bd6565b925082821015612b6157612b60612caa565b5b828203905092915050565b6000612b7782612bb6565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612beb82612bf2565b9050919050565b6000612bfd82612bb6565b9050919050565b6000612c0f82612c16565b9050919050565b6000612c2182612bb6565b9050919050565b82818337600083830152505050565b6000612c4282612bd6565b91506000821415612c5657612c55612caa565b5b600182039050919050565b6000612c6c82612bd6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c9f57612c9e612caa565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d1181612b6c565b8114612d1c57600080fd5b50565b612d2881612b7e565b8114612d3357600080fd5b50565b612d3f81612bd6565b8114612d4a57600080fd5b5056fea2646970667358221220c53a3f804d52ca14e270e67e7960bd14c373a320e0dc7fb45550782fd4644d6764736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cee864b8633b96f5542f25e0b9942bf7557cc5c30000000000000000000000000c90c57aaf95a3a87eadda6ec3974c99d786511f
-----Decoded View---------------
Arg [0] : _stakingToken (address): 0xcEe864b8633b96f5542F25e0B9942Bf7557cc5c3
Arg [1] : _rewardToken (address): 0x0c90C57aaf95A3A87eadda6ec3974c99D786511F
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cee864b8633b96f5542f25e0b9942bf7557cc5c3
Arg [1] : 0000000000000000000000000c90c57aaf95a3a87eadda6ec3974c99d786511f
Deployed Bytecode Sourcemap
19820:8102:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26428:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4585:207;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20685:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20908:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24113:600;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25904:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20756:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21205:65;;;:::i;:::-;;26260:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7305:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26088:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25704:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10139:103;;;:::i;:::-;;19901:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22299:326;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21138:61;;;:::i;:::-;;21979:312;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9491:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21009:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;22731:1347;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24746:648;;;:::i;:::-;;21477:242;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21278:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21727:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25468:228;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10397:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19956:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20563:63;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26428:127;26492:4;26516:7;:14;26524:5;26516:14;;;;;;;;;;;;;;;:31;;;26509:38;;26428:127;;;:::o;4585:207::-;4728:6;4754:30;;;4747:37;;4585:207;;;;;;:::o;20685:23::-;;;;:::o;20908:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;24113:600::-;2376:21;:19;:21::i;:::-;24176::::1;24200:7;:19;24208:10;24200:19;;;;;;;;;;;;;;;24176:43;;24262:10;24238:34;;:10;:20;24249:8;24238:20;;;;;;;;;;;;;;;;;;;;;:34;;;24230:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;24349:28;24366:10;24349:16;:28::i;:::-;24322:6;:23;;;:55;;;;;;;:::i;:::-;;;;;;;;24414:15;24388:6;:23;;:41;;;;24471:1;24440:10;:20;24451:8;24440:20;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24484:6;:19;;;:22;;;;;;;;;:::i;:::-;;;;;;24517:11;;:14;;;;;;;;;:::i;:::-;;;;;;24542:40;24556:8;24566:6;:15;;24542:13;:40::i;:::-;24593:12;;;;;;;;;;;:29;;;24631:4;24638:10;24650:8;24593:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24675:30;24684:10;24696:8;24675:30;;;;;;;:::i;:::-;;;;;;;;2408:1;2420:20:::0;:18;:20::i;:::-;24113:600;:::o;25904:117::-;25963:4;25987:7;:14;25995:5;25987:14;;;;;;;;;;;;;;;:26;;;25980:33;;25904:117;;;:::o;20756:38::-;;;;:::o;21205:65::-;9377:13;:11;:13::i;:::-;21252:10:::1;:8;:10::i;:::-;21205:65::o:0;26260:119::-;26320:4;26344:7;:14;26352:5;26344:14;;;;;;;;;;;;;;;:27;;;26337:34;;26260:119;;;:::o;7305:86::-;7352:4;7376:7;;;;;;;;;;;7369:14;;7305:86;:::o;26088:127::-;26152:4;26176:7;:14;26184:5;26176:14;;;;;;;;;;;;;;;:31;;;26169:38;;26088:127;;;:::o;25704:135::-;25766:22;25808:7;:14;25816:5;25808:14;;;;;;;;;;;;;;;:23;;25801:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25704:135;;;:::o;10139:103::-;9377:13;:11;:13::i;:::-;10204:30:::1;10231:1;10204:18;:30::i;:::-;10139:103::o:0;19901:27::-;;;;;;;;;;;;;:::o;22299:326::-;9377:13;:11;:13::i;:::-;22423:12:::1;;;;;;;;;;;22398:38;;:13;:38;;;;22390:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;22493:13;22485:39;;;22533:4;22540:10;22552:8;22485:76;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22577:40;22593:13;22608:8;22577:40;;;;;;;:::i;:::-;;;;;;;;22299:326:::0;;:::o;21138:61::-;9377:13;:11;:13::i;:::-;21183:8:::1;:6;:8::i;:::-;21138:61::o:0;21979:312::-;9377:13;:11;:13::i;:::-;22106:12:::1;;;;;;;;;;;22081:38;;:13;:38;;;;22073:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;22175:13;22168:30;;;22199:10;22211:12;22168:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22240:43;22255:13;22270:12;22240:43;;;;;;;:::i;:::-;;;;;;;;21979:312:::0;;:::o;9491:87::-;9537:7;9564:6;;;;;;;;;;;9557:13;;9491:87;:::o;21009:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22731:1347::-;2376:21;:19;:21::i;:::-;6910:19:::1;:17;:19::i;:::-;22848:10:::2;22814:44;;:12;;;;;;;;;;;:20;;;22835:8;22814:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;22806:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;22956:1;22917:11;;;;;;;;;;;:21;;;22947:4;22917:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;22909:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20613:13;23097:15;;:44;;;;:::i;:::-;20613:13;23053:11;;:40;;;;:::i;:::-;23034:15;;:60;;;;:::i;:::-;22995:11;;;;;;;;;;;:21;;;23025:4;22995:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:99;;;;:::i;:::-;:146;22987:195;;;;;;;;;;;;:::i;:::-;;;;;;;;;23193:21;23217:7;:19;23225:10;23217:19;;;;;;;;;;;;;;;23193:43;;23273:1;23250:6;:19;;;:24;23247:824;;;23317:15;23291:6;:23;;:41;;;;23370:10;23347;:20;23358:8;23347:20;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23418:1;23395:6;:19;;;:24;;;;;;;:::i;:::-;;;;;;;;23449:1;23434:11;;:16;;;;;;;:::i;:::-;;;;;;;;23465:6;:15;;23486:8;23465:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23510:12;;;;;;;;;;;:29;;;23540:10;23560:4;23567:8;23510:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;23596:28;23603:10;23615:8;23596:28;;;;;;;:::i;:::-;;;;;;;;23247:824;;;23683:28;23700:10;23683:16;:28::i;:::-;23656:6;:23;;;:55;;;;;;;:::i;:::-;;;;;;;;23752:15;23726:6;:23;;:41;;;;23805:10;23782;:20;23793:8;23782:20;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23853:1;23830:6;:19;;;:24;;;;;;;:::i;:::-;;;;;;;;23884:1;23869:11;;:16;;;;;;;:::i;:::-;;;;;;;;23900:6;:15;;23921:8;23900:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23945:12;;;;;;;;;;;:29;;;23975:10;23995:4;24002:8;23945:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;24031:28;24038:10;24050:8;24031:28;;;;;;;:::i;:::-;;;;;;;;23247:824;6940:1;2420:20:::0;:18;:20::i;:::-;22731:1347;:::o;24746:648::-;2376:21;:19;:21::i;:::-;24800::::1;24824:7;:19;24832:10;24824:19;;;;;;;;;;;;;;;24800:43;;24854:12;24900:6;:23;;;24869:28;24886:10;24869:16;:28::i;:::-;:54;;;;:::i;:::-;24854:69;;24952:1;24942:7;:11;24934:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25055:1;25027:6;:23;;;25004:15;:47;;;;:::i;:::-;:52;;24996:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25099:11;;;;;;;;;;;:21;;;25129:4;25099:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25089:7;:46;25081:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25190:7;25168:6;:18;;;:29;;;;;;;:::i;:::-;;;;;;;;25234:15;25208:6;:23;;:41;;;;25286:1;25260:6;:23;;:27;;;;25298:11;;;;;;;;;;;:20;;;25319:10;25331:7;25298:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25366:10;25355:31;;;25378:7;25355:31;;;;;;:::i;:::-;;;;;;;;2408:1;;2420:20:::0;:18;:20::i;:::-;24746:648::o;21477:242::-;21531:4;21548:19;21578:12;21593;;;;;;;;;;;:22;;;21624:4;21593:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21578:52;;21668:11;;21658:7;:21;;;;:::i;:::-;21641:38;;21697:14;21690:21;;;;21477:242;:::o;21278:113::-;9377:13;:11;:13::i;:::-;21371:12:::1;21353:15;:30;;;;21278:113:::0;:::o;21727:244::-;9377:13;:11;:13::i;:::-;21840:1:::1;21808:34;;:10;:20;21819:8;21808:20;;;;;;;;;;;;;;;;;;;;;:34;;;21800:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;21897:12;;;;;;;;;;;:29;;;21935:4;21942:10;21954:8;21897:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21727:244:::0;:::o;25468:228::-;25514:4;25531:21;25555:7;:19;25563:10;25555:19;;;;;;;;;;;;;;;25531:43;;25585:11;20613:13;25616:6;:19;;;:48;;;;:::i;:::-;25607:57;;25682:6;25675:13;;;;25468:228;:::o;10397:201::-;9377:13;:11;:13::i;:::-;10506:1:::1;10486:22;;:8;:22;;;;10478:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10562:28;10581:8;10562:18;:28::i;:::-;10397:201:::0;:::o;19956:25::-;;;;;;;;;;;;;:::o;20563:63::-;20613:13;20563:63;:::o;2456:293::-;1858:1;2590:7;;:19;;2582:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1858:1;2723:7;:18;;;;2456:293::o;26673:325::-;26736:4;26753:21;26777:7;:14;26785:5;26777:14;;;;;;;;;;;;;;;26753:38;;26802:11;26824:15;26860:6;:23;;;26842:15;:41;;;;:::i;:::-;26824:59;;20613:13;26917:6;:19;;;:48;;;;:::i;:::-;26903:10;:63;;;;:::i;:::-;26894:72;;26984:6;26977:13;;;;;26673:325;;;:::o;27210:153::-;27288:6;27297:21;27302:5;27309:8;27297:4;:21::i;:::-;27288:30;;27329:26;27343:1;27346:8;27329:13;:26::i;:::-;27210:153;;;:::o;2757:213::-;1814:1;2940:7;:22;;;;2757:213::o;9656:132::-;9731:12;:10;:12::i;:::-;9720:23;;:7;:5;:7::i;:::-;:23;;;9712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9656:132::o;8160:120::-;7169:16;:14;:16::i;:::-;8229:5:::1;8219:7;;:15;;;;;;;;;;;;;;;;;;8250:22;8259:12;:10;:12::i;:::-;8250:22;;;;;;:::i;:::-;;;;;;;;8160:120::o:0;10758:191::-;10832:16;10851:6;;;;;;;;;;;10832:25;;10877:8;10868:6;;:17;;;;;;;;;;;;;;;;;;10932:8;10901:40;;10922:8;10901:40;;;;;;;;;;;;10758:191;;:::o;7901:118::-;6910:19;:17;:19::i;:::-;7971:4:::1;7961:7;;:14;;;;;;;;;;;;;;;;;;7991:20;7998:12;:10;:12::i;:::-;7991:20;;;;;;:::i;:::-;;;;;;;;7901:118::o:0;7464:108::-;7535:8;:6;:8::i;:::-;7534:9;7526:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7464:108::o;27006:196::-;27078:4;27096:6;27105:1;27096:10;;27117:59;27139:5;27124:8;27133:1;27124:11;;;;;;;;;;;;;;;;;;;;;;;;:20;27117:59;;27161:3;;;;;:::i;:::-;;;;27117:59;;;27193:1;27186:8;;;27006:196;;;;:::o;27371:212::-;27445:106;27474:1;27456:8;:15;;;;:19;;;;:::i;:::-;27452:1;:23;27445:106;;;27506:8;27519:1;27515;:5;;;;:::i;:::-;27506:15;;;;;;;;;;;;;;;;;;;;;;;;27492:8;27501:1;27492:11;;;;;;;;;;;;;;;;;;;;;;;:29;;;;27536:3;;;;;:::i;:::-;;;;27445:106;;;27561:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27371:212;;:::o;5449:98::-;5502:7;5529:10;5522:17;;5449:98;:::o;7649:108::-;7716:8;:6;:8::i;:::-;7708:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7649:108::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;500:143::-;;588:6;582:13;573:22;;604:33;631:5;604:33;:::i;:::-;563:80;;;;:::o;649:137::-;;734:6;728:13;719:22;;750:30;774:5;750:30;:::i;:::-;709:77;;;;:::o;805:271::-;;909:3;902:4;894:6;890:17;886:27;876:2;;927:1;924;917:12;876:2;967:6;954:20;992:78;1066:3;1058:6;1051:4;1043:6;1039:17;992:78;:::i;:::-;983:87;;866:210;;;;;:::o;1082:139::-;;1166:6;1153:20;1144:29;;1182:33;1209:5;1182:33;:::i;:::-;1134:87;;;;:::o;1227:143::-;;1315:6;1309:13;1300:22;;1331:33;1358:5;1331:33;:::i;:::-;1290:80;;;;:::o;1376:262::-;;1484:2;1472:9;1463:7;1459:23;1455:32;1452:2;;;1500:1;1497;1490:12;1452:2;1543:1;1568:53;1613:7;1604:6;1593:9;1589:22;1568:53;:::i;:::-;1558:63;;1514:117;1442:196;;;;:::o;1644:284::-;;1763:2;1751:9;1742:7;1738:23;1734:32;1731:2;;;1779:1;1776;1769:12;1731:2;1822:1;1847:64;1903:7;1894:6;1883:9;1879:22;1847:64;:::i;:::-;1837:74;;1793:128;1721:207;;;;:::o;1934:809::-;;;;;2102:3;2090:9;2081:7;2077:23;2073:33;2070:2;;;2119:1;2116;2109:12;2070:2;2162:1;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2133:117;2289:2;2315:53;2360:7;2351:6;2340:9;2336:22;2315:53;:::i;:::-;2305:63;;2260:118;2417:2;2443:53;2488:7;2479:6;2468:9;2464:22;2443:53;:::i;:::-;2433:63;;2388:118;2573:2;2562:9;2558:18;2545:32;2604:18;2596:6;2593:30;2590:2;;;2636:1;2633;2626:12;2590:2;2664:62;2718:7;2709:6;2698:9;2694:22;2664:62;:::i;:::-;2654:72;;2516:220;2060:683;;;;;;;:::o;2749:407::-;;;2874:2;2862:9;2853:7;2849:23;2845:32;2842:2;;;2890:1;2887;2880:12;2842:2;2933:1;2958:53;3003:7;2994:6;2983:9;2979:22;2958:53;:::i;:::-;2948:63;;2904:117;3060:2;3086:53;3131:7;3122:6;3111:9;3107:22;3086:53;:::i;:::-;3076:63;;3031:118;2832:324;;;;;:::o;3162:278::-;;3278:2;3266:9;3257:7;3253:23;3249:32;3246:2;;;3294:1;3291;3284:12;3246:2;3337:1;3362:61;3415:7;3406:6;3395:9;3391:22;3362:61;:::i;:::-;3352:71;;3308:125;3236:204;;;;:::o;3446:262::-;;3554:2;3542:9;3533:7;3529:23;3525:32;3522:2;;;3570:1;3567;3560:12;3522:2;3613:1;3638:53;3683:7;3674:6;3663:9;3659:22;3638:53;:::i;:::-;3628:63;;3584:117;3512:196;;;;:::o;3714:284::-;;3833:2;3821:9;3812:7;3808:23;3804:32;3801:2;;;3849:1;3846;3839:12;3801:2;3892:1;3917:64;3973:7;3964:6;3953:9;3949:22;3917:64;:::i;:::-;3907:74;;3863:128;3791:207;;;;:::o;4004:179::-;;4094:46;4136:3;4128:6;4094:46;:::i;:::-;4172:4;4167:3;4163:14;4149:28;;4084:99;;;;:::o;4189:118::-;4276:24;4294:5;4276:24;:::i;:::-;4271:3;4264:37;4254:53;;:::o;4343:732::-;;4491:54;4539:5;4491:54;:::i;:::-;4561:86;4640:6;4635:3;4561:86;:::i;:::-;4554:93;;4671:56;4721:5;4671:56;:::i;:::-;4750:7;4781:1;4766:284;4791:6;4788:1;4785:13;4766:284;;;4867:6;4861:13;4894:63;4953:3;4938:13;4894:63;:::i;:::-;4887:70;;4980:60;5033:6;4980:60;:::i;:::-;4970:70;;4826:224;4813:1;4810;4806:9;4801:14;;4766:284;;;4770:14;5066:3;5059:10;;4467:608;;;;;;;:::o;5081:109::-;5162:21;5177:5;5162:21;:::i;:::-;5157:3;5150:34;5140:50;;:::o;5196:115::-;5281:23;5298:5;5281:23;:::i;:::-;5276:3;5269:36;5259:52;;:::o;5317:159::-;5418:51;5463:5;5418:51;:::i;:::-;5413:3;5406:64;5396:80;;:::o;5482:161::-;5584:52;5630:5;5584:52;:::i;:::-;5579:3;5572:65;5562:81;;:::o;5649:318::-;;5812:67;5876:2;5871:3;5812:67;:::i;:::-;5805:74;;5909:22;5905:1;5900:3;5896:11;5889:43;5958:2;5953:3;5949:12;5942:19;;5795:172;;;:::o;5973:370::-;;6136:67;6200:2;6195:3;6136:67;:::i;:::-;6129:74;;6233:34;6229:1;6224:3;6220:11;6213:55;6299:8;6294:2;6289:3;6285:12;6278:30;6334:2;6329:3;6325:12;6318:19;;6119:224;;;:::o;6349:312::-;;6512:67;6576:2;6571:3;6512:67;:::i;:::-;6505:74;;6609:16;6605:1;6600:3;6596:11;6589:37;6652:2;6647:3;6643:12;6636:19;;6495:166;;;:::o;6667:367::-;;6830:67;6894:2;6889:3;6830:67;:::i;:::-;6823:74;;6927:34;6923:1;6918:3;6914:11;6907:55;6993:5;6988:2;6983:3;6979:12;6972:27;7025:2;7020:3;7016:12;7009:19;;6813:221;;;:::o;7040:306::-;;7203:66;7267:1;7262:3;7203:66;:::i;:::-;7196:73;;7299:11;7295:1;7290:3;7286:11;7279:32;7337:2;7332:3;7328:12;7321:19;;7186:160;;;:::o;7352:367::-;;7515:67;7579:2;7574:3;7515:67;:::i;:::-;7508:74;;7612:34;7608:1;7603:3;7599:11;7592:55;7678:5;7673:2;7668:3;7664:12;7657:27;7710:2;7705:3;7701:12;7694:19;;7498:221;;;:::o;7725:314::-;;7888:67;7952:2;7947:3;7888:67;:::i;:::-;7881:74;;7985:18;7981:1;7976:3;7972:11;7965:39;8030:2;8025:3;8021:12;8014:19;;7871:168;;;:::o;8045:330::-;;8208:67;8272:2;8267:3;8208:67;:::i;:::-;8201:74;;8305:34;8301:1;8296:3;8292:11;8285:55;8366:2;8361:3;8357:12;8350:19;;8191:184;;;:::o;8381:371::-;;8544:67;8608:2;8603:3;8544:67;:::i;:::-;8537:74;;8641:34;8637:1;8632:3;8628:11;8621:55;8707:9;8702:2;8697:3;8693:12;8686:31;8743:2;8738:3;8734:12;8727:19;;8527:225;;;:::o;8758:326::-;;8921:67;8985:2;8980:3;8921:67;:::i;:::-;8914:74;;9018:30;9014:1;9009:3;9005:11;8998:51;9075:2;9070:3;9066:12;9059:19;;8904:180;;;:::o;9090:315::-;;9253:67;9317:2;9312:3;9253:67;:::i;:::-;9246:74;;9350:19;9346:1;9341:3;9337:11;9330:40;9396:2;9391:3;9387:12;9380:19;;9236:169;;;:::o;9411:329::-;;9574:67;9638:2;9633:3;9574:67;:::i;:::-;9567:74;;9671:33;9667:1;9662:3;9658:11;9651:54;9731:2;9726:3;9722:12;9715:19;;9557:183;;;:::o;9746:365::-;;9909:67;9973:2;9968:3;9909:67;:::i;:::-;9902:74;;10006:34;10002:1;9997:3;9993:11;9986:55;10072:3;10067:2;10062:3;10058:12;10051:25;10102:2;10097:3;10093:12;10086:19;;9892:219;;;:::o;10117:108::-;10194:24;10212:5;10194:24;:::i;:::-;10189:3;10182:37;10172:53;;:::o;10231:118::-;10318:24;10336:5;10318:24;:::i;:::-;10313:3;10306:37;10296:53;;:::o;10355:222::-;;10486:2;10475:9;10471:18;10463:26;;10499:71;10567:1;10556:9;10552:17;10543:6;10499:71;:::i;:::-;10453:124;;;;:::o;10583:442::-;;10770:2;10759:9;10755:18;10747:26;;10783:71;10851:1;10840:9;10836:17;10827:6;10783:71;:::i;:::-;10864:72;10932:2;10921:9;10917:18;10908:6;10864:72;:::i;:::-;10946;11014:2;11003:9;10999:18;10990:6;10946:72;:::i;:::-;10737:288;;;;;;:::o;11031:332::-;;11190:2;11179:9;11175:18;11167:26;;11203:71;11271:1;11260:9;11256:17;11247:6;11203:71;:::i;:::-;11284:72;11352:2;11341:9;11337:18;11328:6;11284:72;:::i;:::-;11157:206;;;;;:::o;11369:373::-;;11550:2;11539:9;11535:18;11527:26;;11599:9;11593:4;11589:20;11585:1;11574:9;11570:17;11563:47;11627:108;11730:4;11721:6;11627:108;:::i;:::-;11619:116;;11517:225;;;;:::o;11748:210::-;;11873:2;11862:9;11858:18;11850:26;;11886:65;11948:1;11937:9;11933:17;11924:6;11886:65;:::i;:::-;11840:118;;;;:::o;11964:218::-;;12093:2;12082:9;12078:18;12070:26;;12106:69;12172:1;12161:9;12157:17;12148:6;12106:69;:::i;:::-;12060:122;;;;:::o;12188:250::-;;12333:2;12322:9;12318:18;12310:26;;12346:85;12428:1;12417:9;12413:17;12404:6;12346:85;:::i;:::-;12300:138;;;;:::o;12444:252::-;;12590:2;12579:9;12575:18;12567:26;;12603:86;12686:1;12675:9;12671:17;12662:6;12603:86;:::i;:::-;12557:139;;;;:::o;12702:419::-;;12906:2;12895:9;12891:18;12883:26;;12955:9;12949:4;12945:20;12941:1;12930:9;12926:17;12919:47;12983:131;13109:4;12983:131;:::i;:::-;12975:139;;12873:248;;;:::o;13127:419::-;;13331:2;13320:9;13316:18;13308:26;;13380:9;13374:4;13370:20;13366:1;13355:9;13351:17;13344:47;13408:131;13534:4;13408:131;:::i;:::-;13400:139;;13298:248;;;:::o;13552:419::-;;13756:2;13745:9;13741:18;13733:26;;13805:9;13799:4;13795:20;13791:1;13780:9;13776:17;13769:47;13833:131;13959:4;13833:131;:::i;:::-;13825:139;;13723:248;;;:::o;13977:419::-;;14181:2;14170:9;14166:18;14158:26;;14230:9;14224:4;14220:20;14216:1;14205:9;14201:17;14194:47;14258:131;14384:4;14258:131;:::i;:::-;14250:139;;14148:248;;;:::o;14402:419::-;;14606:2;14595:9;14591:18;14583:26;;14655:9;14649:4;14645:20;14641:1;14630:9;14626:17;14619:47;14683:131;14809:4;14683:131;:::i;:::-;14675:139;;14573:248;;;:::o;14827:419::-;;15031:2;15020:9;15016:18;15008:26;;15080:9;15074:4;15070:20;15066:1;15055:9;15051:17;15044:47;15108:131;15234:4;15108:131;:::i;:::-;15100:139;;14998:248;;;:::o;15252:419::-;;15456:2;15445:9;15441:18;15433:26;;15505:9;15499:4;15495:20;15491:1;15480:9;15476:17;15469:47;15533:131;15659:4;15533:131;:::i;:::-;15525:139;;15423:248;;;:::o;15677:419::-;;15881:2;15870:9;15866:18;15858:26;;15930:9;15924:4;15920:20;15916:1;15905:9;15901:17;15894:47;15958:131;16084:4;15958:131;:::i;:::-;15950:139;;15848:248;;;:::o;16102:419::-;;16306:2;16295:9;16291:18;16283:26;;16355:9;16349:4;16345:20;16341:1;16330:9;16326:17;16319:47;16383:131;16509:4;16383:131;:::i;:::-;16375:139;;16273:248;;;:::o;16527:419::-;;16731:2;16720:9;16716:18;16708:26;;16780:9;16774:4;16770:20;16766:1;16755:9;16751:17;16744:47;16808:131;16934:4;16808:131;:::i;:::-;16800:139;;16698:248;;;:::o;16952:419::-;;17156:2;17145:9;17141:18;17133:26;;17205:9;17199:4;17195:20;17191:1;17180:9;17176:17;17169:47;17233:131;17359:4;17233:131;:::i;:::-;17225:139;;17123:248;;;:::o;17377:419::-;;17581:2;17570:9;17566:18;17558:26;;17630:9;17624:4;17620:20;17616:1;17605:9;17601:17;17594:47;17658:131;17784:4;17658:131;:::i;:::-;17650:139;;17548:248;;;:::o;17802:419::-;;18006:2;17995:9;17991:18;17983:26;;18055:9;18049:4;18045:20;18041:1;18030:9;18026:17;18019:47;18083:131;18209:4;18083:131;:::i;:::-;18075:139;;17973:248;;;:::o;18227:222::-;;18358:2;18347:9;18343:18;18335:26;;18371:71;18439:1;18428:9;18424:17;18415:6;18371:71;:::i;:::-;18325:124;;;;:::o;18455:553::-;;18670:3;18659:9;18655:19;18647:27;;18684:71;18752:1;18741:9;18737:17;18728:6;18684:71;:::i;:::-;18765:72;18833:2;18822:9;18818:18;18809:6;18765:72;:::i;:::-;18847;18915:2;18904:9;18900:18;18891:6;18847:72;:::i;:::-;18929;18997:2;18986:9;18982:18;18973:6;18929:72;:::i;:::-;18637:371;;;;;;;:::o;19014:283::-;;19080:2;19074:9;19064:19;;19122:4;19114:6;19110:17;19229:6;19217:10;19214:22;19193:18;19181:10;19178:34;19175:62;19172:2;;;19240:18;;:::i;:::-;19172:2;19280:10;19276:2;19269:22;19054:243;;;;:::o;19303:331::-;;19454:18;19446:6;19443:30;19440:2;;;19476:18;;:::i;:::-;19440:2;19561:4;19557:9;19550:4;19542:6;19538:17;19534:33;19526:41;;19622:4;19616;19612:15;19604:23;;19369:265;;;:::o;19640:132::-;;19730:3;19722:11;;19760:4;19755:3;19751:14;19743:22;;19712:60;;;:::o;19778:114::-;;19879:5;19873:12;19863:22;;19852:40;;;:::o;19898:113::-;;20000:4;19995:3;19991:14;19983:22;;19973:38;;;:::o;20017:184::-;;20150:6;20145:3;20138:19;20190:4;20185:3;20181:14;20166:29;;20128:73;;;;:::o;20207:169::-;;20325:6;20320:3;20313:19;20365:4;20360:3;20356:14;20341:29;;20303:73;;;;:::o;20382:305::-;;20441:20;20459:1;20441:20;:::i;:::-;20436:25;;20475:20;20493:1;20475:20;:::i;:::-;20470:25;;20629:1;20561:66;20557:74;20554:1;20551:81;20548:2;;;20635:18;;:::i;:::-;20548:2;20679:1;20676;20672:9;20665:16;;20426:261;;;;:::o;20693:348::-;;20756:20;20774:1;20756:20;:::i;:::-;20751:25;;20790:20;20808:1;20790:20;:::i;:::-;20785:25;;20978:1;20910:66;20906:74;20903:1;20900:81;20895:1;20888:9;20881:17;20877:105;20874:2;;;20985:18;;:::i;:::-;20874:2;21033:1;21030;21026:9;21015:20;;20741:300;;;;:::o;21047:191::-;;21107:20;21125:1;21107:20;:::i;:::-;21102:25;;21141:20;21159:1;21141:20;:::i;:::-;21136:25;;21180:1;21177;21174:8;21171:2;;;21185:18;;:::i;:::-;21171:2;21230:1;21227;21223:9;21215:17;;21092:146;;;;:::o;21244:96::-;;21310:24;21328:5;21310:24;:::i;:::-;21299:35;;21289:51;;;:::o;21346:90::-;;21423:5;21416:13;21409:21;21398:32;;21388:48;;;:::o;21442:149::-;;21518:66;21511:5;21507:78;21496:89;;21486:105;;;:::o;21597:126::-;;21674:42;21667:5;21663:54;21652:65;;21642:81;;;:::o;21729:77::-;;21795:5;21784:16;;21774:32;;;:::o;21812:154::-;;21909:51;21954:5;21909:51;:::i;:::-;21896:64;;21886:80;;;:::o;21972:127::-;;22069:24;22087:5;22069:24;:::i;:::-;22056:37;;22046:53;;;:::o;22105:156::-;;22203:52;22249:5;22203:52;:::i;:::-;22190:65;;22180:81;;;:::o;22267:128::-;;22365:24;22383:5;22365:24;:::i;:::-;22352:37;;22342:53;;;:::o;22401:154::-;22485:6;22480:3;22475;22462:30;22547:1;22538:6;22533:3;22529:16;22522:27;22452:103;;;:::o;22561:171::-;;22623:24;22641:5;22623:24;:::i;:::-;22614:33;;22669:4;22662:5;22659:15;22656:2;;;22677:18;;:::i;:::-;22656:2;22724:1;22717:5;22713:13;22706:20;;22604:128;;;:::o;22738:233::-;;22800:24;22818:5;22800:24;:::i;:::-;22791:33;;22846:66;22839:5;22836:77;22833:2;;;22916:18;;:::i;:::-;22833:2;22963:1;22956:5;22952:13;22945:20;;22781:190;;;:::o;22977:180::-;23025:77;23022:1;23015:88;23122:4;23119:1;23112:15;23146:4;23143:1;23136:15;23163:180;23211:77;23208:1;23201:88;23308:4;23305:1;23298:15;23332:4;23329:1;23322:15;23349:122;23422:24;23440:5;23422:24;:::i;:::-;23415:5;23412:35;23402:2;;23461:1;23458;23451:12;23402:2;23392:79;:::o;23477:116::-;23547:21;23562:5;23547:21;:::i;:::-;23540:5;23537:32;23527:2;;23583:1;23580;23573:12;23527:2;23517:76;:::o;23599:122::-;23672:24;23690:5;23672:24;:::i;:::-;23665:5;23662:35;23652:2;;23711:1;23708;23701:12;23652:2;23642:79;:::o
Swarm Source
ipfs://c53a3f804d52ca14e270e67e7960bd14c373a320e0dc7fb45550782fd4644d67
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.005948 | 1,502.2806 | $8.94 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.