Source Code
Overview
FTM Balance
1.8 FTM
More Info
ContractCreator:
Multichain Info
N/A
Loading...
Loading
Contract Name:
BaseballStake
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at testnet.ftmscan.com on 2022-05-18 */ /* ____ __ _________ __ __ _____ ___ / __ )____ _________ / /_ ____ _/ / / ___// /_____ _/ /_____ / ___/_ _< / / __ / __ `/ ___/ _ \/ __ \/ __ `/ / /\__ \/ __/ __ `/ //_/ _ \/ __ \| |/_/ / / /_/ / /_/ (__ ) __/ /_/ / /_/ / / /___/ / /_/ /_/ / ,< / __/ /_/ /> </ / /_____/\__,_/____/\___/_.___/\__,_/_/_//____/\__/\__,_/_/|_|\___/\____/_/|_/_/ Baseball stake 6x1 | earn money until 10% daily SPDX-License-Identifier: MIT */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } pragma solidity 0.8.11; /** * @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; } } contract Ownable is Context { address private _owner; address public _dev; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract BaseballStake is Context, Ownable { using SafeMath for uint256; using SafeMath for uint8; // Project initialized bool private initialized = false; uint256 private ballsForMiner = 1080000; // Tool uint256 private PSN = 10000; uint256 private PSNH = 5000; uint256 private DAYS_FOR_FIXED = 1 days; uint256 private DAYS_FOR_SELLING = 6 days; uint256 public players = 0; // Commissions uint256 private referralCommision = 12; uint256 private devFeeBuy = 10; uint256 private devFeeSell = 5; // Address commissions address private depositAddress = 0x6C728b3F6e0fCc786Cd302d98db36875302Dd531; address private sellingAddress = 0x0356D43C22a19630433438d28B91d01b35eDde00; // Mapping mapping(address => uint256) private games; mapping(address => uint256) private claimedBall; mapping(address => uint256) private lastSelling; mapping(address => uint256) private lastFixed; mapping(address => address) private referrals; // Project uint256 private marketBalls; constructor() Ownable() {} // Functions for use public function addImprovement(address ref) public { require(initialized); if (ref == _msgSender()) { ref = address(0); } if ( referrals[_msgSender()] == address(0) && referrals[_msgSender()] != _msgSender() ) { referrals[_msgSender()] = ref; if (games[_msgSender()] == 0) { players = players.add(1); lastSelling[_msgSender()] = block.timestamp; } } uint256 ballsUsed = getMyBalls(_msgSender()); uint256 improvement = SafeMath.div(ballsUsed, ballsForMiner); games[_msgSender()] = SafeMath.add(games[_msgSender()], improvement); claimedBall[_msgSender()] = 0; lastFixed[_msgSender()] = block.timestamp; //send referral balls claimedBall[referrals[_msgSender()]] = SafeMath.add( claimedBall[referrals[_msgSender()]], SafeMath.div(ballsUsed, referralCommision) ); //boost market to nerf miners hoarding marketBalls = SafeMath.add(marketBalls, SafeMath.div(ballsUsed, 5)); } function sellBalls() public { require(initialized); require( lastSelling[_msgSender()].add(DAYS_FOR_SELLING) <= block.timestamp, "Only can seller every 6 days" ); uint256 balls = getMyBalls(_msgSender()); uint256 valueBalls = calculateBallSell(balls); claimedBall[_msgSender()] = 0; lastSelling[_msgSender()] = block.timestamp; marketBalls = SafeMath.add(marketBalls, balls); payFee(valueBalls, false); payable(_msgSender()).transfer( SafeMath.sub( valueBalls, SafeMath.div(SafeMath.mul(valueBalls, devFeeSell), 100) ) ); } function ballsRewards(address adr) public view returns (uint256) { uint256 balls = getMyBalls(adr); uint256 value = calculateBallSell(balls); return value; } function buyBalls(address ref) public payable { require(initialized); uint256 ballsBought = calculateBallBuy( msg.value, SafeMath.sub(address(this).balance, msg.value) ); ballsBought = SafeMath.sub( ballsBought, SafeMath.div(SafeMath.mul(ballsBought, devFeeBuy), 100) ); payFee(msg.value, true); claimedBall[_msgSender()] = SafeMath.add( claimedBall[_msgSender()], ballsBought ); addImprovement(ref); } function openGame() public payable onlyOwner { require(marketBalls == 0); initialized = true; marketBalls = 108000000000; } // Functions for use internal function getMyBalls(address adr) public view returns (uint256) { return SafeMath.add(claimedBall[adr], getBallsSinceLastFixed(adr)); } function getBallsSinceLastFixed(address adr) public view returns (uint256) { uint256 timeLastFixed = SafeMath.sub(block.timestamp, lastFixed[adr]); uint256 secondsPassed = min( ballsForMiner, timeLastFixed > 1 days ? 0 : timeLastFixed ); return SafeMath.mul(secondsPassed, games[adr]); } function getBalance() public view returns (uint256) { return address(this).balance; } function getDaysForSell(address adr) public view returns (uint256) { return lastSelling[adr].add(DAYS_FOR_SELLING); } function getDaysWithoutFixed(address adr) public view returns (uint256) { return lastFixed[adr] == 0 ? 0 : block.timestamp.sub(lastFixed[adr]); } function getDaysForFixed(address adr) public view returns (uint256) { return lastFixed[adr].add(DAYS_FOR_FIXED); } function getMyGames(address adr) public view returns (uint256) { return games[adr]; } function getPlayers() public view returns (uint256) { return players; } function calculateTrade( uint256 amount, uint256 market, uint256 balance ) private view returns (uint256) { return SafeMath.div( SafeMath.mul(PSN, balance), SafeMath.add( PSNH, SafeMath.div( SafeMath.add( SafeMath.mul(PSN, market), SafeMath.mul(PSNH, amount) ), amount ) ) ); } function calculateBallSell(uint256 balls) public view returns (uint256) { return calculateTrade(balls, marketBalls, address(this).balance); } function calculateBallBuy(uint256 eth, uint256 contractBalance) public view returns (uint256) { return calculateTrade(eth, contractBalance, marketBalls); } function payFee(uint256 amount, bool isBuy) internal { uint256 devFee = isBuy ? devFeeBuy : devFeeSell; uint256 devFeeCalculated = SafeMath.div( SafeMath.mul(amount, devFee), 100 ); address devAddress = isBuy ? depositAddress : sellingAddress; payable(devAddress).transfer(devFeeCalculated); } function min(uint256 a, uint256 b) private pure returns (uint256) { return a < b ? a : b; } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"_dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ref","type":"address"}],"name":"addImprovement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"ballsRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ref","type":"address"}],"name":"buyBalls","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"eth","type":"uint256"},{"internalType":"uint256","name":"contractBalance","type":"uint256"}],"name":"calculateBallBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balls","type":"uint256"}],"name":"calculateBallSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getBallsSinceLastFixed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getDaysForFixed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getDaysForSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getDaysWithoutFixed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getMyBalls","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getMyGames","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPlayers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openGame","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"players","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBalls","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526001805460ff60a01b1916905562107ac06002556127106003556113886004556201518060059081556207e9006006556000600755600c6008819055600a600981905591909155600b80546001600160a01b0319908116736c728b3f6e0fcc786cd302d98db36875302dd53117909155815416730356d43c22a19630433438d28b91d01b35edde0017905534801561009b57600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610c8f806100ea6000396000f3fe60806040526004361061011f5760003560e01c80638da5cb5b116100a0578063e79ffa1111610064578063e79ffa11146102e2578063e7bf71a714610302578063ece0024914610322578063f2fde38b14610358578063fa12d7821461037857600080fd5b80638da5cb5b1461023a5780639319ddd01461026c5780639a57715f1461028c578063dc0b3564146102ac578063e1c0bb71146102c257600080fd5b80634b9d4d29116100e75780634b9d4d29146101bb5780634d171fce146101d05780635e9f6305146101f0578063715018a6146102105780638b5b9ccc1461022557600080fd5b806312065fe014610124578063121aaa99146101465780631944e31a146101685780631b4e1ef51461017b57806327598a7c1461019b575b600080fd5b34801561013057600080fd5b50475b6040519081526020015b60405180910390f35b34801561015257600080fd5b50610166610161366004610b3a565b610380565b005b610166610176366004610b3a565b61052f565b34801561018757600080fd5b50610133610196366004610b3a565b6105ad565b3480156101a757600080fd5b506101336101b6366004610b3a565b6105d9565b3480156101c757600080fd5b50610166610601565b3480156101dc57600080fd5b506101336101eb366004610b3a565b61073e565b3480156101fc57600080fd5b5061013361020b366004610b63565b61078d565b34801561021c57600080fd5b506101666107a3565b34801561023157600080fd5b50600754610133565b34801561024657600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161013d565b34801561027857600080fd5b50610133610287366004610b3a565b610817565b34801561029857600080fd5b506101336102a7366004610b3a565b61088d565b3480156102b857600080fd5b5061013360075481565b3480156102ce57600080fd5b506101336102dd366004610b3a565b6108a6565b3480156102ee57600080fd5b50600154610254906001600160a01b031681565b34801561030e57600080fd5b5061013361031d366004610b85565b6108ce565b34801561032e57600080fd5b5061013361033d366004610b3a565b6001600160a01b03166000908152600d602052604090205490565b34801561036457600080fd5b50610166610373366004610b3a565b6108dd565b610166610913565b600154600160a01b900460ff1661039657600080fd5b6001600160a01b0381163314156103ab575060005b336000908152601160205260409020546001600160a01b03161580156103e85750336000818152601160205260409020546001600160a01b031614155b156104485733600090815260116020908152604080832080546001600160a01b0319166001600160a01b038616179055600d90915290205461044857600754610432906001610968565b600755336000908152600f602052604090204290555b6000610453336105ad565b9050600061046382600254610974565b9050610495600d6000335b6001600160a01b03166001600160a01b031681526020019081526020016000205482610968565b336000908152600d6020908152604080832093909355600e8082528383208390556010825283832042905560118252838320546001600160a01b03168352905220546008546104ef91906104ea908590610974565b610968565b336000908152601160209081526040808320546001600160a01b03168352600e909152902055601254610527906104ea846005610974565b601255505050565b600154600160a01b900460ff1661054557600080fd5b60006105553461020b4734610980565b90506105768161057161056a8460095461098c565b6064610974565b610980565b9050610583346001610998565b610590600e60003361046e565b336000908152600e60205260409020556105a982610380565b5050565b6001600160a01b0381166000908152600e60205260408120546105d3906104ea84610817565b92915050565b6006546001600160a01b0382166000908152600f602052604081205490916105d39190610968565b600154600160a01b900460ff1661061757600080fd5b42610649600654600f60006106293390565b6001600160a01b0316815260208101919091526040016000205490610968565b111561069c5760405162461bcd60e51b815260206004820152601c60248201527f4f6e6c792063616e2073656c6c6572206576657279203620646179730000000060448201526064015b60405180910390fd5b60006106a7336105ad565b905060006106b4826108ce565b336000908152600e60209081526040808320839055600f90915290204290556012549091506106e39083610968565b6012556106f1816000610998565b336001600160a01b03166108fc6107118361057161056a86600a5461098c565b6040518115909202916000818181858888f19350505050158015610739573d6000803e3d6000fd5b505050565b6001600160a01b03811660009081526010602052604081205415610785576001600160a01b038216600090815260106020526040902054610780904290610980565b6105d3565b600092915050565b600061079c8383601254610a24565b9392505050565b6000546001600160a01b031633146107cd5760405162461bcd60e51b815260040161069390610b9e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001600160a01b038116600090815260106020526040812054819061083d904290610980565b9050600061085e6002546201518084116108575783610a64565b6000610a64565b6001600160a01b0385166000908152600d602052604090205490915061088590829061098c565b949350505050565b600080610899836105ad565b90506000610885826108ce565b6005546001600160a01b03821660009081526010602052604081205490916105d39190610968565b60006105d38260125447610a24565b6000546001600160a01b031633146109075760405162461bcd60e51b815260040161069390610b9e565b61091081610a7a565b50565b6000546001600160a01b0316331461093d5760405162461bcd60e51b815260040161069390610b9e565b6012541561094a57600080fd5b6001805460ff60a01b1916600160a01b1790556419254d3800601255565b600061079c8284610be9565b600061079c8284610c01565b600061079c8284610c23565b600061079c8284610c3a565b6000816109a757600a546109ab565b6009545b905060006109bc61056a858461098c565b90506000836109d657600c546001600160a01b03166109e3565b600b546001600160a01b03165b6040519091506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610a1c573d6000803e3d6000fd5b505050505050565b6000610885610a356003548461098c565b610a5f6004546104ea610a59610a4d6003548a61098c565b6104ea6004548c61098c565b89610974565b610974565b6000818310610a73578161079c565b5090919050565b6001600160a01b038116610adf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610693565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215610b4c57600080fd5b81356001600160a01b038116811461079c57600080fd5b60008060408385031215610b7657600080fd5b50508035926020909101359150565b600060208284031215610b9757600080fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610bfc57610bfc610bd3565b500190565b600082610c1e57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610c3557610c35610bd3565b500390565b6000816000190483118215151615610c5457610c54610bd3565b50029056fea2646970667358221220b564f0d284f16190b461d30aab135ba234fc7eee7da9e44466702b46cd5df27064736f6c634300080b0033
Deployed Bytecode
0x60806040526004361061011f5760003560e01c80638da5cb5b116100a0578063e79ffa1111610064578063e79ffa11146102e2578063e7bf71a714610302578063ece0024914610322578063f2fde38b14610358578063fa12d7821461037857600080fd5b80638da5cb5b1461023a5780639319ddd01461026c5780639a57715f1461028c578063dc0b3564146102ac578063e1c0bb71146102c257600080fd5b80634b9d4d29116100e75780634b9d4d29146101bb5780634d171fce146101d05780635e9f6305146101f0578063715018a6146102105780638b5b9ccc1461022557600080fd5b806312065fe014610124578063121aaa99146101465780631944e31a146101685780631b4e1ef51461017b57806327598a7c1461019b575b600080fd5b34801561013057600080fd5b50475b6040519081526020015b60405180910390f35b34801561015257600080fd5b50610166610161366004610b3a565b610380565b005b610166610176366004610b3a565b61052f565b34801561018757600080fd5b50610133610196366004610b3a565b6105ad565b3480156101a757600080fd5b506101336101b6366004610b3a565b6105d9565b3480156101c757600080fd5b50610166610601565b3480156101dc57600080fd5b506101336101eb366004610b3a565b61073e565b3480156101fc57600080fd5b5061013361020b366004610b63565b61078d565b34801561021c57600080fd5b506101666107a3565b34801561023157600080fd5b50600754610133565b34801561024657600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161013d565b34801561027857600080fd5b50610133610287366004610b3a565b610817565b34801561029857600080fd5b506101336102a7366004610b3a565b61088d565b3480156102b857600080fd5b5061013360075481565b3480156102ce57600080fd5b506101336102dd366004610b3a565b6108a6565b3480156102ee57600080fd5b50600154610254906001600160a01b031681565b34801561030e57600080fd5b5061013361031d366004610b85565b6108ce565b34801561032e57600080fd5b5061013361033d366004610b3a565b6001600160a01b03166000908152600d602052604090205490565b34801561036457600080fd5b50610166610373366004610b3a565b6108dd565b610166610913565b600154600160a01b900460ff1661039657600080fd5b6001600160a01b0381163314156103ab575060005b336000908152601160205260409020546001600160a01b03161580156103e85750336000818152601160205260409020546001600160a01b031614155b156104485733600090815260116020908152604080832080546001600160a01b0319166001600160a01b038616179055600d90915290205461044857600754610432906001610968565b600755336000908152600f602052604090204290555b6000610453336105ad565b9050600061046382600254610974565b9050610495600d6000335b6001600160a01b03166001600160a01b031681526020019081526020016000205482610968565b336000908152600d6020908152604080832093909355600e8082528383208390556010825283832042905560118252838320546001600160a01b03168352905220546008546104ef91906104ea908590610974565b610968565b336000908152601160209081526040808320546001600160a01b03168352600e909152902055601254610527906104ea846005610974565b601255505050565b600154600160a01b900460ff1661054557600080fd5b60006105553461020b4734610980565b90506105768161057161056a8460095461098c565b6064610974565b610980565b9050610583346001610998565b610590600e60003361046e565b336000908152600e60205260409020556105a982610380565b5050565b6001600160a01b0381166000908152600e60205260408120546105d3906104ea84610817565b92915050565b6006546001600160a01b0382166000908152600f602052604081205490916105d39190610968565b600154600160a01b900460ff1661061757600080fd5b42610649600654600f60006106293390565b6001600160a01b0316815260208101919091526040016000205490610968565b111561069c5760405162461bcd60e51b815260206004820152601c60248201527f4f6e6c792063616e2073656c6c6572206576657279203620646179730000000060448201526064015b60405180910390fd5b60006106a7336105ad565b905060006106b4826108ce565b336000908152600e60209081526040808320839055600f90915290204290556012549091506106e39083610968565b6012556106f1816000610998565b336001600160a01b03166108fc6107118361057161056a86600a5461098c565b6040518115909202916000818181858888f19350505050158015610739573d6000803e3d6000fd5b505050565b6001600160a01b03811660009081526010602052604081205415610785576001600160a01b038216600090815260106020526040902054610780904290610980565b6105d3565b600092915050565b600061079c8383601254610a24565b9392505050565b6000546001600160a01b031633146107cd5760405162461bcd60e51b815260040161069390610b9e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001600160a01b038116600090815260106020526040812054819061083d904290610980565b9050600061085e6002546201518084116108575783610a64565b6000610a64565b6001600160a01b0385166000908152600d602052604090205490915061088590829061098c565b949350505050565b600080610899836105ad565b90506000610885826108ce565b6005546001600160a01b03821660009081526010602052604081205490916105d39190610968565b60006105d38260125447610a24565b6000546001600160a01b031633146109075760405162461bcd60e51b815260040161069390610b9e565b61091081610a7a565b50565b6000546001600160a01b0316331461093d5760405162461bcd60e51b815260040161069390610b9e565b6012541561094a57600080fd5b6001805460ff60a01b1916600160a01b1790556419254d3800601255565b600061079c8284610be9565b600061079c8284610c01565b600061079c8284610c23565b600061079c8284610c3a565b6000816109a757600a546109ab565b6009545b905060006109bc61056a858461098c565b90506000836109d657600c546001600160a01b03166109e3565b600b546001600160a01b03165b6040519091506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610a1c573d6000803e3d6000fd5b505050505050565b6000610885610a356003548461098c565b610a5f6004546104ea610a59610a4d6003548a61098c565b6104ea6004548c61098c565b89610974565b610974565b6000818310610a73578161079c565b5090919050565b6001600160a01b038116610adf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610693565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215610b4c57600080fd5b81356001600160a01b038116811461079c57600080fd5b60008060408385031215610b7657600080fd5b50508035926020909101359150565b600060208284031215610b9757600080fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610bfc57610bfc610bd3565b500190565b600082610c1e57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610c3557610c35610bd3565b500390565b6000816000190483118215151615610c5457610c54610bd3565b50029056fea2646970667358221220b564f0d284f16190b461d30aab135ba234fc7eee7da9e44466702b46cd5df27064736f6c634300080b0033
Deployed Bytecode Sourcemap
9293:6753:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13836:99;;;;;;;;;;-1:-1:-1;13906:21:0;13836:99;;;160:25:1;;;148:2;133:18;13836:99:0;;;;;;;;10466:1154;;;;;;;;;;-1:-1:-1;10466:1154:0;;;;;:::i;:::-;;:::i;:::-;;12546:566;;;;;;:::i;:::-;;:::i;13318:148::-;;;;;;;;;;-1:-1:-1;13318:148:0;;;;;:::i;:::-;;:::i;13943:131::-;;;;;;;;;;-1:-1:-1;13943:131:0;;;;;:::i;:::-;;:::i;11628:713::-;;;;;;;;;;;;;:::i;14082:159::-;;;;;;;;;;-1:-1:-1;14082:159:0;;;;;:::i;:::-;;:::i;15352:201::-;;;;;;;;;;-1:-1:-1;15352:201:0;;;;;:::i;:::-;;:::i;8755:140::-;;;;;;;;;;;;;:::i;14492:85::-;;;;;;;;;;-1:-1:-1;14562:7:0;;14492:85;;8541:79;;;;;;;;;;-1:-1:-1;8579:7:0;8606:6;-1:-1:-1;;;;;8606:6:0;8541:79;;;-1:-1:-1;;;;;904:32:1;;;886:51;;874:2;859:18;8541:79:0;740:203:1;13474:354:0;;;;;;;;;;-1:-1:-1;13474:354:0;;;;;:::i;:::-;;:::i;12349:189::-;;;;;;;;;;-1:-1:-1;12349:189:0;;;;;:::i;:::-;;:::i;9699:26::-;;;;;;;;;;;;;;;;14249:128;;;;;;;;;;-1:-1:-1;14249:128:0;;;;;:::i;:::-;;:::i;8100:19::-;;;;;;;;;;-1:-1:-1;8100:19:0;;;;-1:-1:-1;;;;;8100:19:0;;;15189:155;;;;;;;;;;-1:-1:-1;15189:155:0;;;;;:::i;:::-;;:::i;14385:99::-;;;;;;;;;;-1:-1:-1;14385:99:0;;;;;:::i;:::-;-1:-1:-1;;;;;14466:10:0;14439:7;14466:10;;;:5;:10;;;;;;;14385:99;8903:109;;;;;;;;;;-1:-1:-1;8903:109:0;;;;;:::i;:::-;;:::i;13120:155::-;;;:::i;10466:1154::-;10529:11;;-1:-1:-1;;;10529:11:0;;;;10521:20;;;;;;-1:-1:-1;;;;;10558:19:0;;7902:10;10558:19;10554:68;;;-1:-1:-1;10608:1:0;10554:68;7902:10;10687:1;10652:23;;;:9;:23;;;;;;-1:-1:-1;;;;;10652:23:0;:37;:93;;;;-1:-1:-1;7902:10:0;10706:23;;;;:9;:23;;;;;;-1:-1:-1;;;;;10706:23:0;:39;;10652:93;10634:344;;;7902:10;10772:23;;;;:9;:23;;;;;;;;:29;;-1:-1:-1;;;;;;10772:29:0;-1:-1:-1;;;;;10772:29:0;;;;;10820:5;:19;;;;;;10816:151;;10875:7;;:14;;10887:1;10875:11;:14::i;:::-;10865:7;:24;7902:10;10908:25;;;;:11;:25;;;;;10936:15;10908:43;;10816:151;10988:17;11008:24;7902:10;13318:148;:::i;11008:24::-;10988:44;;11043:19;11065:38;11078:9;11089:13;;11065:12;:38::i;:::-;11043:60;-1:-1:-1;11136:46:0;11149:5;:19;7902:10;11155:12;-1:-1:-1;;;;;11149:19:0;-1:-1:-1;;;;;11149:19:0;;;;;;;;;;;;;11170:11;11136:12;:46::i;:::-;7902:10;11114:19;;;;:5;:19;;;;;;;;:68;;;;11193:11;:25;;;;;;:29;;;11233:9;:23;;;;;11259:15;11233:41;;11394:9;:23;;;;;;-1:-1:-1;;;;;11394:23:0;11382:36;;;;;;11457:17;;11355:131;;11382:36;11433:42;;11446:9;;11433:12;:42::i;:::-;11355:12;:131::i;:::-;7902:10;11316:36;11328:23;;;:9;:23;;;;;;;;;-1:-1:-1;;;;;11328:23:0;11316:36;;:11;:36;;;;;:170;11572:11;;11559:53;;11585:26;11598:9;11609:1;11585:12;:26::i;11559:53::-;11545:11;:67;-1:-1:-1;;;10466:1154:0:o;12546:566::-;12611:11;;-1:-1:-1;;;12611:11:0;;;;12603:20;;;;;;12634:19;12656:112;12687:9;12711:46;12724:21;12747:9;12711:12;:46::i;12656:112::-;12634:134;;12793:119;12820:11;12846:55;12859:36;12872:11;12885:9;;12859:12;:36::i;:::-;12897:3;12846:12;:55::i;:::-;12793:12;:119::i;:::-;12779:133;;12923:23;12930:9;12941:4;12923:6;:23::i;:::-;12985:89;13012:11;:25;7902:10;13024:12;7822:98;12985:89;7902:10;12957:25;;;;:11;:25;;;;;:117;13085:19;13100:3;13085:14;:19::i;:::-;12592:520;12546:566;:::o;13318:148::-;-1:-1:-1;;;;;13412:16:0;;13372:7;13412:16;;;:11;:16;;;;;;13399:59;;13430:27;13424:3;13430:22;:27::i;13399:59::-;13392:66;13318:148;-1:-1:-1;;13318:148:0:o;13943:131::-;14049:16;;-1:-1:-1;;;;;14028:16:0;;14001:7;14028:16;;;:11;:16;;;;;;14001:7;;14028:38;;:16;:20;:38::i;11628:713::-;11675:11;;-1:-1:-1;;;11675:11:0;;;;11667:20;;;;;;11771:15;11720:47;11750:16;;11720:11;:25;11732:12;7902:10;;7822:98;11732:12;-1:-1:-1;;;;;11720:25:0;;;;;;;;;;;;-1:-1:-1;11720:25:0;;;:29;:47::i;:::-;:66;;11698:144;;;;-1:-1:-1;;;11698:144:0;;1335:2:1;11698:144:0;;;1317:21:1;1374:2;1354:18;;;1347:30;1413;1393:18;;;1386:58;1461:18;;11698:144:0;;;;;;;;;11853:13;11869:24;7902:10;13318:148;:::i;11869:24::-;11853:40;;11904:18;11925:24;11943:5;11925:17;:24::i;:::-;7902:10;11988:1;11960:25;;;:11;:25;;;;;;;;:29;;;12000:11;:25;;;;;12028:15;12000:43;;12081:11;;11904:45;;-1:-1:-1;12068:32:0;;12094:5;12068:12;:32::i;:::-;12054:11;:46;12111:25;12118:10;12130:5;12111:6;:25::i;:::-;7902:10;-1:-1:-1;;;;;12147:30:0;:186;12192:130;12223:10;12252:55;12265:36;12278:10;12290;;12265:12;:36::i;12192:130::-;12147:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11656:685;;11628:713::o;14082:159::-;-1:-1:-1;;;;;14172:14:0;;14145:7;14172:14;;;:9;:14;;;;;;:19;:61;;-1:-1:-1;;;;;14218:14:0;;;;;;:9;:14;;;;;;14198:35;;:15;;:19;:35::i;:::-;14172:61;;;14194:1;14165:68;14082:159;-1:-1:-1;;14082:159:0:o;15352:201::-;15464:7;15496:49;15511:3;15516:15;15533:11;;15496:14;:49::i;:::-;15489:56;15352:201;-1:-1:-1;;;15352:201:0:o;8755:140::-;8668:6;;-1:-1:-1;;;;;8668:6:0;7902:10;8668:22;8660:67;;;;-1:-1:-1;;;8660:67:0;;;;;;;:::i;:::-;8854:1:::1;8838:6:::0;;8817:40:::1;::::0;-1:-1:-1;;;;;8838:6:0;;::::1;::::0;8817:40:::1;::::0;8854:1;;8817:40:::1;8885:1;8868:19:::0;;-1:-1:-1;;;;;;8868:19:0::1;::::0;;8755:140::o;13474:354::-;-1:-1:-1;;;;;13614:14:0;;13540:7;13614:14;;;:9;:14;;;;;;13540:7;;13584:45;;13597:15;;13584:12;:45::i;:::-;13560:69;;13640:21;13664:99;13682:13;;13726:6;13710:13;:22;:42;;13739:13;13664:3;:99::i;13710:42::-;13735:1;13664:3;:99::i;:::-;-1:-1:-1;;;;;13809:10:0;;;;;;:5;:10;;;;;;13640:123;;-1:-1:-1;13781:39:0;;13640:123;;13781:12;:39::i;:::-;13774:46;13474:354;-1:-1:-1;;;;13474:354:0:o;12349:189::-;12405:7;12425:13;12441:15;12452:3;12441:10;:15::i;:::-;12425:31;;12467:13;12483:24;12501:5;12483:17;:24::i;14249:128::-;14354:14;;-1:-1:-1;;;;;14335:14:0;;14308:7;14335:14;;;:9;:14;;;;;;14308:7;;14335:34;;:14;:18;:34::i;15189:155::-;15252:7;15279:57;15294:5;15301:11;;15314:21;15279:14;:57::i;8903:109::-;8668:6;;-1:-1:-1;;;;;8668:6:0;7902:10;8668:22;8660:67;;;;-1:-1:-1;;;8660:67:0;;;;;;;:::i;:::-;8976:28:::1;8995:8;8976:18;:28::i;:::-;8903:109:::0;:::o;13120:155::-;8668:6;;-1:-1:-1;;;;;8668:6:0;7902:10;8668:22;8660:67;;;;-1:-1:-1;;;8660:67:0;;;;;;;:::i;:::-;13184:11:::1;::::0;:16;13176:25:::1;;;::::0;::::1;;13226:4;13212:18:::0;;-1:-1:-1;;;;13212:18:0::1;-1:-1:-1::0;;;13212:18:0::1;::::0;;13255:12:::1;13241:11;:26:::0;13120:155::o;3092:98::-;3150:7;3177:5;3181:1;3177;:5;:::i;4229:98::-;4287:7;4314:5;4318:1;4314;:5;:::i;3473:98::-;3531:7;3558:5;3562:1;3558;:5;:::i;3830:98::-;3888:7;3915:5;3919:1;3915;:5;:::i;15561:369::-;15625:14;15642:5;:30;;15662:10;;15642:30;;;15650:9;;15642:30;15625:47;;15683:24;15710:84;15737:28;15750:6;15758;15737:12;:28::i;15710:84::-;15683:111;;15805:18;15826:5;:39;;15851:14;;-1:-1:-1;;;;;15851:14:0;15826:39;;;15834:14;;-1:-1:-1;;;;;15834:14:0;15826:39;15876:46;;15805:60;;-1:-1:-1;;;;;;15876:28:0;;;:46;;;;;15905:16;;15876:46;;;;15905:16;15876:28;:46;;;;;;;;;;;;;;;;;;;;;15614:316;;;15561:369;;:::o;14585:596::-;14714:7;14754:419;14785:26;14798:3;;14803:7;14785:12;:26::i;:::-;14830:328;14865:4;;14892:247;14931:152;14974:25;14987:3;;14992:6;14974:12;:25::i;:::-;15030:26;15043:4;;15049:6;15030:12;:26::i;14931:152::-;15110:6;14892:12;:247::i;14830:328::-;14754:12;:419::i;15938:105::-;15995:7;16026:1;16022;:5;:13;;16034:1;16022:13;;;-1:-1:-1;16030:1:0;;15938:105;-1:-1:-1;15938:105:0:o;9020:266::-;-1:-1:-1;;;;;9108:22:0;;9086:110;;;;-1:-1:-1;;;9086:110:0;;2843:2:1;9086:110:0;;;2825:21:1;2882:2;2862:18;;;2855:30;2921:34;2901:18;;;2894:62;-1:-1:-1;;;2972:18:1;;;2965:36;3018:19;;9086:110:0;2641:402:1;9086:110:0;9233:6;;;9212:38;;-1:-1:-1;;;;;9212:38:0;;;;9233:6;;;9212:38;;;9261:6;:17;;-1:-1:-1;;;;;;9261:17:0;-1:-1:-1;;;;;9261:17:0;;;;;;;;;;9020:266::o;196:286:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;350:23;;-1:-1:-1;;;;;402:31:1;;392:42;;382:70;;448:1;445;438:12;487:248;555:6;563;616:2;604:9;595:7;591:23;587:32;584:52;;;632:1;629;622:12;584:52;-1:-1:-1;;655:23:1;;;725:2;710:18;;;697:32;;-1:-1:-1;487:248:1:o;948:180::-;1007:6;1060:2;1048:9;1039:7;1035:23;1031:32;1028:52;;;1076:1;1073;1066:12;1028:52;-1:-1:-1;1099:23:1;;948:180;-1:-1:-1;948:180:1:o;1490:356::-;1692:2;1674:21;;;1711:18;;;1704:30;1770:34;1765:2;1750:18;;1743:62;1837:2;1822:18;;1490:356::o;1851:127::-;1912:10;1907:3;1903:20;1900:1;1893:31;1943:4;1940:1;1933:15;1967:4;1964:1;1957:15;1983:128;2023:3;2054:1;2050:6;2047:1;2044:13;2041:39;;;2060:18;;:::i;:::-;-1:-1:-1;2096:9:1;;1983:128::o;2116:217::-;2156:1;2182;2172:132;;2226:10;2221:3;2217:20;2214:1;2207:31;2261:4;2258:1;2251:15;2289:4;2286:1;2279:15;2172:132;-1:-1:-1;2318:9:1;;2116:217::o;2338:125::-;2378:4;2406:1;2403;2400:8;2397:34;;;2411:18;;:::i;:::-;-1:-1:-1;2448:9:1;;2338:125::o;2468:168::-;2508:7;2574:1;2570;2566:6;2562:14;2559:1;2556:21;2551:1;2544:9;2537:17;2533:45;2530:71;;;2581:18;;:::i;:::-;-1:-1:-1;2621:9:1;;2468:168::o
Swarm Source
ipfs://b564f0d284f16190b461d30aab135ba234fc7eee7da9e44466702b46cd5df270
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.