Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Vault
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-19 */ // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // 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/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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); } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: Vault.sol pragma solidity ^0.8.6; /** * @title Vault Contract */ contract Vault is Ownable, ReentrancyGuard { using Address for address; using SafeERC20 for IERC20; /// @notice Event emitted on construction. event VaultDeployed(); /// @notice Event emitted when new teller is added to vault. event NewTellerAdded(address newTeller, uint256 priority); /// @notice Event emitted when current priority is changed. event TellerPriorityChanged(address teller, uint256 newPriority); /// @notice Event emitted when tokens are paid to provider. event ProviderPaid(address indexed provider, uint256 indexed rewardAmount); /// @notice Event emitted when token rate is calculated. event RewardRateCalculated(uint256 rewardRate); IERC20 public Reward; mapping(address => bool) public teller; mapping(address => uint256) public tellerPriority; mapping(address => uint256) public priorityFreeze; uint256 public totalPriority; uint256 public rewardRate; uint256 public timeToCalculateRate; uint256 public totalDistributed; modifier onlyTeller() { require(teller[msg.sender], "Vault: Caller is not a teller."); _; } /** * @dev Constructor function * @param _Reward Interface of Reward token => Sample"Vidya"(0x3D3D35bb9bEC23b06Ca00fe472b50E7A4c692C30) */ constructor(IERC20 _Reward) { Reward = _Reward; emit VaultDeployed(); } /** * @dev External function to add a teller. This function can be called only by the owner. * @param _teller Address of teller * @param _priority Priority of teller */ function addTeller(address _teller, uint256 _priority) external onlyOwner { require( _teller.isContract() == true, "Vault: Address is not a contract." ); require(!teller[_teller], "Vault: Caller is already a teller."); require(_priority > 0, "Vault: Priority should be greater than zero."); teller[_teller] = true; tellerPriority[_teller] = _priority; totalPriority += _priority; priorityFreeze[_teller] = block.timestamp + 7 days; emit NewTellerAdded(_teller, _priority); } /** * @dev External function to change the priority of a teller. This function can be called only by the owner. * @param _teller Address of teller * @param _newPriority New priority of teller */ function changePriority(address _teller, uint256 _newPriority) external onlyOwner { require( _teller.isContract() == true, "Vault: Address is not a contract." ); require(teller[_teller], "Vault: Provided address is not a teller."); require( priorityFreeze[_teller] <= block.timestamp, "Vault: Priority freeze is still in effect." ); uint256 _oldPriority = tellerPriority[_teller]; totalPriority = (totalPriority - _oldPriority) + _newPriority; tellerPriority[_teller] = _newPriority; priorityFreeze[_teller] = block.timestamp + 1 weeks; emit TellerPriorityChanged(_teller, _newPriority); } /** * @dev External function to pay depositors. This function can be called only by a teller. * @param _provider Address of provider * @param _providerTimeWeight Weight time of provider * @param _totalWeight Sum of provider weight */ function payProvider( address _provider, uint256 _providerTimeWeight, uint256 _totalWeight ) external onlyTeller { uint256 numerator = rewardRate * _providerTimeWeight * tellerPriority[msg.sender]; uint256 denominator = _totalWeight * totalPriority; uint256 amount; if (denominator != 0) { amount = numerator / denominator; } if (timeToCalculateRate <= block.timestamp) { _calculateRate(); } totalDistributed += amount; Reward.safeTransfer(_provider, amount); emit ProviderPaid(_provider, amount); } /** * @dev Internal function to calculate the token Rate. */ function _calculateRate() internal { rewardRate = Reward.balanceOf(address(this)) / 26 weeks; // 6 months timeToCalculateRate = block.timestamp + 1 weeks; emit RewardRateCalculated(rewardRate); } /** * @dev External function to calculate the token Rate. */ function calculateRate() external nonReentrant { require( timeToCalculateRate <= block.timestamp, "Vault: Rate calculation not yet possible." ); _calculateRate(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"_Reward","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTeller","type":"address"},{"indexed":false,"internalType":"uint256","name":"priority","type":"uint256"}],"name":"NewTellerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"provider","type":"address"},{"indexed":true,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"ProviderPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardRate","type":"uint256"}],"name":"RewardRateCalculated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"teller","type":"address"},{"indexed":false,"internalType":"uint256","name":"newPriority","type":"uint256"}],"name":"TellerPriorityChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultDeployed","type":"event"},{"inputs":[],"name":"Reward","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_teller","type":"address"},{"internalType":"uint256","name":"_priority","type":"uint256"}],"name":"addTeller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"calculateRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teller","type":"address"},{"internalType":"uint256","name":"_newPriority","type":"uint256"}],"name":"changePriority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_provider","type":"address"},{"internalType":"uint256","name":"_providerTimeWeight","type":"uint256"},{"internalType":"uint256","name":"_totalWeight","type":"uint256"}],"name":"payProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"priorityFreeze","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"teller","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tellerPriority","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeToCalculateRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPriority","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162002165380380620021658339818101604052810190620000379190620001b5565b620000576200004b620000d260201b60201c565b620000da60201b60201c565b6001808190555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f07721fb6c5d9435909025a29cbd113a77342356237ee2955a748267aa712ff9760405160405180910390a1506200024e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620001af8162000234565b92915050565b600060208284031215620001ce57620001cd6200022f565b5b6000620001de848285016200019e565b91505092915050565b6000620001f4826200020f565b9050919050565b60006200020882620001e7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200023f81620001fb565b81146200024b57600080fd5b50565b611f07806200025e6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806392de4ea811610097578063e2e15f2e11610066578063e2e15f2e1461024e578063efca2eed1461026c578063f2fde38b1461028a578063f3b99e15146102a6576100f5565b806392de4ea8146101c65780639d3042ab146101f65780639d44c9b414610212578063b7b81b9814610230576100f5565b80637b0a47ee116100d35780637b0a47ee146101505780637c02f6dd1461016e5780638da5cb5b1461019e578063919beeb1146101bc576100f5565b806329851fd9146100fa5780636115355714610116578063715018a614610146575b600080fd5b610114600480360381019061010f919061132d565b6102c2565b005b610130600480360381019061012b91906112c0565b610498565b60405161013d919061189a565b60405180910390f35b61014e6104b0565b005b610158610538565b604051610165919061189a565b60405180910390f35b610188600480360381019061018391906112c0565b61053e565b604051610195919061189a565b60405180910390f35b6101a6610556565b6040516101b3919061165e565b60405180910390f35b6101c461057f565b005b6101e060048036038101906101db91906112c0565b610623565b6040516101ed91906116a2565b60405180910390f35b610210600480360381019061020b91906112ed565b610643565b005b61021a610969565b604051610227919061189a565b60405180910390f35b61023861096f565b604051610245919061189a565b60405180910390f35b610256610975565b60405161026391906116bd565b60405180910390f35b61027461099b565b604051610281919061189a565b60405180910390f35b6102a4600480360381019061029f91906112c0565b6109a1565b005b6102c060048036038101906102bb91906112ed565b610a99565b005b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661034e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103459061187a565b60405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548360075461039e919061196e565b6103a8919061196e565b90506000600654836103ba919061196e565b905060008082146103d45781836103d1919061193d565b90505b42600854116103e6576103e5610d8e565b5b80600960008282546103f891906118e7565b9250508190555061044c8682600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e9d9092919063ffffffff16565b808673ffffffffffffffffffffffffffffffffffffffff167fb72ef6a0e5a62f73e52dd5fa571d9f28d0d3c7895c4e1b60e5a8d01e879957ac60405160405180910390a3505050505050565b60056020528060005260406000206000915090505481565b6104b8610f23565b73ffffffffffffffffffffffffffffffffffffffff166104d6610556565b73ffffffffffffffffffffffffffffffffffffffff161461052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610523906117ba565b60405180910390fd5b6105366000610f2b565b565b60075481565b60046020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260015414156105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc9061185a565b60405180910390fd5b6002600181905550426008541115610612576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610609906117da565b60405180910390fd5b61061a610d8e565b60018081905550565b60036020528060005260406000206000915054906101000a900460ff1681565b61064b610f23565b73ffffffffffffffffffffffffffffffffffffffff16610669610556565b73ffffffffffffffffffffffffffffffffffffffff16146106bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b6906117ba565b60405180910390fd5b600115156106e28373ffffffffffffffffffffffffffffffffffffffff16610fef565b151514610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b9061171a565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a7906116fa565b60405180910390fd5b42600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610832576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108299061179a565b60405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818160065461088591906119c8565b61088f91906118e7565b60068190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062093a80426108e891906118e7565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f36e466081f5fa48bd6730dacfb4692e852f80a1e6f770a385db2075910e6ea26838360405161095c929190611679565b60405180910390a1505050565b60065481565b60085481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6109a9610f23565b73ffffffffffffffffffffffffffffffffffffffff166109c7610556565b73ffffffffffffffffffffffffffffffffffffffff1614610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906117ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a849061173a565b60405180910390fd5b610a9681610f2b565b50565b610aa1610f23565b73ffffffffffffffffffffffffffffffffffffffff16610abf610556565b73ffffffffffffffffffffffffffffffffffffffff1614610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c906117ba565b60405180910390fd5b60011515610b388373ffffffffffffffffffffffffffffffffffffffff16610fef565b151514610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b719061171a565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe9061175a565b60405180910390fd5b60008111610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c419061183a565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060066000828254610cf891906118e7565b9250508190555062093a8042610d0e91906118e7565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f065373c94c6a1043cae3f72bb93eb072d525631ebafe9c59ad8f2f01666f24c48282604051610d82929190611679565b60405180910390a15050565b62eff100600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ded919061165e565b60206040518083038186803b158015610e0557600080fd5b505afa158015610e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3d91906113ad565b610e47919061193d565b60078190555062093a8042610e5c91906118e7565b6008819055507fb8c3ec0fbe8b79a7579af59383365797b6b13166360ac3cc6648bce64ae2a38a600754604051610e93919061189a565b60405180910390a1565b610f1e8363a9059cbb60e01b8484604051602401610ebc929190611679565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611012565b505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000611074826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166110d99092919063ffffffff16565b90506000815111156110d457808060200190518101906110949190611380565b6110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca9061181a565b60405180910390fd5b5b505050565b60606110e884846000856110f1565b90509392505050565b606082471015611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d9061177a565b60405180910390fd5b61113f85610fef565b61117e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611175906117fa565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516111a79190611647565b60006040518083038185875af1925050503d80600081146111e4576040519150601f19603f3d011682016040523d82523d6000602084013e6111e9565b606091505b50915091506111f9828286611205565b92505050949350505050565b6060831561121557829050611265565b6000835111156112285782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c91906116d8565b60405180910390fd5b9392505050565b60008135905061127b81611e8c565b92915050565b60008151905061129081611ea3565b92915050565b6000813590506112a581611eba565b92915050565b6000815190506112ba81611eba565b92915050565b6000602082840312156112d6576112d5611b0b565b5b60006112e48482850161126c565b91505092915050565b6000806040838503121561130457611303611b0b565b5b60006113128582860161126c565b925050602061132385828601611296565b9150509250929050565b60008060006060848603121561134657611345611b0b565b5b60006113548682870161126c565b935050602061136586828701611296565b925050604061137686828701611296565b9150509250925092565b60006020828403121561139657611395611b0b565b5b60006113a484828501611281565b91505092915050565b6000602082840312156113c3576113c2611b0b565b5b60006113d1848285016112ab565b91505092915050565b6113e3816119fc565b82525050565b6113f281611a0e565b82525050565b6000611403826118b5565b61140d81856118cb565b935061141d818560208601611a7a565b80840191505092915050565b61143281611a44565b82525050565b6000611443826118c0565b61144d81856118d6565b935061145d818560208601611a7a565b61146681611b10565b840191505092915050565b600061147e6028836118d6565b915061148982611b21565b604082019050919050565b60006114a16021836118d6565b91506114ac82611b70565b604082019050919050565b60006114c46026836118d6565b91506114cf82611bbf565b604082019050919050565b60006114e76022836118d6565b91506114f282611c0e565b604082019050919050565b600061150a6026836118d6565b915061151582611c5d565b604082019050919050565b600061152d602a836118d6565b915061153882611cac565b604082019050919050565b60006115506020836118d6565b915061155b82611cfb565b602082019050919050565b60006115736029836118d6565b915061157e82611d24565b604082019050919050565b6000611596601d836118d6565b91506115a182611d73565b602082019050919050565b60006115b9602a836118d6565b91506115c482611d9c565b604082019050919050565b60006115dc602c836118d6565b91506115e782611deb565b604082019050919050565b60006115ff601f836118d6565b915061160a82611e3a565b602082019050919050565b6000611622601e836118d6565b915061162d82611e63565b602082019050919050565b61164181611a3a565b82525050565b600061165382846113f8565b915081905092915050565b600060208201905061167360008301846113da565b92915050565b600060408201905061168e60008301856113da565b61169b6020830184611638565b9392505050565b60006020820190506116b760008301846113e9565b92915050565b60006020820190506116d26000830184611429565b92915050565b600060208201905081810360008301526116f28184611438565b905092915050565b6000602082019050818103600083015261171381611471565b9050919050565b6000602082019050818103600083015261173381611494565b9050919050565b60006020820190508181036000830152611753816114b7565b9050919050565b60006020820190508181036000830152611773816114da565b9050919050565b60006020820190508181036000830152611793816114fd565b9050919050565b600060208201905081810360008301526117b381611520565b9050919050565b600060208201905081810360008301526117d381611543565b9050919050565b600060208201905081810360008301526117f381611566565b9050919050565b6000602082019050818103600083015261181381611589565b9050919050565b60006020820190508181036000830152611833816115ac565b9050919050565b60006020820190508181036000830152611853816115cf565b9050919050565b60006020820190508181036000830152611873816115f2565b9050919050565b6000602082019050818103600083015261189381611615565b9050919050565b60006020820190506118af6000830184611638565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006118f282611a3a565b91506118fd83611a3a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561193257611931611aad565b5b828201905092915050565b600061194882611a3a565b915061195383611a3a565b92508261196357611962611adc565b5b828204905092915050565b600061197982611a3a565b915061198483611a3a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156119bd576119bc611aad565b5b828202905092915050565b60006119d382611a3a565b91506119de83611a3a565b9250828210156119f1576119f0611aad565b5b828203905092915050565b6000611a0782611a1a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611a4f82611a56565b9050919050565b6000611a6182611a68565b9050919050565b6000611a7382611a1a565b9050919050565b60005b83811015611a98578082015181840152602081019050611a7d565b83811115611aa7576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5661756c743a2050726f76696465642061646472657373206973206e6f74206160008201527f2074656c6c65722e000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a2041646472657373206973206e6f74206120636f6e747261637460008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a2043616c6c657220697320616c726561647920612074656c6c6560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a205072696f7269747920667265657a65206973207374696c6c2060008201527f696e206566666563742e00000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5661756c743a20526174652063616c63756c6174696f6e206e6f74207965742060008201527f706f737369626c652e0000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5661756c743a205072696f726974792073686f756c642062652067726561746560008201527f72207468616e207a65726f2e0000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f5661756c743a2043616c6c6572206973206e6f7420612074656c6c65722e0000600082015250565b611e95816119fc565b8114611ea057600080fd5b50565b611eac81611a0e565b8114611eb757600080fd5b50565b611ec381611a3a565b8114611ece57600080fd5b5056fea2646970667358221220746dc74257e16240bb9e96574c9fdaa0193013de3fd5aa06a9b667cf1c71d3f464736f6c634300080700330000000000000000000000000913ddae242839f8995c0375493f9a1a3bddc977
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806392de4ea811610097578063e2e15f2e11610066578063e2e15f2e1461024e578063efca2eed1461026c578063f2fde38b1461028a578063f3b99e15146102a6576100f5565b806392de4ea8146101c65780639d3042ab146101f65780639d44c9b414610212578063b7b81b9814610230576100f5565b80637b0a47ee116100d35780637b0a47ee146101505780637c02f6dd1461016e5780638da5cb5b1461019e578063919beeb1146101bc576100f5565b806329851fd9146100fa5780636115355714610116578063715018a614610146575b600080fd5b610114600480360381019061010f919061132d565b6102c2565b005b610130600480360381019061012b91906112c0565b610498565b60405161013d919061189a565b60405180910390f35b61014e6104b0565b005b610158610538565b604051610165919061189a565b60405180910390f35b610188600480360381019061018391906112c0565b61053e565b604051610195919061189a565b60405180910390f35b6101a6610556565b6040516101b3919061165e565b60405180910390f35b6101c461057f565b005b6101e060048036038101906101db91906112c0565b610623565b6040516101ed91906116a2565b60405180910390f35b610210600480360381019061020b91906112ed565b610643565b005b61021a610969565b604051610227919061189a565b60405180910390f35b61023861096f565b604051610245919061189a565b60405180910390f35b610256610975565b60405161026391906116bd565b60405180910390f35b61027461099b565b604051610281919061189a565b60405180910390f35b6102a4600480360381019061029f91906112c0565b6109a1565b005b6102c060048036038101906102bb91906112ed565b610a99565b005b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661034e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103459061187a565b60405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548360075461039e919061196e565b6103a8919061196e565b90506000600654836103ba919061196e565b905060008082146103d45781836103d1919061193d565b90505b42600854116103e6576103e5610d8e565b5b80600960008282546103f891906118e7565b9250508190555061044c8682600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e9d9092919063ffffffff16565b808673ffffffffffffffffffffffffffffffffffffffff167fb72ef6a0e5a62f73e52dd5fa571d9f28d0d3c7895c4e1b60e5a8d01e879957ac60405160405180910390a3505050505050565b60056020528060005260406000206000915090505481565b6104b8610f23565b73ffffffffffffffffffffffffffffffffffffffff166104d6610556565b73ffffffffffffffffffffffffffffffffffffffff161461052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610523906117ba565b60405180910390fd5b6105366000610f2b565b565b60075481565b60046020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260015414156105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc9061185a565b60405180910390fd5b6002600181905550426008541115610612576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610609906117da565b60405180910390fd5b61061a610d8e565b60018081905550565b60036020528060005260406000206000915054906101000a900460ff1681565b61064b610f23565b73ffffffffffffffffffffffffffffffffffffffff16610669610556565b73ffffffffffffffffffffffffffffffffffffffff16146106bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b6906117ba565b60405180910390fd5b600115156106e28373ffffffffffffffffffffffffffffffffffffffff16610fef565b151514610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b9061171a565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a7906116fa565b60405180910390fd5b42600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610832576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108299061179a565b60405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818160065461088591906119c8565b61088f91906118e7565b60068190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062093a80426108e891906118e7565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f36e466081f5fa48bd6730dacfb4692e852f80a1e6f770a385db2075910e6ea26838360405161095c929190611679565b60405180910390a1505050565b60065481565b60085481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6109a9610f23565b73ffffffffffffffffffffffffffffffffffffffff166109c7610556565b73ffffffffffffffffffffffffffffffffffffffff1614610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906117ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a849061173a565b60405180910390fd5b610a9681610f2b565b50565b610aa1610f23565b73ffffffffffffffffffffffffffffffffffffffff16610abf610556565b73ffffffffffffffffffffffffffffffffffffffff1614610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c906117ba565b60405180910390fd5b60011515610b388373ffffffffffffffffffffffffffffffffffffffff16610fef565b151514610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b719061171a565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe9061175a565b60405180910390fd5b60008111610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c419061183a565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060066000828254610cf891906118e7565b9250508190555062093a8042610d0e91906118e7565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f065373c94c6a1043cae3f72bb93eb072d525631ebafe9c59ad8f2f01666f24c48282604051610d82929190611679565b60405180910390a15050565b62eff100600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ded919061165e565b60206040518083038186803b158015610e0557600080fd5b505afa158015610e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3d91906113ad565b610e47919061193d565b60078190555062093a8042610e5c91906118e7565b6008819055507fb8c3ec0fbe8b79a7579af59383365797b6b13166360ac3cc6648bce64ae2a38a600754604051610e93919061189a565b60405180910390a1565b610f1e8363a9059cbb60e01b8484604051602401610ebc929190611679565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611012565b505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000611074826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166110d99092919063ffffffff16565b90506000815111156110d457808060200190518101906110949190611380565b6110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca9061181a565b60405180910390fd5b5b505050565b60606110e884846000856110f1565b90509392505050565b606082471015611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d9061177a565b60405180910390fd5b61113f85610fef565b61117e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611175906117fa565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516111a79190611647565b60006040518083038185875af1925050503d80600081146111e4576040519150601f19603f3d011682016040523d82523d6000602084013e6111e9565b606091505b50915091506111f9828286611205565b92505050949350505050565b6060831561121557829050611265565b6000835111156112285782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c91906116d8565b60405180910390fd5b9392505050565b60008135905061127b81611e8c565b92915050565b60008151905061129081611ea3565b92915050565b6000813590506112a581611eba565b92915050565b6000815190506112ba81611eba565b92915050565b6000602082840312156112d6576112d5611b0b565b5b60006112e48482850161126c565b91505092915050565b6000806040838503121561130457611303611b0b565b5b60006113128582860161126c565b925050602061132385828601611296565b9150509250929050565b60008060006060848603121561134657611345611b0b565b5b60006113548682870161126c565b935050602061136586828701611296565b925050604061137686828701611296565b9150509250925092565b60006020828403121561139657611395611b0b565b5b60006113a484828501611281565b91505092915050565b6000602082840312156113c3576113c2611b0b565b5b60006113d1848285016112ab565b91505092915050565b6113e3816119fc565b82525050565b6113f281611a0e565b82525050565b6000611403826118b5565b61140d81856118cb565b935061141d818560208601611a7a565b80840191505092915050565b61143281611a44565b82525050565b6000611443826118c0565b61144d81856118d6565b935061145d818560208601611a7a565b61146681611b10565b840191505092915050565b600061147e6028836118d6565b915061148982611b21565b604082019050919050565b60006114a16021836118d6565b91506114ac82611b70565b604082019050919050565b60006114c46026836118d6565b91506114cf82611bbf565b604082019050919050565b60006114e76022836118d6565b91506114f282611c0e565b604082019050919050565b600061150a6026836118d6565b915061151582611c5d565b604082019050919050565b600061152d602a836118d6565b915061153882611cac565b604082019050919050565b60006115506020836118d6565b915061155b82611cfb565b602082019050919050565b60006115736029836118d6565b915061157e82611d24565b604082019050919050565b6000611596601d836118d6565b91506115a182611d73565b602082019050919050565b60006115b9602a836118d6565b91506115c482611d9c565b604082019050919050565b60006115dc602c836118d6565b91506115e782611deb565b604082019050919050565b60006115ff601f836118d6565b915061160a82611e3a565b602082019050919050565b6000611622601e836118d6565b915061162d82611e63565b602082019050919050565b61164181611a3a565b82525050565b600061165382846113f8565b915081905092915050565b600060208201905061167360008301846113da565b92915050565b600060408201905061168e60008301856113da565b61169b6020830184611638565b9392505050565b60006020820190506116b760008301846113e9565b92915050565b60006020820190506116d26000830184611429565b92915050565b600060208201905081810360008301526116f28184611438565b905092915050565b6000602082019050818103600083015261171381611471565b9050919050565b6000602082019050818103600083015261173381611494565b9050919050565b60006020820190508181036000830152611753816114b7565b9050919050565b60006020820190508181036000830152611773816114da565b9050919050565b60006020820190508181036000830152611793816114fd565b9050919050565b600060208201905081810360008301526117b381611520565b9050919050565b600060208201905081810360008301526117d381611543565b9050919050565b600060208201905081810360008301526117f381611566565b9050919050565b6000602082019050818103600083015261181381611589565b9050919050565b60006020820190508181036000830152611833816115ac565b9050919050565b60006020820190508181036000830152611853816115cf565b9050919050565b60006020820190508181036000830152611873816115f2565b9050919050565b6000602082019050818103600083015261189381611615565b9050919050565b60006020820190506118af6000830184611638565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006118f282611a3a565b91506118fd83611a3a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561193257611931611aad565b5b828201905092915050565b600061194882611a3a565b915061195383611a3a565b92508261196357611962611adc565b5b828204905092915050565b600061197982611a3a565b915061198483611a3a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156119bd576119bc611aad565b5b828202905092915050565b60006119d382611a3a565b91506119de83611a3a565b9250828210156119f1576119f0611aad565b5b828203905092915050565b6000611a0782611a1a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611a4f82611a56565b9050919050565b6000611a6182611a68565b9050919050565b6000611a7382611a1a565b9050919050565b60005b83811015611a98578082015181840152602081019050611a7d565b83811115611aa7576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5661756c743a2050726f76696465642061646472657373206973206e6f74206160008201527f2074656c6c65722e000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a2041646472657373206973206e6f74206120636f6e747261637460008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a2043616c6c657220697320616c726561647920612074656c6c6560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a205072696f7269747920667265657a65206973207374696c6c2060008201527f696e206566666563742e00000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5661756c743a20526174652063616c63756c6174696f6e206e6f74207965742060008201527f706f737369626c652e0000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5661756c743a205072696f726974792073686f756c642062652067726561746560008201527f72207468616e207a65726f2e0000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f5661756c743a2043616c6c6572206973206e6f7420612074656c6c65722e0000600082015250565b611e95816119fc565b8114611ea057600080fd5b50565b611eac81611a0e565b8114611eb757600080fd5b50565b611ec381611a3a565b8114611ece57600080fd5b5056fea2646970667358221220746dc74257e16240bb9e96574c9fdaa0193013de3fd5aa06a9b667cf1c71d3f464736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000913ddae242839f8995c0375493f9a1a3bddc977
-----Decoded View---------------
Arg [0] : _Reward (address): 0x0913dDAE242839f8995c0375493f9a1A3Bddc977
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000913ddae242839f8995c0375493f9a1a3bddc977
Deployed Bytecode Sourcemap
21654:4826:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25170:684;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22514:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13868:103;;;:::i;:::-;;22607:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22458:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13217:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26255:222;;;:::i;:::-;;22413:38;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24128:765;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22572:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22639:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22384:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22680:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14126:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23306:590;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25170:684;22761:6;:18;22768:10;22761:18;;;;;;;;;;;;;;;;;;;;;;;;;22753:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;25326:17:::1;25407:14;:26;25422:10;25407:26;;;;;;;;;;;;;;;;25372:19;25346:10;;:45;;;;:::i;:::-;:87;;;;:::i;:::-;25326:107;;25444:19;25481:13;;25466:12;:28;;;;:::i;:::-;25444:50;;25507:14;25551:1:::0;25536:11:::1;:16;25532:81;;25590:11;25578:9;:23;;;;:::i;:::-;25569:32;;25532:81;25652:15;25629:19;;:38;25625:87;;25684:16;:14;:16::i;:::-;25625:87;25742:6;25722:16;;:26;;;;;;;:::i;:::-;;;;;;;;25759:38;25779:9;25790:6;25759;;;;;;;;;;;:19;;;;:38;;;;;:::i;:::-;25839:6;25828:9;25815:31;;;;;;;;;;;;25315:539;;;25170:684:::0;;;:::o;22514:49::-;;;;;;;;;;;;;;;;;:::o;13868:103::-;13448:12;:10;:12::i;:::-;13437:23;;:7;:5;:7::i;:::-;:23;;;13429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13933:30:::1;13960:1;13933:18;:30::i;:::-;13868:103::o:0;22607:25::-;;;;:::o;22458:49::-;;;;;;;;;;;;;;;;;:::o;13217:87::-;13263:7;13290:6;;;;;;;;;;;13283:13;;13217:87;:::o;26255:222::-;1812:1;2410:7;;:19;;2402:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1812:1;2543:7;:18;;;;26358:15:::1;26335:19;;:38;;26313:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;26453:16;:14;:16::i;:::-;1768:1:::0;2722:7;:22;;;;26255:222::o;22413:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;24128:765::-;13448:12;:10;:12::i;:::-;13437:23;;:7;:5;:7::i;:::-;:23;;;13429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24290:4:::1;24266:28;;:20;:7;:18;;;:20::i;:::-;:28;;;24244:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;24374:6;:15;24381:7;24374:15;;;;;;;;;;;;;;;;;;;;;;;;;24366:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24494:15;24467:14;:23;24482:7;24467:23;;;;;;;;;;;;;;;;:42;;24445:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;24592:20;24615:14;:23;24630:7;24615:23;;;;;;;;;;;;;;;;24592:46;;24698:12;24682;24666:13;;:28;;;;:::i;:::-;24665:45;;;;:::i;:::-;24649:13;:61;;;;24747:12;24721:14;:23;24736:7;24721:23;;;;;;;;;;;;;;;:38;;;;24816:7;24798:15;:25;;;;:::i;:::-;24772:14;:23;24787:7;24772:23;;;;;;;;;;;;;;;:51;;;;24841:44;24863:7;24872:12;24841:44;;;;;;;:::i;:::-;;;;;;;;24233:660;24128:765:::0;;:::o;22572:28::-;;;;:::o;22639:34::-;;;;:::o;22384:20::-;;;;;;;;;;;;;:::o;22680:31::-;;;;:::o;14126:201::-;13448:12;:10;:12::i;:::-;13437:23;;:7;:5;:7::i;:::-;:23;;;13429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14235:1:::1;14215:22;;:8;:22;;;;14207:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14291:28;14310:8;14291:18;:28::i;:::-;14126:201:::0;:::o;23306:590::-;13448:12;:10;:12::i;:::-;13437:23;;:7;:5;:7::i;:::-;:23;;;13429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23437:4:::1;23413:28;;:20;:7;:18;;;:20::i;:::-;:28;;;23391:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;23522:6;:15;23529:7;23522:15;;;;;;;;;;;;;;;;;;;;;;;;;23521:16;23513:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23607:1;23595:9;:13;23587:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23688:4;23670:6;:15;23677:7;23670:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;23729:9;23703:14;:23;23718:7;23703:23;;;;;;;;;;;;;;;:35;;;;23766:9;23749:13;;:26;;;;;;;:::i;:::-;;;;;;;;23830:6;23812:15;:24;;;;:::i;:::-;23786:14;:23;23801:7;23786:23;;;;;;;;;;;;;;;:50;;;;23854:34;23869:7;23878:9;23854:34;;;;;;;:::i;:::-;;;;;;;;23306:590:::0;;:::o;25940:229::-;26033:8;25999:6;;;;;;;;;;;:16;;;26024:4;25999:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;;;:::i;:::-;25986:10;:55;;;;26104:7;26086:15;:25;;;;:::i;:::-;26064:19;:47;;;;26129:32;26150:10;;26129:32;;;;;;:::i;:::-;;;;;;;;25940:229::o;18261:211::-;18378:86;18398:5;18428:23;;;18453:2;18457:5;18405:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18378:19;:86::i;:::-;18261:211;;;:::o;11941:98::-;11994:7;12021:10;12014:17;;11941:98;:::o;14487:191::-;14561:16;14580:6;;;;;;;;;;;14561:25;;14606:8;14597:6;;:17;;;;;;;;;;;;;;;;;;14661:8;14630:40;;14651:8;14630:40;;;;;;;;;;;;14550:128;14487:191;:::o;3992:326::-;4052:4;4309:1;4287:7;:19;;;:23;4280:30;;3992:326;;;:::o;20834:716::-;21258:23;21284:69;21312:4;21284:69;;;;;;;;;;;;;;;;;21292:5;21284:27;;;;:69;;;;;:::i;:::-;21258:95;;21388:1;21368:10;:17;:21;21364:179;;;21465:10;21454:30;;;;;;;;;;;;:::i;:::-;21446:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21364:179;20904:646;20834:716;;:::o;6737:229::-;6874:12;6906:52;6928:6;6936:4;6942:1;6945:12;6906:21;:52::i;:::-;6899:59;;6737:229;;;;;:::o;7857:510::-;8027:12;8085:5;8060:21;:30;;8052:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8152:18;8163:6;8152:10;:18::i;:::-;8144:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8218:12;8232:23;8259:6;:11;;8278:5;8285:4;8259:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8217:73;;;;8308:51;8325:7;8334:10;8346:12;8308:16;:51::i;:::-;8301:58;;;;7857:510;;;;;;:::o;10543:712::-;10693:12;10722:7;10718:530;;;10753:10;10746:17;;;;10718:530;10887:1;10867:10;:17;:21;10863:374;;;11065:10;11059:17;11126:15;11113:10;11109:2;11105:19;11098:44;10863:374;11208:12;11201:20;;;;;;;;;;;:::i;:::-;;;;;;;;10543:712;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:137::-;206:5;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;152:137;;;;:::o;295:139::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;295:139;;;;:::o;440:143::-;497:5;528:6;522:13;513:22;;544:33;571:5;544:33;:::i;:::-;440:143;;;;:::o;589:329::-;648:6;697:2;685:9;676:7;672:23;668:32;665:119;;;703:79;;:::i;:::-;665:119;823:1;848:53;893:7;884:6;873:9;869:22;848:53;:::i;:::-;838:63;;794:117;589:329;;;;:::o;924:474::-;992:6;1000;1049:2;1037:9;1028:7;1024:23;1020:32;1017:119;;;1055:79;;:::i;:::-;1017:119;1175:1;1200:53;1245:7;1236:6;1225:9;1221:22;1200:53;:::i;:::-;1190:63;;1146:117;1302:2;1328:53;1373:7;1364:6;1353:9;1349:22;1328:53;:::i;:::-;1318:63;;1273:118;924:474;;;;;:::o;1404:619::-;1481:6;1489;1497;1546:2;1534:9;1525:7;1521:23;1517:32;1514:119;;;1552:79;;:::i;:::-;1514:119;1672:1;1697:53;1742:7;1733:6;1722:9;1718:22;1697:53;:::i;:::-;1687:63;;1643:117;1799:2;1825:53;1870:7;1861:6;1850:9;1846:22;1825:53;:::i;:::-;1815:63;;1770:118;1927:2;1953:53;1998:7;1989:6;1978:9;1974:22;1953:53;:::i;:::-;1943:63;;1898:118;1404:619;;;;;:::o;2029:345::-;2096:6;2145:2;2133:9;2124:7;2120:23;2116:32;2113:119;;;2151:79;;:::i;:::-;2113:119;2271:1;2296:61;2349:7;2340:6;2329:9;2325:22;2296:61;:::i;:::-;2286:71;;2242:125;2029:345;;;;:::o;2380:351::-;2450:6;2499:2;2487:9;2478:7;2474:23;2470:32;2467:119;;;2505:79;;:::i;:::-;2467:119;2625:1;2650:64;2706:7;2697:6;2686:9;2682:22;2650:64;:::i;:::-;2640:74;;2596:128;2380:351;;;;:::o;2737:118::-;2824:24;2842:5;2824:24;:::i;:::-;2819:3;2812:37;2737:118;;:::o;2861:109::-;2942:21;2957:5;2942:21;:::i;:::-;2937:3;2930:34;2861:109;;:::o;2976:373::-;3080:3;3108:38;3140:5;3108:38;:::i;:::-;3162:88;3243:6;3238:3;3162:88;:::i;:::-;3155:95;;3259:52;3304:6;3299:3;3292:4;3285:5;3281:16;3259:52;:::i;:::-;3336:6;3331:3;3327:16;3320:23;;3084:265;2976:373;;;;:::o;3355:159::-;3456:51;3501:5;3456:51;:::i;:::-;3451:3;3444:64;3355:159;;:::o;3520:364::-;3608:3;3636:39;3669:5;3636:39;:::i;:::-;3691:71;3755:6;3750:3;3691:71;:::i;:::-;3684:78;;3771:52;3816:6;3811:3;3804:4;3797:5;3793:16;3771:52;:::i;:::-;3848:29;3870:6;3848:29;:::i;:::-;3843:3;3839:39;3832:46;;3612:272;3520:364;;;;:::o;3890:366::-;4032:3;4053:67;4117:2;4112:3;4053:67;:::i;:::-;4046:74;;4129:93;4218:3;4129:93;:::i;:::-;4247:2;4242:3;4238:12;4231:19;;3890:366;;;:::o;4262:::-;4404:3;4425:67;4489:2;4484:3;4425:67;:::i;:::-;4418:74;;4501:93;4590:3;4501:93;:::i;:::-;4619:2;4614:3;4610:12;4603:19;;4262:366;;;:::o;4634:::-;4776:3;4797:67;4861:2;4856:3;4797:67;:::i;:::-;4790:74;;4873:93;4962:3;4873:93;:::i;:::-;4991:2;4986:3;4982:12;4975:19;;4634:366;;;:::o;5006:::-;5148:3;5169:67;5233:2;5228:3;5169:67;:::i;:::-;5162:74;;5245:93;5334:3;5245:93;:::i;:::-;5363:2;5358:3;5354:12;5347:19;;5006:366;;;:::o;5378:::-;5520:3;5541:67;5605:2;5600:3;5541:67;:::i;:::-;5534:74;;5617:93;5706:3;5617:93;:::i;:::-;5735:2;5730:3;5726:12;5719:19;;5378:366;;;:::o;5750:::-;5892:3;5913:67;5977:2;5972:3;5913:67;:::i;:::-;5906:74;;5989:93;6078:3;5989:93;:::i;:::-;6107:2;6102:3;6098:12;6091:19;;5750:366;;;:::o;6122:::-;6264:3;6285:67;6349:2;6344:3;6285:67;:::i;:::-;6278:74;;6361:93;6450:3;6361:93;:::i;:::-;6479:2;6474:3;6470:12;6463:19;;6122:366;;;:::o;6494:::-;6636:3;6657:67;6721:2;6716:3;6657:67;:::i;:::-;6650:74;;6733:93;6822:3;6733:93;:::i;:::-;6851:2;6846:3;6842:12;6835:19;;6494:366;;;:::o;6866:::-;7008:3;7029:67;7093:2;7088:3;7029:67;:::i;:::-;7022:74;;7105:93;7194:3;7105:93;:::i;:::-;7223:2;7218:3;7214:12;7207:19;;6866:366;;;:::o;7238:::-;7380:3;7401:67;7465:2;7460:3;7401:67;:::i;:::-;7394:74;;7477:93;7566:3;7477:93;:::i;:::-;7595:2;7590:3;7586:12;7579:19;;7238:366;;;:::o;7610:::-;7752:3;7773:67;7837:2;7832:3;7773:67;:::i;:::-;7766:74;;7849:93;7938:3;7849:93;:::i;:::-;7967:2;7962:3;7958:12;7951:19;;7610:366;;;:::o;7982:::-;8124:3;8145:67;8209:2;8204:3;8145:67;:::i;:::-;8138:74;;8221:93;8310:3;8221:93;:::i;:::-;8339:2;8334:3;8330:12;8323:19;;7982:366;;;:::o;8354:::-;8496:3;8517:67;8581:2;8576:3;8517:67;:::i;:::-;8510:74;;8593:93;8682:3;8593:93;:::i;:::-;8711:2;8706:3;8702:12;8695:19;;8354:366;;;:::o;8726:118::-;8813:24;8831:5;8813:24;:::i;:::-;8808:3;8801:37;8726:118;;:::o;8850:271::-;8980:3;9002:93;9091:3;9082:6;9002:93;:::i;:::-;8995:100;;9112:3;9105:10;;8850:271;;;;:::o;9127:222::-;9220:4;9258:2;9247:9;9243:18;9235:26;;9271:71;9339:1;9328:9;9324:17;9315:6;9271:71;:::i;:::-;9127:222;;;;:::o;9355:332::-;9476:4;9514:2;9503:9;9499:18;9491:26;;9527:71;9595:1;9584:9;9580:17;9571:6;9527:71;:::i;:::-;9608:72;9676:2;9665:9;9661:18;9652:6;9608:72;:::i;:::-;9355:332;;;;;:::o;9693:210::-;9780:4;9818:2;9807:9;9803:18;9795:26;;9831:65;9893:1;9882:9;9878:17;9869:6;9831:65;:::i;:::-;9693:210;;;;:::o;9909:250::-;10016:4;10054:2;10043:9;10039:18;10031:26;;10067:85;10149:1;10138:9;10134:17;10125:6;10067:85;:::i;:::-;9909:250;;;;:::o;10165:313::-;10278:4;10316:2;10305:9;10301:18;10293:26;;10365:9;10359:4;10355:20;10351:1;10340:9;10336:17;10329:47;10393:78;10466:4;10457:6;10393:78;:::i;:::-;10385:86;;10165:313;;;;:::o;10484:419::-;10650:4;10688:2;10677:9;10673:18;10665:26;;10737:9;10731:4;10727:20;10723:1;10712:9;10708:17;10701:47;10765:131;10891:4;10765:131;:::i;:::-;10757:139;;10484:419;;;:::o;10909:::-;11075:4;11113:2;11102:9;11098:18;11090:26;;11162:9;11156:4;11152:20;11148:1;11137:9;11133:17;11126:47;11190:131;11316:4;11190:131;:::i;:::-;11182:139;;10909:419;;;:::o;11334:::-;11500:4;11538:2;11527:9;11523:18;11515:26;;11587:9;11581:4;11577:20;11573:1;11562:9;11558:17;11551:47;11615:131;11741:4;11615:131;:::i;:::-;11607:139;;11334:419;;;:::o;11759:::-;11925:4;11963:2;11952:9;11948:18;11940:26;;12012:9;12006:4;12002:20;11998:1;11987:9;11983:17;11976:47;12040:131;12166:4;12040:131;:::i;:::-;12032:139;;11759:419;;;:::o;12184:::-;12350:4;12388:2;12377:9;12373:18;12365:26;;12437:9;12431:4;12427:20;12423:1;12412:9;12408:17;12401:47;12465:131;12591:4;12465:131;:::i;:::-;12457:139;;12184:419;;;:::o;12609:::-;12775:4;12813:2;12802:9;12798:18;12790:26;;12862:9;12856:4;12852:20;12848:1;12837:9;12833:17;12826:47;12890:131;13016:4;12890:131;:::i;:::-;12882:139;;12609:419;;;:::o;13034:::-;13200:4;13238:2;13227:9;13223:18;13215:26;;13287:9;13281:4;13277:20;13273:1;13262:9;13258:17;13251:47;13315:131;13441:4;13315:131;:::i;:::-;13307:139;;13034:419;;;:::o;13459:::-;13625:4;13663:2;13652:9;13648:18;13640:26;;13712:9;13706:4;13702:20;13698:1;13687:9;13683:17;13676:47;13740:131;13866:4;13740:131;:::i;:::-;13732:139;;13459:419;;;:::o;13884:::-;14050:4;14088:2;14077:9;14073:18;14065:26;;14137:9;14131:4;14127:20;14123:1;14112:9;14108:17;14101:47;14165:131;14291:4;14165:131;:::i;:::-;14157:139;;13884:419;;;:::o;14309:::-;14475:4;14513:2;14502:9;14498:18;14490:26;;14562:9;14556:4;14552:20;14548:1;14537:9;14533:17;14526:47;14590:131;14716:4;14590:131;:::i;:::-;14582:139;;14309:419;;;:::o;14734:::-;14900:4;14938:2;14927:9;14923:18;14915:26;;14987:9;14981:4;14977:20;14973:1;14962:9;14958:17;14951:47;15015:131;15141:4;15015:131;:::i;:::-;15007:139;;14734:419;;;:::o;15159:::-;15325:4;15363:2;15352:9;15348:18;15340:26;;15412:9;15406:4;15402:20;15398:1;15387:9;15383:17;15376:47;15440:131;15566:4;15440:131;:::i;:::-;15432:139;;15159:419;;;:::o;15584:::-;15750:4;15788:2;15777:9;15773:18;15765:26;;15837:9;15831:4;15827:20;15823:1;15812:9;15808:17;15801:47;15865:131;15991:4;15865:131;:::i;:::-;15857:139;;15584:419;;;:::o;16009:222::-;16102:4;16140:2;16129:9;16125:18;16117:26;;16153:71;16221:1;16210:9;16206:17;16197:6;16153:71;:::i;:::-;16009:222;;;;:::o;16318:98::-;16369:6;16403:5;16397:12;16387:22;;16318:98;;;:::o;16422:99::-;16474:6;16508:5;16502:12;16492:22;;16422:99;;;:::o;16527:147::-;16628:11;16665:3;16650:18;;16527:147;;;;:::o;16680:169::-;16764:11;16798:6;16793:3;16786:19;16838:4;16833:3;16829:14;16814:29;;16680:169;;;;:::o;16855:305::-;16895:3;16914:20;16932:1;16914:20;:::i;:::-;16909:25;;16948:20;16966:1;16948:20;:::i;:::-;16943:25;;17102:1;17034:66;17030:74;17027:1;17024:81;17021:107;;;17108:18;;:::i;:::-;17021:107;17152:1;17149;17145:9;17138:16;;16855:305;;;;:::o;17166:185::-;17206:1;17223:20;17241:1;17223:20;:::i;:::-;17218:25;;17257:20;17275:1;17257:20;:::i;:::-;17252:25;;17296:1;17286:35;;17301:18;;:::i;:::-;17286:35;17343:1;17340;17336:9;17331:14;;17166:185;;;;:::o;17357:348::-;17397:7;17420:20;17438:1;17420:20;:::i;:::-;17415:25;;17454:20;17472:1;17454:20;:::i;:::-;17449:25;;17642:1;17574:66;17570:74;17567:1;17564:81;17559:1;17552:9;17545:17;17541:105;17538:131;;;17649:18;;:::i;:::-;17538:131;17697:1;17694;17690:9;17679:20;;17357:348;;;;:::o;17711:191::-;17751:4;17771:20;17789:1;17771:20;:::i;:::-;17766:25;;17805:20;17823:1;17805:20;:::i;:::-;17800:25;;17844:1;17841;17838:8;17835:34;;;17849:18;;:::i;:::-;17835:34;17894:1;17891;17887:9;17879:17;;17711:191;;;;:::o;17908:96::-;17945:7;17974:24;17992:5;17974:24;:::i;:::-;17963:35;;17908:96;;;:::o;18010:90::-;18044:7;18087:5;18080:13;18073:21;18062:32;;18010:90;;;:::o;18106:126::-;18143:7;18183:42;18176:5;18172:54;18161:65;;18106:126;;;:::o;18238:77::-;18275:7;18304:5;18293:16;;18238:77;;;:::o;18321:140::-;18385:9;18418:37;18449:5;18418:37;:::i;:::-;18405:50;;18321:140;;;:::o;18467:126::-;18517:9;18550:37;18581:5;18550:37;:::i;:::-;18537:50;;18467:126;;;:::o;18599:113::-;18649:9;18682:24;18700:5;18682:24;:::i;:::-;18669:37;;18599:113;;;:::o;18718:307::-;18786:1;18796:113;18810:6;18807:1;18804:13;18796:113;;;18895:1;18890:3;18886:11;18880:18;18876:1;18871:3;18867:11;18860:39;18832:2;18829:1;18825:10;18820:15;;18796:113;;;18927:6;18924:1;18921:13;18918:101;;;19007:1;18998:6;18993:3;18989:16;18982:27;18918:101;18767:258;18718:307;;;:::o;19031:180::-;19079:77;19076:1;19069:88;19176:4;19173:1;19166:15;19200:4;19197:1;19190:15;19217:180;19265:77;19262:1;19255:88;19362:4;19359:1;19352:15;19386:4;19383:1;19376:15;19526:117;19635:1;19632;19625:12;19649:102;19690:6;19741:2;19737:7;19732:2;19725:5;19721:14;19717:28;19707:38;;19649:102;;;:::o;19757:227::-;19897:34;19893:1;19885:6;19881:14;19874:58;19966:10;19961:2;19953:6;19949:15;19942:35;19757:227;:::o;19990:220::-;20130:34;20126:1;20118:6;20114:14;20107:58;20199:3;20194:2;20186:6;20182:15;20175:28;19990:220;:::o;20216:225::-;20356:34;20352:1;20344:6;20340:14;20333:58;20425:8;20420:2;20412:6;20408:15;20401:33;20216:225;:::o;20447:221::-;20587:34;20583:1;20575:6;20571:14;20564:58;20656:4;20651:2;20643:6;20639:15;20632:29;20447:221;:::o;20674:225::-;20814:34;20810:1;20802:6;20798:14;20791:58;20883:8;20878:2;20870:6;20866:15;20859:33;20674:225;:::o;20905:229::-;21045:34;21041:1;21033:6;21029:14;21022:58;21114:12;21109:2;21101:6;21097:15;21090:37;20905:229;:::o;21140:182::-;21280:34;21276:1;21268:6;21264:14;21257:58;21140:182;:::o;21328:228::-;21468:34;21464:1;21456:6;21452:14;21445:58;21537:11;21532:2;21524:6;21520:15;21513:36;21328:228;:::o;21562:179::-;21702:31;21698:1;21690:6;21686:14;21679:55;21562:179;:::o;21747:229::-;21887:34;21883:1;21875:6;21871:14;21864:58;21956:12;21951:2;21943:6;21939:15;21932:37;21747:229;:::o;21982:231::-;22122:34;22118:1;22110:6;22106:14;22099:58;22191:14;22186:2;22178:6;22174:15;22167:39;21982:231;:::o;22219:181::-;22359:33;22355:1;22347:6;22343:14;22336:57;22219:181;:::o;22406:180::-;22546:32;22542:1;22534:6;22530:14;22523:56;22406:180;:::o;22592:122::-;22665:24;22683:5;22665:24;:::i;:::-;22658:5;22655:35;22645:63;;22704:1;22701;22694:12;22645:63;22592:122;:::o;22720:116::-;22790:21;22805:5;22790:21;:::i;:::-;22783:5;22780:32;22770:60;;22826:1;22823;22816:12;22770:60;22720:116;:::o;22842:122::-;22915:24;22933:5;22915:24;:::i;:::-;22908:5;22905:35;22895:63;;22954:1;22951;22944:12;22895:63;22842:122;:::o
Swarm Source
ipfs://746dc74257e16240bb9e96574c9fdaa0193013de3fd5aa06a9b667cf1c71d3f4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
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.