Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Vote In Market | 20778362 | 211 days ago | IN | 0 ETH | 0.00492393 | ||||
Vote In Market | 20778326 | 211 days ago | IN | 0 ETH | 0.00449995 | ||||
Create Market | 20778202 | 211 days ago | IN | 0 ETH | 0.00385084 | ||||
Vote In Market | 20778135 | 211 days ago | IN | 0 ETH | 0.00381349 | ||||
Create Market | 20778104 | 211 days ago | IN | 0 ETH | 0.003811 | ||||
Vote In Market | 20772239 | 211 days ago | IN | 0 ETH | 0.0079404 | ||||
Create Market | 20771722 | 211 days ago | IN | 0 ETH | 0.00872641 | ||||
Create Market | 20771346 | 212 days ago | IN | 0 ETH | 0.00612718 | ||||
Create Market | 20771317 | 212 days ago | IN | 0 ETH | 0.00510409 | ||||
Change Token | 20771116 | 212 days ago | IN | 0 ETH | 0.00045059 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BlitzSpectraMarkets
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; // Import ownable import "../lib/openzeppelin-contracts/contracts/access/Ownable.sol"; interface ERC20 { function transfer(address to, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); } contract BlitzSpectraMarkets is Ownable { // Order accounts for byte packing to save gas struct Market { uint256 id; uint256 winningOptionIndex; uint256 endTimestamp; bool isActive; address creator; string metadata; string[] options; uint256[] votes; } struct Vote { uint256 marketId; uint256 voteId; uint256 optionIndex; uint256 voteAmount; address voter; } struct VoterProfile { address voter; uint256 totalVotes; uint256 totalEarnings; } Market[] public markets; Vote[] public votes; ERC20 public token; // Keep tracking of the voters and their earnings address[] public voters; mapping(address => uint256) public voterEarnings; mapping(address => uint256) public voterTotalEarnings; mapping(address => uint256) public voterTotalVotes; // Keep track of the unclaimed tokens for each user mapping(address => uint256) public unclaimedTokens; // Keep track of earning referrals for each user mapping(address => uint256) public unclaimedReferralEarnings; mapping(address => uint256) public referralEarnings; // Keep track of referrals for each user mapping(address => address) public referredBy; // Keep track of referred users for each referrer mapping(address => address[]) public referredUsers; // Keep track of the earnings for each user mapping(address => uint256) public earnings; // Keep track of platform operators mapping(address => bool) public isOperator; // Keeep track of hasVoted per market mapping(uint256 => mapping(address => bool)) public hasVoted; // Referral fee percentage uint256 public referrerFeePercentage = 1; // 5% uint256 public referrerFeeBase = 100; uint256 public platformFeePercentage = 3; // 3% uint256 public platformFeeBase = 100; address public platformFeeCollector = address(5); // Allow this contract to receive ETH receive() external payable {} modifier onlyOperator() { require(isOperator[msg.sender], "Only operator can call this function"); _; } constructor(address _token) { isOperator[msg.sender] = true; isOperator[address(5)] = true; token = ERC20(_token); } // Events event MarketCreated(uint256 marketId, address creator, string metadata, string[] options); event VoteCast(uint256 marketId, uint256 voteId, address voter, uint256 optionIndex, uint256 voteAmount); event MarketEnded(uint256 marketId, uint256 winningOptionIndex); event TokensClaimed(address claimer, uint256 amount); event ReferrerFeeChanged(uint256 newReferrerFeePercentage); event ReferrerSet(address user, address referrer); event WinningsDistributed(address user, uint256 amount); event VoterProfileCreated(address voter, uint256 totalVotes, uint256 totalEarnings); event VoterProfileUpdated(address voter, uint256 totalVotes, uint256 totalEarnings); event ReferralDistributed(address referrer, uint256 amount); /** * Getter functions */ function getMarkets() public view returns (Market[] memory) { return markets; } function getReferredUsers(address referrer) public view returns (address[] memory) { return referredUsers[referrer]; } function getVoters() public view returns (VoterProfile[] memory) { VoterProfile[] memory voterProfiles = new VoterProfile[](voters.length); for (uint256 i = 0; i < voters.length; i++) { address voter = voters[i]; voterProfiles[i] = VoterProfile({ voter: voter, totalVotes: voterTotalVotes[voter], totalEarnings: voterTotalEarnings[voter] }); } return voterProfiles; } function getVoter(address _voter) public view returns (VoterProfile memory) { // Build a VoterProfile object VoterProfile memory voterProfile = VoterProfile({ voter: _voter, totalVotes: voterTotalVotes[_voter], totalEarnings: voterTotalEarnings[_voter] }); return voterProfile; } function getVotesForMarket(uint256 marketId) public view returns (Vote[] memory) { Market storage market = markets[marketId]; // Loop through all votes and return the ones that belong to this market Vote[] memory marketVotes = new Vote[](market.votes.length); for (uint256 i = 0; i < market.votes.length; i++) { marketVotes[i] = votes[market.votes[i]]; } return marketVotes; } function _appendVoterProfileIfNotExists(address voter) private { bool exists = false; for (uint256 i = 0; i < voters.length; i++) { if (voters[i] == voter) { exists = true; break; } } if (!exists) { voters.push(voter); emit VoterProfileCreated(voter, 0, 0); } } function _increaseVoterEarnings(address voter, uint256 amount) private { _appendVoterProfileIfNotExists(voter); voterEarnings[voter] += amount; voterTotalEarnings[voter] += amount; emit VoterProfileUpdated(voter, voterTotalVotes[voter], voterTotalEarnings[voter]); } function _increaseVoterVotes(address voter, uint256 amount) private { _appendVoterProfileIfNotExists(voter); voterTotalVotes[voter] += amount; emit VoterProfileUpdated(voter, voterTotalVotes[voter], voterTotalEarnings[voter]); } function _handlePlatformFeeDistribution(address voter, uint256 amount) private returns (uint256 _remainingVoteAmount) { uint256 voteAmount = amount; // Calculate the platform fee from the amount uint256 platformFee = (voteAmount * platformFeePercentage) / platformFeeBase; uint256 referralFee = 0; address isReferredBy = referredBy[voter]; if (isReferredBy != address(0)) { referralFee = (voteAmount * referrerFeePercentage) / referrerFeeBase; } // If referralFee is positive, rdeduct it from the platform fee if (referralFee > 0) { platformFee -= referralFee; unclaimedReferralEarnings[isReferredBy] += referralFee; emit ReferralDistributed(isReferredBy, referralFee); } // Distribute the platform fee to the platform using .transfer token.transferFrom(voter, platformFeeCollector, platformFee); // Calculate the remaining vote amount after deducting the platform fee _remainingVoteAmount = voteAmount - platformFee - referralFee; return _remainingVoteAmount; } /** * Referrals */ function setReferredBy(address referrer) public { // Only allow once require(referredBy[msg.sender] == address(0), "Referrer already set"); referredBy[msg.sender] = referrer; referredUsers[referrer].push(msg.sender); // Emit event emit ReferrerSet(msg.sender, referrer); } function changeReferrerFeePercentage(uint256 newReferrerFeePercentage) public onlyOperator { referrerFeePercentage = newReferrerFeePercentage; // Emit event emit ReferrerFeeChanged(newReferrerFeePercentage); } function changeOperator(address operator, bool status) public onlyOperator { isOperator[operator] = status; } function changeToken(address _token) public onlyOperator { token = ERC20(_token); } function setPlatformFeeCollector(address _platformFeeCollector) public onlyOperator { platformFeeCollector = _platformFeeCollector; } function changePlatformFeePercentage(uint256 newPlatformFeePercentage) public onlyOperator { platformFeePercentage = newPlatformFeePercentage; } /** * Market functions */ function createMarket(string memory metadata, string[] memory options, uint256 endTimestamp) public { uint256 _newMarketId = markets.length; // Require date to be in the future require(endTimestamp > block.timestamp, "End date must be in the future"); Market memory market = Market({ id: _newMarketId, creator: msg.sender, endTimestamp: endTimestamp, metadata: metadata, options: options, votes: new uint256[](0), winningOptionIndex: 0, isActive: true }); markets.push(market); // Emit event emit MarketCreated(_newMarketId, msg.sender, metadata, options); } function voteInMarket(uint256 marketId, uint256 optionIndex, address referree, uint256 voteAmount) public payable { Market storage market = markets[marketId]; // Require vote amount to be greater than 0 require(voteAmount > 0, "Vote amount must be greater than 0"); if (referree != address(0) && referredBy[msg.sender] == address(0)) { setReferredBy(referree); } _increaseVoterVotes(msg.sender, 1); require(market.isActive, "Market is not active"); require(optionIndex < market.options.length, "Invalid option index"); // Check if market has not expired require(block.timestamp < market.endTimestamp, "Market has expired"); // Check if the user has voted before in this market or not require(!hasVoted[marketId][msg.sender], "User has already voted"); hasVoted[marketId][msg.sender] = true; // Transfer the token to the contract using call token.transferFrom(msg.sender, address(this), voteAmount); uint256 _newVoteId = votes.length; voteAmount = _handlePlatformFeeDistribution(msg.sender, voteAmount); Vote memory vote = Vote({ voteId: _newVoteId, marketId: marketId, optionIndex: optionIndex, voter: msg.sender, voteAmount: voteAmount }); votes.push(vote); market.votes.push(_newVoteId); // Emit event emit VoteCast(marketId, _newVoteId, msg.sender, optionIndex, msg.value); } function endMarket(uint256 marketId, uint256 winningOptionIndex) public onlyOperator { Market storage market = markets[marketId]; require(market.isActive, "Market is not active"); market.isActive = false; market.winningOptionIndex = winningOptionIndex; // Ensure there are votes in the market require(market.votes.length > 0, "No votes in the market"); // Calculate the total amount to distribute to the winners by summing up all the votes of the losing options uint256 totalLosingVotesAmount = 0; uint256 totalWinningVotesAmount = 0; for (uint256 i = 0; i < market.votes.length; i++) { Vote memory vote = votes[market.votes[i]]; if (vote.optionIndex != winningOptionIndex) { // Vote is on the losing option totalLosingVotesAmount += vote.voteAmount; } else { // Vote is on the winning option totalWinningVotesAmount += vote.voteAmount; // Refund the original vote amount to the user unclaimedTokens[vote.voter] += vote.voteAmount; } } if (totalWinningVotesAmount == 0) { // No winning votes emit MarketEnded(marketId, winningOptionIndex); // Send all the losing votes to the platform fee using transfer token.transfer(platformFeeCollector, totalLosingVotesAmount); return; } else { // Need to run for loop again to correctly distribute winnings for (uint256 i = 0; i < market.votes.length; i++) { Vote memory vote = votes[market.votes[i]]; if (vote.optionIndex == winningOptionIndex) { // Winner Vote - Calculate the proportional amount to distribute to this winner uint256 amountToDistribute = (vote.voteAmount * totalLosingVotesAmount) / totalWinningVotesAmount; unclaimedTokens[vote.voter] += amountToDistribute; // Update the voter profile _increaseVoterEarnings(vote.voter, amountToDistribute); // Emit event emit WinningsDistributed(vote.voter, amountToDistribute); } } // Emit event emit MarketEnded(marketId, winningOptionIndex); } } function claimTokens() public { uint256 amount = unclaimedTokens[msg.sender]; unclaimedTokens[msg.sender] = 0; token.transfer(msg.sender, amount); // Emit event emit TokensClaimed(msg.sender, amount); } function claimReferralEarnings() public { uint256 amount = unclaimedReferralEarnings[msg.sender]; unclaimedReferralEarnings[msg.sender] = 0; referralEarnings[msg.sender] += amount; token.transfer(msg.sender, amount); // Emit event emit TokensClaimed(msg.sender, amount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin/=lib/openzeppelin-contracts/contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"string","name":"metadata","type":"string"},{"indexed":false,"internalType":"string[]","name":"options","type":"string[]"}],"name":"MarketCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"winningOptionIndex","type":"uint256"}],"name":"MarketEnded","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":false,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReferralDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newReferrerFeePercentage","type":"uint256"}],"name":"ReferrerFeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"referrer","type":"address"}],"name":"ReferrerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"voteId","type":"uint256"},{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"optionIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"voteAmount","type":"uint256"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalEarnings","type":"uint256"}],"name":"VoterProfileCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalEarnings","type":"uint256"}],"name":"VoterProfileUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WinningsDistributed","type":"event"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"changeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPlatformFeePercentage","type":"uint256"}],"name":"changePlatformFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newReferrerFeePercentage","type":"uint256"}],"name":"changeReferrerFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"changeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimReferralEarnings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"metadata","type":"string"},{"internalType":"string[]","name":"options","type":"string[]"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}],"name":"createMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"earnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"winningOptionIndex","type":"uint256"}],"name":"endMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMarkets","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"winningOptionIndex","type":"uint256"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"string","name":"metadata","type":"string"},{"internalType":"string[]","name":"options","type":"string[]"},{"internalType":"uint256[]","name":"votes","type":"uint256[]"}],"internalType":"struct BlitzSpectraMarkets.Market[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referrer","type":"address"}],"name":"getReferredUsers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_voter","type":"address"}],"name":"getVoter","outputs":[{"components":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"totalVotes","type":"uint256"},{"internalType":"uint256","name":"totalEarnings","type":"uint256"}],"internalType":"struct BlitzSpectraMarkets.VoterProfile","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVoters","outputs":[{"components":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"totalVotes","type":"uint256"},{"internalType":"uint256","name":"totalEarnings","type":"uint256"}],"internalType":"struct BlitzSpectraMarkets.VoterProfile[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getVotesForMarket","outputs":[{"components":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"voteId","type":"uint256"},{"internalType":"uint256","name":"optionIndex","type":"uint256"},{"internalType":"uint256","name":"voteAmount","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"internalType":"struct BlitzSpectraMarkets.Vote[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"markets","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"winningOptionIndex","type":"uint256"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"string","name":"metadata","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformFeeBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformFeeCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referralEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referredBy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"referredUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referrerFeeBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referrerFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_platformFeeCollector","type":"address"}],"name":"setPlatformFeeCollector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"referrer","type":"address"}],"name":"setReferredBy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"unclaimedReferralEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"unclaimedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"optionIndex","type":"uint256"},{"internalType":"address","name":"referree","type":"address"},{"internalType":"uint256","name":"voteAmount","type":"uint256"}],"name":"voteInMarket","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voterEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voterTotalEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voterTotalVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"voters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"votes","outputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"voteId","type":"uint256"},{"internalType":"uint256","name":"optionIndex","type":"uint256"},{"internalType":"uint256","name":"voteAmount","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001601055606460118190556003601255601355601480546001600160a01b03191660051790553480156200003857600080fd5b5060405162002e2a38038062002e2a8339810160408190526200005b9162000128565b6200006633620000d8565b336000908152600e602052604081208054600160ff19918216811790925560059092527fb9bec7e2561f624fe753ff070f1599b306cbf59fafd4e8d5a8184a1ea1841bce8054909216179055600380546001600160a01b0319166001600160a01b03929092169190911790556200015a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200013b57600080fd5b81516001600160a01b03811681146200015357600080fd5b9392505050565b612cc0806200016a6000396000f3fe6080604052600436106102345760003560e01c8063b1283e771161012e578063da58c7d9116100ab578063e92820e61161006f578063e92820e61461076d578063ec2c90161461078d578063f2fde38b146107af578063fbc529cb146107cf578063fc0c546a146107ef57600080fd5b8063da58c7d9146106e4578063da7915b214610704578063dbd89df314610717578063dfc90cf214610737578063e8db675b1461075757600080fd5b8063cdd72253116100f2578063cdd7225314610632578063cdd78cfc14610654578063cfe8f6441461066a578063d4f50f9814610697578063d6e00d3d146106c457600080fd5b8063b1283e7714610563578063b8a3969614610595578063ba761ecc146105ab578063c07b528a146105d8578063c8e6b85d1461060557600080fd5b80636d70f7ae116101bc578063860639ec11610180578063860639ec146104955780638da5cb5b146104b55780639d1ca14a146104d3578063a90f8e9a14610500578063ad98fa451461053657600080fd5b80636d70f7ae146103d6578063715018a61461040657806384ae48b51461041b578063853a65f91461043057806385ad8b851461046857600080fd5b806348c54b9d1161020357806348c54b9d14610303578063543fd3131461031857806354ad29aa146103455780635df813301461036557806366829b16146103b657600080fd5b806311a07c08146102405780631b11dace1461026257806332e5b6d81461028b57806343859632146102b857600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b3660046123c1565b61080f565b005b34801561026e57600080fd5b5061027860105481565b6040519081526020015b60405180910390f35b34801561029757600080fd5b506102ab6102a63660046123f6565b610883565b6040516102829190612418565b3480156102c457600080fd5b506102f36102d3366004612465565b600f60209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610282565b34801561030f57600080fd5b506102606108f9565b34801561032457600080fd5b506102786103333660046123f6565b600d6020526000908152604090205481565b34801561035157600080fd5b506102606103603660046123f6565b6109be565b34801561037157600080fd5b506103856103803660046123c1565b610aa4565b6040805195865260208601949094529284019190915260608301526001600160a01b0316608082015260a001610282565b3480156103c257600080fd5b506102606103d13660046123f6565b610aee565b3480156103e257600080fd5b506102f36103f13660046123f6565b600e6020526000908152604090205460ff1681565b34801561041257600080fd5b50610260610b3f565b34801561042757600080fd5b50610260610b53565b34801561043c57600080fd5b50601454610450906001600160a01b031681565b6040516001600160a01b039091168152602001610282565b34801561047457600080fd5b506102786104833660046123f6565b60076020526000908152604090205481565b3480156104a157600080fd5b506102606104b036600461249f565b610bbf565b3480156104c157600080fd5b506000546001600160a01b0316610450565b3480156104df57600080fd5b506102786104ee3660046123f6565b60056020526000908152604090205481565b34801561050c57600080fd5b5061045061051b3660046123f6565b600b602052600090815260409020546001600160a01b031681565b34801561054257600080fd5b506102786105513660046123f6565b60066020526000908152604090205481565b34801561056f57600080fd5b5061058361057e3660046123c1565b610c19565b6040516102829695949392919061251c565b3480156105a157600080fd5b5061027860135481565b3480156105b757600080fd5b506105cb6105c63660046123c1565b610cfa565b6040516102829190612563565b3480156105e457600080fd5b506102786105f33660046123f6565b600a6020526000908152604090205481565b34801561061157600080fd5b506102786106203660046123f6565b60086020526000908152604090205481565b34801561063e57600080fd5b50610647610e76565b60405161028291906125da565b34801561066057600080fd5b5061027860125481565b34801561067657600080fd5b506102786106853660046123f6565b60096020526000908152604090205481565b3480156106a357600080fd5b506106b76106b23660046123f6565b610f94565b6040516102829190612639565b3480156106d057600080fd5b506102606106df3660046123c1565b611001565b3480156106f057600080fd5b506104506106ff3660046123c1565b611035565b610260610712366004612663565b61105f565b34801561072357600080fd5b506102606107323660046126a0565b6114a3565b34801561074357600080fd5b506102606107523660046123f6565b611908565b34801561076357600080fd5b5061027860115481565b34801561077957600080fd5b506104506107883660046126c2565b611959565b34801561079957600080fd5b506107a2611991565b6040516102829190612782565b3480156107bb57600080fd5b506102606107ca3660046123f6565b611bfc565b3480156107db57600080fd5b506102606107ea366004612927565b611c75565b3480156107fb57600080fd5b50600354610450906001600160a01b031681565b336000908152600e602052604090205460ff166108475760405162461bcd60e51b815260040161083e90612a16565b60405180910390fd5b60108190556040518181527f937fc6230427e4b41344af2acf9850247d6b7ce097cc579bdf68180d6c2e4237906020015b60405180910390a150565b6001600160a01b0381166000908152600c60209081526040918290208054835181840281018401909452808452606093928301828280156108ed57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108cf575b50505050509050919050565b336000818152600860205260408082208054929055600354905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044015b6020604051808303816000875af1158015610963573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109879190612a5a565b5060408051338152602081018390527f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4309101610878565b336000908152600b60205260409020546001600160a01b031615610a1b5760405162461bcd60e51b8152602060048201526014602482015273149959995c9c995c88185b1c9958591e481cd95d60621b604482015260640161083e565b336000818152600b6020908152604080832080546001600160a01b0387166001600160a01b03199182168117909255818552600c8452828520805460018101825590865294849020909401805490941685179093558051938452908301919091527f5f7165288eef601591cf549e15ff19ef9060b7f71b9c115be946fa1fe7ebf68a9101610878565b60028181548110610ab457600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929450909290916001600160a01b031685565b336000908152600e602052604090205460ff16610b1d5760405162461bcd60e51b815260040161083e90612a16565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610b47611e9e565b610b516000611ef8565b565b336000908152600960209081526040808320805490849055600a9092528220805491928392610b83908490612a8d565b909155505060035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401610944565b336000908152600e602052604090205460ff16610bee5760405162461bcd60e51b815260040161083e90612a16565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b60018181548110610c2957600080fd5b6000918252602090912060079091020180546001820154600283015460038401546004850180549496509294919360ff8216936101009092046001600160a01b0316929190610c7790612aa0565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca390612aa0565b8015610cf05780601f10610cc557610100808354040283529160200191610cf0565b820191906000526020600020905b815481529060010190602001808311610cd357829003601f168201915b5050505050905086565b6060600060018381548110610d1157610d11612ad4565b906000526020600020906007020190506000816006018054905067ffffffffffffffff811115610d4357610d43612870565b604051908082528060200260200182016040528015610daf57816020015b610d9c6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b815260200190600190039081610d615790505b50905060005b6006830154811015610e6e576002836006018281548110610dd857610dd8612ad4565b906000526020600020015481548110610df357610df3612ad4565b60009182526020918290206040805160a081018252600590930290910180548352600181015493830193909352600283015490820152600382015460608201526004909101546001600160a01b031660808201528251839083908110610e5b57610e5b612ad4565b6020908102919091010152600101610db5565b509392505050565b60045460609060009067ffffffffffffffff811115610e9757610e97612870565b604051908082528060200260200182016040528015610ef557816020015b610ee2604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b815260200190600190039081610eb55790505b50905060005b600454811015610f8e57600060048281548110610f1a57610f1a612ad4565b6000918252602080832090910154604080516060810182526001600160a01b0390921680835280855260078452818520548385015280855260069093529283902054928101929092528451909250849084908110610f7a57610f7a612ad4565b602090810291909101015250600101610efb565b50919050565b610fc1604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b50604080516060810182526001600160a01b0390921680835260008181526007602090815283822054818601529181526006909152819020549082015290565b336000908152600e602052604090205460ff166110305760405162461bcd60e51b815260040161083e90612a16565b601255565b6004818154811061104557600080fd5b6000918252602090912001546001600160a01b0316905081565b60006001858154811061107457611074612ad4565b90600052602060002090600702019050600082116110df5760405162461bcd60e51b815260206004820152602260248201527f566f746520616d6f756e74206d7573742062652067726561746572207468616e604482015261020360f41b606482015260840161083e565b6001600160a01b0383161580159061110d5750336000908152600b60205260409020546001600160a01b0316155b1561111b5761111b836109be565b611126336001611f48565b600381015460ff166111715760405162461bcd60e51b81526020600482015260146024820152734d61726b6574206973206e6f742061637469766560601b604482015260640161083e565b600581015484106111bb5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840dee0e8d2dedc40d2dcc8caf60631b604482015260640161083e565b806002015442106112035760405162461bcd60e51b815260206004820152601260248201527113585c9ad95d081a185cc8195e1c1a5c995960721b604482015260640161083e565b6000858152600f6020908152604080832033845290915290205460ff16156112665760405162461bcd60e51b8152602060048201526016602482015275155cd95c881a185cc8185b1c9958591e481d9bdd195960521b604482015260640161083e565b6000858152600f6020908152604080832033808552925291829020805460ff1916600117905560035491516323b872dd60e01b81526004810191909152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190612a5a565b506002546113163384611fe5565b6040805160a0808201835289825260208083018681528385018b81526060808601888152336080808901828152600280546001808201835560009283528c517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace60059093029283015598517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf82015596517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad088015593517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad1870155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad290950180546001600160a01b0319166001600160a01b039096169590951790945560068c018054958601815582529085902090930189905586518e8152938401899052958301919091529381018a90523493810193909352929550917f58cfe003711e6d7e0f32c93d3eb5617a03925d8863d7bb5dc084666365866022910160405180910390a150505050505050565b336000908152600e602052604090205460ff166114d25760405162461bcd60e51b815260040161083e90612a16565b6000600183815481106114e7576114e7612ad4565b60009182526020909120600790910201600381015490915060ff166115455760405162461bcd60e51b81526020600482015260146024820152734d61726b6574206973206e6f742061637469766560601b604482015260640161083e565b60038101805460ff191690556001810182905560068101546115a25760405162461bcd60e51b8152602060048201526016602482015275139bc81d9bdd195cc81a5b881d1a19481b585c9ad95d60521b604482015260640161083e565b60008060005b60068401548110156116ad57600060028560060183815481106115cd576115cd612ad4565b9060005260206000200154815481106115e8576115e8612ad4565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201819052600383015460608301526004909201546001600160a01b031660808201529150861461165c5760608101516116559085612a8d565b93506116a4565b606081015161166b9084612a8d565b606082015160808301516001600160a01b031660009081526008602052604081208054939650919261169e908490612a8d565b90915550505b506001016115a8565b508060000361176f5760408051868152602081018690527e0b6feae4bec70344a7d0e99f4c0237adaaeee2fbb258266be400bd8612a332910160405180910390a160035460145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af1158015611743573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117679190612a5a565b505050505050565b60005b60068401548110156118c6576000600285600601838154811061179757611797612ad4565b9060005260206000200154815481106117b2576117b2612ad4565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201819052600383015460608301526004909201546001600160a01b0316608082015291508690036118bd576000838583606001516118249190612aea565b61182e9190612b01565b60808301516001600160a01b031660009081526008602052604081208054929350839290919061185f908490612a8d565b909155505060808201516118739082612173565b6080820151604080516001600160a01b039092168252602082018390527f8407530cd30bd60843793c1ccec3f8c6f69c95ffef3e255c2de664d0dd658d61910160405180910390a1505b50600101611772565b5060408051868152602081018690527e0b6feae4bec70344a7d0e99f4c0237adaaeee2fbb258266be400bd8612a33291015b60405180910390a15050505b5050565b336000908152600e602052604090205460ff166119375760405162461bcd60e51b815260040161083e90612a16565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b600c602052816000526040600020818154811061197557600080fd5b6000918252602090912001546001600160a01b03169150829050565b60606001805480602002602001604051908101604052809291908181526020016000905b82821015611bf35760008481526020908190206040805161010080820183526007870290930180548252600181015494820194909452600284015491810191909152600383015460ff811615156060830152919091046001600160a01b0316608082015260048201805491929160a084019190611a3190612aa0565b80601f0160208091040260200160405190810160405280929190818152602001828054611a5d90612aa0565b8015611aaa5780601f10611a7f57610100808354040283529160200191611aaa565b820191906000526020600020905b815481529060010190602001808311611a8d57829003601f168201915b5050505050815260200160058201805480602002602001604051908101604052809291908181526020016000905b82821015611b84578382906000526020600020018054611af790612aa0565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2390612aa0565b8015611b705780601f10611b4557610100808354040283529160200191611b70565b820191906000526020600020905b815481529060010190602001808311611b5357829003601f168201915b505050505081526020019060010190611ad8565b50505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611bdb57602002820191906000526020600020905b815481526020019060010190808311611bc7575b505050505081525050815260200190600101906119b5565b50505050905090565b611c04611e9e565b6001600160a01b038116611c695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161083e565b611c7281611ef8565b50565b600154428211611cc75760405162461bcd60e51b815260206004820152601e60248201527f456e642064617465206d75737420626520696e20746865206675747572650000604482015260640161083e565b60408051610100808201835283825260006020808401828152848601888152600160608701818152336080890190815260a089018e815260c08a018e90528a51888152968701909a5260e0890195909552815480830183559190955286517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6600790920291820190815592517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf782015590517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf882015592517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf98401805493516001600160a81b0319909416911515610100600160a81b031916919091176001600160a01b03909316909402919091179092559251919283927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa90910190611e2e9082612b70565b5060c08201518051611e4a9160058401916020909101906122b8565b5060e08201518051611e6691600684019160209091019061230e565b5050507f5d000efdc981f3cf96c1b426c290626a81f483b07edcfeb841dba2b62e185b50823387876040516118f89493929190612c30565b6000546001600160a01b03163314610b515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611f51826121d1565b6001600160a01b03821660009081526007602052604081208054839290611f79908490612a8d565b90915550506001600160a01b038216600081815260076020908152604080832054600683529281902054815194855291840192909252908201527f43ae40d970cd13ea124e3b418e6e134fbd046e9d90a1313f984524aaf1cd55d1906060015b60405180910390a15050565b600080829050600060135460125483611ffe9190612aea565b6120089190612b01565b6001600160a01b038087166000908152600b60205260408120549293509116801561204a5760115460105461203d9086612aea565b6120479190612b01565b91505b81156120cf5761205a8284612c77565b6001600160a01b038216600090815260096020526040812080549295508492909190612087908490612a8d565b9091555050604080516001600160a01b0383168152602081018490527f56aaff25c3db1828aca55c30ba4aac2b5754d6f7d328b7f97d7306d6381844ba910160405180910390a15b6003546014546040516323b872dd60e01b81526001600160a01b038a811660048301529182166024820152604481018690529116906323b872dd906064016020604051808303816000875af115801561212c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121509190612a5a565b508161215c8486612c77565b6121669190612c77565b9450505050505b92915050565b61217c826121d1565b6001600160a01b038216600090815260056020526040812080548392906121a4908490612a8d565b90915550506001600160a01b03821660009081526006602052604081208054839290611f79908490612a8d565b6000805b60045481101561222757826001600160a01b0316600482815481106121fc576121fc612ad4565b6000918252602090912001546001600160a01b03160361221f5760019150612227565b6001016121d5565b5080611904576004805460018101825560009182527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b03851690811790915560408051918252602082018390528101919091527f921634871b0696335c4e4a3ae25878836aae219f385a69a6f0eb7c951d3cb74d90606001611fd9565b8280548282559060005260206000209081019282156122fe579160200282015b828111156122fe57825182906122ee9082612b70565b50916020019190600101906122d8565b5061230a929150612355565b5090565b828054828255906000526020600020908101928215612349579160200282015b8281111561234957825182559160200191906001019061232e565b5061230a929150612372565b8082111561230a5760006123698282612387565b50600101612355565b5b8082111561230a5760008155600101612373565b50805461239390612aa0565b6000825580601f106123a3575050565b601f016020900490600052602060002090810190611c729190612372565b6000602082840312156123d357600080fd5b5035919050565b80356001600160a01b03811681146123f157600080fd5b919050565b60006020828403121561240857600080fd5b612411826123da565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156124595783516001600160a01b031683529284019291840191600101612434565b50909695505050505050565b6000806040838503121561247857600080fd5b82359150612488602084016123da565b90509250929050565b8015158114611c7257600080fd5b600080604083850312156124b257600080fd5b6124bb836123da565b915060208301356124cb81612491565b809150509250929050565b6000815180845260005b818110156124fc576020818501810151868301820152016124e0565b506000602082860101526020601f19601f83011685010191505092915050565b868152856020820152846040820152831515606082015260018060a01b038316608082015260c060a0820152600061255760c08301846124d6565b98975050505050505050565b602080825282518282018190526000919060409081850190868401855b828110156125cd5781518051855286810151878601528581015186860152606080820151908601526080908101516001600160a01b03169085015260a09093019290850190600101612580565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156124595761262683855180516001600160a01b0316825260208082015190830152604090810151910152565b92840192606092909201916001016125f6565b81516001600160a01b0316815260208083015190820152604080830151908201526060810161216d565b6000806000806080858703121561267957600080fd5b8435935060208501359250612690604086016123da565b9396929550929360600135925050565b600080604083850312156126b357600080fd5b50508035926020909101359150565b600080604083850312156126d557600080fd5b6126de836123da565b946020939093013593505050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561273957601f198684030189526127278383516124d6565b9884019892509083019060010161270b565b5090979650505050505050565b60008151808452602080850194506020840160005b838110156127775781518752958201959082019060010161275b565b509495945050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561286257603f19898403018552815161010081518552888201518986015287820151888601526060808301516127e88288018215159052565b50506080828101516001600160a01b03169086015260a080830151818701839052612815838801826124d6565b9250505060c0808301518683038288015261283083826126ec565b9250505060e0808301519250858203818701525061284e8183612746565b9689019694505050908601906001016127ab565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128af576128af612870565b604052919050565b600082601f8301126128c857600080fd5b813567ffffffffffffffff8111156128e2576128e2612870565b6128f5601f8201601f1916602001612886565b81815284602083860101111561290a57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561293c57600080fd5b833567ffffffffffffffff8082111561295457600080fd5b612960878388016128b7565b945060209150818601358181111561297757600080fd5b8601601f8101881361298857600080fd5b80358281111561299a5761299a612870565b8060051b6129a9858201612886565b918252828101850191858101908b8411156129c357600080fd5b86850192505b838310156129ff578235868111156129e15760008081fd5b6129ef8d89838901016128b7565b83525091860191908601906129c9565b989b989a5050505060409690960135955050505050565b60208082526024908201527f4f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e636040820152633a34b7b760e11b606082015260800190565b600060208284031215612a6c57600080fd5b815161241181612491565b634e487b7160e01b600052601160045260246000fd5b8082018082111561216d5761216d612a77565b600181811c90821680612ab457607f821691505b602082108103610f8e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761216d5761216d612a77565b600082612b1e57634e487b7160e01b600052601260045260246000fd5b500490565b601f821115612b6b576000816000526020600020601f850160051c81016020861015612b4c5750805b601f850160051c820191505b8181101561176757828155600101612b58565b505050565b815167ffffffffffffffff811115612b8a57612b8a612870565b612b9e81612b988454612aa0565b84612b23565b602080601f831160018114612bd35760008415612bbb5750858301515b600019600386901b1c1916600185901b178555611767565b600085815260208120601f198616915b82811015612c0257888601518255948401946001909101908401612be3565b5085821015612c205787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8481526001600160a01b0384166020820152608060408201819052600090612c5a908301856124d6565b8281036060840152612c6c81856126ec565b979650505050505050565b8181038181111561216d5761216d612a7756fea26469706673582212201689ad72e4a1144280ecdf54119b70d09043285d494a7d00589539d0d914286a64736f6c6343000818003300000000000000000000000059017bead84066b3c39359a4d61df7468818120e
Deployed Bytecode
0x6080604052600436106102345760003560e01c8063b1283e771161012e578063da58c7d9116100ab578063e92820e61161006f578063e92820e61461076d578063ec2c90161461078d578063f2fde38b146107af578063fbc529cb146107cf578063fc0c546a146107ef57600080fd5b8063da58c7d9146106e4578063da7915b214610704578063dbd89df314610717578063dfc90cf214610737578063e8db675b1461075757600080fd5b8063cdd72253116100f2578063cdd7225314610632578063cdd78cfc14610654578063cfe8f6441461066a578063d4f50f9814610697578063d6e00d3d146106c457600080fd5b8063b1283e7714610563578063b8a3969614610595578063ba761ecc146105ab578063c07b528a146105d8578063c8e6b85d1461060557600080fd5b80636d70f7ae116101bc578063860639ec11610180578063860639ec146104955780638da5cb5b146104b55780639d1ca14a146104d3578063a90f8e9a14610500578063ad98fa451461053657600080fd5b80636d70f7ae146103d6578063715018a61461040657806384ae48b51461041b578063853a65f91461043057806385ad8b851461046857600080fd5b806348c54b9d1161020357806348c54b9d14610303578063543fd3131461031857806354ad29aa146103455780635df813301461036557806366829b16146103b657600080fd5b806311a07c08146102405780631b11dace1461026257806332e5b6d81461028b57806343859632146102b857600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b3660046123c1565b61080f565b005b34801561026e57600080fd5b5061027860105481565b6040519081526020015b60405180910390f35b34801561029757600080fd5b506102ab6102a63660046123f6565b610883565b6040516102829190612418565b3480156102c457600080fd5b506102f36102d3366004612465565b600f60209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610282565b34801561030f57600080fd5b506102606108f9565b34801561032457600080fd5b506102786103333660046123f6565b600d6020526000908152604090205481565b34801561035157600080fd5b506102606103603660046123f6565b6109be565b34801561037157600080fd5b506103856103803660046123c1565b610aa4565b6040805195865260208601949094529284019190915260608301526001600160a01b0316608082015260a001610282565b3480156103c257600080fd5b506102606103d13660046123f6565b610aee565b3480156103e257600080fd5b506102f36103f13660046123f6565b600e6020526000908152604090205460ff1681565b34801561041257600080fd5b50610260610b3f565b34801561042757600080fd5b50610260610b53565b34801561043c57600080fd5b50601454610450906001600160a01b031681565b6040516001600160a01b039091168152602001610282565b34801561047457600080fd5b506102786104833660046123f6565b60076020526000908152604090205481565b3480156104a157600080fd5b506102606104b036600461249f565b610bbf565b3480156104c157600080fd5b506000546001600160a01b0316610450565b3480156104df57600080fd5b506102786104ee3660046123f6565b60056020526000908152604090205481565b34801561050c57600080fd5b5061045061051b3660046123f6565b600b602052600090815260409020546001600160a01b031681565b34801561054257600080fd5b506102786105513660046123f6565b60066020526000908152604090205481565b34801561056f57600080fd5b5061058361057e3660046123c1565b610c19565b6040516102829695949392919061251c565b3480156105a157600080fd5b5061027860135481565b3480156105b757600080fd5b506105cb6105c63660046123c1565b610cfa565b6040516102829190612563565b3480156105e457600080fd5b506102786105f33660046123f6565b600a6020526000908152604090205481565b34801561061157600080fd5b506102786106203660046123f6565b60086020526000908152604090205481565b34801561063e57600080fd5b50610647610e76565b60405161028291906125da565b34801561066057600080fd5b5061027860125481565b34801561067657600080fd5b506102786106853660046123f6565b60096020526000908152604090205481565b3480156106a357600080fd5b506106b76106b23660046123f6565b610f94565b6040516102829190612639565b3480156106d057600080fd5b506102606106df3660046123c1565b611001565b3480156106f057600080fd5b506104506106ff3660046123c1565b611035565b610260610712366004612663565b61105f565b34801561072357600080fd5b506102606107323660046126a0565b6114a3565b34801561074357600080fd5b506102606107523660046123f6565b611908565b34801561076357600080fd5b5061027860115481565b34801561077957600080fd5b506104506107883660046126c2565b611959565b34801561079957600080fd5b506107a2611991565b6040516102829190612782565b3480156107bb57600080fd5b506102606107ca3660046123f6565b611bfc565b3480156107db57600080fd5b506102606107ea366004612927565b611c75565b3480156107fb57600080fd5b50600354610450906001600160a01b031681565b336000908152600e602052604090205460ff166108475760405162461bcd60e51b815260040161083e90612a16565b60405180910390fd5b60108190556040518181527f937fc6230427e4b41344af2acf9850247d6b7ce097cc579bdf68180d6c2e4237906020015b60405180910390a150565b6001600160a01b0381166000908152600c60209081526040918290208054835181840281018401909452808452606093928301828280156108ed57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108cf575b50505050509050919050565b336000818152600860205260408082208054929055600354905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044015b6020604051808303816000875af1158015610963573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109879190612a5a565b5060408051338152602081018390527f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4309101610878565b336000908152600b60205260409020546001600160a01b031615610a1b5760405162461bcd60e51b8152602060048201526014602482015273149959995c9c995c88185b1c9958591e481cd95d60621b604482015260640161083e565b336000818152600b6020908152604080832080546001600160a01b0387166001600160a01b03199182168117909255818552600c8452828520805460018101825590865294849020909401805490941685179093558051938452908301919091527f5f7165288eef601591cf549e15ff19ef9060b7f71b9c115be946fa1fe7ebf68a9101610878565b60028181548110610ab457600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929450909290916001600160a01b031685565b336000908152600e602052604090205460ff16610b1d5760405162461bcd60e51b815260040161083e90612a16565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610b47611e9e565b610b516000611ef8565b565b336000908152600960209081526040808320805490849055600a9092528220805491928392610b83908490612a8d565b909155505060035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401610944565b336000908152600e602052604090205460ff16610bee5760405162461bcd60e51b815260040161083e90612a16565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b60018181548110610c2957600080fd5b6000918252602090912060079091020180546001820154600283015460038401546004850180549496509294919360ff8216936101009092046001600160a01b0316929190610c7790612aa0565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca390612aa0565b8015610cf05780601f10610cc557610100808354040283529160200191610cf0565b820191906000526020600020905b815481529060010190602001808311610cd357829003601f168201915b5050505050905086565b6060600060018381548110610d1157610d11612ad4565b906000526020600020906007020190506000816006018054905067ffffffffffffffff811115610d4357610d43612870565b604051908082528060200260200182016040528015610daf57816020015b610d9c6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b815260200190600190039081610d615790505b50905060005b6006830154811015610e6e576002836006018281548110610dd857610dd8612ad4565b906000526020600020015481548110610df357610df3612ad4565b60009182526020918290206040805160a081018252600590930290910180548352600181015493830193909352600283015490820152600382015460608201526004909101546001600160a01b031660808201528251839083908110610e5b57610e5b612ad4565b6020908102919091010152600101610db5565b509392505050565b60045460609060009067ffffffffffffffff811115610e9757610e97612870565b604051908082528060200260200182016040528015610ef557816020015b610ee2604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b815260200190600190039081610eb55790505b50905060005b600454811015610f8e57600060048281548110610f1a57610f1a612ad4565b6000918252602080832090910154604080516060810182526001600160a01b0390921680835280855260078452818520548385015280855260069093529283902054928101929092528451909250849084908110610f7a57610f7a612ad4565b602090810291909101015250600101610efb565b50919050565b610fc1604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b50604080516060810182526001600160a01b0390921680835260008181526007602090815283822054818601529181526006909152819020549082015290565b336000908152600e602052604090205460ff166110305760405162461bcd60e51b815260040161083e90612a16565b601255565b6004818154811061104557600080fd5b6000918252602090912001546001600160a01b0316905081565b60006001858154811061107457611074612ad4565b90600052602060002090600702019050600082116110df5760405162461bcd60e51b815260206004820152602260248201527f566f746520616d6f756e74206d7573742062652067726561746572207468616e604482015261020360f41b606482015260840161083e565b6001600160a01b0383161580159061110d5750336000908152600b60205260409020546001600160a01b0316155b1561111b5761111b836109be565b611126336001611f48565b600381015460ff166111715760405162461bcd60e51b81526020600482015260146024820152734d61726b6574206973206e6f742061637469766560601b604482015260640161083e565b600581015484106111bb5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840dee0e8d2dedc40d2dcc8caf60631b604482015260640161083e565b806002015442106112035760405162461bcd60e51b815260206004820152601260248201527113585c9ad95d081a185cc8195e1c1a5c995960721b604482015260640161083e565b6000858152600f6020908152604080832033845290915290205460ff16156112665760405162461bcd60e51b8152602060048201526016602482015275155cd95c881a185cc8185b1c9958591e481d9bdd195960521b604482015260640161083e565b6000858152600f6020908152604080832033808552925291829020805460ff1916600117905560035491516323b872dd60e01b81526004810191909152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190612a5a565b506002546113163384611fe5565b6040805160a0808201835289825260208083018681528385018b81526060808601888152336080808901828152600280546001808201835560009283528c517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace60059093029283015598517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf82015596517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad088015593517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad1870155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad290950180546001600160a01b0319166001600160a01b039096169590951790945560068c018054958601815582529085902090930189905586518e8152938401899052958301919091529381018a90523493810193909352929550917f58cfe003711e6d7e0f32c93d3eb5617a03925d8863d7bb5dc084666365866022910160405180910390a150505050505050565b336000908152600e602052604090205460ff166114d25760405162461bcd60e51b815260040161083e90612a16565b6000600183815481106114e7576114e7612ad4565b60009182526020909120600790910201600381015490915060ff166115455760405162461bcd60e51b81526020600482015260146024820152734d61726b6574206973206e6f742061637469766560601b604482015260640161083e565b60038101805460ff191690556001810182905560068101546115a25760405162461bcd60e51b8152602060048201526016602482015275139bc81d9bdd195cc81a5b881d1a19481b585c9ad95d60521b604482015260640161083e565b60008060005b60068401548110156116ad57600060028560060183815481106115cd576115cd612ad4565b9060005260206000200154815481106115e8576115e8612ad4565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201819052600383015460608301526004909201546001600160a01b031660808201529150861461165c5760608101516116559085612a8d565b93506116a4565b606081015161166b9084612a8d565b606082015160808301516001600160a01b031660009081526008602052604081208054939650919261169e908490612a8d565b90915550505b506001016115a8565b508060000361176f5760408051868152602081018690527e0b6feae4bec70344a7d0e99f4c0237adaaeee2fbb258266be400bd8612a332910160405180910390a160035460145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af1158015611743573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117679190612a5a565b505050505050565b60005b60068401548110156118c6576000600285600601838154811061179757611797612ad4565b9060005260206000200154815481106117b2576117b2612ad4565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201819052600383015460608301526004909201546001600160a01b0316608082015291508690036118bd576000838583606001516118249190612aea565b61182e9190612b01565b60808301516001600160a01b031660009081526008602052604081208054929350839290919061185f908490612a8d565b909155505060808201516118739082612173565b6080820151604080516001600160a01b039092168252602082018390527f8407530cd30bd60843793c1ccec3f8c6f69c95ffef3e255c2de664d0dd658d61910160405180910390a1505b50600101611772565b5060408051868152602081018690527e0b6feae4bec70344a7d0e99f4c0237adaaeee2fbb258266be400bd8612a33291015b60405180910390a15050505b5050565b336000908152600e602052604090205460ff166119375760405162461bcd60e51b815260040161083e90612a16565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b600c602052816000526040600020818154811061197557600080fd5b6000918252602090912001546001600160a01b03169150829050565b60606001805480602002602001604051908101604052809291908181526020016000905b82821015611bf35760008481526020908190206040805161010080820183526007870290930180548252600181015494820194909452600284015491810191909152600383015460ff811615156060830152919091046001600160a01b0316608082015260048201805491929160a084019190611a3190612aa0565b80601f0160208091040260200160405190810160405280929190818152602001828054611a5d90612aa0565b8015611aaa5780601f10611a7f57610100808354040283529160200191611aaa565b820191906000526020600020905b815481529060010190602001808311611a8d57829003601f168201915b5050505050815260200160058201805480602002602001604051908101604052809291908181526020016000905b82821015611b84578382906000526020600020018054611af790612aa0565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2390612aa0565b8015611b705780601f10611b4557610100808354040283529160200191611b70565b820191906000526020600020905b815481529060010190602001808311611b5357829003601f168201915b505050505081526020019060010190611ad8565b50505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611bdb57602002820191906000526020600020905b815481526020019060010190808311611bc7575b505050505081525050815260200190600101906119b5565b50505050905090565b611c04611e9e565b6001600160a01b038116611c695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161083e565b611c7281611ef8565b50565b600154428211611cc75760405162461bcd60e51b815260206004820152601e60248201527f456e642064617465206d75737420626520696e20746865206675747572650000604482015260640161083e565b60408051610100808201835283825260006020808401828152848601888152600160608701818152336080890190815260a089018e815260c08a018e90528a51888152968701909a5260e0890195909552815480830183559190955286517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6600790920291820190815592517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf782015590517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf882015592517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf98401805493516001600160a81b0319909416911515610100600160a81b031916919091176001600160a01b03909316909402919091179092559251919283927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa90910190611e2e9082612b70565b5060c08201518051611e4a9160058401916020909101906122b8565b5060e08201518051611e6691600684019160209091019061230e565b5050507f5d000efdc981f3cf96c1b426c290626a81f483b07edcfeb841dba2b62e185b50823387876040516118f89493929190612c30565b6000546001600160a01b03163314610b515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611f51826121d1565b6001600160a01b03821660009081526007602052604081208054839290611f79908490612a8d565b90915550506001600160a01b038216600081815260076020908152604080832054600683529281902054815194855291840192909252908201527f43ae40d970cd13ea124e3b418e6e134fbd046e9d90a1313f984524aaf1cd55d1906060015b60405180910390a15050565b600080829050600060135460125483611ffe9190612aea565b6120089190612b01565b6001600160a01b038087166000908152600b60205260408120549293509116801561204a5760115460105461203d9086612aea565b6120479190612b01565b91505b81156120cf5761205a8284612c77565b6001600160a01b038216600090815260096020526040812080549295508492909190612087908490612a8d565b9091555050604080516001600160a01b0383168152602081018490527f56aaff25c3db1828aca55c30ba4aac2b5754d6f7d328b7f97d7306d6381844ba910160405180910390a15b6003546014546040516323b872dd60e01b81526001600160a01b038a811660048301529182166024820152604481018690529116906323b872dd906064016020604051808303816000875af115801561212c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121509190612a5a565b508161215c8486612c77565b6121669190612c77565b9450505050505b92915050565b61217c826121d1565b6001600160a01b038216600090815260056020526040812080548392906121a4908490612a8d565b90915550506001600160a01b03821660009081526006602052604081208054839290611f79908490612a8d565b6000805b60045481101561222757826001600160a01b0316600482815481106121fc576121fc612ad4565b6000918252602090912001546001600160a01b03160361221f5760019150612227565b6001016121d5565b5080611904576004805460018101825560009182527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b03851690811790915560408051918252602082018390528101919091527f921634871b0696335c4e4a3ae25878836aae219f385a69a6f0eb7c951d3cb74d90606001611fd9565b8280548282559060005260206000209081019282156122fe579160200282015b828111156122fe57825182906122ee9082612b70565b50916020019190600101906122d8565b5061230a929150612355565b5090565b828054828255906000526020600020908101928215612349579160200282015b8281111561234957825182559160200191906001019061232e565b5061230a929150612372565b8082111561230a5760006123698282612387565b50600101612355565b5b8082111561230a5760008155600101612373565b50805461239390612aa0565b6000825580601f106123a3575050565b601f016020900490600052602060002090810190611c729190612372565b6000602082840312156123d357600080fd5b5035919050565b80356001600160a01b03811681146123f157600080fd5b919050565b60006020828403121561240857600080fd5b612411826123da565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156124595783516001600160a01b031683529284019291840191600101612434565b50909695505050505050565b6000806040838503121561247857600080fd5b82359150612488602084016123da565b90509250929050565b8015158114611c7257600080fd5b600080604083850312156124b257600080fd5b6124bb836123da565b915060208301356124cb81612491565b809150509250929050565b6000815180845260005b818110156124fc576020818501810151868301820152016124e0565b506000602082860101526020601f19601f83011685010191505092915050565b868152856020820152846040820152831515606082015260018060a01b038316608082015260c060a0820152600061255760c08301846124d6565b98975050505050505050565b602080825282518282018190526000919060409081850190868401855b828110156125cd5781518051855286810151878601528581015186860152606080820151908601526080908101516001600160a01b03169085015260a09093019290850190600101612580565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156124595761262683855180516001600160a01b0316825260208082015190830152604090810151910152565b92840192606092909201916001016125f6565b81516001600160a01b0316815260208083015190820152604080830151908201526060810161216d565b6000806000806080858703121561267957600080fd5b8435935060208501359250612690604086016123da565b9396929550929360600135925050565b600080604083850312156126b357600080fd5b50508035926020909101359150565b600080604083850312156126d557600080fd5b6126de836123da565b946020939093013593505050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561273957601f198684030189526127278383516124d6565b9884019892509083019060010161270b565b5090979650505050505050565b60008151808452602080850194506020840160005b838110156127775781518752958201959082019060010161275b565b509495945050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561286257603f19898403018552815161010081518552888201518986015287820151888601526060808301516127e88288018215159052565b50506080828101516001600160a01b03169086015260a080830151818701839052612815838801826124d6565b9250505060c0808301518683038288015261283083826126ec565b9250505060e0808301519250858203818701525061284e8183612746565b9689019694505050908601906001016127ab565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128af576128af612870565b604052919050565b600082601f8301126128c857600080fd5b813567ffffffffffffffff8111156128e2576128e2612870565b6128f5601f8201601f1916602001612886565b81815284602083860101111561290a57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561293c57600080fd5b833567ffffffffffffffff8082111561295457600080fd5b612960878388016128b7565b945060209150818601358181111561297757600080fd5b8601601f8101881361298857600080fd5b80358281111561299a5761299a612870565b8060051b6129a9858201612886565b918252828101850191858101908b8411156129c357600080fd5b86850192505b838310156129ff578235868111156129e15760008081fd5b6129ef8d89838901016128b7565b83525091860191908601906129c9565b989b989a5050505060409690960135955050505050565b60208082526024908201527f4f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e636040820152633a34b7b760e11b606082015260800190565b600060208284031215612a6c57600080fd5b815161241181612491565b634e487b7160e01b600052601160045260246000fd5b8082018082111561216d5761216d612a77565b600181811c90821680612ab457607f821691505b602082108103610f8e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761216d5761216d612a77565b600082612b1e57634e487b7160e01b600052601260045260246000fd5b500490565b601f821115612b6b576000816000526020600020601f850160051c81016020861015612b4c5750805b601f850160051c820191505b8181101561176757828155600101612b58565b505050565b815167ffffffffffffffff811115612b8a57612b8a612870565b612b9e81612b988454612aa0565b84612b23565b602080601f831160018114612bd35760008415612bbb5750858301515b600019600386901b1c1916600185901b178555611767565b600085815260208120601f198616915b82811015612c0257888601518255948401946001909101908401612be3565b5085821015612c205787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8481526001600160a01b0384166020820152608060408201819052600090612c5a908301856124d6565b8281036060840152612c6c81856126ec565b979650505050505050565b8181038181111561216d5761216d612a7756fea26469706673582212201689ad72e4a1144280ecdf54119b70d09043285d494a7d00589539d0d914286a64736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000059017bead84066b3c39359a4d61df7468818120e
-----Decoded View---------------
Arg [0] : _token (address): 0x59017BEAd84066b3C39359A4d61Df7468818120e
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000059017bead84066b3c39359a4d61df7468818120e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.