Overview
ETH Balance
0.01531599999999996 ETH
Eth Value
$38.58 (@ $2,518.89/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 56 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Reward Distribut... | 19063017 | 224 days ago | IN | 0 ETH | 0.00772241 | ||||
Reward Distribut... | 19055994 | 225 days ago | IN | 0 ETH | 0.00593937 | ||||
Add Funds | 19055993 | 225 days ago | IN | 0.23291999 ETH | 0.00149882 | ||||
Reward Distribut... | 19052411 | 226 days ago | IN | 0 ETH | 0.00427616 | ||||
Reward Distribut... | 19048831 | 226 days ago | IN | 0 ETH | 0.01311713 | ||||
Reward Distribut... | 19045246 | 227 days ago | IN | 0 ETH | 0.00819471 | ||||
Reward Distribut... | 19041664 | 227 days ago | IN | 0 ETH | 0.01390072 | ||||
Reward Distribut... | 19027359 | 229 days ago | IN | 0 ETH | 0.01522639 | ||||
Reward Distribut... | 19005880 | 232 days ago | IN | 0 ETH | 0.00949863 | ||||
Reward Distribut... | 18977303 | 236 days ago | IN | 0 ETH | 0.02360537 | ||||
Reward Distribut... | 18938270 | 242 days ago | IN | 0 ETH | 0.00519377 | ||||
Reward Distribut... | 18934722 | 242 days ago | IN | 0 ETH | 0.02627468 | ||||
Reward Distribut... | 18931149 | 243 days ago | IN | 0 ETH | 0.00525302 | ||||
Reward Distribut... | 18877746 | 250 days ago | IN | 0 ETH | 0.01771966 | ||||
Reward Distribut... | 18792269 | 262 days ago | IN | 0 ETH | 0.02183963 | ||||
Reward Distribut... | 18720895 | 272 days ago | IN | 0 ETH | 0.02458345 | ||||
Reward Distribut... | 18685171 | 277 days ago | IN | 0 ETH | 0.01816026 | ||||
Reward Distribut... | 18681600 | 278 days ago | IN | 0 ETH | 0.01743607 | ||||
Reward Distribut... | 18667306 | 280 days ago | IN | 0 ETH | 0.00957334 | ||||
Reward Distribut... | 18663733 | 280 days ago | IN | 0 ETH | 0.04578604 | ||||
Add Funds | 18663732 | 280 days ago | IN | 4.88025 ETH | 0.00374827 | ||||
Reward Distribut... | 18660161 | 281 days ago | IN | 0 ETH | 0.00456889 | ||||
Reward Distribut... | 18653027 | 282 days ago | IN | 0 ETH | 0.00781765 | ||||
Reward Distribut... | 18645890 | 283 days ago | IN | 0 ETH | 0.0032059 | ||||
Reward Distribut... | 18638750 | 284 days ago | IN | 0 ETH | 0.00869288 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19063017 | 224 days ago | 0.019799 ETH | ||||
19063017 | 224 days ago | 0.0264 ETH | ||||
19063017 | 224 days ago | 0.033 ETH | ||||
19063017 | 224 days ago | 0.066 ETH | ||||
19055994 | 225 days ago | 0.0264 ETH | ||||
19055994 | 225 days ago | 0.033 ETH | ||||
19055994 | 225 days ago | 0.066 ETH | ||||
19055994 | 225 days ago | 0.0264 ETH | ||||
19055994 | 225 days ago | 0.033 ETH | ||||
19055994 | 225 days ago | 0.066 ETH | ||||
19052411 | 226 days ago | 0.0264 ETH | ||||
19052411 | 226 days ago | 0.033 ETH | ||||
19052411 | 226 days ago | 0.066 ETH | ||||
19052411 | 226 days ago | 0.0264 ETH | ||||
19052411 | 226 days ago | 0.033 ETH | ||||
19052411 | 226 days ago | 0.066 ETH | ||||
19048831 | 226 days ago | 0.019799 ETH | ||||
19048831 | 226 days ago | 0.0264 ETH | ||||
19048831 | 226 days ago | 0.033 ETH | ||||
19048831 | 226 days ago | 0.066 ETH | ||||
19048831 | 226 days ago | 0.019799 ETH | ||||
19048831 | 226 days ago | 0.0264 ETH | ||||
19048831 | 226 days ago | 0.033 ETH | ||||
19048831 | 226 days ago | 0.066 ETH | ||||
19048831 | 226 days ago | 0.0264 ETH |
Loading...
Loading
Contract Name:
Reward
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /** * @title Reward * @dev This contract handles the distribution of rewards to recipients. * It allows single and batch reward distributions, checks for available balance, * and emits events to log reward distribution and balance changes. */ contract Reward is Ownable{ IERC20 public usdtToken; // Declare a variable for the USDC token contract IERC20 public erc20Crypto; // Event emitted when funds are added to the contract event addedFund(address walletAddress, uint256 fund); // Event emitted to indicate whether the reward amount is less than the smart contract's balance event event_isRewardAmountLessThanSMCBalance(bool isRewardAmountLessThanSMCBalance); // Event emitted when a reward is successfully distributed event rewardDistributed(address rewardSMC, address recipient, uint256 rewardAmount); // Event emitted when rewards are successfully distributed in batch event rewardDistributedInBatch(address rewardSMC, address payable[] recipient, uint256[] rewardAmount); // Event emitted after reward distribution to log the balance of the contract event balanceAfterRewardDistribution(uint256 balanceAfterRewardDistribution); // Event emitted to log details of failed reward distributions event failedRewardDistribution(address[] failedRecipient, uint256[] rewardAmount); // Event emitted to log details of successful reward distributions event succeededRewardDistribution(address[] succeededRecipient, uint256[] rewardAmount); event transferredUSDT(address userAddress, uint256 amount); event changedERC20Token(address newCrypto); event transferredCrypto(address userAddress, uint256 amount); // Constructor to initialize the contract with an owner constructor(address ownerOfTheSmartContract, address _usdcTokenAddress){ // Set the provided address as the initial owner of the smart contract _transferOwnership(ownerOfTheSmartContract); usdtToken = IERC20(_usdcTokenAddress); } /** * @dev Changes the ERC-20 token used for bonus distribution. * @param newCrypto The address of the new ERC-20 token contract. * @return The address of the new ERC-20 token contract. */ function changeERC20Token(address newCrypto) external onlyOwner returns (address) { usdtToken = IERC20(newCrypto); emit changedERC20Token(newCrypto); return newCrypto; } /** * @dev Transfers USDT tokens to a specified address. * @param to The recipient's address. * @param amount The amount of USDT tokens to transfer. * @return True if the transfer is successful, false otherwise. */ function transferUSDT(address to, uint256 amount) external onlyOwner returns (bool) { require(balanceOfUSDT() >= amount, "Not sufficient amount to transfer!"); require(usdtToken.transfer(to, amount), "USDT transfer failed"); emit transferredUSDT(to, amount); return true; } /** * @dev Returns the balance of USDT tokens owned by the caller. * @return The balance of USDT tokens. */ function balanceOfUSDT() public view returns (uint256) { return usdtToken.balanceOf(address(this)); } /** * @dev Changes the cryptocurrency used for transfers. * @param newCrypto The address of the new cryptocurrency contract. * @return The address of the new cryptocurrency contract. */ function changeCrypto(address newCrypto) external onlyOwner returns (address) { require(newCrypto != address(0), "ERC20: Crypto address cannot be empty!"); // Ensure the new cryptocurrency address is not empty erc20Crypto = IERC20(newCrypto); // Update the cryptocurrency contract return newCrypto; // Return the new cryptocurrency contract address } /** * @dev Transfers cryptocurrency tokens to a specified address. * @param to The recipient's address. * @param amount The amount of cryptocurrency tokens to transfer. * @return True if the transfer is successful, false otherwise. */ function transferCrypto(address to, uint256 amount) external onlyOwner returns (bool) { require(erc20Crypto != IERC20(address(0)), "ERC20: Crypto address cannot be empty, Please add crypto first!"); // Ensure the cryptocurrency contract is set require(balanceOfCrypto() >= amount, "Not sufficient amount to transfer!"); // Ensure the caller has sufficient balance require(erc20Crypto.transfer(to, amount), "Cryptocurrency transfer failed"); // Perform the transfer emit transferredCrypto(to, amount); // Emit an event to log the transfer return true; // Return true to indicate a successful transfer } /** * @dev Returns the balance of the selected cryptocurrency owned by the caller. * @return The balance of the selected cryptocurrency. */ function balanceOfCrypto() public view returns (uint256) { return erc20Crypto.balanceOf(address(this)); // Return the caller's balance of the selected cryptocurrency } /** * @dev Fallback function to receive MATIC. * This function is automatically called when the contract receives MATIC. * The received MATIC will be added to the contract's balance. * This function is marked as "payable" to allow the contract to accept funds. */ receive() external payable { } /** * @dev Get the current balance of the smart contract. * @return The amount of MATIC held by the contract. */ function getContractBalance() public view returns (uint256) { return address(this).balance; } /** * @dev Add funds to the smart contract. * Emits the `addedFund` event to log the added funds and the sender's address. * @return The amount of MATIC added to the contract. */ function addFunds() external payable returns (uint256) { emit addedFund(msg.sender, msg.value); return msg.value; } /** * @dev Check if the total reward amount is less than the smart contract's balance. * Emits the `event_isRewardAmountLessThanSMCBalance` event to log the result. * @param totalRewardAmount The total amount of MATIC for the reward. * @return Whether the reward amount is less than the contract's balance. */ function isRewardAmountLessThanSMCBalance(uint256 totalRewardAmount) public returns (bool) { if (totalRewardAmount < address(this).balance) { emit event_isRewardAmountLessThanSMCBalance(true); return true; } emit event_isRewardAmountLessThanSMCBalance(false); return false; } /** * @dev Distribute a reward to a recipient. * Requires that the reward amount is less than the smart contract's balance. * Transfers the reward amount to the recipient and emits the `rewardDistributed` event. * @param rewardAmount The amount of MATIC to be rewarded. * @param recipient The address of the recipient of the reward. * @return A boolean indicating the success of the reward distribution. */ function rewardDistribution(uint256 rewardAmount, address payable recipient) external onlyOwner returns (bool) { require(isRewardAmountLessThanSMCBalance(rewardAmount), "Insufficient balance in reward SMC"); recipient.transfer(rewardAmount); emit rewardDistributed(address(this), recipient, rewardAmount); return true; } /** * @dev Distribute rewards to multiple recipients in batch. * Requires that the arrays have the same length, and each recipient address and reward amount is valid. * Transfers rewards to recipients, logs failed and successful distributions, and emits balance information. * @param rewardAmount An array of reward amounts to be distributed. * @param recipients An array of recipient addresses for the rewards. * @return A boolean indicating the success of the batch reward distribution. */ function rewardDistributionInbatch(uint256[] memory rewardAmount, address payable[] memory recipients) external onlyOwner returns (bool) { require(recipients.length == rewardAmount.length, "Arrays must have the same length"); address[] memory failedRecipients = new address[](recipients.length); uint256[] memory failedRewardAmount = new uint256[](rewardAmount.length); address[] memory succeededRecipients = new address[](recipients.length); uint256[] memory succeededRewardAmount = new uint256[](rewardAmount.length); uint256 failedCount = 0; uint256 succeededCount = 0; for (uint256 i = 0; i < recipients.length; i++) { require(recipients[i] != address(0), "Invalid recipient address"); require(rewardAmount[i] > 0, "Amount must be greater than 0"); // Attempt to transfer the funds if (rewardAmount[i] <= address(this).balance) { if (recipients[i].send(rewardAmount[i])) { // Add succeeded recipient and reward amount to arrays succeededRecipients[succeededCount] = recipients[i]; succeededRewardAmount[succeededCount] = rewardAmount[i]; succeededCount++; } } else { // Add failed recipient and reward amount to arrays failedRecipients[failedCount] = recipients[i]; failedRewardAmount[failedCount] = rewardAmount[i]; failedCount++; } } // Resize the arrays to remove any empty slots assembly { mstore(failedRecipients, failedCount) mstore(failedRewardAmount, failedCount) mstore(succeededRecipients, succeededCount) mstore(succeededRewardAmount, succeededCount) } emit failedRewardDistribution(failedRecipients, failedRewardAmount); emit succeededRewardDistribution(succeededRecipients, succeededRewardAmount); emit balanceAfterRewardDistribution(address(this).balance); return true; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.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. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"ownerOfTheSmartContract","type":"address"},{"internalType":"address","name":"_usdcTokenAddress","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":"walletAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"fund","type":"uint256"}],"name":"addedFund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"balanceAfterRewardDistribution","type":"uint256"}],"name":"balanceAfterRewardDistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newCrypto","type":"address"}],"name":"changedERC20Token","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isRewardAmountLessThanSMCBalance","type":"bool"}],"name":"event_isRewardAmountLessThanSMCBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"failedRecipient","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"rewardAmount","type":"uint256[]"}],"name":"failedRewardDistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"rewardSMC","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"rewardDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"rewardSMC","type":"address"},{"indexed":false,"internalType":"address payable[]","name":"recipient","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"rewardAmount","type":"uint256[]"}],"name":"rewardDistributedInBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"succeededRecipient","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"rewardAmount","type":"uint256[]"}],"name":"succeededRewardDistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferredCrypto","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferredUSDT","type":"event"},{"inputs":[],"name":"addFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"balanceOfCrypto","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceOfUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newCrypto","type":"address"}],"name":"changeCrypto","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCrypto","type":"address"}],"name":"changeERC20Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc20Crypto","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"totalRewardAmount","type":"uint256"}],"name":"isRewardAmountLessThanSMCBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"address payable","name":"recipient","type":"address"}],"name":"rewardDistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"rewardAmount","type":"uint256[]"},{"internalType":"address payable[]","name":"recipients","type":"address[]"}],"name":"rewardDistributionInbatch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferCrypto","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferUSDT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162002425380380620024258339818101604052810190620000379190620001e7565b620000576200004b620000b160201b60201c565b620000b960201b60201c565b6200006882620000b960201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200022e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001af8262000182565b9050919050565b620001c181620001a2565b8114620001cd57600080fd5b50565b600081519050620001e181620001b6565b92915050565b600080604083850312156200020157620002006200017d565b5b60006200021185828601620001d0565b92505060206200022485828601620001d0565b9150509250929050565b6121e7806200023e6000396000f3fe6080604052600436106100f75760003560e01c8063979b388d1161008a578063ca5d89dc11610059578063ca5d89dc14610340578063d015ed6a1461037d578063e28a6281146103ba578063f2fde38b146103e5576100fe565b8063979b388d1461027d578063a26759cb146102ba578063a98ad46c146102d8578063a9d3583a14610303576100fe565b80636f9fb98a116100c65780636f9fb98a146101e5578063715018a61461021057806379b05119146102275780638da5cb5b14610252576100fe565b80631aab347414610103578063305d3c181461012e57806348bb57d71461016b578063695b3e6c146101a8576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b5061011861040e565b604051610125919061138a565b60405180910390f35b34801561013a57600080fd5b506101556004803603810190610150919061165f565b6104b1565b60405161016291906116f2565b60405180910390f35b34801561017757600080fd5b50610192600480360381019061018d919061170d565b6109fb565b60405161019f91906116f2565b60405180910390f35b3480156101b457600080fd5b506101cf60048036038101906101ca9190611778565b610a88565b6040516101dc91906117b4565b60405180910390f35b3480156101f157600080fd5b506101fa610b12565b604051610207919061138a565b60405180910390f35b34801561021c57600080fd5b50610225610b1a565b005b34801561023357600080fd5b5061023c610b2e565b604051610249919061182e565b60405180910390f35b34801561025e57600080fd5b50610267610b54565b60405161027491906117b4565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190611778565b610b7d565b6040516102b191906117b4565b60405180910390f35b6102c2610c3f565b6040516102cf919061138a565b60405180910390f35b3480156102e457600080fd5b506102ed610c80565b6040516102fa919061182e565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190611849565b610ca6565b60405161033791906116f2565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190611889565b610d84565b60405161037491906116f2565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190611889565b610f8b565b6040516103b191906116f2565b60405180910390f35b3480156103c657600080fd5b506103cf611101565b6040516103dc919061138a565b60405180910390f35b3480156103f157600080fd5b5061040c60048036038101906104079190611778565b6111a4565b005b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161046b91906117b4565b602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906118de565b905090565b60006104bb611227565b82518251146104ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f690611968565b60405180910390fd5b6000825167ffffffffffffffff81111561051c5761051b6113cf565b5b60405190808252806020026020018201604052801561054a5781602001602082028036833780820191505090505b5090506000845167ffffffffffffffff81111561056a576105696113cf565b5b6040519080825280602002602001820160405280156105985781602001602082028036833780820191505090505b5090506000845167ffffffffffffffff8111156105b8576105b76113cf565b5b6040519080825280602002602001820160405280156105e65781602001602082028036833780820191505090505b5090506000865167ffffffffffffffff811115610606576106056113cf565b5b6040519080825280602002602001820160405280156106345781602001602082028036833780820191505090505b50905060008060005b885181101561093557600073ffffffffffffffffffffffffffffffffffffffff1689828151811061067157610670611988565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690611a03565b60405180910390fd5b60008a82815181106106e4576106e3611988565b5b60200260200101511161072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072390611a6f565b60405180910390fd5b478a82815181106107405761073f611988565b5b602002602001015111610871578881815181106107605761075f611988565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc8b838151811061079457610793611988565b5b60200260200101519081150290604051600060405180830381858888f193505050501561086c578881815181106107ce576107cd611988565b5b60200260200101518583815181106107e9576107e8611988565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505089818151811061083657610835611988565b5b602002602001015184838151811061085157610850611988565b5b602002602001018181525050818061086890611abe565b9250505b610922565b88818151811061088457610883611988565b5b602002602001015187848151811061089f5761089e611988565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508981815181106108ec576108eb611988565b5b602002602001015186848151811061090757610906611988565b5b602002602001018181525050828061091e90611abe565b9350505b808061092d90611abe565b91505061063d565b508186528185528084528083527f2935af76ef8c9ff0d8229d46edd34d753773adf481a20a788b503bf146c0a2c88686604051610973929190611c82565b60405180910390a17f9b0d0d0a91746502e57b5fe7c7e37d4a4606b0fdc24c322b4d28a339498826af84846040516109ac929190611c82565b60405180910390a17f46c86363452e765e457470c88efc778370ef2dcc2e0462f158fc0f47cd72948a476040516109e3919061138a565b60405180910390a16001965050505050505092915050565b600047821015610a46577f8ecd0c27ffd343fd3ba896cce2e81f257568977e3e4b7ed9f678fb328cef78386001604051610a3591906116f2565b60405180910390a160019050610a83565b7f8ecd0c27ffd343fd3ba896cce2e81f257568977e3e4b7ed9f678fb328cef78386000604051610a7691906116f2565b60405180910390a1600090505b919050565b6000610a92611227565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc416561a497c1bc3d4a6232ad748d75298a375f94051e94a624d758e59a0b05482604051610b0291906117b4565b60405180910390a1819050919050565b600047905090565b610b22611227565b610b2c60006112a5565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610b87611227565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed90611d2b565b60405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550819050919050565b60007f4f78a6b3e4de1b14874326e330a0f5789e29512ff7d751593279b95579fbfcd73334604051610c72929190611d4b565b60405180910390a134905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cb0611227565b610cb9836109fb565b610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cef90611de6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610d3e573d6000803e3d6000fd5b507f4628439204b48b5db54bd3cfc580994d85c71cde2e281ba39f92f7f96a7faab1308385604051610d7293929190611e27565b60405180910390a16001905092915050565b6000610d8e611227565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690611ed0565b60405180910390fd5b81610e28611101565b1015610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090611f62565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610ec6929190611d4b565b6020604051808303816000875af1158015610ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f099190611fae565b610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f90612027565b60405180910390fd5b7fd2aa9258b098aa1e260cf6ff53f9a673f6bc5af2c3bcf23f0be7e12b745a77ed8383604051610f79929190611d4b565b60405180910390a16001905092915050565b6000610f95611227565b81610f9e61040e565b1015610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd690611f62565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b815260040161103c929190611d4b565b6020604051808303816000875af115801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190611fae565b6110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590612093565b60405180910390fd5b7f5e50c2a22a5bc387b80e806d4777b5b49bf356b015708e6639af5587e42c61a983836040516110ef929190611d4b565b60405180910390a16001905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161115e91906117b4565b602060405180830381865afa15801561117b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119f91906118de565b905090565b6111ac611227565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290612125565b60405180910390fd5b611224816112a5565b50565b61122f611369565b73ffffffffffffffffffffffffffffffffffffffff1661124d610b54565b73ffffffffffffffffffffffffffffffffffffffff16146112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a90612191565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000819050919050565b61138481611371565b82525050565b600060208201905061139f600083018461137b565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611407826113be565b810181811067ffffffffffffffff82111715611426576114256113cf565b5b80604052505050565b60006114396113a5565b905061144582826113fe565b919050565b600067ffffffffffffffff821115611465576114646113cf565b5b602082029050602081019050919050565b600080fd5b61148481611371565b811461148f57600080fd5b50565b6000813590506114a18161147b565b92915050565b60006114ba6114b58461144a565b61142f565b905080838252602082019050602084028301858111156114dd576114dc611476565b5b835b8181101561150657806114f28882611492565b8452602084019350506020810190506114df565b5050509392505050565b600082601f830112611525576115246113b9565b5b81356115358482602086016114a7565b91505092915050565b600067ffffffffffffffff821115611559576115586113cf565b5b602082029050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115958261156a565b9050919050565b6115a58161158a565b81146115b057600080fd5b50565b6000813590506115c28161159c565b92915050565b60006115db6115d68461153e565b61142f565b905080838252602082019050602084028301858111156115fe576115fd611476565b5b835b81811015611627578061161388826115b3565b845260208401935050602081019050611600565b5050509392505050565b600082601f830112611646576116456113b9565b5b81356116568482602086016115c8565b91505092915050565b60008060408385031215611676576116756113af565b5b600083013567ffffffffffffffff811115611694576116936113b4565b5b6116a085828601611510565b925050602083013567ffffffffffffffff8111156116c1576116c06113b4565b5b6116cd85828601611631565b9150509250929050565b60008115159050919050565b6116ec816116d7565b82525050565b600060208201905061170760008301846116e3565b92915050565b600060208284031215611723576117226113af565b5b600061173184828501611492565b91505092915050565b60006117458261156a565b9050919050565b6117558161173a565b811461176057600080fd5b50565b6000813590506117728161174c565b92915050565b60006020828403121561178e5761178d6113af565b5b600061179c84828501611763565b91505092915050565b6117ae8161173a565b82525050565b60006020820190506117c960008301846117a5565b92915050565b6000819050919050565b60006117f46117ef6117ea8461156a565b6117cf565b61156a565b9050919050565b6000611806826117d9565b9050919050565b6000611818826117fb565b9050919050565b6118288161180d565b82525050565b6000602082019050611843600083018461181f565b92915050565b600080604083850312156118605761185f6113af565b5b600061186e85828601611492565b925050602061187f858286016115b3565b9150509250929050565b600080604083850312156118a05761189f6113af565b5b60006118ae85828601611763565b92505060206118bf85828601611492565b9150509250929050565b6000815190506118d88161147b565b92915050565b6000602082840312156118f4576118f36113af565b5b6000611902848285016118c9565b91505092915050565b600082825260208201905092915050565b7f417272617973206d7573742068617665207468652073616d65206c656e677468600082015250565b600061195260208361190b565b915061195d8261191c565b602082019050919050565b6000602082019050818103600083015261198181611945565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c696420726563697069656e74206164647265737300000000000000600082015250565b60006119ed60198361190b565b91506119f8826119b7565b602082019050919050565b60006020820190508181036000830152611a1c816119e0565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000611a59601d8361190b565b9150611a6482611a23565b602082019050919050565b60006020820190508181036000830152611a8881611a4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ac982611371565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611afb57611afa611a8f565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611b3b8161173a565b82525050565b6000611b4d8383611b32565b60208301905092915050565b6000602082019050919050565b6000611b7182611b06565b611b7b8185611b11565b9350611b8683611b22565b8060005b83811015611bb7578151611b9e8882611b41565b9750611ba983611b59565b925050600181019050611b8a565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611bf981611371565b82525050565b6000611c0b8383611bf0565b60208301905092915050565b6000602082019050919050565b6000611c2f82611bc4565b611c398185611bcf565b9350611c4483611be0565b8060005b83811015611c75578151611c5c8882611bff565b9750611c6783611c17565b925050600181019050611c48565b5085935050505092915050565b60006040820190508181036000830152611c9c8185611b66565b90508181036020830152611cb08184611c24565b90509392505050565b7f45524332303a2043727970746f20616464726573732063616e6e6f742062652060008201527f656d707479210000000000000000000000000000000000000000000000000000602082015250565b6000611d1560268361190b565b9150611d2082611cb9565b604082019050919050565b60006020820190508181036000830152611d4481611d08565b9050919050565b6000604082019050611d6060008301856117a5565b611d6d602083018461137b565b9392505050565b7f496e73756666696369656e742062616c616e636520696e20726577617264205360008201527f4d43000000000000000000000000000000000000000000000000000000000000602082015250565b6000611dd060228361190b565b9150611ddb82611d74565b604082019050919050565b60006020820190508181036000830152611dff81611dc3565b9050919050565b6000611e11826117fb565b9050919050565b611e2181611e06565b82525050565b6000606082019050611e3c60008301866117a5565b611e496020830185611e18565b611e56604083018461137b565b949350505050565b7f45524332303a2043727970746f20616464726573732063616e6e6f742062652060008201527f656d7074792c20506c65617365206164642063727970746f2066697273742100602082015250565b6000611eba603f8361190b565b9150611ec582611e5e565b604082019050919050565b60006020820190508181036000830152611ee981611ead565b9050919050565b7f4e6f742073756666696369656e7420616d6f756e7420746f207472616e73666560008201527f7221000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f4c60228361190b565b9150611f5782611ef0565b604082019050919050565b60006020820190508181036000830152611f7b81611f3f565b9050919050565b611f8b816116d7565b8114611f9657600080fd5b50565b600081519050611fa881611f82565b92915050565b600060208284031215611fc457611fc36113af565b5b6000611fd284828501611f99565b91505092915050565b7f43727970746f63757272656e6379207472616e73666572206661696c65640000600082015250565b6000612011601e8361190b565b915061201c82611fdb565b602082019050919050565b6000602082019050818103600083015261204081612004565b9050919050565b7f55534454207472616e73666572206661696c6564000000000000000000000000600082015250565b600061207d60148361190b565b915061208882612047565b602082019050919050565b600060208201905081810360008301526120ac81612070565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061210f60268361190b565b915061211a826120b3565b604082019050919050565b6000602082019050818103600083015261213e81612102565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061217b60208361190b565b915061218682612145565b602082019050919050565b600060208201905081810360008301526121aa8161216e565b905091905056fea264697066735822122010732853d71faf08d73eb5bda677e4f2c4de81133dff32f50e86ad5cd3f5f34764736f6c634300081100330000000000000000000000002a398c735a7061b04dbc3588e17f9bb206bf8a08000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Deployed Bytecode
0x6080604052600436106100f75760003560e01c8063979b388d1161008a578063ca5d89dc11610059578063ca5d89dc14610340578063d015ed6a1461037d578063e28a6281146103ba578063f2fde38b146103e5576100fe565b8063979b388d1461027d578063a26759cb146102ba578063a98ad46c146102d8578063a9d3583a14610303576100fe565b80636f9fb98a116100c65780636f9fb98a146101e5578063715018a61461021057806379b05119146102275780638da5cb5b14610252576100fe565b80631aab347414610103578063305d3c181461012e57806348bb57d71461016b578063695b3e6c146101a8576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b5061011861040e565b604051610125919061138a565b60405180910390f35b34801561013a57600080fd5b506101556004803603810190610150919061165f565b6104b1565b60405161016291906116f2565b60405180910390f35b34801561017757600080fd5b50610192600480360381019061018d919061170d565b6109fb565b60405161019f91906116f2565b60405180910390f35b3480156101b457600080fd5b506101cf60048036038101906101ca9190611778565b610a88565b6040516101dc91906117b4565b60405180910390f35b3480156101f157600080fd5b506101fa610b12565b604051610207919061138a565b60405180910390f35b34801561021c57600080fd5b50610225610b1a565b005b34801561023357600080fd5b5061023c610b2e565b604051610249919061182e565b60405180910390f35b34801561025e57600080fd5b50610267610b54565b60405161027491906117b4565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190611778565b610b7d565b6040516102b191906117b4565b60405180910390f35b6102c2610c3f565b6040516102cf919061138a565b60405180910390f35b3480156102e457600080fd5b506102ed610c80565b6040516102fa919061182e565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190611849565b610ca6565b60405161033791906116f2565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190611889565b610d84565b60405161037491906116f2565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190611889565b610f8b565b6040516103b191906116f2565b60405180910390f35b3480156103c657600080fd5b506103cf611101565b6040516103dc919061138a565b60405180910390f35b3480156103f157600080fd5b5061040c60048036038101906104079190611778565b6111a4565b005b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161046b91906117b4565b602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906118de565b905090565b60006104bb611227565b82518251146104ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f690611968565b60405180910390fd5b6000825167ffffffffffffffff81111561051c5761051b6113cf565b5b60405190808252806020026020018201604052801561054a5781602001602082028036833780820191505090505b5090506000845167ffffffffffffffff81111561056a576105696113cf565b5b6040519080825280602002602001820160405280156105985781602001602082028036833780820191505090505b5090506000845167ffffffffffffffff8111156105b8576105b76113cf565b5b6040519080825280602002602001820160405280156105e65781602001602082028036833780820191505090505b5090506000865167ffffffffffffffff811115610606576106056113cf565b5b6040519080825280602002602001820160405280156106345781602001602082028036833780820191505090505b50905060008060005b885181101561093557600073ffffffffffffffffffffffffffffffffffffffff1689828151811061067157610670611988565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690611a03565b60405180910390fd5b60008a82815181106106e4576106e3611988565b5b60200260200101511161072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072390611a6f565b60405180910390fd5b478a82815181106107405761073f611988565b5b602002602001015111610871578881815181106107605761075f611988565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc8b838151811061079457610793611988565b5b60200260200101519081150290604051600060405180830381858888f193505050501561086c578881815181106107ce576107cd611988565b5b60200260200101518583815181106107e9576107e8611988565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505089818151811061083657610835611988565b5b602002602001015184838151811061085157610850611988565b5b602002602001018181525050818061086890611abe565b9250505b610922565b88818151811061088457610883611988565b5b602002602001015187848151811061089f5761089e611988565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508981815181106108ec576108eb611988565b5b602002602001015186848151811061090757610906611988565b5b602002602001018181525050828061091e90611abe565b9350505b808061092d90611abe565b91505061063d565b508186528185528084528083527f2935af76ef8c9ff0d8229d46edd34d753773adf481a20a788b503bf146c0a2c88686604051610973929190611c82565b60405180910390a17f9b0d0d0a91746502e57b5fe7c7e37d4a4606b0fdc24c322b4d28a339498826af84846040516109ac929190611c82565b60405180910390a17f46c86363452e765e457470c88efc778370ef2dcc2e0462f158fc0f47cd72948a476040516109e3919061138a565b60405180910390a16001965050505050505092915050565b600047821015610a46577f8ecd0c27ffd343fd3ba896cce2e81f257568977e3e4b7ed9f678fb328cef78386001604051610a3591906116f2565b60405180910390a160019050610a83565b7f8ecd0c27ffd343fd3ba896cce2e81f257568977e3e4b7ed9f678fb328cef78386000604051610a7691906116f2565b60405180910390a1600090505b919050565b6000610a92611227565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc416561a497c1bc3d4a6232ad748d75298a375f94051e94a624d758e59a0b05482604051610b0291906117b4565b60405180910390a1819050919050565b600047905090565b610b22611227565b610b2c60006112a5565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610b87611227565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed90611d2b565b60405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550819050919050565b60007f4f78a6b3e4de1b14874326e330a0f5789e29512ff7d751593279b95579fbfcd73334604051610c72929190611d4b565b60405180910390a134905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cb0611227565b610cb9836109fb565b610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cef90611de6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610d3e573d6000803e3d6000fd5b507f4628439204b48b5db54bd3cfc580994d85c71cde2e281ba39f92f7f96a7faab1308385604051610d7293929190611e27565b60405180910390a16001905092915050565b6000610d8e611227565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690611ed0565b60405180910390fd5b81610e28611101565b1015610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090611f62565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610ec6929190611d4b565b6020604051808303816000875af1158015610ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f099190611fae565b610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f90612027565b60405180910390fd5b7fd2aa9258b098aa1e260cf6ff53f9a673f6bc5af2c3bcf23f0be7e12b745a77ed8383604051610f79929190611d4b565b60405180910390a16001905092915050565b6000610f95611227565b81610f9e61040e565b1015610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd690611f62565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b815260040161103c929190611d4b565b6020604051808303816000875af115801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190611fae565b6110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590612093565b60405180910390fd5b7f5e50c2a22a5bc387b80e806d4777b5b49bf356b015708e6639af5587e42c61a983836040516110ef929190611d4b565b60405180910390a16001905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161115e91906117b4565b602060405180830381865afa15801561117b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119f91906118de565b905090565b6111ac611227565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290612125565b60405180910390fd5b611224816112a5565b50565b61122f611369565b73ffffffffffffffffffffffffffffffffffffffff1661124d610b54565b73ffffffffffffffffffffffffffffffffffffffff16146112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a90612191565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000819050919050565b61138481611371565b82525050565b600060208201905061139f600083018461137b565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611407826113be565b810181811067ffffffffffffffff82111715611426576114256113cf565b5b80604052505050565b60006114396113a5565b905061144582826113fe565b919050565b600067ffffffffffffffff821115611465576114646113cf565b5b602082029050602081019050919050565b600080fd5b61148481611371565b811461148f57600080fd5b50565b6000813590506114a18161147b565b92915050565b60006114ba6114b58461144a565b61142f565b905080838252602082019050602084028301858111156114dd576114dc611476565b5b835b8181101561150657806114f28882611492565b8452602084019350506020810190506114df565b5050509392505050565b600082601f830112611525576115246113b9565b5b81356115358482602086016114a7565b91505092915050565b600067ffffffffffffffff821115611559576115586113cf565b5b602082029050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115958261156a565b9050919050565b6115a58161158a565b81146115b057600080fd5b50565b6000813590506115c28161159c565b92915050565b60006115db6115d68461153e565b61142f565b905080838252602082019050602084028301858111156115fe576115fd611476565b5b835b81811015611627578061161388826115b3565b845260208401935050602081019050611600565b5050509392505050565b600082601f830112611646576116456113b9565b5b81356116568482602086016115c8565b91505092915050565b60008060408385031215611676576116756113af565b5b600083013567ffffffffffffffff811115611694576116936113b4565b5b6116a085828601611510565b925050602083013567ffffffffffffffff8111156116c1576116c06113b4565b5b6116cd85828601611631565b9150509250929050565b60008115159050919050565b6116ec816116d7565b82525050565b600060208201905061170760008301846116e3565b92915050565b600060208284031215611723576117226113af565b5b600061173184828501611492565b91505092915050565b60006117458261156a565b9050919050565b6117558161173a565b811461176057600080fd5b50565b6000813590506117728161174c565b92915050565b60006020828403121561178e5761178d6113af565b5b600061179c84828501611763565b91505092915050565b6117ae8161173a565b82525050565b60006020820190506117c960008301846117a5565b92915050565b6000819050919050565b60006117f46117ef6117ea8461156a565b6117cf565b61156a565b9050919050565b6000611806826117d9565b9050919050565b6000611818826117fb565b9050919050565b6118288161180d565b82525050565b6000602082019050611843600083018461181f565b92915050565b600080604083850312156118605761185f6113af565b5b600061186e85828601611492565b925050602061187f858286016115b3565b9150509250929050565b600080604083850312156118a05761189f6113af565b5b60006118ae85828601611763565b92505060206118bf85828601611492565b9150509250929050565b6000815190506118d88161147b565b92915050565b6000602082840312156118f4576118f36113af565b5b6000611902848285016118c9565b91505092915050565b600082825260208201905092915050565b7f417272617973206d7573742068617665207468652073616d65206c656e677468600082015250565b600061195260208361190b565b915061195d8261191c565b602082019050919050565b6000602082019050818103600083015261198181611945565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c696420726563697069656e74206164647265737300000000000000600082015250565b60006119ed60198361190b565b91506119f8826119b7565b602082019050919050565b60006020820190508181036000830152611a1c816119e0565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000611a59601d8361190b565b9150611a6482611a23565b602082019050919050565b60006020820190508181036000830152611a8881611a4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ac982611371565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611afb57611afa611a8f565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611b3b8161173a565b82525050565b6000611b4d8383611b32565b60208301905092915050565b6000602082019050919050565b6000611b7182611b06565b611b7b8185611b11565b9350611b8683611b22565b8060005b83811015611bb7578151611b9e8882611b41565b9750611ba983611b59565b925050600181019050611b8a565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611bf981611371565b82525050565b6000611c0b8383611bf0565b60208301905092915050565b6000602082019050919050565b6000611c2f82611bc4565b611c398185611bcf565b9350611c4483611be0565b8060005b83811015611c75578151611c5c8882611bff565b9750611c6783611c17565b925050600181019050611c48565b5085935050505092915050565b60006040820190508181036000830152611c9c8185611b66565b90508181036020830152611cb08184611c24565b90509392505050565b7f45524332303a2043727970746f20616464726573732063616e6e6f742062652060008201527f656d707479210000000000000000000000000000000000000000000000000000602082015250565b6000611d1560268361190b565b9150611d2082611cb9565b604082019050919050565b60006020820190508181036000830152611d4481611d08565b9050919050565b6000604082019050611d6060008301856117a5565b611d6d602083018461137b565b9392505050565b7f496e73756666696369656e742062616c616e636520696e20726577617264205360008201527f4d43000000000000000000000000000000000000000000000000000000000000602082015250565b6000611dd060228361190b565b9150611ddb82611d74565b604082019050919050565b60006020820190508181036000830152611dff81611dc3565b9050919050565b6000611e11826117fb565b9050919050565b611e2181611e06565b82525050565b6000606082019050611e3c60008301866117a5565b611e496020830185611e18565b611e56604083018461137b565b949350505050565b7f45524332303a2043727970746f20616464726573732063616e6e6f742062652060008201527f656d7074792c20506c65617365206164642063727970746f2066697273742100602082015250565b6000611eba603f8361190b565b9150611ec582611e5e565b604082019050919050565b60006020820190508181036000830152611ee981611ead565b9050919050565b7f4e6f742073756666696369656e7420616d6f756e7420746f207472616e73666560008201527f7221000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f4c60228361190b565b9150611f5782611ef0565b604082019050919050565b60006020820190508181036000830152611f7b81611f3f565b9050919050565b611f8b816116d7565b8114611f9657600080fd5b50565b600081519050611fa881611f82565b92915050565b600060208284031215611fc457611fc36113af565b5b6000611fd284828501611f99565b91505092915050565b7f43727970746f63757272656e6379207472616e73666572206661696c65640000600082015250565b6000612011601e8361190b565b915061201c82611fdb565b602082019050919050565b6000602082019050818103600083015261204081612004565b9050919050565b7f55534454207472616e73666572206661696c6564000000000000000000000000600082015250565b600061207d60148361190b565b915061208882612047565b602082019050919050565b600060208201905081810360008301526120ac81612070565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061210f60268361190b565b915061211a826120b3565b604082019050919050565b6000602082019050818103600083015261213e81612102565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061217b60208361190b565b915061218682612145565b602082019050919050565b600060208201905081810360008301526121aa8161216e565b905091905056fea264697066735822122010732853d71faf08d73eb5bda677e4f2c4de81133dff32f50e86ad5cd3f5f34764736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002a398c735a7061b04dbc3588e17f9bb206bf8a08000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
-----Decoded View---------------
Arg [0] : ownerOfTheSmartContract (address): 0x2A398C735A7061B04dBc3588e17F9bB206Bf8a08
Arg [1] : _usdcTokenAddress (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002a398c735a7061b04dbc3588e17f9bb206bf8a08
Arg [1] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,518.48 | 0.0153 | $38.57 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.