More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 11087961 | 1465 days ago | IN | 0 ETH | 0.0394381 |
Loading...
Loading
Contract Name:
PDZstaking
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-10-19 */ pragma solidity 0.6.12; // SPDX-License-Identifier: No License /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @dev Library for managing * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive * types. * * Sets have the following properties: * * - Elements are added, removed, and checked for existence in constant time * (O(1)). * - Elements are enumerated in O(n). No guarantees are made on the ordering. * * ``` * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.0.0, only sets of type `address` (`AddressSet`) and `uint256` * (`UintSet`) are supported. */ library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping (bytes32 => uint256) _indexes; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._indexes[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(value))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(value))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(value))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint256(_at(set._inner, index))); } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values on the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } interface Token { function transferFrom(address, address, uint) external returns (bool); function transfer(address, uint) external returns (bool); } contract PDZstaking is Ownable { using SafeMath for uint; using EnumerableSet for EnumerableSet.AddressSet; event RewardsTransferred(address holder, uint amount); // PDZ token contract address address public constant tokenAddress = 0x0c3D45755783E913BF7B2fB798cC9B8c02d005d3; // reward rate 45.00% per year uint public constant rewardRate = 4500; uint public constant rewardInterval = 365 days; // staking fee 1.50 percent uint public constant stakingFeeRate = 150; // unstaking fee 2.00 percent uint public constant unstakingFeeRate = 200; // unstaking possible after 72 hours uint public constant cliffTime = 72 hours; uint public totalClaimedRewards = 0; EnumerableSet.AddressSet private holders; mapping (address => uint) public depositedTokens; mapping (address => uint) public stakingTime; mapping (address => uint) public lastClaimedTime; mapping (address => uint) public totalEarnedTokens; function updateAccount(address account) private { uint pendingDivs = getPendingDivs(account); if (pendingDivs > 0) { require(Token(tokenAddress).transfer(account, pendingDivs), "Could not transfer tokens."); totalEarnedTokens[account] = totalEarnedTokens[account].add(pendingDivs); totalClaimedRewards = totalClaimedRewards.add(pendingDivs); emit RewardsTransferred(account, pendingDivs); } lastClaimedTime[account] = now; } function getPendingDivs(address _holder) public view returns (uint) { if (!holders.contains(_holder)) return 0; if (depositedTokens[_holder] == 0) return 0; uint timeDiff = now.sub(lastClaimedTime[_holder]); uint stakedAmount = depositedTokens[_holder]; uint pendingDivs = stakedAmount .mul(rewardRate) .mul(timeDiff) .div(rewardInterval) .div(1e4); return pendingDivs; } function getNumberOfHolders() public view returns (uint) { return holders.length(); } function deposit(uint amountToStake) public { require(amountToStake > 0, "Cannot deposit 0 Tokens"); require(Token(tokenAddress).transferFrom(msg.sender, address(this), amountToStake), "Insufficient Token Allowance"); updateAccount(msg.sender); uint fee = amountToStake.mul(stakingFeeRate).div(1e4); uint amountAfterFee = amountToStake.sub(fee); require(Token(tokenAddress).transfer(owner, fee), "Could not transfer deposit fee."); depositedTokens[msg.sender] = depositedTokens[msg.sender].add(amountAfterFee); if (!holders.contains(msg.sender)) { holders.add(msg.sender); stakingTime[msg.sender] = now; } } function withdraw(uint amountToWithdraw) public { require(depositedTokens[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw"); require(now.sub(stakingTime[msg.sender]) > cliffTime, "You recently staked, please wait before withdrawing."); updateAccount(msg.sender); uint fee = amountToWithdraw.mul(unstakingFeeRate).div(1e4); uint amountAfterFee = amountToWithdraw.sub(fee); require(Token(tokenAddress).transfer(owner, fee), "Could not transfer withdraw fee."); require(Token(tokenAddress).transfer(msg.sender, amountAfterFee), "Could not transfer tokens."); depositedTokens[msg.sender] = depositedTokens[msg.sender].sub(amountToWithdraw); if (holders.contains(msg.sender) && depositedTokens[msg.sender] == 0) { holders.remove(msg.sender); } } function claimDivs() public { updateAccount(msg.sender); } uint private constant stakingAndDaoTokens = 15000000000000000000000; function getStakingAndDaoAmount() public view returns (uint) { if (totalClaimedRewards >= stakingAndDaoTokens) { return 0; } uint remaining = stakingAndDaoTokens.sub(totalClaimedRewards); return remaining; } // function to allow admin to claim *other* ERC20 tokens sent to this contract (by mistake) function transferAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner { if (_tokenAddr == tokenAddress) { if (_amount > getStakingAndDaoAmount()) { revert(); } totalClaimedRewards = totalClaimedRewards.add(_amount); } Token(_tokenAddr).transfer(_to, _amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsTransferred","type":"event"},{"inputs":[],"name":"claimDivs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cliffTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToStake","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getPendingDivs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakingAndDaoAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimedTime","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":"rewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalEarnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600060015534801561001557600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a20806100656000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063c326bf4f11610071578063c326bf4f14610429578063d578ceab14610481578063d816c7d51461049f578063f2fde38b146104bd578063f3f91fa0146105015761012c565b80638da5cb5b1461031d57806398896d10146103515780639d76ea58146103a9578063b6b55f25146103dd578063bec4de3f1461040b5761012c565b8063583d42fd116100f4578063583d42fd146101c35780635ef057be1461021b5780636270cd18146102395780636a395ccb146102915780637b0a47ee146102ff5761012c565b80630f1a64441461013157806319aa70e71461014f578063268cab49146101595780632e1a7d4d14610177578063308feec3146101a5575b600080fd5b610139610559565b6040518082815260200191505060405180910390f35b610157610560565b005b61016161056b565b6040518082815260200191505060405180910390f35b6101a36004803603602081101561018d57600080fd5b81019080803590602001909291905050506105b4565b005b6101ad610af9565b6040518082815260200191505060405180910390f35b610205600480360360208110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b0a565b6040518082815260200191505060405180910390f35b610223610b22565b6040518082815260200191505060405180910390f35b61027b6004803603602081101561024f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b27565b6040518082815260200191505060405180910390f35b6102fd600480360360608110156102a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3f565b005b610307610cc1565b6040518082815260200191505060405180910390f35b610325610cc7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103936004803603602081101561036757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ceb565b6040518082815260200191505060405180910390f35b6103b1610e5a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610409600480360360208110156103f357600080fd5b8101908080359060200190929190505050610e72565b005b6104136112e2565b6040518082815260200191505060405180910390f35b61046b6004803603602081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ea565b6040518082815260200191505060405180910390f35b610489611302565b6040518082815260200191505060405180910390f35b6104a7611308565b6040518082815260200191505060405180910390f35b6104ff600480360360208110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061130d565b005b6105436004803603602081101561051757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061145c565b6040518082815260200191505060405180910390f35b6203f48081565b61056933611474565b565b600069032d26d12e980b6000006001541061058957600090506105b1565b60006105aa60015469032d26d12e980b60000061170a90919063ffffffff16565b9050809150505b90565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6203f4806106bf600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261170a90919063ffffffff16565b11610715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119b76034913960400191505060405180910390fd5b61071e33611474565b600061074861271061073a60c88561172190919063ffffffff16565b61175090919063ffffffff16565b9050600061075f828461170a90919063ffffffff16565b9050730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b505050506040513d602081101561083057600080fd5b81019080805190602001909291905050506108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b505050506040513d602081101561096257600080fd5b81019080805190602001909291905050506109e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b610a3783600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461170a90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a8e33600261176990919063ffffffff16565b8015610ad957506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15610af457610af233600261179990919063ffffffff16565b505b505050565b6000610b0560026117c9565b905090565b60056020528060005260406000206000915090505481565b609681565b60076020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b9757600080fd5b730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c0f57610be761056b565b811115610bf357600080fd5b610c08816001546117de90919063ffffffff16565b6001819055505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c8057600080fd5b505af1158015610c94573d6000803e3d6000fd5b505050506040513d6020811015610caa57600080fd5b810190808051906020019092919050505050505050565b61119481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d0182600261176990919063ffffffff16565b610d0e5760009050610e55565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610d5f5760009050610e55565b6000610db3600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261170a90919063ffffffff16565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000610e4c612710610e3e6301e13380610e3087610e226111948961172190919063ffffffff16565b61172190919063ffffffff16565b61175090919063ffffffff16565b61175090919063ffffffff16565b90508093505050505b919050565b730c3d45755783e913bf7b2fb798cc9b8c02d005d381565b60008111610ee8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505050506040513d6020811015610fb557600080fd5b8101908080519060200190929190505050611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b61104133611474565b600061106b61271061105d60968561172190919063ffffffff16565b61175090919063ffffffff16565b90506000611082828461170a90919063ffffffff16565b9050730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b505050506040513d602081101561115357600080fd5b81019080805190602001909291905050506111d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74207472616e73666572206465706f736974206665652e0081525060200191505060405180910390fd5b61122881600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117de90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061127f33600261176990919063ffffffff16565b6112dd576112973360026117fa90919063ffffffff16565b5042600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6301e1338081565b60046020528060005260406000206000915090505481565b60015481565b60c881565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561139f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090505481565b600061147f82610ceb565b905060008111156116c257730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561150f57600080fd5b505af1158015611523573d6000803e3d6000fd5b505050506040513d602081101561153957600080fd5b81019080805190602001909291905050506115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61160e81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117de90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611666816001546117de90919063ffffffff16565b6001819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008282111561171657fe5b818303905092915050565b6000808284029050600084148061174057508284828161173d57fe5b04145b61174657fe5b8091505092915050565b60008082848161175c57fe5b0490508091505092915050565b6000611791836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61182a565b905092915050565b60006117c1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61184d565b905092915050565b60006117d782600001611935565b9050919050565b6000808284019050838110156117f057fe5b8091505092915050565b6000611822836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611946565b905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114611929576000600182039050600060018660000180549050039050600086600001828154811061189857fe5b90600052602060002001549050808760000184815481106118b557fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806118ed57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061192f565b60009150505b92915050565b600081600001805490509050919050565b6000611952838361182a565b6119ab5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506119b0565b600090505b9291505056fe596f7520726563656e746c79207374616b65642c20706c656173652077616974206265666f7265207769746864726177696e672ea2646970667358221220aaa0f5822af72e90871ec8c1af4b023f9092f80d68b4bfd7af4891918b3bf7e364736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063c326bf4f11610071578063c326bf4f14610429578063d578ceab14610481578063d816c7d51461049f578063f2fde38b146104bd578063f3f91fa0146105015761012c565b80638da5cb5b1461031d57806398896d10146103515780639d76ea58146103a9578063b6b55f25146103dd578063bec4de3f1461040b5761012c565b8063583d42fd116100f4578063583d42fd146101c35780635ef057be1461021b5780636270cd18146102395780636a395ccb146102915780637b0a47ee146102ff5761012c565b80630f1a64441461013157806319aa70e71461014f578063268cab49146101595780632e1a7d4d14610177578063308feec3146101a5575b600080fd5b610139610559565b6040518082815260200191505060405180910390f35b610157610560565b005b61016161056b565b6040518082815260200191505060405180910390f35b6101a36004803603602081101561018d57600080fd5b81019080803590602001909291905050506105b4565b005b6101ad610af9565b6040518082815260200191505060405180910390f35b610205600480360360208110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b0a565b6040518082815260200191505060405180910390f35b610223610b22565b6040518082815260200191505060405180910390f35b61027b6004803603602081101561024f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b27565b6040518082815260200191505060405180910390f35b6102fd600480360360608110156102a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3f565b005b610307610cc1565b6040518082815260200191505060405180910390f35b610325610cc7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103936004803603602081101561036757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ceb565b6040518082815260200191505060405180910390f35b6103b1610e5a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610409600480360360208110156103f357600080fd5b8101908080359060200190929190505050610e72565b005b6104136112e2565b6040518082815260200191505060405180910390f35b61046b6004803603602081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ea565b6040518082815260200191505060405180910390f35b610489611302565b6040518082815260200191505060405180910390f35b6104a7611308565b6040518082815260200191505060405180910390f35b6104ff600480360360208110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061130d565b005b6105436004803603602081101561051757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061145c565b6040518082815260200191505060405180910390f35b6203f48081565b61056933611474565b565b600069032d26d12e980b6000006001541061058957600090506105b1565b60006105aa60015469032d26d12e980b60000061170a90919063ffffffff16565b9050809150505b90565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6203f4806106bf600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261170a90919063ffffffff16565b11610715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119b76034913960400191505060405180910390fd5b61071e33611474565b600061074861271061073a60c88561172190919063ffffffff16565b61175090919063ffffffff16565b9050600061075f828461170a90919063ffffffff16565b9050730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b505050506040513d602081101561083057600080fd5b81019080805190602001909291905050506108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b505050506040513d602081101561096257600080fd5b81019080805190602001909291905050506109e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b610a3783600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461170a90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a8e33600261176990919063ffffffff16565b8015610ad957506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15610af457610af233600261179990919063ffffffff16565b505b505050565b6000610b0560026117c9565b905090565b60056020528060005260406000206000915090505481565b609681565b60076020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b9757600080fd5b730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c0f57610be761056b565b811115610bf357600080fd5b610c08816001546117de90919063ffffffff16565b6001819055505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c8057600080fd5b505af1158015610c94573d6000803e3d6000fd5b505050506040513d6020811015610caa57600080fd5b810190808051906020019092919050505050505050565b61119481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d0182600261176990919063ffffffff16565b610d0e5760009050610e55565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610d5f5760009050610e55565b6000610db3600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261170a90919063ffffffff16565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000610e4c612710610e3e6301e13380610e3087610e226111948961172190919063ffffffff16565b61172190919063ffffffff16565b61175090919063ffffffff16565b61175090919063ffffffff16565b90508093505050505b919050565b730c3d45755783e913bf7b2fb798cc9b8c02d005d381565b60008111610ee8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505050506040513d6020811015610fb557600080fd5b8101908080519060200190929190505050611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b61104133611474565b600061106b61271061105d60968561172190919063ffffffff16565b61175090919063ffffffff16565b90506000611082828461170a90919063ffffffff16565b9050730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b505050506040513d602081101561115357600080fd5b81019080805190602001909291905050506111d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74207472616e73666572206465706f736974206665652e0081525060200191505060405180910390fd5b61122881600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117de90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061127f33600261176990919063ffffffff16565b6112dd576112973360026117fa90919063ffffffff16565b5042600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6301e1338081565b60046020528060005260406000206000915090505481565b60015481565b60c881565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561139f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090505481565b600061147f82610ceb565b905060008111156116c257730c3d45755783e913bf7b2fb798cc9b8c02d005d373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561150f57600080fd5b505af1158015611523573d6000803e3d6000fd5b505050506040513d602081101561153957600080fd5b81019080805190602001909291905050506115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61160e81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117de90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611666816001546117de90919063ffffffff16565b6001819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008282111561171657fe5b818303905092915050565b6000808284029050600084148061174057508284828161173d57fe5b04145b61174657fe5b8091505092915050565b60008082848161175c57fe5b0490508091505092915050565b6000611791836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61182a565b905092915050565b60006117c1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61184d565b905092915050565b60006117d782600001611935565b9050919050565b6000808284019050838110156117f057fe5b8091505092915050565b6000611822836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611946565b905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114611929576000600182039050600060018660000180549050039050600086600001828154811061189857fe5b90600052602060002001549050808760000184815481106118b557fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806118ed57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061192f565b60009150505b92915050565b600081600001805490509050919050565b6000611952838361182a565b6119ab5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506119b0565b600090505b9291505056fe596f7520726563656e746c79207374616b65642c20706c656173652077616974206265666f7265207769746864726177696e672ea2646970667358221220aaa0f5822af72e90871ec8c1af4b023f9092f80d68b4bfd7af4891918b3bf7e364736f6c634300060c0033
Deployed Bytecode Sourcemap
10029:4915:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10713:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14026:72;;;:::i;:::-;;14196:261;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13093:921;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12205:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10923:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10526:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11029:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14566:375;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10389:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9060:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11621:572;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10259:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12322:759;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10434:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10868:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10767:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10615:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9679:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10974:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10713:41;10746:8;10713:41;:::o;14026:72::-;14065:25;14079:10;14065:13;:25::i;:::-;14026:72::o;14196:261::-;14251:4;14160:23;14272:19;;:42;14268:83;;14338:1;14331:8;;;;14268:83;14361:14;14378:44;14402:19;;14160:23;14378;;:44;;;;:::i;:::-;14361:61;;14440:9;14433:16;;;14196:261;;:::o;13093:921::-;13191:16;13160:15;:27;13176:10;13160:27;;;;;;;;;;;;;;;;:47;;13152:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10746:8;13267:32;13275:11;:23;13287:10;13275:23;;;;;;;;;;;;;;;;13267:3;:7;;:32;;;;:::i;:::-;:44;13259:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13389:25;13403:10;13389:13;:25::i;:::-;13435:8;13446:47;13489:3;13446:38;10655:3;13446:16;:20;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;13435:58;;13504:19;13526:25;13547:3;13526:16;:20;;:25;;;;:::i;:::-;13504:47;;10298:42;13580:28;;;13609:5;;;;;;;;;;13616:3;13580:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13572:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10298:42;13676:28;;;13705:10;13717:14;13676:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13668:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13814:49;13846:16;13814:15;:27;13830:10;13814:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;13784:15;:27;13800:10;13784:27;;;;;;;;;;;;;;;:79;;;;13888:28;13905:10;13888:7;:16;;:28;;;;:::i;:::-;:64;;;;;13951:1;13920:15;:27;13936:10;13920:27;;;;;;;;;;;;;;;;:32;13888:64;13884:123;;;13969:26;13984:10;13969:7;:14;;:26;;;;:::i;:::-;;13884:123;13093:921;;;:::o;12205:99::-;12256:4;12280:16;:7;:14;:16::i;:::-;12273:23;;12205:99;:::o;10923:44::-;;;;;;;;;;;;;;;;;:::o;10526:41::-;10564:3;10526:41;:::o;11029:50::-;;;;;;;;;;;;;;;;;:::o;14566:375::-;9490:5;;;;;;;;;;9476:19;;:10;:19;;;9468:28;;;;;;10298:42:::1;14677:26;;:10;:26;;;14673:210;;;14734:24;:22;:24::i;:::-;14724:7;:34;14720:83;;;14779:8;::::0;::::1;14720:83;14839:32;14863:7;14839:19;;:23;;:32;;;;:::i;:::-;14817:19;:54;;;;14673:210;14899:10;14893:26;;;14920:3;14925:7;14893:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;14566:375:::0;;;:::o;10389:38::-;10423:4;10389:38;:::o;9060:20::-;;;;;;;;;;;;:::o;11621:572::-;11683:4;11705:25;11722:7;11705;:16;;:25;;;;:::i;:::-;11700:40;;11739:1;11732:8;;;;11700:40;11783:1;11755:15;:24;11771:7;11755:24;;;;;;;;;;;;;;;;:29;11751:43;;;11793:1;11786:8;;;;11751:43;11807:13;11823:33;11831:15;:24;11847:7;11831:24;;;;;;;;;;;;;;;;11823:3;:7;;:33;;;;:::i;:::-;11807:49;;11867:17;11887:15;:24;11903:7;11887:24;;;;;;;;;;;;;;;;11867:44;;11932:16;11951:191;12138:3;11951:152;10472:8;11951:102;12044:8;11951:58;10423:4;11951:12;:46;;:58;;;;:::i;:::-;:92;;:102;;;;:::i;:::-;:136;;:152;;;;:::i;:::-;:186;;:191;;;;:::i;:::-;11932:210;;12174:11;12167:18;;;;;11621:572;;;;:::o;10259:81::-;10298:42;10259:81;:::o;12322:759::-;12401:1;12385:13;:17;12377:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10298:42;12449:32;;;12482:10;12502:4;12509:13;12449:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12441:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12577:25;12591:10;12577:13;:25::i;:::-;12623:8;12634:42;12672:3;12634:33;10564:3;12634:13;:17;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;12623:53;;12687:19;12709:22;12727:3;12709:13;:17;;:22;;;;:::i;:::-;12687:44;;10298:42;12750:28;;;12779:5;;;;;;;;;;12786:3;12750:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12742:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12877:47;12909:14;12877:15;:27;12893:10;12877:27;;;;;;;;;;;;;;;;:31;;:47;;;;:::i;:::-;12847:15;:27;12863:10;12847:27;;;;;;;;;;;;;;;:77;;;;12950:28;12967:10;12950:7;:16;;:28;;;;:::i;:::-;12945:129;;12995:23;13007:10;12995:7;:11;;:23;;;;:::i;:::-;;13059:3;13033:11;:23;13045:10;13033:23;;;;;;;;;;;;;;;:29;;;;12945:129;12322:759;;;:::o;10434:46::-;10472:8;10434:46;:::o;10868:48::-;;;;;;;;;;;;;;;;;:::o;10767:35::-;;;;:::o;10615:43::-;10655:3;10615:43;:::o;9679:178::-;9490:5;;;;;;;;;;9476:19;;:10;:19;;;9468:28;;;;;;9776:1:::1;9756:22;;:8;:22;;;;9748:31;;;::::0;::::1;;9819:8;9791:37;;9812:5;::::0;::::1;;;;;;;;9791:37;;;;;;;;;;;;9843:8;9835:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;9679:178:::0;:::o;10974:48::-;;;;;;;;;;;;;;;;;:::o;11092:517::-;11151:16;11170:23;11185:7;11170:14;:23::i;:::-;11151:42;;11222:1;11208:11;:15;11204:357;;;10298:42;11248:28;;;11277:7;11286:11;11248:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11240:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11373:43;11404:11;11373:17;:26;11391:7;11373:26;;;;;;;;;;;;;;;;:30;;:43;;;;:::i;:::-;11344:17;:26;11362:7;11344:26;;;;;;;;;;;;;;;:72;;;;11453:36;11477:11;11453:19;;:23;;:36;;;;:::i;:::-;11431:19;:58;;;;11509:40;11528:7;11537:11;11509:40;;;;;;;;;;;;;;;;;;;;;;;;;;11204:357;11598:3;11571:15;:24;11587:7;11571:24;;;;;;;;;;;;;;;:30;;;;11092:517;;:::o;614:113::-;672:7;700:1;695;:6;;688:14;;;;720:1;716;:5;709:12;;614:113;;;;:::o;185:147::-;243:7;259:9;275:1;271;:5;259:17;;295:1;290;:6;:20;;;;309:1;304;300;:5;;;;;;:10;290:20;283:28;;;;325:1;318:8;;;185:147;;;;:::o;338:270::-;396:7;487:9;503:1;499;:5;;;;;;487:17;;601:1;594:8;;;338:270;;;;:::o;6375:158::-;6455:4;6479:46;6489:3;:10;;6517:5;6509:14;;6501:23;;6479:9;:46::i;:::-;6472:53;;6375:158;;;;:::o;6140:149::-;6213:4;6237:44;6245:3;:10;;6273:5;6265:14;;6257:23;;6237:7;:44::i;:::-;6230:51;;6140:149;;;;:::o;6619:117::-;6682:7;6709:19;6717:3;:10;;6709:7;:19::i;:::-;6702:26;;6619:117;;;:::o;733:133::-;791:7;807:9;823:1;819;:5;807:17;;843:1;838;:6;;831:14;;;;859:1;852:8;;;733:133;;;;:::o;5821:143::-;5891:4;5915:41;5920:3;:10;;5948:5;5940:14;;5932:23;;5915:4;:41::i;:::-;5908:48;;5821:143;;;;:::o;4695:129::-;4768:4;4815:1;4792:3;:12;;:19;4805:5;4792:19;;;;;;;;;;;;:24;;4785:31;;4695:129;;;;:::o;3065:1544::-;3131:4;3249:18;3270:3;:12;;:19;3283:5;3270:19;;;;;;;;;;;;3249:40;;3320:1;3306:10;:15;3302:1300;;3668:21;3705:1;3692:10;:14;3668:38;;3721:17;3762:1;3741:3;:11;;:18;;;;:22;3721:42;;4008:17;4028:3;:11;;4040:9;4028:22;;;;;;;;;;;;;;;;4008:42;;4174:9;4145:3;:11;;4157:13;4145:26;;;;;;;;;;;;;;;:38;;;;4293:1;4277:13;:17;4251:3;:12;;:23;4264:9;4251:23;;;;;;;;;;;:43;;;;4403:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;4498:3;:12;;:19;4511:5;4498:19;;;;;;;;;;;4491:26;;;4541:4;4534:11;;;;;;;;3302:1300;4585:5;4578:12;;;3065:1544;;;;;:::o;4910:109::-;4966:7;4993:3;:11;;:18;;;;4986:25;;4910:109;;;:::o;2475:414::-;2538:4;2560:21;2570:3;2575:5;2560:9;:21::i;:::-;2555:327;;2598:3;:11;;2615:5;2598:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2781:3;:11;;:18;;;;2759:3;:12;;:19;2772:5;2759:19;;;;;;;;;;;:40;;;;2821:4;2814:11;;;;2555:327;2865:5;2858:12;;2475:414;;;;;:::o
Swarm Source
ipfs://aaa0f5822af72e90871ec8c1af4b023f9092f80d68b4bfd7af4891918b3bf7e3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.