Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,122 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 13551368 | 1118 days ago | IN | 0.03 ETH | 0.00752038 | ||||
Transfer | 13551035 | 1118 days ago | IN | 0.15 ETH | 0.01349128 | ||||
Transfer | 13550694 | 1118 days ago | IN | 0.03 ETH | 0.00910027 | ||||
Transfer | 13549866 | 1118 days ago | IN | 0.03 ETH | 0.00560073 | ||||
Transfer | 13549706 | 1118 days ago | IN | 0.03 ETH | 0.00647003 | ||||
Transfer | 13549393 | 1118 days ago | IN | 0.03 ETH | 0.00641412 | ||||
Transfer | 13548533 | 1118 days ago | IN | 0.03 ETH | 0.00478915 | ||||
Transfer | 13548418 | 1118 days ago | IN | 0.03 ETH | 0.00671525 | ||||
Transfer | 13547916 | 1118 days ago | IN | 0.03 ETH | 0.00806522 | ||||
Transfer | 13547012 | 1118 days ago | IN | 0.03 ETH | 0.01548606 | ||||
Transfer | 13546972 | 1118 days ago | IN | 0.03 ETH | 0.01213186 | ||||
Transfer | 13545531 | 1119 days ago | IN | 0.03 ETH | 0.00738286 | ||||
Transfer | 13545384 | 1119 days ago | IN | 0.03 ETH | 0.00538954 | ||||
Transfer | 13545317 | 1119 days ago | IN | 0.15 ETH | 0.00486395 | ||||
Transfer | 13544996 | 1119 days ago | IN | 0.15 ETH | 0.00974483 | ||||
Transfer | 13544930 | 1119 days ago | IN | 0.03 ETH | 0.01020592 | ||||
Transfer | 13544737 | 1119 days ago | IN | 0.03 ETH | 0.00646581 | ||||
Transfer | 13544691 | 1119 days ago | IN | 0.03 ETH | 0.01058256 | ||||
Transfer | 13543996 | 1119 days ago | IN | 0.03 ETH | 0.00598238 | ||||
Transfer | 13543367 | 1119 days ago | IN | 0.03 ETH | 0.00425673 | ||||
Transfer | 13543367 | 1119 days ago | IN | 0.03 ETH | 0.0042448 | ||||
Transfer | 13542958 | 1119 days ago | IN | 0.03 ETH | 0.00494431 | ||||
Transfer | 13542894 | 1119 days ago | IN | 0.03 ETH | 0.00821781 | ||||
Transfer | 13542884 | 1119 days ago | IN | 0.03 ETH | 0.00607006 | ||||
Transfer | 13542821 | 1119 days ago | IN | 0.03 ETH | 0.00704243 |
Loading...
Loading
Contract Name:
IcyMembership
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.7; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; // TODO dev only // import "hardhat/console.sol"; /** * IcyMembership contract * @author @icy_tools */ contract IcyMembership is ReentrancyGuard, Ownable { using SafeMath for uint256; // Events event ClaimTrial(address indexed _from); event Pay(address indexed _from, uint _value); // Enable/disable new/trial members bool public isAcceptingNewMemberships = true; bool public isAcceptingTrialMemberships = false; // 0.0008 ETH uint256 public serviceFeePerDay = 800000000000000; // Minimum days that can be purchased uint8 public minimumServiceDays = 30; // Number of days in a trial membership uint256 public numberOfTrialMembershipDays = 7; // Number of days at which to grant a bonus uint256 public bonusIntervalInDays = 300; uint256 public bonusDaysGrantedPerInterval = 60; mapping(address => uint256) private addressPaidUpTo; mapping(address => bool) private addressClaimedTrialMembership; mapping(address => bool) private blocklist; // Called when contract receives ether receive() external payable { payForServices(); } function payForServices() public payable { require(!blocklist[msg.sender], "Sender not allowed."); require(isAcceptingNewMemberships, "Memberships are paused."); uint256 minimumServiceFee = serviceFeePerDay.mul(minimumServiceDays); require(msg.value >= minimumServiceFee, "Minimum payment not met."); // Calculate how many seconds we're buying uint256 secondsPerWei = serviceFeePerDay.div(86400); uint256 secondsToAdd = msg.value.div(secondsPerWei); uint256 daysToAdd = secondsToAdd.div(86400); if (bonusDaysGrantedPerInterval > 0 && daysToAdd >= bonusIntervalInDays) { secondsToAdd = secondsToAdd.add(daysToAdd.div(bonusIntervalInDays).mul(bonusDaysGrantedPerInterval).mul(86400)); } if (addressPaidUpTo[msg.sender] == 0) { addressPaidUpTo[msg.sender] = block.timestamp.add(secondsToAdd); } else { addressPaidUpTo[msg.sender] = addressPaidUpTo[msg.sender].add(secondsToAdd); } emit Pay(msg.sender, msg.value); } function hasActiveMembership(address _addr) external view returns(bool) { // get the active address // compare active address addressPaidUpTo to current time return !isAddressBlocked(_addr) && addressPaidUpTo[_addr] >= block.timestamp; } // Allows anyone to get the paid up to of an address function getAddressPaidUpTo(address _addr) public view returns(uint256) { return !isAddressBlocked(_addr) ? addressPaidUpTo[_addr] : 0; } // Allows anyone to see if an address is on the blocklist function isAddressBlocked(address _addr) public view returns(bool) { return blocklist[_addr]; } // Allows anyone to claim a trial membership if they haven't already function claimTrialMembership() external nonReentrant { require(isAcceptingTrialMemberships, "Trials not active."); require(!blocklist[msg.sender], "Sender not allowed."); require(!addressClaimedTrialMembership[msg.sender], "Trial already claimed."); require(addressPaidUpTo[msg.sender] == 0, "Trial not allowed."); addressPaidUpTo[msg.sender] = block.timestamp.add(numberOfTrialMembershipDays.mul(86400)); addressClaimedTrialMembership[msg.sender] = true; emit ClaimTrial(msg.sender); } // // ADMIN FUNCTIONS // // Allows `owner` to add an address to the blocklist function addAddressToBlocklist(address _addr) external onlyOwner { blocklist[_addr] = true; } // Allows `owner` to remove an address from the blocklist function removeAddressFromBlocklist(address _addr) external onlyOwner { delete blocklist[_addr]; } // Allows `owner` to set serviceFeePerDay function setBonusIntervalInDays(uint256 _bonusIntervalInDays) external onlyOwner { bonusIntervalInDays = _bonusIntervalInDays; } // Allows `owner` to set serviceFeePerDay function setBonusDaysGrantedPerInterval(uint256 _bonusDaysGrantedPerInterval) external onlyOwner { bonusDaysGrantedPerInterval = _bonusDaysGrantedPerInterval; } // Allows `owner` to set address paid up to function setAddressPaidUpTo(address _addr, uint256 _paidUpTo) external onlyOwner { addressPaidUpTo[_addr] = _paidUpTo; } // Allows `owner` to set serviceFeePerDay function setServiceFeePerDay(uint256 _serviceFeePerDay) external onlyOwner { require(_serviceFeePerDay > 0, "serviceFeePerDay cannot be 0"); serviceFeePerDay = _serviceFeePerDay; } // Allows `owner` to set minimumServiceDays function setMinimumServiceDays(uint8 _minimumServiceDays) external onlyOwner { require(_minimumServiceDays > 0, "minimumServiceDays cannot be 0"); minimumServiceDays = _minimumServiceDays; } // Allows `owner` to set numberOfTrialMembershipDays function setNumberOfTrialMembershipDays(uint8 _numberOfTrialMembershipDays) external onlyOwner { require(_numberOfTrialMembershipDays > 0, "numberOfTrialMembershipDays cannot be 0"); numberOfTrialMembershipDays = _numberOfTrialMembershipDays; } // Allows `owner` to collect service fees. function withdraw(uint256 _amount) external nonReentrant onlyOwner { require(_amount <= address(this).balance, "Withdraw less"); require(_amount > 0, "Withdraw more"); address owner = _msgSender(); payable(owner).transfer(_amount); } // Allows `owner` to toggle if minting is active function toggleAcceptingNewMemberships() public onlyOwner { isAcceptingNewMemberships = !isAcceptingNewMemberships; } // Allows `owner` to toggle if minting is active function toggleAcceptingTrialMemberships() public onlyOwner { isAcceptingTrialMemberships = !isAcceptingTrialMemberships; } function renounceOwnership() public override view onlyOwner { revert("Not allowed"); } }
// SPDX-License-Identifier: MIT 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() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT 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 make 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; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT 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", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"}],"name":"ClaimTrial","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":"_from","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Pay","type":"event"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"addAddressToBlocklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bonusDaysGrantedPerInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusIntervalInDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTrialMembership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getAddressPaidUpTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"hasActiveMembership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAcceptingNewMemberships","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAcceptingTrialMemberships","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"isAddressBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumServiceDays","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfTrialMembershipDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payForServices","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"removeAddressFromBlocklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"serviceFeePerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_paidUpTo","type":"uint256"}],"name":"setAddressPaidUpTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bonusDaysGrantedPerInterval","type":"uint256"}],"name":"setBonusDaysGrantedPerInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bonusIntervalInDays","type":"uint256"}],"name":"setBonusIntervalInDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_minimumServiceDays","type":"uint8"}],"name":"setMinimumServiceDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_numberOfTrialMembershipDays","type":"uint8"}],"name":"setNumberOfTrialMembershipDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_serviceFeePerDay","type":"uint256"}],"name":"setServiceFeePerDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleAcceptingNewMemberships","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleAcceptingTrialMemberships","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260018060146101000a81548160ff0219169083151502179055506000600160156101000a81548160ff0219169083151502179055506602d79883d20000600255601e600360006101000a81548160ff021916908360ff160217905550600760045561012c600555603c60065534801561007c57600080fd5b5060016000819055506100a16100966100a660201b60201c565b6100ae60201b60201c565b610174565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61242f80620001846000396000f3fe6080604052600436106101855760003560e01c8063a4b2b4f4116100d1578063c7074dac1161008a578063e76b774411610064578063e76b7744146104ee578063e7dad4f914610519578063f2fde38b14610556578063ffd946d11461057f57610194565b8063c7074dac14610473578063de610fd71461049c578063e3d6c089146104c557610194565b8063a4b2b4f4146103a8578063b4229afc146103d3578063b4340a07146103fc578063bee40f8814610413578063bf5b7b8d1461041d578063c0d69b821461044857610194565b80633c0cf1e81161013e578063791b29f011610118578063791b29f01461032457806381ea47dd1461033b578063821f7dec146103665780638da5cb5b1461037d57610194565b80633c0cf1e8146102b957806361da5300146102e2578063715018a61461030d57610194565b806306789dd0146101995780631f945288146101c257806324b6d69b146101eb5780632a6b7d14146102285780632e1a7d4d146102535780633a75a0d01461027c57610194565b36610194576101926105a8565b005b600080fd5b3480156101a557600080fd5b506101c060048036038101906101bb9190611a95565b610938565b005b3480156101ce57600080fd5b506101e960048036038101906101e49190611a95565b610a07565b005b3480156101f757600080fd5b50610212600480360381019061020d91906119fb565b610ae7565b60405161021f9190611f21565b60405180910390f35b34801561023457600080fd5b5061023d610b46565b60405161024a9190611f21565b60405180910390f35b34801561025f57600080fd5b5061027a60048036038101906102759190611a68565b610b4c565b005b34801561028857600080fd5b506102a3600480360381019061029e91906119fb565b610cfb565b6040516102b09190611d26565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db91906119fb565b610d59565b005b3480156102ee57600080fd5b506102f7610e27565b6040516103049190611d26565b60405180910390f35b34801561031957600080fd5b50610322610e3a565b005b34801561033057600080fd5b50610339610ef1565b005b34801561034757600080fd5b50610350610f99565b60405161035d9190611f21565b60405180910390f35b34801561037257600080fd5b5061037b610f9f565b005b34801561038957600080fd5b50610392611047565b60405161039f9190611d0b565b60405180910390f35b3480156103b457600080fd5b506103bd611071565b6040516103ca9190611f3c565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906119fb565b611084565b005b34801561040857600080fd5b5061041161115b565b005b61041b6105a8565b005b34801561042957600080fd5b506104326114a6565b60405161043f9190611d26565b60405180910390f35b34801561045457600080fd5b5061045d6114b9565b60405161046a9190611f21565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190611a68565b6114bf565b005b3480156104a857600080fd5b506104c360048036038101906104be9190611a68565b611588565b005b3480156104d157600080fd5b506104ec60048036038101906104e79190611a68565b61160e565b005b3480156104fa57600080fd5b50610503611694565b6040516105109190611f21565b60405180910390f35b34801561052557600080fd5b50610540600480360381019061053b91906119fb565b61169a565b60405161054d9190611d26565b60405180910390f35b34801561056257600080fd5b5061057d600480360381019061057891906119fb565b6116f0565b005b34801561058b57600080fd5b506105a660048036038101906105a19190611a28565b6117e8565b005b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062c90611ea1565b60405180910390fd5b600160149054906101000a900460ff16610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067b90611e21565b60405180910390fd5b60006106ad600360009054906101000a900460ff1660ff166002546118ac90919063ffffffff16565b9050803410156106f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e990611de1565b60405180910390fd5b600061070c620151806002546118c290919063ffffffff16565b9050600061072382346118c290919063ffffffff16565b9050600061073d62015180836118c290919063ffffffff16565b9050600060065411801561075357506005548110155b156107ab576107a86107996201518061078b60065461077d600554876118c290919063ffffffff16565b6118ac90919063ffffffff16565b6118ac90919063ffffffff16565b836118d890919063ffffffff16565b91505b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561084e5761080682426118d890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108e4565b6108a082600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3373ffffffffffffffffffffffffffffffffffffffff167f357b676c439b9e49b4410f8eb8680bee4223724802d8e3fd422e1756f87b475f3460405161092a9190611f21565b60405180910390a250505050565b6109406118ee565b73ffffffffffffffffffffffffffffffffffffffff1661095e611047565b73ffffffffffffffffffffffffffffffffffffffff16146109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab90611e81565b60405180910390fd5b60008160ff16116109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190611ee1565b60405180910390fd5b8060ff1660048190555050565b610a0f6118ee565b73ffffffffffffffffffffffffffffffffffffffff16610a2d611047565b73ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a90611e81565b60405180910390fd5b60008160ff1611610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090611dc1565b60405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6000610af28261169a565b15610afe576000610b3f565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b9050919050565b60055481565b60026000541415610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990611f01565b60405180910390fd5b6002600081905550610ba26118ee565b73ffffffffffffffffffffffffffffffffffffffff16610bc0611047565b73ffffffffffffffffffffffffffffffffffffffff1614610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90611e81565b60405180910390fd5b47811115610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090611d41565b60405180910390fd5b60008111610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390611e41565b60405180910390fd5b6000610ca66118ee565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610cee573d6000803e3d6000fd5b5050600160008190555050565b6000610d068261169a565b158015610d52575042600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b610d616118ee565b73ffffffffffffffffffffffffffffffffffffffff16610d7f611047565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90611e81565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600160149054906101000a900460ff1681565b610e426118ee565b73ffffffffffffffffffffffffffffffffffffffff16610e60611047565b73ffffffffffffffffffffffffffffffffffffffff1614610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead90611e81565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890611e61565b60405180910390fd5b610ef96118ee565b73ffffffffffffffffffffffffffffffffffffffff16610f17611047565b73ffffffffffffffffffffffffffffffffffffffff1614610f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6490611e81565b60405180910390fd5b600160149054906101000a900460ff1615600160146101000a81548160ff021916908315150217905550565b60065481565b610fa76118ee565b73ffffffffffffffffffffffffffffffffffffffff16610fc5611047565b73ffffffffffffffffffffffffffffffffffffffff161461101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101290611e81565b60405180910390fd5b600160159054906101000a900460ff1615600160156101000a81548160ff021916908315150217905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900460ff1681565b61108c6118ee565b73ffffffffffffffffffffffffffffffffffffffff166110aa611047565b73ffffffffffffffffffffffffffffffffffffffff1614611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f790611e81565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600260005414156111a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119890611f01565b60405180910390fd5b6002600081905550600160159054906101000a900460ff166111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef90611e01565b60405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90611ea1565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990611ec1565b60405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90611d81565b60405180910390fd5b6113be6113af620151806004546118ac90919063ffffffff16565b426118d890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f234a5f924e74bed3e538617669080b7682252208e053edf19cd96ebc829fe88360405160405180910390a26001600081905550565b600160159054906101000a900460ff1681565b60045481565b6114c76118ee565b73ffffffffffffffffffffffffffffffffffffffff166114e5611047565b73ffffffffffffffffffffffffffffffffffffffff161461153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290611e81565b60405180910390fd5b6000811161157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590611da1565b60405180910390fd5b8060028190555050565b6115906118ee565b73ffffffffffffffffffffffffffffffffffffffff166115ae611047565b73ffffffffffffffffffffffffffffffffffffffff1614611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb90611e81565b60405180910390fd5b8060058190555050565b6116166118ee565b73ffffffffffffffffffffffffffffffffffffffff16611634611047565b73ffffffffffffffffffffffffffffffffffffffff161461168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190611e81565b60405180910390fd5b8060068190555050565b60025481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6116f86118ee565b73ffffffffffffffffffffffffffffffffffffffff16611716611047565b73ffffffffffffffffffffffffffffffffffffffff161461176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390611e81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d390611d61565b60405180910390fd5b6117e5816118f6565b50565b6117f06118ee565b73ffffffffffffffffffffffffffffffffffffffff1661180e611047565b73ffffffffffffffffffffffffffffffffffffffff1614611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90611e81565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600081836118ba9190611fef565b905092915050565b600081836118d09190611fbe565b905092915050565b600081836118e69190611f68565b905092915050565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000813590506119cb816123b4565b92915050565b6000813590506119e0816123cb565b92915050565b6000813590506119f5816123e2565b92915050565b600060208284031215611a1157611a106120fc565b5b6000611a1f848285016119bc565b91505092915050565b60008060408385031215611a3f57611a3e6120fc565b5b6000611a4d858286016119bc565b9250506020611a5e858286016119d1565b9150509250929050565b600060208284031215611a7e57611a7d6120fc565b5b6000611a8c848285016119d1565b91505092915050565b600060208284031215611aab57611aaa6120fc565b5b6000611ab9848285016119e6565b91505092915050565b611acb81612049565b82525050565b611ada8161205b565b82525050565b6000611aed600d83611f57565b9150611af882612101565b602082019050919050565b6000611b10602683611f57565b9150611b1b8261212a565b604082019050919050565b6000611b33601283611f57565b9150611b3e82612179565b602082019050919050565b6000611b56601c83611f57565b9150611b61826121a2565b602082019050919050565b6000611b79601e83611f57565b9150611b84826121cb565b602082019050919050565b6000611b9c601883611f57565b9150611ba7826121f4565b602082019050919050565b6000611bbf601283611f57565b9150611bca8261221d565b602082019050919050565b6000611be2601783611f57565b9150611bed82612246565b602082019050919050565b6000611c05600d83611f57565b9150611c108261226f565b602082019050919050565b6000611c28600b83611f57565b9150611c3382612298565b602082019050919050565b6000611c4b602083611f57565b9150611c56826122c1565b602082019050919050565b6000611c6e601383611f57565b9150611c79826122ea565b602082019050919050565b6000611c91601683611f57565b9150611c9c82612313565b602082019050919050565b6000611cb4602783611f57565b9150611cbf8261233c565b604082019050919050565b6000611cd7601f83611f57565b9150611ce28261238b565b602082019050919050565b611cf681612087565b82525050565b611d0581612091565b82525050565b6000602082019050611d206000830184611ac2565b92915050565b6000602082019050611d3b6000830184611ad1565b92915050565b60006020820190508181036000830152611d5a81611ae0565b9050919050565b60006020820190508181036000830152611d7a81611b03565b9050919050565b60006020820190508181036000830152611d9a81611b26565b9050919050565b60006020820190508181036000830152611dba81611b49565b9050919050565b60006020820190508181036000830152611dda81611b6c565b9050919050565b60006020820190508181036000830152611dfa81611b8f565b9050919050565b60006020820190508181036000830152611e1a81611bb2565b9050919050565b60006020820190508181036000830152611e3a81611bd5565b9050919050565b60006020820190508181036000830152611e5a81611bf8565b9050919050565b60006020820190508181036000830152611e7a81611c1b565b9050919050565b60006020820190508181036000830152611e9a81611c3e565b9050919050565b60006020820190508181036000830152611eba81611c61565b9050919050565b60006020820190508181036000830152611eda81611c84565b9050919050565b60006020820190508181036000830152611efa81611ca7565b9050919050565b60006020820190508181036000830152611f1a81611cca565b9050919050565b6000602082019050611f366000830184611ced565b92915050565b6000602082019050611f516000830184611cfc565b92915050565b600082825260208201905092915050565b6000611f7382612087565b9150611f7e83612087565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611fb357611fb261209e565b5b828201905092915050565b6000611fc982612087565b9150611fd483612087565b925082611fe457611fe36120cd565b5b828204905092915050565b6000611ffa82612087565b915061200583612087565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561203e5761203d61209e565b5b828202905092915050565b600061205482612067565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b7f5769746864726177206c65737300000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f547269616c206e6f7420616c6c6f7765642e0000000000000000000000000000600082015250565b7f736572766963654665655065724461792063616e6e6f74206265203000000000600082015250565b7f6d696e696d756d53657276696365446179732063616e6e6f7420626520300000600082015250565b7f4d696e696d756d207061796d656e74206e6f74206d65742e0000000000000000600082015250565b7f547269616c73206e6f74206163746976652e0000000000000000000000000000600082015250565b7f4d656d626572736869707320617265207061757365642e000000000000000000600082015250565b7f5769746864726177206d6f726500000000000000000000000000000000000000600082015250565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53656e646572206e6f7420616c6c6f7765642e00000000000000000000000000600082015250565b7f547269616c20616c726561647920636c61696d65642e00000000000000000000600082015250565b7f6e756d6265724f66547269616c4d656d62657273686970446179732063616e6e60008201527f6f74206265203000000000000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6123bd81612049565b81146123c857600080fd5b50565b6123d481612087565b81146123df57600080fd5b50565b6123eb81612091565b81146123f657600080fd5b5056fea2646970667358221220dd259b64d060dab5f22bd500def64e9df0ce3e885cf56e11bdde533bbc26849f64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106101855760003560e01c8063a4b2b4f4116100d1578063c7074dac1161008a578063e76b774411610064578063e76b7744146104ee578063e7dad4f914610519578063f2fde38b14610556578063ffd946d11461057f57610194565b8063c7074dac14610473578063de610fd71461049c578063e3d6c089146104c557610194565b8063a4b2b4f4146103a8578063b4229afc146103d3578063b4340a07146103fc578063bee40f8814610413578063bf5b7b8d1461041d578063c0d69b821461044857610194565b80633c0cf1e81161013e578063791b29f011610118578063791b29f01461032457806381ea47dd1461033b578063821f7dec146103665780638da5cb5b1461037d57610194565b80633c0cf1e8146102b957806361da5300146102e2578063715018a61461030d57610194565b806306789dd0146101995780631f945288146101c257806324b6d69b146101eb5780632a6b7d14146102285780632e1a7d4d146102535780633a75a0d01461027c57610194565b36610194576101926105a8565b005b600080fd5b3480156101a557600080fd5b506101c060048036038101906101bb9190611a95565b610938565b005b3480156101ce57600080fd5b506101e960048036038101906101e49190611a95565b610a07565b005b3480156101f757600080fd5b50610212600480360381019061020d91906119fb565b610ae7565b60405161021f9190611f21565b60405180910390f35b34801561023457600080fd5b5061023d610b46565b60405161024a9190611f21565b60405180910390f35b34801561025f57600080fd5b5061027a60048036038101906102759190611a68565b610b4c565b005b34801561028857600080fd5b506102a3600480360381019061029e91906119fb565b610cfb565b6040516102b09190611d26565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db91906119fb565b610d59565b005b3480156102ee57600080fd5b506102f7610e27565b6040516103049190611d26565b60405180910390f35b34801561031957600080fd5b50610322610e3a565b005b34801561033057600080fd5b50610339610ef1565b005b34801561034757600080fd5b50610350610f99565b60405161035d9190611f21565b60405180910390f35b34801561037257600080fd5b5061037b610f9f565b005b34801561038957600080fd5b50610392611047565b60405161039f9190611d0b565b60405180910390f35b3480156103b457600080fd5b506103bd611071565b6040516103ca9190611f3c565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906119fb565b611084565b005b34801561040857600080fd5b5061041161115b565b005b61041b6105a8565b005b34801561042957600080fd5b506104326114a6565b60405161043f9190611d26565b60405180910390f35b34801561045457600080fd5b5061045d6114b9565b60405161046a9190611f21565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190611a68565b6114bf565b005b3480156104a857600080fd5b506104c360048036038101906104be9190611a68565b611588565b005b3480156104d157600080fd5b506104ec60048036038101906104e79190611a68565b61160e565b005b3480156104fa57600080fd5b50610503611694565b6040516105109190611f21565b60405180910390f35b34801561052557600080fd5b50610540600480360381019061053b91906119fb565b61169a565b60405161054d9190611d26565b60405180910390f35b34801561056257600080fd5b5061057d600480360381019061057891906119fb565b6116f0565b005b34801561058b57600080fd5b506105a660048036038101906105a19190611a28565b6117e8565b005b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062c90611ea1565b60405180910390fd5b600160149054906101000a900460ff16610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067b90611e21565b60405180910390fd5b60006106ad600360009054906101000a900460ff1660ff166002546118ac90919063ffffffff16565b9050803410156106f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e990611de1565b60405180910390fd5b600061070c620151806002546118c290919063ffffffff16565b9050600061072382346118c290919063ffffffff16565b9050600061073d62015180836118c290919063ffffffff16565b9050600060065411801561075357506005548110155b156107ab576107a86107996201518061078b60065461077d600554876118c290919063ffffffff16565b6118ac90919063ffffffff16565b6118ac90919063ffffffff16565b836118d890919063ffffffff16565b91505b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561084e5761080682426118d890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108e4565b6108a082600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3373ffffffffffffffffffffffffffffffffffffffff167f357b676c439b9e49b4410f8eb8680bee4223724802d8e3fd422e1756f87b475f3460405161092a9190611f21565b60405180910390a250505050565b6109406118ee565b73ffffffffffffffffffffffffffffffffffffffff1661095e611047565b73ffffffffffffffffffffffffffffffffffffffff16146109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab90611e81565b60405180910390fd5b60008160ff16116109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190611ee1565b60405180910390fd5b8060ff1660048190555050565b610a0f6118ee565b73ffffffffffffffffffffffffffffffffffffffff16610a2d611047565b73ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a90611e81565b60405180910390fd5b60008160ff1611610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090611dc1565b60405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6000610af28261169a565b15610afe576000610b3f565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b9050919050565b60055481565b60026000541415610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990611f01565b60405180910390fd5b6002600081905550610ba26118ee565b73ffffffffffffffffffffffffffffffffffffffff16610bc0611047565b73ffffffffffffffffffffffffffffffffffffffff1614610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90611e81565b60405180910390fd5b47811115610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090611d41565b60405180910390fd5b60008111610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390611e41565b60405180910390fd5b6000610ca66118ee565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610cee573d6000803e3d6000fd5b5050600160008190555050565b6000610d068261169a565b158015610d52575042600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b610d616118ee565b73ffffffffffffffffffffffffffffffffffffffff16610d7f611047565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90611e81565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600160149054906101000a900460ff1681565b610e426118ee565b73ffffffffffffffffffffffffffffffffffffffff16610e60611047565b73ffffffffffffffffffffffffffffffffffffffff1614610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead90611e81565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890611e61565b60405180910390fd5b610ef96118ee565b73ffffffffffffffffffffffffffffffffffffffff16610f17611047565b73ffffffffffffffffffffffffffffffffffffffff1614610f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6490611e81565b60405180910390fd5b600160149054906101000a900460ff1615600160146101000a81548160ff021916908315150217905550565b60065481565b610fa76118ee565b73ffffffffffffffffffffffffffffffffffffffff16610fc5611047565b73ffffffffffffffffffffffffffffffffffffffff161461101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101290611e81565b60405180910390fd5b600160159054906101000a900460ff1615600160156101000a81548160ff021916908315150217905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900460ff1681565b61108c6118ee565b73ffffffffffffffffffffffffffffffffffffffff166110aa611047565b73ffffffffffffffffffffffffffffffffffffffff1614611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f790611e81565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600260005414156111a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119890611f01565b60405180910390fd5b6002600081905550600160159054906101000a900460ff166111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef90611e01565b60405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90611ea1565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990611ec1565b60405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90611d81565b60405180910390fd5b6113be6113af620151806004546118ac90919063ffffffff16565b426118d890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f234a5f924e74bed3e538617669080b7682252208e053edf19cd96ebc829fe88360405160405180910390a26001600081905550565b600160159054906101000a900460ff1681565b60045481565b6114c76118ee565b73ffffffffffffffffffffffffffffffffffffffff166114e5611047565b73ffffffffffffffffffffffffffffffffffffffff161461153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290611e81565b60405180910390fd5b6000811161157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590611da1565b60405180910390fd5b8060028190555050565b6115906118ee565b73ffffffffffffffffffffffffffffffffffffffff166115ae611047565b73ffffffffffffffffffffffffffffffffffffffff1614611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb90611e81565b60405180910390fd5b8060058190555050565b6116166118ee565b73ffffffffffffffffffffffffffffffffffffffff16611634611047565b73ffffffffffffffffffffffffffffffffffffffff161461168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190611e81565b60405180910390fd5b8060068190555050565b60025481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6116f86118ee565b73ffffffffffffffffffffffffffffffffffffffff16611716611047565b73ffffffffffffffffffffffffffffffffffffffff161461176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390611e81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d390611d61565b60405180910390fd5b6117e5816118f6565b50565b6117f06118ee565b73ffffffffffffffffffffffffffffffffffffffff1661180e611047565b73ffffffffffffffffffffffffffffffffffffffff1614611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90611e81565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600081836118ba9190611fef565b905092915050565b600081836118d09190611fbe565b905092915050565b600081836118e69190611f68565b905092915050565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000813590506119cb816123b4565b92915050565b6000813590506119e0816123cb565b92915050565b6000813590506119f5816123e2565b92915050565b600060208284031215611a1157611a106120fc565b5b6000611a1f848285016119bc565b91505092915050565b60008060408385031215611a3f57611a3e6120fc565b5b6000611a4d858286016119bc565b9250506020611a5e858286016119d1565b9150509250929050565b600060208284031215611a7e57611a7d6120fc565b5b6000611a8c848285016119d1565b91505092915050565b600060208284031215611aab57611aaa6120fc565b5b6000611ab9848285016119e6565b91505092915050565b611acb81612049565b82525050565b611ada8161205b565b82525050565b6000611aed600d83611f57565b9150611af882612101565b602082019050919050565b6000611b10602683611f57565b9150611b1b8261212a565b604082019050919050565b6000611b33601283611f57565b9150611b3e82612179565b602082019050919050565b6000611b56601c83611f57565b9150611b61826121a2565b602082019050919050565b6000611b79601e83611f57565b9150611b84826121cb565b602082019050919050565b6000611b9c601883611f57565b9150611ba7826121f4565b602082019050919050565b6000611bbf601283611f57565b9150611bca8261221d565b602082019050919050565b6000611be2601783611f57565b9150611bed82612246565b602082019050919050565b6000611c05600d83611f57565b9150611c108261226f565b602082019050919050565b6000611c28600b83611f57565b9150611c3382612298565b602082019050919050565b6000611c4b602083611f57565b9150611c56826122c1565b602082019050919050565b6000611c6e601383611f57565b9150611c79826122ea565b602082019050919050565b6000611c91601683611f57565b9150611c9c82612313565b602082019050919050565b6000611cb4602783611f57565b9150611cbf8261233c565b604082019050919050565b6000611cd7601f83611f57565b9150611ce28261238b565b602082019050919050565b611cf681612087565b82525050565b611d0581612091565b82525050565b6000602082019050611d206000830184611ac2565b92915050565b6000602082019050611d3b6000830184611ad1565b92915050565b60006020820190508181036000830152611d5a81611ae0565b9050919050565b60006020820190508181036000830152611d7a81611b03565b9050919050565b60006020820190508181036000830152611d9a81611b26565b9050919050565b60006020820190508181036000830152611dba81611b49565b9050919050565b60006020820190508181036000830152611dda81611b6c565b9050919050565b60006020820190508181036000830152611dfa81611b8f565b9050919050565b60006020820190508181036000830152611e1a81611bb2565b9050919050565b60006020820190508181036000830152611e3a81611bd5565b9050919050565b60006020820190508181036000830152611e5a81611bf8565b9050919050565b60006020820190508181036000830152611e7a81611c1b565b9050919050565b60006020820190508181036000830152611e9a81611c3e565b9050919050565b60006020820190508181036000830152611eba81611c61565b9050919050565b60006020820190508181036000830152611eda81611c84565b9050919050565b60006020820190508181036000830152611efa81611ca7565b9050919050565b60006020820190508181036000830152611f1a81611cca565b9050919050565b6000602082019050611f366000830184611ced565b92915050565b6000602082019050611f516000830184611cfc565b92915050565b600082825260208201905092915050565b6000611f7382612087565b9150611f7e83612087565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611fb357611fb261209e565b5b828201905092915050565b6000611fc982612087565b9150611fd483612087565b925082611fe457611fe36120cd565b5b828204905092915050565b6000611ffa82612087565b915061200583612087565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561203e5761203d61209e565b5b828202905092915050565b600061205482612067565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b7f5769746864726177206c65737300000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f547269616c206e6f7420616c6c6f7765642e0000000000000000000000000000600082015250565b7f736572766963654665655065724461792063616e6e6f74206265203000000000600082015250565b7f6d696e696d756d53657276696365446179732063616e6e6f7420626520300000600082015250565b7f4d696e696d756d207061796d656e74206e6f74206d65742e0000000000000000600082015250565b7f547269616c73206e6f74206163746976652e0000000000000000000000000000600082015250565b7f4d656d626572736869707320617265207061757365642e000000000000000000600082015250565b7f5769746864726177206d6f726500000000000000000000000000000000000000600082015250565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53656e646572206e6f7420616c6c6f7765642e00000000000000000000000000600082015250565b7f547269616c20616c726561647920636c61696d65642e00000000000000000000600082015250565b7f6e756d6265724f66547269616c4d656d62657273686970446179732063616e6e60008201527f6f74206265203000000000000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6123bd81612049565b81146123c857600080fd5b50565b6123d481612087565b81146123df57600080fd5b50565b6123eb81612091565b81146123f657600080fd5b5056fea2646970667358221220dd259b64d060dab5f22bd500def64e9df0ce3e885cf56e11bdde533bbc26849f64736f6c63430008070033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.