Overview
ETH Balance
0.025 ETH
Eth Value
$65.84 (@ $2,633.68/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 57 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Close Proposal | 17819980 | 455 days ago | IN | 0 ETH | 0.0019244 | ||||
Vote On Proposal | 17794079 | 459 days ago | IN | 0 ETH | 0.00442206 | ||||
Vote On Proposal | 17770370 | 462 days ago | IN | 0 ETH | 0.00354861 | ||||
Vote On Proposal | 17769828 | 462 days ago | IN | 0 ETH | 0.00270722 | ||||
Vote On Proposal | 17766256 | 463 days ago | IN | 0 ETH | 0.00325052 | ||||
Vote On Proposal | 17766005 | 463 days ago | IN | 0 ETH | 0.00392571 | ||||
Vote On Proposal | 17766002 | 463 days ago | IN | 0 ETH | 0.00405938 | ||||
Vote On Proposal | 17765924 | 463 days ago | IN | 0 ETH | 0.00383116 | ||||
Make Proposal | 17765806 | 463 days ago | IN | 0.005 ETH | 0.0335874 | ||||
Close Proposal | 17392718 | 515 days ago | IN | 0 ETH | 0.00369902 | ||||
Vote On Proposal | 17339101 | 523 days ago | IN | 0 ETH | 0.00347515 | ||||
Vote On Proposal | 17334073 | 523 days ago | IN | 0 ETH | 0.00443251 | ||||
Vote On Proposal | 17313278 | 526 days ago | IN | 0 ETH | 0.0033593 | ||||
Vote On Proposal | 17309693 | 527 days ago | IN | 0 ETH | 0.00684261 | ||||
Vote On Proposal | 17307101 | 527 days ago | IN | 0 ETH | 0.00331753 | ||||
Vote On Proposal | 17306663 | 527 days ago | IN | 0 ETH | 0.00360172 | ||||
Vote On Proposal | 17306661 | 527 days ago | IN | 0 ETH | 0.00331256 | ||||
Vote On Proposal | 17306654 | 527 days ago | IN | 0 ETH | 0.00443681 | ||||
Make Proposal | 17306645 | 527 days ago | IN | 0.005 ETH | 0.01763012 | ||||
Close Proposal | 17117196 | 554 days ago | IN | 0 ETH | 0.00826288 | ||||
Close Proposal | 17117195 | 554 days ago | IN | 0 ETH | 0.01050606 | ||||
Vote On Proposal | 17069265 | 561 days ago | IN | 0 ETH | 0.00437422 | ||||
Vote On Proposal | 17069259 | 561 days ago | IN | 0 ETH | 0.00387318 | ||||
Vote On Proposal | 17065420 | 561 days ago | IN | 0 ETH | 0.00377621 | ||||
Vote On Proposal | 17063282 | 562 days ago | IN | 0 ETH | 0.00423606 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CubeDAO
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-22 */ pragma solidity 0.8.17; // SPDX-License-Identifier: MIT 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; if (lastIndex != toDeleteIndex) { 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] = valueIndex; // Replace lastValue's index to valueIndex } // 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) { return set._values[index]; } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function _values(Set storage set) private view returns (bytes32[] memory) { return set._values; } // Bytes32Set struct Bytes32Set { 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(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, 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(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } /** * @dev Returns the number of values in the set. O(1). */ function length(Bytes32Set 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(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(Bytes32Set storage set) internal view returns (bytes32[] memory) { bytes32[] memory store = _values(set._inner); bytes32[] memory result; /// @solidity memory-safe-assembly assembly { result := store } return result; } // 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(uint160(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(uint160(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(uint160(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(uint160(uint256(_at(set._inner, index)))); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(AddressSet storage set) internal view returns (address[] memory) { bytes32[] memory store = _values(set._inner); address[] memory result; /// @solidity memory-safe-assembly assembly { result := store } return result; } // 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 in 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)); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(UintSet storage set) internal view returns (uint256[] memory) { bytes32[] memory store = _values(set._inner); uint256[] memory result; /// @solidity memory-safe-assembly assembly { result := store } return result; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); function decimals() external view returns (uint8); function name() external view returns (string memory); function totalSupply() external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract CubeDAO is Ownable, ReentrancyGuard { using EnumerableSet for EnumerableSet.UintSet; using EnumerableSet for EnumerableSet.Bytes32Set; using EnumerableSet for EnumerableSet.AddressSet; enum ProposalType{ TAXCHANGE, BUYBACK, MARKETING, NEWFEATURE } EnumerableSet.UintSet private activeProposals; EnumerableSet.UintSet private inactiveProposals; EnumerableSet.UintSet private allProposals; EnumerableSet.UintSet private passedProposals; EnumerableSet.UintSet private rejectedProposals; mapping(address => EnumerableSet.UintSet) private walletProposalsVotedOn; Proposal[] public proposals; ProposalVoters[] private proposalVoters; struct Proposal { ProposalType typeOfProposal; string description; uint256 valueOfChange; uint256 voteFor; uint256 voteAgainst; uint256 endVotingDate; } struct ProposalVoters { EnumerableSet.AddressSet voters; mapping(address => bool) voted; mapping(address => bool) voteToPass; mapping(address => uint256) voteWeight; } event NewProposalCreated(address indexed proposer, uint256 indexed proposalId); event Voted(address indexed voter, uint256 indexed proposalId, bool indexed pass); event ProposalClosed(uint256 indexed proposalId, bool indexed implemented); IERC20 public immutable Z3; uint256 public constant HOLDINGS_DENOMINATOR = 100000; uint256 public minHoldings = 100; // 100 = 0.1% uint256 public proposalCost = 0.005 ether; // not free to prevent spamming uint256 public proposalCounter = 0; constructor (address _z3) { Z3 = IERC20(_z3); } function updateProposalCost(uint256 _proposalCost) external onlyOwner { proposalCost = _proposalCost; } function checkProposalEligible(address wallet) public view returns (bool){ if(minHoldings == 0) return true; return (Z3.balanceOf(wallet) >= Z3.totalSupply() * minHoldings / HOLDINGS_DENOMINATOR); } function checkVoteEligible(address wallet) public view returns (bool){ if(minHoldings == 0) return true; return (Z3.balanceOf(wallet) >= Z3.totalSupply() * minHoldings / HOLDINGS_DENOMINATOR / 10); } function makeProposal(ProposalType _typeOfProposal, string calldata _description, uint256 _valueOfChange) external payable nonReentrant { require(msg.sender == tx.origin, "contracts cannot make proposals"); require(msg.value >= proposalCost, "Not enough ETH"); require(checkProposalEligible(msg.sender), "Ineligible"); proposals.push(); proposalVoters.push(); Proposal storage newProposal = proposals[proposalCounter]; newProposal.typeOfProposal = _typeOfProposal; newProposal.description = _description; newProposal.valueOfChange = _valueOfChange; newProposal.endVotingDate = block.timestamp + 7 days; activeProposals.add(proposalCounter); allProposals.add(proposalCounter); emit NewProposalCreated(msg.sender, proposalCounter); proposalCounter += 1; } function voteOnProposal(uint256 _proposalId, bool _pass) external nonReentrant { require(msg.sender == tx.origin, "contracts cannot vote"); require(activeProposals.contains(_proposalId), "invalid proposal"); require(checkVoteEligible(msg.sender), "Ineligible"); Proposal storage proposal = proposals[_proposalId]; ProposalVoters storage proposalVoter = proposalVoters[_proposalId]; require(!proposalVoter.voters.contains(msg.sender), "already voted"); proposalVoter.voters.add(msg.sender); if(_pass){ proposal.voteFor += Z3.balanceOf(msg.sender); proposalVoter.voteToPass[msg.sender] = true; } else { proposal.voteAgainst += Z3.balanceOf(msg.sender); proposalVoter.voteToPass[msg.sender] = false; } emit Voted(msg.sender, _proposalId, _pass); } function closeProposal(uint256 _proposalId, bool _implemented) external onlyOwner { require(activeProposals.contains(_proposalId), "invalid proposal"); activeProposals.remove(_proposalId); inactiveProposals.add(_proposalId); if(_implemented){ passedProposals.add(_proposalId); } else { rejectedProposals.add(_proposalId); } emit ProposalClosed(_proposalId, _implemented); } // views function returnAllProposals() external view returns (Proposal[] memory){ Proposal[] memory _proposals = new Proposal[](allProposals.length()); uint256[] memory proposalList = allProposals.values(); for(uint256 i = 0; i < proposalList.length; i++){ _proposals[i] = proposals[proposalList[i]]; } return _proposals; } function returnActiveProposals() external view returns (Proposal[] memory){ Proposal[] memory _proposals = new Proposal[](activeProposals.length()); uint256[] memory proposalList = activeProposals.values(); for(uint256 i = 0; i < proposalList.length; i++){ _proposals[i] = proposals[proposalList[i]]; } return _proposals; } function returnInactiveProposals() external view returns (Proposal[] memory){ Proposal[] memory _proposals = new Proposal[](inactiveProposals.length()); uint256[] memory proposalList = inactiveProposals.values(); for(uint256 i = 0; i < proposalList.length; i++){ _proposals[i] = proposals[proposalList[i]]; } return _proposals; } function returnPassedProposals() external view returns (Proposal[] memory){ Proposal[] memory _proposals = new Proposal[](passedProposals.length()); uint256[] memory proposalList = passedProposals.values(); for(uint256 i = 0; i < proposalList.length; i++){ _proposals[i] = proposals[proposalList[i]]; } return _proposals; } function returnRejectedProposals() external view returns (Proposal[] memory){ Proposal[] memory _proposals = new Proposal[](rejectedProposals.length()); uint256[] memory proposalList = rejectedProposals.values(); for(uint256 i = 0; i < proposalList.length; i++){ _proposals[i] = proposals[proposalList[i]]; } return _proposals; } function returnProposalVoterDetails(uint256 _proposalId) external view returns (address[] memory, uint256[] memory, bool[] memory){ address[] memory _voters = new address[](proposalVoters[_proposalId].voters.length()); address[] memory voterList = proposalVoters[_proposalId].voters.values(); uint256[] memory voteWeight = new uint256[](proposalVoters[_proposalId].voters.length()); bool[] memory votedToPass = new bool[](proposalVoters[_proposalId].voters.length()); for(uint256 i = 0; i < _voters.length; i++){ voteWeight[i] = proposalVoters[_proposalId].voteWeight[voterList[i]]; votedToPass[i] = proposalVoters[_proposalId].voteToPass[voterList[i]]; } return (voterList, voteWeight, votedToPass); } function returnWalletVotedProposals(address wallet) external view returns (Proposal[] memory){ Proposal[] memory _proposals = new Proposal[](walletProposalsVotedOn[wallet].length()); uint256[] memory proposalList = walletProposalsVotedOn[wallet].values(); for(uint256 i = 0; i < proposalList.length; i++){ _proposals[i] = proposals[proposalList[i]]; } return _proposals; } function returnVotePassing(uint256 _proposalId) external view returns (bool){ Proposal memory proposal = proposals[_proposalId]; return (proposal.voteFor > proposal.voteAgainst); } function sendEth() external onlyOwner { bool success; (success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "withdraw unsuccessful"); } function transferToken(address _token, address _to) external onlyOwner { require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); SafeERC20.safeTransfer(IERC20(_token),_to, _contractBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_z3","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"NewProposalCreated","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":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"bool","name":"implemented","type":"bool"}],"name":"ProposalClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"bool","name":"pass","type":"bool"}],"name":"Voted","type":"event"},{"inputs":[],"name":"HOLDINGS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Z3","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"checkProposalEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"checkVoteEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"bool","name":"_implemented","type":"bool"}],"name":"closeProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum CubeDAO.ProposalType","name":"_typeOfProposal","type":"uint8"},{"internalType":"string","name":"_description","type":"string"},{"internalType":"uint256","name":"_valueOfChange","type":"uint256"}],"name":"makeProposal","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"minHoldings","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":"proposalCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"enum CubeDAO.ProposalType","name":"typeOfProposal","type":"uint8"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"valueOfChange","type":"uint256"},{"internalType":"uint256","name":"voteFor","type":"uint256"},{"internalType":"uint256","name":"voteAgainst","type":"uint256"},{"internalType":"uint256","name":"endVotingDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnActiveProposals","outputs":[{"components":[{"internalType":"enum CubeDAO.ProposalType","name":"typeOfProposal","type":"uint8"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"valueOfChange","type":"uint256"},{"internalType":"uint256","name":"voteFor","type":"uint256"},{"internalType":"uint256","name":"voteAgainst","type":"uint256"},{"internalType":"uint256","name":"endVotingDate","type":"uint256"}],"internalType":"struct CubeDAO.Proposal[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnAllProposals","outputs":[{"components":[{"internalType":"enum CubeDAO.ProposalType","name":"typeOfProposal","type":"uint8"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"valueOfChange","type":"uint256"},{"internalType":"uint256","name":"voteFor","type":"uint256"},{"internalType":"uint256","name":"voteAgainst","type":"uint256"},{"internalType":"uint256","name":"endVotingDate","type":"uint256"}],"internalType":"struct CubeDAO.Proposal[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnInactiveProposals","outputs":[{"components":[{"internalType":"enum CubeDAO.ProposalType","name":"typeOfProposal","type":"uint8"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"valueOfChange","type":"uint256"},{"internalType":"uint256","name":"voteFor","type":"uint256"},{"internalType":"uint256","name":"voteAgainst","type":"uint256"},{"internalType":"uint256","name":"endVotingDate","type":"uint256"}],"internalType":"struct CubeDAO.Proposal[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnPassedProposals","outputs":[{"components":[{"internalType":"enum CubeDAO.ProposalType","name":"typeOfProposal","type":"uint8"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"valueOfChange","type":"uint256"},{"internalType":"uint256","name":"voteFor","type":"uint256"},{"internalType":"uint256","name":"voteAgainst","type":"uint256"},{"internalType":"uint256","name":"endVotingDate","type":"uint256"}],"internalType":"struct CubeDAO.Proposal[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"returnProposalVoterDetails","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnRejectedProposals","outputs":[{"components":[{"internalType":"enum CubeDAO.ProposalType","name":"typeOfProposal","type":"uint8"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"valueOfChange","type":"uint256"},{"internalType":"uint256","name":"voteFor","type":"uint256"},{"internalType":"uint256","name":"voteAgainst","type":"uint256"},{"internalType":"uint256","name":"endVotingDate","type":"uint256"}],"internalType":"struct CubeDAO.Proposal[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"returnVotePassing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"returnWalletVotedProposals","outputs":[{"components":[{"internalType":"enum CubeDAO.ProposalType","name":"typeOfProposal","type":"uint8"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"valueOfChange","type":"uint256"},{"internalType":"uint256","name":"voteFor","type":"uint256"},{"internalType":"uint256","name":"voteAgainst","type":"uint256"},{"internalType":"uint256","name":"endVotingDate","type":"uint256"}],"internalType":"struct CubeDAO.Proposal[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalCost","type":"uint256"}],"name":"updateProposalCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"bool","name":"_pass","type":"bool"}],"name":"voteOnProposal","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040526064600f556611c37937e0800060105560006011553480156200002657600080fd5b5060405162002cfb38038062002cfb8339810160408190526200004991620000a0565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180556001600160a01b0316608052620000d2565b600060208284031215620000b357600080fd5b81516001600160a01b0381168114620000cb57600080fd5b9392505050565b608051612bea62000111600039600081816103af015281816108e9015281816109aa01528181611552015281816116050152611cc80152612bea6000f3fe6080604052600436106101665760003560e01c8063715018a6116100d1578063a57d06eb1161008a578063e664f3b211610064578063e664f3b214610411578063e762303f14610427578063f2fde38b14610447578063fb1c6f4f1461046757600080fd5b8063a57d06eb146103d1578063bf4f5eb0146103e7578063c86d8c8f146103fc57600080fd5b8063715018a61461030a57806372b585811461031f5780638d498fd01461033f5780638da5cb5b146103545780638fd3fd7d146103865780639bb203ee1461039d57600080fd5b806348ae238f1161012357806348ae238f146102505780634c1f50441461027057806357db27db146102835780635c83d11a146102a55780635cb6f11a146102d55780636234eef5146102ea57600080fd5b8063013cf08b1461016b57806306e99fef146101a65780630c0512e9146101bd57806311fdab2e146101e15780631614665c1461020157806346532a6514610221575b600080fd5b34801561017757600080fd5b5061018b61018636600461256a565b610487565b60405161019d9695949392919061260b565b60405180910390f35b3480156101b257600080fd5b506101bb61055b565b005b3480156101c957600080fd5b506101d360115481565b60405190815260200161019d565b3480156101ed57600080fd5b506101bb6101fc36600461265e565b610623565b34801561020d57600080fd5b506101bb61021c36600461265e565b610706565b34801561022d57600080fd5b5061024161023c36600461256a565b610a8a565b60405161019d939291906126cb565b34801561025c57600080fd5b506101bb61026b36600461277e565b610d25565b6101bb61027e3660046127b1565b610e22565b34801561028f57600080fd5b5061029861104c565b60405161019d9190612840565b3480156102b157600080fd5b506102c56102c036600461256a565b61122e565b604051901515815260200161019d565b3480156102e157600080fd5b5061029861135b565b3480156102f657600080fd5b506102c56103053660046128e6565b611535565b34801561031657600080fd5b506101bb611678565b34801561032b57600080fd5b506101bb61033a36600461256a565b6116ec565b34801561034b57600080fd5b5061029861171b565b34801561036057600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161019d565b34801561039257600080fd5b506101d3620186a081565b3480156103a957600080fd5b5061036e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b506101d3600f5481565b3480156103f357600080fd5b506102986118f5565b34801561040857600080fd5b50610298611acf565b34801561041d57600080fd5b506101d360105481565b34801561043357600080fd5b506102c56104423660046128e6565b611ca9565b34801561045357600080fd5b506101bb6104623660046128e6565b611d5c565b34801561047357600080fd5b506102986104823660046128e6565b611e46565b600d818154811061049757600080fd5b60009182526020909120600690910201805460018201805460ff9092169350906104c090612901565b80601f01602080910402602001604051908101604052809291908181526020018280546104ec90612901565b80156105395780601f1061050e57610100808354040283529160200191610539565b820191906000526020600020905b81548152906001019060200180831161051c57829003601f168201915b5050505050908060020154908060030154908060040154908060050154905086565b6000546001600160a01b0316331461058e5760405162461bcd60e51b81526004016105859061293b565b60405180910390fd5b604051600090339047908381818185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b505080915050806106205760405162461bcd60e51b81526020600482015260156024820152741dda5d1a191c985dc81d5b9cdd58d8d95cdcd99d5b605a1b6044820152606401610585565b50565b6000546001600160a01b0316331461064d5760405162461bcd60e51b81526004016105859061293b565b610658600283612057565b6106975760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a59081c1c9bdc1bdcd85b60821b6044820152606401610585565b6106a2600283612074565b506106ae600483612080565b5080156106c6576106c0600883612080565b506106d3565b6106d1600a83612080565b505b6040518115159083907faffed5d901d9fbe9106721fa52653ede403c09699f9f810f6d378acc51fb50fa90600090a35050565b6002600154036107585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610585565b60026001553332146107a45760405162461bcd60e51b8152602060048201526015602482015274636f6e7472616374732063616e6e6f7420766f746560581b6044820152606401610585565b6107af600283612057565b6107ee5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a59081c1c9bdc1bdcd85b60821b6044820152606401610585565b6107f733611ca9565b6108305760405162461bcd60e51b815260206004820152600a602482015269496e656c696769626c6560b01b6044820152606401610585565b6000600d838154811061084557610845612970565b906000526020600020906006020190506000600e848154811061086a5761086a612970565b600091825260209091206005909102019050610886813361208c565b156108c35760405162461bcd60e51b815260206004820152600d60248201526c185b1c9958591e481d9bdd1959609a1b6044820152606401610585565b6108cd81336120ae565b508215610995576040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095c9190612986565b82600301600082825461096f91906129b5565b90915550503360009081526003820160205260409020805460ff19166001179055610a4f565b6040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190612986565b826004016000828254610a3091906129b5565b90915550503360009081526003820160205260409020805460ff191690555b60405183151590859033907f749addf8eadeff63c43be59c27331be5c6d4fc9e82bbfbcf162321c9b35a95b490600090a45050600180555050565b60608060606000610abd600e8681548110610aa757610aa7612970565b90600052602060002090600502016000016120c3565b67ffffffffffffffff811115610ad557610ad56129c8565b604051908082528060200260200182016040528015610afe578160200160208202803683370190505b5090506000610b2f600e8781548110610b1957610b19612970565b90600052602060002090600502016000016120cd565b90506000610b49600e8881548110610aa757610aa7612970565b67ffffffffffffffff811115610b6157610b616129c8565b604051908082528060200260200182016040528015610b8a578160200160208202803683370190505b5090506000610ba5600e8981548110610aa757610aa7612970565b67ffffffffffffffff811115610bbd57610bbd6129c8565b604051908082528060200260200182016040528015610be6578160200160208202803683370190505b50905060005b8451811015610d1657600e8981548110610c0857610c08612970565b90600052602060002090600502016004016000858381518110610c2d57610c2d612970565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054838281518110610c6857610c68612970565b602002602001018181525050600e8981548110610c8757610c87612970565b90600052602060002090600502016003016000858381518110610cac57610cac612970565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a900460ff16828281518110610cf457610cf4612970565b9115156020928302919091019091015280610d0e816129de565b915050610bec565b50919790965090945092505050565b6000546001600160a01b03163314610d4f5760405162461bcd60e51b81526004016105859061293b565b6001600160a01b038216610da55760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610585565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612986565b9050610e1d8383836120e1565b505050565b600260015403610e745760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610585565b6002600155333214610ec85760405162461bcd60e51b815260206004820152601f60248201527f636f6e7472616374732063616e6e6f74206d616b652070726f706f73616c73006044820152606401610585565b601054341015610f0b5760405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced0408aa8960931b6044820152606401610585565b610f1433611535565b610f4d5760405162461bcd60e51b815260206004820152600a602482015269496e656c696769626c6560b01b6044820152606401610585565b600d80546001908101808355600e805490920182556000918252601154919291908110610f7c57610f7c612970565b6000918252602090912060069091020180549091508590829060ff19166001836003811115610fad57610fad612583565b021790555060018101610fc1848683612a45565b5060028101829055610fd64262093a806129b5565b6005820155601154610fea90600290612080565b50601154610ffa90600690612080565b5060115460405133907f1d9d10f5e6fc94854c9abfa15b5313c0861160cd3569468c9da69bf94417c41690600090a360016011600082825461103c91906129b5565b9091555050600180555050505050565b6060600061105a60066120c3565b67ffffffffffffffff811115611072576110726129c8565b6040519080825280602002602001820160405280156110ab57816020015b611098612533565b8152602001906001900390816110905790505b50905060006110ba60066120cd565b905060005b815181101561122657600d8282815181106110dc576110dc612970565b6020026020010151815481106110f4576110f4612970565b600091825260209091206040805160c081019091526006909202018054829060ff16600381111561112757611127612583565b600381111561113857611138612583565b815260200160018201805461114c90612901565b80601f016020809104026020016040519081016040528092919081815260200182805461117890612901565b80156111c55780601f1061119a576101008083540402835291602001916111c5565b820191906000526020600020905b8154815290600101906020018083116111a857829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152505083828151811061120857611208612970565b6020026020010181905250808061121e906129de565b9150506110bf565b509092915050565b600080600d838154811061124457611244612970565b600091825260209091206040805160c081019091526006909202018054829060ff16600381111561127757611277612583565b600381111561128857611288612583565b815260200160018201805461129c90612901565b80601f01602080910402602001604051908101604052809291908181526020018280546112c890612901565b80156113155780601f106112ea57610100808354040283529160200191611315565b820191906000526020600020905b8154815290600101906020018083116112f857829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090508060800151816060015111915050919050565b6060600061136960026120c3565b67ffffffffffffffff811115611381576113816129c8565b6040519080825280602002602001820160405280156113ba57816020015b6113a7612533565b81526020019060019003908161139f5790505b50905060006113c960026120cd565b905060005b815181101561122657600d8282815181106113eb576113eb612970565b60200260200101518154811061140357611403612970565b600091825260209091206040805160c081019091526006909202018054829060ff16600381111561143657611436612583565b600381111561144757611447612583565b815260200160018201805461145b90612901565b80601f016020809104026020016040519081016040528092919081815260200182805461148790612901565b80156114d45780601f106114a9576101008083540402835291602001916114d4565b820191906000526020600020905b8154815290600101906020018083116114b757829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152505083828151811061151757611517612970565b6020026020010181905250808061152d906129de565b9150506113ce565b6000600f5460000361154957506001919050565b620186a0600f547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d29190612986565b6115dc9190612b06565b6115e69190612b1d565b6040516370a0823160e01b81526001600160a01b0384811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116709190612986565b101592915050565b6000546001600160a01b031633146116a25760405162461bcd60e51b81526004016105859061293b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117165760405162461bcd60e51b81526004016105859061293b565b601055565b6060600061172960086120c3565b67ffffffffffffffff811115611741576117416129c8565b60405190808252806020026020018201604052801561177a57816020015b611767612533565b81526020019060019003908161175f5790505b509050600061178960086120cd565b905060005b815181101561122657600d8282815181106117ab576117ab612970565b6020026020010151815481106117c3576117c3612970565b600091825260209091206040805160c081019091526006909202018054829060ff1660038111156117f6576117f6612583565b600381111561180757611807612583565b815260200160018201805461181b90612901565b80601f016020809104026020016040519081016040528092919081815260200182805461184790612901565b80156118945780601f1061186957610100808354040283529160200191611894565b820191906000526020600020905b81548152906001019060200180831161187757829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815250508382815181106118d7576118d7612970565b602002602001018190525080806118ed906129de565b91505061178e565b6060600061190360046120c3565b67ffffffffffffffff81111561191b5761191b6129c8565b60405190808252806020026020018201604052801561195457816020015b611941612533565b8152602001906001900390816119395790505b509050600061196360046120cd565b905060005b815181101561122657600d82828151811061198557611985612970565b60200260200101518154811061199d5761199d612970565b600091825260209091206040805160c081019091526006909202018054829060ff1660038111156119d0576119d0612583565b60038111156119e1576119e1612583565b81526020016001820180546119f590612901565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2190612901565b8015611a6e5780601f10611a4357610100808354040283529160200191611a6e565b820191906000526020600020905b815481529060010190602001808311611a5157829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481525050838281518110611ab157611ab1612970565b60200260200101819052508080611ac7906129de565b915050611968565b60606000611add600a6120c3565b67ffffffffffffffff811115611af557611af56129c8565b604051908082528060200260200182016040528015611b2e57816020015b611b1b612533565b815260200190600190039081611b135790505b5090506000611b3d600a6120cd565b905060005b815181101561122657600d828281518110611b5f57611b5f612970565b602002602001015181548110611b7757611b77612970565b600091825260209091206040805160c081019091526006909202018054829060ff166003811115611baa57611baa612583565b6003811115611bbb57611bbb612583565b8152602001600182018054611bcf90612901565b80601f0160208091040260200160405190810160405280929190818152602001828054611bfb90612901565b8015611c485780601f10611c1d57610100808354040283529160200191611c48565b820191906000526020600020905b815481529060010190602001808311611c2b57829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481525050838281518110611c8b57611c8b612970565b60200260200101819052508080611ca1906129de565b915050611b42565b6000600f54600003611cbd57506001919050565b600a620186a0600f547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d489190612986565b611d529190612b06565b6115dc9190612b1d565b6000546001600160a01b03163314611d865760405162461bcd60e51b81526004016105859061293b565b6001600160a01b038116611deb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610585565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600c6020526040812060609190611e6b906120c3565b67ffffffffffffffff811115611e8357611e836129c8565b604051908082528060200260200182016040528015611ebc57816020015b611ea9612533565b815260200190600190039081611ea15790505b506001600160a01b0384166000908152600c6020526040812091925090611ee2906120cd565b905060005b815181101561204e57600d828281518110611f0457611f04612970565b602002602001015181548110611f1c57611f1c612970565b600091825260209091206040805160c081019091526006909202018054829060ff166003811115611f4f57611f4f612583565b6003811115611f6057611f60612583565b8152602001600182018054611f7490612901565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa090612901565b8015611fed5780601f10611fc257610100808354040283529160200191611fed565b820191906000526020600020905b815481529060010190602001808311611fd057829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152505083828151811061203057612030612970565b60200260200101819052508080612046906129de565b915050611ee7565b50909392505050565b600081815260018301602052604081205415155b90505b92915050565b600061206b8383612133565b600061206b8383612226565b6001600160a01b0381166000908152600183016020526040812054151561206b565b600061206b836001600160a01b038416612226565b600061206e825490565b606060006120da83612275565b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e1d9084906122d1565b6000818152600183016020526040812054801561221c576000612157600183612b3f565b855490915060009061216b90600190612b3f565b90508181146121d057600086600001828154811061218b5761218b612970565b90600052602060002001549050808760000184815481106121ae576121ae612970565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806121e1576121e1612b52565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061206e565b600091505061206e565b600081815260018301602052604081205461226d5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561206e565b50600061206e565b6060816000018054806020026020016040519081016040528092919081815260200182805480156122c557602002820191906000526020600020905b8154815260200190600101908083116122b1575b50505050509050919050565b6000612326826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123a39092919063ffffffff16565b805190915015610e1d57808060200190518101906123449190612b68565b610e1d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610585565b60606123b284846000856123ba565b949350505050565b60608247101561241b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610585565b600080866001600160a01b031685876040516124379190612b85565b60006040518083038185875af1925050503d8060008114612474576040519150601f19603f3d011682016040523d82523d6000602084013e612479565b606091505b509150915061248a87838387612495565b979650505050505050565b606083156125045782516000036124fd576001600160a01b0385163b6124fd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b50816123b2565b6123b283838151156125195781518083602001fd5b8060405162461bcd60e51b81526004016105859190612ba1565b6040805160c08101909152806000815260200160608152602001600081526020016000815260200160008152602001600081525090565b60006020828403121561257c57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600481106125b757634e487b7160e01b600052602160045260246000fd5b9052565b60005b838110156125d65781810151838201526020016125be565b50506000910152565b600081518084526125f78160208601602086016125bb565b601f01601f19169290920160200192915050565b6126158188612599565b60c06020820152600061262b60c08301886125df565b90508560408301528460608301528360808301528260a0830152979650505050505050565b801515811461062057600080fd5b6000806040838503121561267157600080fd5b82359150602083013561268381612650565b809150509250929050565b600081518084526020808501945080840160005b838110156126c05781511515875295820195908201906001016126a2565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b8281101561270d5781516001600160a01b0316845292840192908401906001016126e8565b5050508381038285015285518082528683019183019060005b8181101561274257835183529284019291840191600101612726565b50508481036040860152612756818761268e565b98975050505050505050565b80356001600160a01b038116811461277957600080fd5b919050565b6000806040838503121561279157600080fd5b61279a83612762565b91506127a860208401612762565b90509250929050565b600080600080606085870312156127c757600080fd5b8435600481106127d657600080fd5b9350602085013567ffffffffffffffff808211156127f357600080fd5b818701915087601f83011261280757600080fd5b81358181111561281657600080fd5b88602082850101111561282857600080fd5b95986020929092019750949560400135945092505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156128d857603f19898403018552815160c0612887858351612599565b88820151818a87015261289c828701826125df565b838a0151878b0152606080850151908801526080808501519088015260a093840151939096019290925250509386019390860190600101612867565b509098975050505050505050565b6000602082840312156128f857600080fd5b61206b82612762565b600181811c9082168061291557607f821691505b60208210810361293557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561299857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561206e5761206e61299f565b634e487b7160e01b600052604160045260246000fd5b6000600182016129f0576129f061299f565b5060010190565b601f821115610e1d57600081815260208120601f850160051c81016020861015612a1e5750805b601f850160051c820191505b81811015612a3d57828155600101612a2a565b505050505050565b67ffffffffffffffff831115612a5d57612a5d6129c8565b612a7183612a6b8354612901565b836129f7565b6000601f841160018114612aa55760008515612a8d5750838201355b600019600387901b1c1916600186901b178355612aff565b600083815260209020601f19861690835b82811015612ad65786850135825560209485019460019092019101612ab6565b5086821015612af35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b808202811582820484141761206e5761206e61299f565b600082612b3a57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561206e5761206e61299f565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612b7a57600080fd5b81516120da81612650565b60008251612b978184602087016125bb565b9190910192915050565b60208152600061206b60208301846125df56fea26469706673582212205c54235aae33562af51dbc223d0822b054344881319279754d92bb5b2d0e018c64736f6c6343000811003300000000000000000000000050eec6d765792dcfb0913c8403ef2a12e1b861a6
Deployed Bytecode
0x6080604052600436106101665760003560e01c8063715018a6116100d1578063a57d06eb1161008a578063e664f3b211610064578063e664f3b214610411578063e762303f14610427578063f2fde38b14610447578063fb1c6f4f1461046757600080fd5b8063a57d06eb146103d1578063bf4f5eb0146103e7578063c86d8c8f146103fc57600080fd5b8063715018a61461030a57806372b585811461031f5780638d498fd01461033f5780638da5cb5b146103545780638fd3fd7d146103865780639bb203ee1461039d57600080fd5b806348ae238f1161012357806348ae238f146102505780634c1f50441461027057806357db27db146102835780635c83d11a146102a55780635cb6f11a146102d55780636234eef5146102ea57600080fd5b8063013cf08b1461016b57806306e99fef146101a65780630c0512e9146101bd57806311fdab2e146101e15780631614665c1461020157806346532a6514610221575b600080fd5b34801561017757600080fd5b5061018b61018636600461256a565b610487565b60405161019d9695949392919061260b565b60405180910390f35b3480156101b257600080fd5b506101bb61055b565b005b3480156101c957600080fd5b506101d360115481565b60405190815260200161019d565b3480156101ed57600080fd5b506101bb6101fc36600461265e565b610623565b34801561020d57600080fd5b506101bb61021c36600461265e565b610706565b34801561022d57600080fd5b5061024161023c36600461256a565b610a8a565b60405161019d939291906126cb565b34801561025c57600080fd5b506101bb61026b36600461277e565b610d25565b6101bb61027e3660046127b1565b610e22565b34801561028f57600080fd5b5061029861104c565b60405161019d9190612840565b3480156102b157600080fd5b506102c56102c036600461256a565b61122e565b604051901515815260200161019d565b3480156102e157600080fd5b5061029861135b565b3480156102f657600080fd5b506102c56103053660046128e6565b611535565b34801561031657600080fd5b506101bb611678565b34801561032b57600080fd5b506101bb61033a36600461256a565b6116ec565b34801561034b57600080fd5b5061029861171b565b34801561036057600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161019d565b34801561039257600080fd5b506101d3620186a081565b3480156103a957600080fd5b5061036e7f00000000000000000000000050eec6d765792dcfb0913c8403ef2a12e1b861a681565b3480156103dd57600080fd5b506101d3600f5481565b3480156103f357600080fd5b506102986118f5565b34801561040857600080fd5b50610298611acf565b34801561041d57600080fd5b506101d360105481565b34801561043357600080fd5b506102c56104423660046128e6565b611ca9565b34801561045357600080fd5b506101bb6104623660046128e6565b611d5c565b34801561047357600080fd5b506102986104823660046128e6565b611e46565b600d818154811061049757600080fd5b60009182526020909120600690910201805460018201805460ff9092169350906104c090612901565b80601f01602080910402602001604051908101604052809291908181526020018280546104ec90612901565b80156105395780601f1061050e57610100808354040283529160200191610539565b820191906000526020600020905b81548152906001019060200180831161051c57829003601f168201915b5050505050908060020154908060030154908060040154908060050154905086565b6000546001600160a01b0316331461058e5760405162461bcd60e51b81526004016105859061293b565b60405180910390fd5b604051600090339047908381818185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b505080915050806106205760405162461bcd60e51b81526020600482015260156024820152741dda5d1a191c985dc81d5b9cdd58d8d95cdcd99d5b605a1b6044820152606401610585565b50565b6000546001600160a01b0316331461064d5760405162461bcd60e51b81526004016105859061293b565b610658600283612057565b6106975760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a59081c1c9bdc1bdcd85b60821b6044820152606401610585565b6106a2600283612074565b506106ae600483612080565b5080156106c6576106c0600883612080565b506106d3565b6106d1600a83612080565b505b6040518115159083907faffed5d901d9fbe9106721fa52653ede403c09699f9f810f6d378acc51fb50fa90600090a35050565b6002600154036107585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610585565b60026001553332146107a45760405162461bcd60e51b8152602060048201526015602482015274636f6e7472616374732063616e6e6f7420766f746560581b6044820152606401610585565b6107af600283612057565b6107ee5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a59081c1c9bdc1bdcd85b60821b6044820152606401610585565b6107f733611ca9565b6108305760405162461bcd60e51b815260206004820152600a602482015269496e656c696769626c6560b01b6044820152606401610585565b6000600d838154811061084557610845612970565b906000526020600020906006020190506000600e848154811061086a5761086a612970565b600091825260209091206005909102019050610886813361208c565b156108c35760405162461bcd60e51b815260206004820152600d60248201526c185b1c9958591e481d9bdd1959609a1b6044820152606401610585565b6108cd81336120ae565b508215610995576040516370a0823160e01b81523360048201527f00000000000000000000000050eec6d765792dcfb0913c8403ef2a12e1b861a66001600160a01b0316906370a0823190602401602060405180830381865afa158015610938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095c9190612986565b82600301600082825461096f91906129b5565b90915550503360009081526003820160205260409020805460ff19166001179055610a4f565b6040516370a0823160e01b81523360048201527f00000000000000000000000050eec6d765792dcfb0913c8403ef2a12e1b861a66001600160a01b0316906370a0823190602401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190612986565b826004016000828254610a3091906129b5565b90915550503360009081526003820160205260409020805460ff191690555b60405183151590859033907f749addf8eadeff63c43be59c27331be5c6d4fc9e82bbfbcf162321c9b35a95b490600090a45050600180555050565b60608060606000610abd600e8681548110610aa757610aa7612970565b90600052602060002090600502016000016120c3565b67ffffffffffffffff811115610ad557610ad56129c8565b604051908082528060200260200182016040528015610afe578160200160208202803683370190505b5090506000610b2f600e8781548110610b1957610b19612970565b90600052602060002090600502016000016120cd565b90506000610b49600e8881548110610aa757610aa7612970565b67ffffffffffffffff811115610b6157610b616129c8565b604051908082528060200260200182016040528015610b8a578160200160208202803683370190505b5090506000610ba5600e8981548110610aa757610aa7612970565b67ffffffffffffffff811115610bbd57610bbd6129c8565b604051908082528060200260200182016040528015610be6578160200160208202803683370190505b50905060005b8451811015610d1657600e8981548110610c0857610c08612970565b90600052602060002090600502016004016000858381518110610c2d57610c2d612970565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054838281518110610c6857610c68612970565b602002602001018181525050600e8981548110610c8757610c87612970565b90600052602060002090600502016003016000858381518110610cac57610cac612970565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a900460ff16828281518110610cf457610cf4612970565b9115156020928302919091019091015280610d0e816129de565b915050610bec565b50919790965090945092505050565b6000546001600160a01b03163314610d4f5760405162461bcd60e51b81526004016105859061293b565b6001600160a01b038216610da55760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610585565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612986565b9050610e1d8383836120e1565b505050565b600260015403610e745760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610585565b6002600155333214610ec85760405162461bcd60e51b815260206004820152601f60248201527f636f6e7472616374732063616e6e6f74206d616b652070726f706f73616c73006044820152606401610585565b601054341015610f0b5760405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced0408aa8960931b6044820152606401610585565b610f1433611535565b610f4d5760405162461bcd60e51b815260206004820152600a602482015269496e656c696769626c6560b01b6044820152606401610585565b600d80546001908101808355600e805490920182556000918252601154919291908110610f7c57610f7c612970565b6000918252602090912060069091020180549091508590829060ff19166001836003811115610fad57610fad612583565b021790555060018101610fc1848683612a45565b5060028101829055610fd64262093a806129b5565b6005820155601154610fea90600290612080565b50601154610ffa90600690612080565b5060115460405133907f1d9d10f5e6fc94854c9abfa15b5313c0861160cd3569468c9da69bf94417c41690600090a360016011600082825461103c91906129b5565b9091555050600180555050505050565b6060600061105a60066120c3565b67ffffffffffffffff811115611072576110726129c8565b6040519080825280602002602001820160405280156110ab57816020015b611098612533565b8152602001906001900390816110905790505b50905060006110ba60066120cd565b905060005b815181101561122657600d8282815181106110dc576110dc612970565b6020026020010151815481106110f4576110f4612970565b600091825260209091206040805160c081019091526006909202018054829060ff16600381111561112757611127612583565b600381111561113857611138612583565b815260200160018201805461114c90612901565b80601f016020809104026020016040519081016040528092919081815260200182805461117890612901565b80156111c55780601f1061119a576101008083540402835291602001916111c5565b820191906000526020600020905b8154815290600101906020018083116111a857829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152505083828151811061120857611208612970565b6020026020010181905250808061121e906129de565b9150506110bf565b509092915050565b600080600d838154811061124457611244612970565b600091825260209091206040805160c081019091526006909202018054829060ff16600381111561127757611277612583565b600381111561128857611288612583565b815260200160018201805461129c90612901565b80601f01602080910402602001604051908101604052809291908181526020018280546112c890612901565b80156113155780601f106112ea57610100808354040283529160200191611315565b820191906000526020600020905b8154815290600101906020018083116112f857829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090508060800151816060015111915050919050565b6060600061136960026120c3565b67ffffffffffffffff811115611381576113816129c8565b6040519080825280602002602001820160405280156113ba57816020015b6113a7612533565b81526020019060019003908161139f5790505b50905060006113c960026120cd565b905060005b815181101561122657600d8282815181106113eb576113eb612970565b60200260200101518154811061140357611403612970565b600091825260209091206040805160c081019091526006909202018054829060ff16600381111561143657611436612583565b600381111561144757611447612583565b815260200160018201805461145b90612901565b80601f016020809104026020016040519081016040528092919081815260200182805461148790612901565b80156114d45780601f106114a9576101008083540402835291602001916114d4565b820191906000526020600020905b8154815290600101906020018083116114b757829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152505083828151811061151757611517612970565b6020026020010181905250808061152d906129de565b9150506113ce565b6000600f5460000361154957506001919050565b620186a0600f547f00000000000000000000000050eec6d765792dcfb0913c8403ef2a12e1b861a66001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d29190612986565b6115dc9190612b06565b6115e69190612b1d565b6040516370a0823160e01b81526001600160a01b0384811660048301527f00000000000000000000000050eec6d765792dcfb0913c8403ef2a12e1b861a616906370a0823190602401602060405180830381865afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116709190612986565b101592915050565b6000546001600160a01b031633146116a25760405162461bcd60e51b81526004016105859061293b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117165760405162461bcd60e51b81526004016105859061293b565b601055565b6060600061172960086120c3565b67ffffffffffffffff811115611741576117416129c8565b60405190808252806020026020018201604052801561177a57816020015b611767612533565b81526020019060019003908161175f5790505b509050600061178960086120cd565b905060005b815181101561122657600d8282815181106117ab576117ab612970565b6020026020010151815481106117c3576117c3612970565b600091825260209091206040805160c081019091526006909202018054829060ff1660038111156117f6576117f6612583565b600381111561180757611807612583565b815260200160018201805461181b90612901565b80601f016020809104026020016040519081016040528092919081815260200182805461184790612901565b80156118945780601f1061186957610100808354040283529160200191611894565b820191906000526020600020905b81548152906001019060200180831161187757829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815250508382815181106118d7576118d7612970565b602002602001018190525080806118ed906129de565b91505061178e565b6060600061190360046120c3565b67ffffffffffffffff81111561191b5761191b6129c8565b60405190808252806020026020018201604052801561195457816020015b611941612533565b8152602001906001900390816119395790505b509050600061196360046120cd565b905060005b815181101561122657600d82828151811061198557611985612970565b60200260200101518154811061199d5761199d612970565b600091825260209091206040805160c081019091526006909202018054829060ff1660038111156119d0576119d0612583565b60038111156119e1576119e1612583565b81526020016001820180546119f590612901565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2190612901565b8015611a6e5780601f10611a4357610100808354040283529160200191611a6e565b820191906000526020600020905b815481529060010190602001808311611a5157829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481525050838281518110611ab157611ab1612970565b60200260200101819052508080611ac7906129de565b915050611968565b60606000611add600a6120c3565b67ffffffffffffffff811115611af557611af56129c8565b604051908082528060200260200182016040528015611b2e57816020015b611b1b612533565b815260200190600190039081611b135790505b5090506000611b3d600a6120cd565b905060005b815181101561122657600d828281518110611b5f57611b5f612970565b602002602001015181548110611b7757611b77612970565b600091825260209091206040805160c081019091526006909202018054829060ff166003811115611baa57611baa612583565b6003811115611bbb57611bbb612583565b8152602001600182018054611bcf90612901565b80601f0160208091040260200160405190810160405280929190818152602001828054611bfb90612901565b8015611c485780601f10611c1d57610100808354040283529160200191611c48565b820191906000526020600020905b815481529060010190602001808311611c2b57829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481525050838281518110611c8b57611c8b612970565b60200260200101819052508080611ca1906129de565b915050611b42565b6000600f54600003611cbd57506001919050565b600a620186a0600f547f00000000000000000000000050eec6d765792dcfb0913c8403ef2a12e1b861a66001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d489190612986565b611d529190612b06565b6115dc9190612b1d565b6000546001600160a01b03163314611d865760405162461bcd60e51b81526004016105859061293b565b6001600160a01b038116611deb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610585565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600c6020526040812060609190611e6b906120c3565b67ffffffffffffffff811115611e8357611e836129c8565b604051908082528060200260200182016040528015611ebc57816020015b611ea9612533565b815260200190600190039081611ea15790505b506001600160a01b0384166000908152600c6020526040812091925090611ee2906120cd565b905060005b815181101561204e57600d828281518110611f0457611f04612970565b602002602001015181548110611f1c57611f1c612970565b600091825260209091206040805160c081019091526006909202018054829060ff166003811115611f4f57611f4f612583565b6003811115611f6057611f60612583565b8152602001600182018054611f7490612901565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa090612901565b8015611fed5780601f10611fc257610100808354040283529160200191611fed565b820191906000526020600020905b815481529060010190602001808311611fd057829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152505083828151811061203057612030612970565b60200260200101819052508080612046906129de565b915050611ee7565b50909392505050565b600081815260018301602052604081205415155b90505b92915050565b600061206b8383612133565b600061206b8383612226565b6001600160a01b0381166000908152600183016020526040812054151561206b565b600061206b836001600160a01b038416612226565b600061206e825490565b606060006120da83612275565b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e1d9084906122d1565b6000818152600183016020526040812054801561221c576000612157600183612b3f565b855490915060009061216b90600190612b3f565b90508181146121d057600086600001828154811061218b5761218b612970565b90600052602060002001549050808760000184815481106121ae576121ae612970565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806121e1576121e1612b52565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061206e565b600091505061206e565b600081815260018301602052604081205461226d5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561206e565b50600061206e565b6060816000018054806020026020016040519081016040528092919081815260200182805480156122c557602002820191906000526020600020905b8154815260200190600101908083116122b1575b50505050509050919050565b6000612326826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123a39092919063ffffffff16565b805190915015610e1d57808060200190518101906123449190612b68565b610e1d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610585565b60606123b284846000856123ba565b949350505050565b60608247101561241b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610585565b600080866001600160a01b031685876040516124379190612b85565b60006040518083038185875af1925050503d8060008114612474576040519150601f19603f3d011682016040523d82523d6000602084013e612479565b606091505b509150915061248a87838387612495565b979650505050505050565b606083156125045782516000036124fd576001600160a01b0385163b6124fd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b50816123b2565b6123b283838151156125195781518083602001fd5b8060405162461bcd60e51b81526004016105859190612ba1565b6040805160c08101909152806000815260200160608152602001600081526020016000815260200160008152602001600081525090565b60006020828403121561257c57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600481106125b757634e487b7160e01b600052602160045260246000fd5b9052565b60005b838110156125d65781810151838201526020016125be565b50506000910152565b600081518084526125f78160208601602086016125bb565b601f01601f19169290920160200192915050565b6126158188612599565b60c06020820152600061262b60c08301886125df565b90508560408301528460608301528360808301528260a0830152979650505050505050565b801515811461062057600080fd5b6000806040838503121561267157600080fd5b82359150602083013561268381612650565b809150509250929050565b600081518084526020808501945080840160005b838110156126c05781511515875295820195908201906001016126a2565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b8281101561270d5781516001600160a01b0316845292840192908401906001016126e8565b5050508381038285015285518082528683019183019060005b8181101561274257835183529284019291840191600101612726565b50508481036040860152612756818761268e565b98975050505050505050565b80356001600160a01b038116811461277957600080fd5b919050565b6000806040838503121561279157600080fd5b61279a83612762565b91506127a860208401612762565b90509250929050565b600080600080606085870312156127c757600080fd5b8435600481106127d657600080fd5b9350602085013567ffffffffffffffff808211156127f357600080fd5b818701915087601f83011261280757600080fd5b81358181111561281657600080fd5b88602082850101111561282857600080fd5b95986020929092019750949560400135945092505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156128d857603f19898403018552815160c0612887858351612599565b88820151818a87015261289c828701826125df565b838a0151878b0152606080850151908801526080808501519088015260a093840151939096019290925250509386019390860190600101612867565b509098975050505050505050565b6000602082840312156128f857600080fd5b61206b82612762565b600181811c9082168061291557607f821691505b60208210810361293557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561299857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561206e5761206e61299f565b634e487b7160e01b600052604160045260246000fd5b6000600182016129f0576129f061299f565b5060010190565b601f821115610e1d57600081815260208120601f850160051c81016020861015612a1e5750805b601f850160051c820191505b81811015612a3d57828155600101612a2a565b505050505050565b67ffffffffffffffff831115612a5d57612a5d6129c8565b612a7183612a6b8354612901565b836129f7565b6000601f841160018114612aa55760008515612a8d5750838201355b600019600387901b1c1916600186901b178355612aff565b600083815260209020601f19861690835b82811015612ad65786850135825560209485019460019092019101612ab6565b5086821015612af35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b808202811582820484141761206e5761206e61299f565b600082612b3a57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561206e5761206e61299f565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612b7a57600080fd5b81516120da81612650565b60008251612b978184602087016125bb565b9190910192915050565b60208152600061206b60208301846125df56fea26469706673582212205c54235aae33562af51dbc223d0822b054344881319279754d92bb5b2d0e018c64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000050eec6d765792dcfb0913c8403ef2a12e1b861a6
-----Decoded View---------------
Arg [0] : _z3 (address): 0x50Eec6D765792dCfB0913C8403ef2A12e1B861a6
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000050eec6d765792dcfb0913c8403ef2a12e1b861a6
Deployed Bytecode Sourcemap
21746:8554:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22380:27;;;;;;;;;;-1:-1:-1;22380:27:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;29797:195;;;;;;;;;;;;;:::i;:::-;;23379:34;;;;;;;;;;;;;;;;;;;1874:25:1;;;1862:2;1847:18;23379:34:0;1728:177:1;25875:467:0;;;;;;;;;;-1:-1:-1;25875:467:0;;;;;:::i;:::-;;:::i;24967:900::-;;;;;;;;;;-1:-1:-1;24967:900:0;;;;;:::i;:::-;;:::i;28339:796::-;;;;;;;;;;-1:-1:-1;28339:796:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;30000:297::-;;;;;;;;;;-1:-1:-1;30000:297:0;;;;;:::i;:::-;;:::i;24075:884::-;;;;;;:::i;:::-;;:::i;26366:377::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;29586:203::-;;;;;;;;;;-1:-1:-1;29586:203:0;;;;;:::i;:::-;;:::i;:::-;;;7004:14:1;;6997:22;6979:41;;6967:2;6952:18;29586:203:0;6839:187:1;26751:386:0;;;;;;;;;;;;;:::i;23616:221::-;;;;;;;;;;-1:-1:-1;23616:221:0;;;;;:::i;:::-;;:::i;14578:150::-;;;;;;;;;;;;;:::i;23491:117::-;;;;;;;;;;-1:-1:-1;23491:117:0;;;;;:::i;:::-;;:::i;27545:386::-;;;;;;;;;;;;;:::i;14364:79::-;;;;;;;;;;-1:-1:-1;14402:7:0;14429:6;-1:-1:-1;;;;;14429:6:0;14364:79;;;-1:-1:-1;;;;;7386:32:1;;;7368:51;;7356:2;7341:18;14364:79:0;7222:203:1;23186:53:0;;;;;;;;;;;;23233:6;23186:53;;23153:26;;;;;;;;;;;;;;;23246:32;;;;;;;;;;;;;;;;27145:392;;;;;;;;;;;;;:::i;27939:::-;;;;;;;;;;;;;:::i;23299:41::-;;;;;;;;;;;;;;;;23845:222;;;;;;;;;;-1:-1:-1;23845:222:0;;;;;:::i;:::-;;:::i;14736:281::-;;;;;;;;;;-1:-1:-1;14736:281:0;;;;;:::i;:::-;;:::i;29143:435::-;;;;;;;;;;-1:-1:-1;29143:435:0;;;;;:::i;:::-;;:::i;22380:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22380:27:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29797:195::-;14491:6;;-1:-1:-1;;;;;14491:6:0;12613:10;14491:22;14483:67;;;;-1:-1:-1;;;14483:67:0;;;;;;;:::i;:::-;;;;;;;;;29883:49:::1;::::0;29846:12:::1;::::0;29883:10:::1;::::0;29906:21:::1;::::0;29846:12;29883:49;29846:12;29883:49;29906:21;29883:10;:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29869:63;;;;;29951:7;29943:41;;;::::0;-1:-1:-1;;;29943:41:0;;8810:2:1;29943:41:0::1;::::0;::::1;8792:21:1::0;8849:2;8829:18;;;8822:30;-1:-1:-1;;;8868:18:1;;;8861:51;8929:18;;29943:41:0::1;8608:345:1::0;29943:41:0::1;29835:157;29797:195::o:0;25875:467::-;14491:6;;-1:-1:-1;;;;;14491:6:0;12613:10;14491:22;14483:67;;;;-1:-1:-1;;;14483:67:0;;;;;;;:::i;:::-;25976:37:::1;:15;26001:11:::0;25976:24:::1;:37::i;:::-;25968:66;;;::::0;-1:-1:-1;;;25968:66:0;;9160:2:1;25968:66:0::1;::::0;::::1;9142:21:1::0;9199:2;9179:18;;;9172:30;-1:-1:-1;;;9218:18:1;;;9211:46;9274:18;;25968:66:0::1;8958:340:1::0;25968:66:0::1;26045:35;:15;26068:11:::0;26045:22:::1;:35::i;:::-;-1:-1:-1::0;26091:34:0::1;:17;26113:11:::0;26091:21:::1;:34::i;:::-;;26139:12;26136:142;;;26167:32;:15;26187:11:::0;26167:19:::1;:32::i;:::-;;26136:142;;;26232:34;:17;26254:11:::0;26232:21:::1;:34::i;:::-;;26136:142;26293:41;::::0;;::::1;;::::0;26308:11;;26293:41:::1;::::0;;;::::1;25875:467:::0;;:::o;24967:900::-;13730:1;13876:7;;:19;13868:63;;;;-1:-1:-1;;;13868:63:0;;9505:2:1;13868:63:0;;;9487:21:1;9544:2;9524:18;;;9517:30;9583:33;9563:18;;;9556:61;9634:18;;13868:63:0;9303:355:1;13868:63:0;13730:1;13942:7;:18;25065:10:::1;25079:9;25065:23;25057:57;;;::::0;-1:-1:-1;;;25057:57:0;;9865:2:1;25057:57:0::1;::::0;::::1;9847:21:1::0;9904:2;9884:18;;;9877:30;-1:-1:-1;;;9923:18:1;;;9916:51;9984:18;;25057:57:0::1;9663:345:1::0;25057:57:0::1;25133:37;:15;25158:11:::0;25133:24:::1;:37::i;:::-;25125:66;;;::::0;-1:-1:-1;;;25125:66:0;;9160:2:1;25125:66:0::1;::::0;::::1;9142:21:1::0;9199:2;9179:18;;;9172:30;-1:-1:-1;;;9218:18:1;;;9211:46;9274:18;;25125:66:0::1;8958:340:1::0;25125:66:0::1;25210:29;25228:10;25210:17;:29::i;:::-;25202:52;;;::::0;-1:-1:-1;;;25202:52:0;;10215:2:1;25202:52:0::1;::::0;::::1;10197:21:1::0;10254:2;10234:18;;;10227:30;-1:-1:-1;;;10273:18:1;;;10266:40;10323:18;;25202:52:0::1;10013:334:1::0;25202:52:0::1;25265:25;25293:9;25303:11;25293:22;;;;;;;;:::i;:::-;;;;;;;;;;;25265:50;;25326:36;25365:14;25380:11;25365:27;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;::::0;-1:-1:-1;25412:41:0::1;25365:27:::0;25442:10:::1;25412:29;:41::i;:::-;25411:42;25403:68;;;::::0;-1:-1:-1;;;25403:68:0;;10686:2:1;25403:68:0::1;::::0;::::1;10668:21:1::0;10725:2;10705:18;;;10698:30;-1:-1:-1;;;10744:18:1;;;10737:43;10797:18;;25403:68:0::1;10484:337:1::0;25403:68:0::1;25482:36;:13:::0;25507:10:::1;25482:24;:36::i;:::-;;25532:5;25529:278;;;25573:24;::::0;-1:-1:-1;;;25573:24:0;;25586:10:::1;25573:24;::::0;::::1;7368:51:1::0;25573:2:0::1;-1:-1:-1::0;;;;;25573:12:0::1;::::0;::::1;::::0;7341:18:1;;25573:24:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25553:8;:16;;;:44;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;25637:10:0::1;25612:36;::::0;;;:24:::1;::::0;::::1;:36;::::0;;;;:43;;-1:-1:-1;;25612:43:0::1;25651:4;25612:43;::::0;;25529:278:::1;;;25712:24;::::0;-1:-1:-1;;;25712:24:0;;25725:10:::1;25712:24;::::0;::::1;7368:51:1::0;25712:2:0::1;-1:-1:-1::0;;;;;25712:12:0::1;::::0;::::1;::::0;7341:18:1;;25712:24:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25688:8;:20;;;:48;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;25776:10:0::1;25790:5;25751:36:::0;;;:24:::1;::::0;::::1;:36;::::0;;;;:44;;-1:-1:-1;;25751:44:0::1;::::0;;25529:278:::1;25822:37;::::0;;::::1;;::::0;25840:11;;25828:10:::1;::::0;25822:37:::1;::::0;;;::::1;-1:-1:-1::0;;13686:1:0;13983:22;;-1:-1:-1;;24967:900:0:o;28339:796::-;28419:16;28437;28455:13;28480:24;28521:43;:14;28536:11;28521:27;;;;;;;;:::i;:::-;;;;;;;;;;;:34;;:41;:43::i;:::-;28507:58;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28507:58:0;;28480:85;;28576:26;28605:43;:14;28620:11;28605:27;;;;;;;;:::i;:::-;;;;;;;;;;;:34;;:41;:43::i;:::-;28576:72;;28659:27;28703:43;:14;28718:11;28703:27;;;;;;;;:::i;:43::-;28689:58;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28689:58:0;;28659:88;;28758:25;28797:43;:14;28812:11;28797:27;;;;;;;;:::i;:43::-;28786:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28786:55:0;;28758:83;;28856:9;28852:222;28875:7;:14;28871:1;:18;28852:222;;;28926:14;28941:11;28926:27;;;;;;;;:::i;:::-;;;;;;;;;;;:38;;:52;28965:9;28975:1;28965:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;28926:52:0;-1:-1:-1;;;;;28926:52:0;;;;;;;;;;;;;28910:10;28921:1;28910:13;;;;;;;;:::i;:::-;;;;;;:68;;;;;29010:14;29025:11;29010:27;;;;;;;;:::i;:::-;;;;;;;;;;;:38;;:52;29049:9;29059:1;29049:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;29010:52:0;-1:-1:-1;;;;;29010:52:0;;;;;;;;;;;;;;;;;;;;;;28993:11;29005:1;28993:14;;;;;;;;:::i;:::-;:69;;;:14;;;;;;;;;;;:69;28891:3;;;;:::i;:::-;;;;28852:222;;;-1:-1:-1;29092:9:0;;29103:10;;-1:-1:-1;29092:9:0;;-1:-1:-1;28339:796:0;-1:-1:-1;;;28339:796:0:o;30000:297::-;14491:6;;-1:-1:-1;;;;;14491:6:0;12613:10;14491:22;14483:67;;;;-1:-1:-1;;;14483:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30090:20:0;::::1;30082:59;;;::::0;-1:-1:-1;;;30082:59:0;;11751:2:1;30082:59:0::1;::::0;::::1;11733:21:1::0;11790:2;11770:18;;;11763:30;11829:28;11809:18;;;11802:56;11875:18;;30082:59:0::1;11549:350:1::0;30082:59:0::1;30179:39;::::0;-1:-1:-1;;;30179:39:0;;30212:4:::1;30179:39;::::0;::::1;7368:51:1::0;30152:24:0::1;::::0;-1:-1:-1;;;;;30179:24:0;::::1;::::0;::::1;::::0;7341:18:1;;30179:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30152:66;;30229:60;30259:6;30267:3;30272:16;30229:22;:60::i;:::-;30071:226;30000:297:::0;;:::o;24075:884::-;13730:1;13876:7;;:19;13868:63;;;;-1:-1:-1;;;13868:63:0;;9505:2:1;13868:63:0;;;9487:21:1;9544:2;9524:18;;;9517:30;9583:33;9563:18;;;9556:61;9634:18;;13868:63:0;9303:355:1;13868:63:0;13730:1;13942:7;:18;24230:10:::1;24244:9;24230:23;24222:67;;;::::0;-1:-1:-1;;;24222:67:0;;12106:2:1;24222:67:0::1;::::0;::::1;12088:21:1::0;12145:2;12125:18;;;12118:30;12184:33;12164:18;;;12157:61;12235:18;;24222:67:0::1;11904:355:1::0;24222:67:0::1;24321:12;;24308:9;:25;;24300:52;;;::::0;-1:-1:-1;;;24300:52:0;;12466:2:1;24300:52:0::1;::::0;::::1;12448:21:1::0;12505:2;12485:18;;;12478:30;-1:-1:-1;;;12524:18:1;;;12517:44;12578:18;;24300:52:0::1;12264:338:1::0;24300:52:0::1;24371:33;24393:10;24371:21;:33::i;:::-;24363:56;;;::::0;-1:-1:-1;;;24363:56:0;;10215:2:1;24363:56:0::1;::::0;::::1;10197:21:1::0;10254:2;10234:18;;;10227:30;-1:-1:-1;;;10273:18:1;;;10266:40;10323:18;;24363:56:0::1;10013:334:1::0;24363:56:0::1;24430:9;:16:::0;;::::1;::::0;;::::1;::::0;;;24457:14:::1;:21:::0;;;;::::1;::::0;;-1:-1:-1;24457:21:0;;;24530:15:::1;::::0;-1:-1:-1;;24430:9:0;24530:15;24520:26;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;24557:44:::0;;24520:26;;-1:-1:-1;24586:15:0;;24520:26;;-1:-1:-1;;24557:44:0::1;::::0;24586:15;24557:44:::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;24612:23:0::1;::::0;::::1;:38;24638:12:::0;;24612:23;:38:::1;:::i;:::-;-1:-1:-1::0;24661:25:0::1;::::0;::::1;:42:::0;;;24742:24:::1;:15;24760:6;24742:24;:::i;:::-;24714:25;::::0;::::1;:52:::0;24797:15:::1;::::0;24777:36:::1;::::0;:15:::1;::::0;:19:::1;:36::i;:::-;-1:-1:-1::0;24841:15:0::1;::::0;24824:33:::1;::::0;:12:::1;::::0;:16:::1;:33::i;:::-;-1:-1:-1::0;24904:15:0::1;::::0;24873:47:::1;::::0;24892:10:::1;::::0;24873:47:::1;::::0;;;::::1;24950:1;24931:15;;:20;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;13686:1:0;13983:22;;-1:-1:-1;;;;;24075:884:0:o;26366:377::-;26419:17;26448:28;26494:21;:12;:19;:21::i;:::-;26479:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;26448:68;;26527:29;26559:21;:12;:19;:21::i;:::-;26527:53;;26595:9;26591:117;26614:12;:19;26610:1;:23;26591:117;;;26670:9;26680:12;26693:1;26680:15;;;;;;;;:::i;:::-;;;;;;;26670:26;;;;;;;;:::i;:::-;;;;;;;;;26654:42;;;;;;;;;26670:26;;;;;26654:42;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;26665:1;26654:13;;;;;;;;:::i;:::-;;;;;;:42;;;;26635:3;;;;;:::i;:::-;;;;26591:117;;;-1:-1:-1;26725:10:0;;26366:377;-1:-1:-1;;26366:377:0:o;29586:203::-;29657:4;29673:24;29700:9;29710:11;29700:22;;;;;;;;:::i;:::-;;;;;;;;;29673:49;;;;;;;;;29700:22;;;;;29673:49;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29760:8;:20;;;29741:8;:16;;;:39;29733:48;;;29586:203;;;:::o;26751:386::-;26807:17;26836:28;26882:24;:15;:22;:24::i;:::-;26867:40;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;26836:71;;26918:29;26950:24;:15;:22;:24::i;:::-;26918:56;;26989:9;26985:117;27008:12;:19;27004:1;:23;26985:117;;;27064:9;27074:12;27087:1;27074:15;;;;;;;;:::i;:::-;;;;;;;27064:26;;;;;;;;:::i;:::-;;;;;;;;;27048:42;;;;;;;;;27064:26;;;;;27048:42;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;27059:1;27048:13;;;;;;;;:::i;:::-;;;;;;:42;;;;27029:3;;;;;:::i;:::-;;;;26985:117;;23616:221;23684:4;23703:11;;23718:1;23703:16;23700:32;;-1:-1:-1;23728:4:0;;23616:221;-1:-1:-1;23616:221:0:o;23700:32::-;23233:6;23794:11;;23775:2;-1:-1:-1;;;;;23775:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;;;;:::i;:::-;:53;;;;:::i;:::-;23751:20;;-1:-1:-1;;;23751:20:0;;-1:-1:-1;;;;;7386:32:1;;;23751:20:0;;;7368:51:1;23751:2:0;:12;;;;7341:18:1;;23751:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:77;;;23616:221;-1:-1:-1;;23616:221:0:o;14578:150::-;14491:6;;-1:-1:-1;;;;;14491:6:0;12613:10;14491:22;14483:67;;;;-1:-1:-1;;;14483:67:0;;;;;;;:::i;:::-;14687:1:::1;14671:6:::0;;14650:40:::1;::::0;-1:-1:-1;;;;;14671:6:0;;::::1;::::0;14650:40:::1;::::0;14687:1;;14650:40:::1;14718:1;14701:19:::0;;-1:-1:-1;;;;;;14701:19:0::1;::::0;;14578:150::o;23491:117::-;14491:6;;-1:-1:-1;;;;;14491:6:0;12613:10;14491:22;14483:67;;;;-1:-1:-1;;;14483:67:0;;;;;;;:::i;:::-;23572:12:::1;:28:::0;23491:117::o;27545:386::-;27601:17;27630:28;27676:24;:15;:22;:24::i;:::-;27661:40;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;27630:71;;27712:29;27744:24;:15;:22;:24::i;:::-;27712:56;;27783:9;27779:117;27802:12;:19;27798:1;:23;27779:117;;;27858:9;27868:12;27881:1;27868:15;;;;;;;;:::i;:::-;;;;;;;27858:26;;;;;;;;:::i;:::-;;;;;;;;;27842:42;;;;;;;;;27858:26;;;;;27842:42;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;27853:1;27842:13;;;;;;;;:::i;:::-;;;;;;:42;;;;27823:3;;;;;:::i;:::-;;;;27779:117;;27145:392;27203:17;27232:28;27278:26;:17;:24;:26::i;:::-;27263:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;27232:73;;27316:29;27348:26;:17;:24;:26::i;:::-;27316:58;;27389:9;27385:117;27408:12;:19;27404:1;:23;27385:117;;;27464:9;27474:12;27487:1;27474:15;;;;;;;;:::i;:::-;;;;;;;27464:26;;;;;;;;:::i;:::-;;;;;;;;;27448:42;;;;;;;;;27464:26;;;;;27448:42;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;27459:1;27448:13;;;;;;;;:::i;:::-;;;;;;:42;;;;27429:3;;;;;:::i;:::-;;;;27385:117;;27939:392;27997:17;28026:28;28072:26;:17;:24;:26::i;:::-;28057:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;28026:73;;28110:29;28142:26;:17;:24;:26::i;:::-;28110:58;;28183:9;28179:117;28202:12;:19;28198:1;:23;28179:117;;;28258:9;28268:12;28281:1;28268:15;;;;;;;;:::i;:::-;;;;;;;28258:26;;;;;;;;:::i;:::-;;;;;;;;;28242:42;;;;;;;;;28258:26;;;;;28242:42;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;28253:1;28242:13;;;;;;;;:::i;:::-;;;;;;:42;;;;28223:3;;;;;:::i;:::-;;;;28179:117;;23845:222;23909:4;23928:11;;23943:1;23928:16;23925:32;;-1:-1:-1;23953:4:0;;23845:222;-1:-1:-1;23845:222:0:o;23925:32::-;24056:2;23233:6;24019:11;;24000:2;-1:-1:-1;;;;;24000:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;;;;:::i;:::-;:53;;;;:::i;14736:281::-;14491:6;;-1:-1:-1;;;;;14491:6:0;12613:10;14491:22;14483:67;;;;-1:-1:-1;;;14483:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14839:22:0;::::1;14817:110;;;::::0;-1:-1:-1;;;14817:110:0;;15262:2:1;14817:110:0::1;::::0;::::1;15244:21:1::0;15301:2;15281:18;;;15274:30;15340:34;15320:18;;;15313:62;-1:-1:-1;;;15391:18:1;;;15384:36;15437:19;;14817:110:0::1;15060:402:1::0;14817:110:0::1;14964:6;::::0;;14943:38:::1;::::0;-1:-1:-1;;;;;14943:38:0;;::::1;::::0;14964:6;::::1;::::0;14943:38:::1;::::0;::::1;14992:6;:17:::0;;-1:-1:-1;;;;;;14992:17:0::1;-1:-1:-1::0;;;;;14992:17:0;;;::::1;::::0;;;::::1;::::0;;14736:281::o;29143:435::-;-1:-1:-1;;;;;29293:30:0;;29247:28;29293:30;;;:22;:30;;;;;29218:17;;29247:28;29293:39;;:37;:39::i;:::-;29278:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29376:30:0;;29344:29;29376:30;;;:22;:30;;;;;29247:86;;-1:-1:-1;29344:29:0;29376:39;;:37;:39::i;:::-;29344:71;;29430:9;29426:117;29449:12;:19;29445:1;:23;29426:117;;;29505:9;29515:12;29528:1;29515:15;;;;;;;;:::i;:::-;;;;;;;29505:26;;;;;;;;:::i;:::-;;;;;;;;;29489:42;;;;;;;;;29505:26;;;;;29489:42;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;29500:1;29489:13;;;;;;;;:::i;:::-;;;;;;:42;;;;29470:3;;;;;:::i;:::-;;;;29426:117;;;-1:-1:-1;29560:10:0;;29143:435;-1:-1:-1;;;29143:435:0:o;10703:178::-;10807:4;3196:19;;;:12;;;:19;;;;;;:24;;10836:37;10829:44;;10703:178;;;;;:::o;10457:160::-;10545:4;10574:35;10582:3;10602:5;10574:7;:35::i;10150:131::-;10217:4;10241:32;10246:3;10266:5;10241:4;:32::i;8064:199::-;-1:-1:-1;;;;;8230:23:0;;8171:4;3196:19;;;:12;;;:19;;;;;;:24;;8200:55;3067:161;7446:175;7534:4;7563:50;7568:3;-1:-1:-1;;;;;7588:23:0;;7563:4;:50::i;8349:117::-;8412:7;8439:19;8447:3;3397:18;;3314:109;9560:342;9650:16;9684:22;9709:19;9717:3;9709:7;:19::i;:::-;9684:44;9560:342;-1:-1:-1;;;9560:342:0:o;21187:211::-;21331:58;;;-1:-1:-1;;;;;15659:32:1;;21331:58:0;;;15641:51:1;15708:18;;;;15701:34;;;21331:58:0;;;;;;;;;;15614:18:1;;;;21331:58:0;;;;;;;;-1:-1:-1;;;;;21331:58:0;-1:-1:-1;;;21331:58:0;;;21304:86;;21324:5;;21304:19;:86::i;1561:1420::-;1627:4;1766:19;;;:12;;;:19;;;;;;1802:15;;1798:1176;;2177:21;2201:14;2214:1;2201:10;:14;:::i;:::-;2250:18;;2177:38;;-1:-1:-1;2230:17:0;;2250:22;;2271:1;;2250:22;:::i;:::-;2230:42;;2306:13;2293:9;:26;2289:405;;2340:17;2360:3;:11;;2372:9;2360:22;;;;;;;;:::i;:::-;;;;;;;;;2340:42;;2514:9;2485:3;:11;;2497:13;2485:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;2599:23;;;:12;;;:23;;;;;:36;;;2289:405;2775:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2870:3;:12;;:19;2883:5;2870:19;;;;;;;;;;;2863:26;;;2913:4;2906:11;;;;;;;1798:1176;2957:5;2950:12;;;;;971:414;1034:4;3196:19;;;:12;;;:19;;;;;;1051:327;;-1:-1:-1;1094:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;1277:18;;1255:19;;;:12;;;:19;;;;;;:40;;;;1310:11;;1051:327;-1:-1:-1;1361:5:0;1354:12;;4479:111;4535:16;4571:3;:11;;4564:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4479:111;;;:::o;21406:333::-;21487:23;21513:69;21541:4;21513:69;;;;;;;;;;;;;;;;;21521:5;-1:-1:-1;;;;;21513:27:0;;;:69;;;;;:::i;:::-;21597:17;;21487:95;;-1:-1:-1;21597:21:0;21593:139;;21654:10;21643:30;;;;;;;;;;;;:::i;:::-;21635:85;;;;-1:-1:-1;;;21635:85:0;;16463:2:1;21635:85:0;;;16445:21:1;16502:2;16482:18;;;16475:30;16541:34;16521:18;;;16514:62;-1:-1:-1;;;16592:18:1;;;16585:40;16642:19;;21635:85:0;16261:406:1;15690:229:0;15827:12;15859:52;15881:6;15889:4;15895:1;15898:12;15859:21;:52::i;:::-;15852:59;15690:229;-1:-1:-1;;;;15690:229:0:o;16810:455::-;16980:12;17038:5;17013:21;:30;;17005:81;;;;-1:-1:-1;;;17005:81:0;;16874:2:1;17005:81:0;;;16856:21:1;16913:2;16893:18;;;16886:30;16952:34;16932:18;;;16925:62;-1:-1:-1;;;17003:18:1;;;16996:36;17049:19;;17005:81:0;16672:402:1;17005:81:0;17098:12;17112:23;17139:6;-1:-1:-1;;;;;17139:11:0;17158:5;17165:4;17139:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17097:73;;;;17188:69;17215:6;17223:7;17232:10;17244:12;17188:26;:69::i;:::-;17181:76;16810:455;-1:-1:-1;;;;;;;16810:455:0:o;19383:644::-;19568:12;19597:7;19593:427;;;19625:10;:17;19646:1;19625:22;19621:290;;-1:-1:-1;;;;;15131:19:0;;;19835:60;;;;-1:-1:-1;;;19835:60:0;;17573:2:1;19835:60:0;;;17555:21:1;17612:2;17592:18;;;17585:30;17651:31;17631:18;;;17624:59;17700:18;;19835:60:0;17371:353:1;19835:60:0;-1:-1:-1;19932:10:0;19925:17;;19593:427;19975:33;19983:10;19995:12;20730:17;;:21;20726:388;;20962:10;20956:17;21019:15;21006:10;21002:2;20998:19;20991:44;20726:388;21089:12;21082:20;;-1:-1:-1;;;21082:20:0;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:240;415:1;408:5;405:12;395:143;;460:10;455:3;451:20;448:1;441:31;495:4;492:1;485:15;523:4;520:1;513:15;395:143;547:18;;331:240::o;576:250::-;661:1;671:113;685:6;682:1;679:13;671:113;;;761:11;;;755:18;742:11;;;735:39;707:2;700:10;671:113;;;-1:-1:-1;;818:1:1;800:16;;793:27;576:250::o;831:271::-;873:3;911:5;905:12;938:6;933:3;926:19;954:76;1023:6;1016:4;1011:3;1007:14;1000:4;993:5;989:16;954:76;:::i;:::-;1084:2;1063:15;-1:-1:-1;;1059:29:1;1050:39;;;;1091:4;1046:50;;831:271;-1:-1:-1;;831:271:1:o;1107:616::-;1393:47;1430:9;1422:6;1393:47;:::i;:::-;1476:3;1471:2;1460:9;1456:18;1449:31;1374:4;1497:46;1538:3;1527:9;1523:19;1515:6;1497:46;:::i;:::-;1489:54;;1579:6;1574:2;1563:9;1559:18;1552:34;1622:6;1617:2;1606:9;1602:18;1595:34;1666:6;1660:3;1649:9;1645:19;1638:35;1710:6;1704:3;1693:9;1689:19;1682:35;1107:616;;;;;;;;;:::o;1910:118::-;1996:5;1989:13;1982:21;1975:5;1972:32;1962:60;;2018:1;2015;2008:12;2033:309;2098:6;2106;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2211:9;2198:23;2188:33;;2271:2;2260:9;2256:18;2243:32;2284:28;2306:5;2284:28;:::i;:::-;2331:5;2321:15;;;2033:309;;;;;:::o;2347:448::-;2397:3;2435:5;2429:12;2462:6;2457:3;2450:19;2488:4;2517:2;2512:3;2508:12;2501:19;;2554:2;2547:5;2543:14;2575:1;2585:185;2599:6;2596:1;2593:13;2585:185;;;2674:13;;2667:21;2660:29;2648:42;;2710:12;;;;2745:15;;;;2621:1;2614:9;2585:185;;;-1:-1:-1;2786:3:1;;2347:448;-1:-1:-1;;;;;2347:448:1:o;2800:1344::-;3140:2;3152:21;;;3222:13;;3125:18;;;3244:22;;;3092:4;;3320;;3297:3;3282:19;;;3347:15;;;3092:4;3390:195;3404:6;3401:1;3398:13;3390:195;;;3469:13;;-1:-1:-1;;;;;3465:39:1;3453:52;;3525:12;;;;3560:15;;;;3501:1;3419:9;3390:195;;;-1:-1:-1;;;3621:19:1;;;3601:18;;;3594:47;3691:13;;3713:21;;;3789:15;;;;3752:12;;;3824:1;3834:189;3850:8;3845:3;3842:17;3834:189;;;3919:15;;3905:30;;3996:17;;;;3957:14;;;;3878:1;3869:11;3834:189;;;3838:3;;4070:9;4063:5;4059:21;4054:2;4043:9;4039:18;4032:49;4098:40;4132:5;4124:6;4098:40;:::i;:::-;4090:48;2800:1344;-1:-1:-1;;;;;;;;2800:1344:1:o;4149:173::-;4217:20;;-1:-1:-1;;;;;4266:31:1;;4256:42;;4246:70;;4312:1;4309;4302:12;4246:70;4149:173;;;:::o;4327:260::-;4395:6;4403;4456:2;4444:9;4435:7;4431:23;4427:32;4424:52;;;4472:1;4469;4462:12;4424:52;4495:29;4514:9;4495:29;:::i;:::-;4485:39;;4543:38;4577:2;4566:9;4562:18;4543:38;:::i;:::-;4533:48;;4327:260;;;;;:::o;4592:821::-;4698:6;4706;4714;4722;4775:2;4763:9;4754:7;4750:23;4746:32;4743:52;;;4791:1;4788;4781:12;4743:52;4830:9;4817:23;4869:1;4862:5;4859:12;4849:40;;4885:1;4882;4875:12;4849:40;4908:5;-1:-1:-1;4964:2:1;4949:18;;4936:32;4987:18;5017:14;;;5014:34;;;5044:1;5041;5034:12;5014:34;5082:6;5071:9;5067:22;5057:32;;5127:7;5120:4;5116:2;5112:13;5108:27;5098:55;;5149:1;5146;5139:12;5098:55;5189:2;5176:16;5215:2;5207:6;5204:14;5201:34;;;5231:1;5228;5221:12;5201:34;5276:7;5271:2;5262:6;5258:2;5254:15;5250:24;5247:37;5244:57;;;5297:1;5294;5287:12;5244:57;4592:821;;5328:2;5320:11;;;;;-1:-1:-1;5350:6:1;;5403:2;5388:18;5375:32;;-1:-1:-1;4592:821:1;-1:-1:-1;;;4592:821:1:o;5418:1416::-;5612:4;5641:2;5681;5670:9;5666:18;5711:2;5700:9;5693:21;5734:6;5769;5763:13;5800:6;5792;5785:22;5826:2;5816:12;;5859:2;5848:9;5844:18;5837:25;;5921:2;5911:6;5908:1;5904:14;5893:9;5889:30;5885:39;5959:2;5951:6;5947:15;5980:1;5990:815;6004:6;6001:1;5998:13;5990:815;;;6097:2;6093:7;6081:9;6073:6;6069:22;6065:36;6060:3;6053:49;6131:6;6125:13;6161:4;6178:47;6218:6;6213:2;6207:9;6178:47;:::i;:::-;6272:2;6268;6264:11;6258:18;6313:2;6308;6300:6;6296:15;6289:27;6343:48;6387:2;6379:6;6375:15;6361:12;6343:48;:::i;:::-;6434:11;;;6428:18;6411:15;;;6404:43;6470:4;6517:11;;;6511:18;6494:15;;;6487:43;6553:4;6600:11;;;6594:18;6577:15;;;6570:43;6636:4;6683:11;;;6677:18;6660:15;;;;6653:43;;;;-1:-1:-1;;6783:12:1;;;;6748:15;;;;6026:1;6019:9;5990:815;;;-1:-1:-1;6822:6:1;;5418:1416;-1:-1:-1;;;;;;;;5418:1416:1:o;7031:186::-;7090:6;7143:2;7131:9;7122:7;7118:23;7114:32;7111:52;;;7159:1;7156;7149:12;7111:52;7182:29;7201:9;7182:29;:::i;7652:380::-;7731:1;7727:12;;;;7774;;;7795:61;;7849:4;7841:6;7837:17;7827:27;;7795:61;7902:2;7894:6;7891:14;7871:18;7868:38;7865:161;;7948:10;7943:3;7939:20;7936:1;7929:31;7983:4;7980:1;7973:15;8011:4;8008:1;8001:15;7865:161;;7652:380;;;:::o;8037:356::-;8239:2;8221:21;;;8258:18;;;8251:30;8317:34;8312:2;8297:18;;8290:62;8384:2;8369:18;;8037:356::o;10352:127::-;10413:10;10408:3;10404:20;10401:1;10394:31;10444:4;10441:1;10434:15;10468:4;10465:1;10458:15;10826:184;10896:6;10949:2;10937:9;10928:7;10924:23;10920:32;10917:52;;;10965:1;10962;10955:12;10917:52;-1:-1:-1;10988:16:1;;10826:184;-1:-1:-1;10826:184:1:o;11015:127::-;11076:10;11071:3;11067:20;11064:1;11057:31;11107:4;11104:1;11097:15;11131:4;11128:1;11121:15;11147:125;11212:9;;;11233:10;;;11230:36;;;11246:18;;:::i;11277:127::-;11338:10;11333:3;11329:20;11326:1;11319:31;11369:4;11366:1;11359:15;11393:4;11390:1;11383:15;11409:135;11448:3;11469:17;;;11466:43;;11489:18;;:::i;:::-;-1:-1:-1;11536:1:1;11525:13;;11409:135::o;12733:545::-;12835:2;12830:3;12827:11;12824:448;;;12871:1;12896:5;12892:2;12885:17;12941:4;12937:2;12927:19;13011:2;12999:10;12995:19;12992:1;12988:27;12982:4;12978:38;13047:4;13035:10;13032:20;13029:47;;;-1:-1:-1;13070:4:1;13029:47;13125:2;13120:3;13116:12;13113:1;13109:20;13103:4;13099:31;13089:41;;13180:82;13198:2;13191:5;13188:13;13180:82;;;13243:17;;;13224:1;13213:13;13180:82;;;13184:3;;;12733:545;;;:::o;13454:1206::-;13578:18;13573:3;13570:27;13567:53;;;13600:18;;:::i;:::-;13629:94;13719:3;13679:38;13711:4;13705:11;13679:38;:::i;:::-;13673:4;13629:94;:::i;:::-;13749:1;13774:2;13769:3;13766:11;13791:1;13786:616;;;;14446:1;14463:3;14460:93;;;-1:-1:-1;14519:19:1;;;14506:33;14460:93;-1:-1:-1;;13411:1:1;13407:11;;;13403:24;13399:29;13389:40;13435:1;13431:11;;;13386:57;14566:78;;13759:895;;13786:616;12680:1;12673:14;;;12717:4;12704:18;;-1:-1:-1;;13822:17:1;;;13923:9;13945:229;13959:7;13956:1;13953:14;13945:229;;;14048:19;;;14035:33;14020:49;;14155:4;14140:20;;;;14108:1;14096:14;;;;13975:12;13945:229;;;13949:3;14202;14193:7;14190:16;14187:159;;;14326:1;14322:6;14316:3;14310;14307:1;14303:11;14299:21;14295:34;14291:39;14278:9;14273:3;14269:19;14256:33;14252:79;14244:6;14237:95;14187:159;;;14389:1;14383:3;14380:1;14376:11;14372:19;14366:4;14359:33;13759:895;;;13454:1206;;;:::o;14665:168::-;14738:9;;;14769;;14786:15;;;14780:22;;14766:37;14756:71;;14807:18;;:::i;14838:217::-;14878:1;14904;14894:132;;14948:10;14943:3;14939:20;14936:1;14929:31;14983:4;14980:1;14973:15;15011:4;15008:1;15001:15;14894:132;-1:-1:-1;15040:9:1;;14838:217::o;15746:128::-;15813:9;;;15834:11;;;15831:37;;;15848:18;;:::i;15879:127::-;15940:10;15935:3;15931:20;15928:1;15921:31;15971:4;15968:1;15961:15;15995:4;15992:1;15985:15;16011:245;16078:6;16131:2;16119:9;16110:7;16106:23;16102:32;16099:52;;;16147:1;16144;16137:12;16099:52;16179:9;16173:16;16198:28;16220:5;16198:28;:::i;17079:287::-;17208:3;17246:6;17240:13;17262:66;17321:6;17316:3;17309:4;17301:6;17297:17;17262:66;:::i;:::-;17344:16;;;;;17079:287;-1:-1:-1;;17079:287:1:o;17729:220::-;17878:2;17867:9;17860:21;17841:4;17898:45;17939:2;17928:9;17924:18;17916:6;17898:45;:::i
Swarm Source
ipfs://5c54235aae33562af51dbc223d0822b054344881319279754d92bb5b2d0e018c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,632.6 | 0.025 | $65.82 |
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.