Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
2,000,000 xETHG
Holders
1
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,000,000 xETHGValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
XplosiveEthereum
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
petersburg EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED /** * * ██╗ ██╗███████╗████████╗██╗ ██╗ * ╚██╗██╔╝██╔════╝╚══██╔══╝██║ ██║ * ╚███╔╝ █████╗ ██║ ███████║ * ██╔██╗ ██╔══╝ ██║ ██╔══██║ * ██╔╝ ██╗███████╗ ██║ ██║ ██║ * ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ * * An Ethereum pegged * base-down, burn-up currency. * * https://xEth.finance * * **/ /// SWC-103: Floating Pragma pragma solidity 0.6.12; import "./XplosiveSafeMath.sol"; import "@openzeppelin/contracts/utils/SafeCast.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import '@openzeppelin/contracts/utils/Pausable.sol'; import './XplosiveRebaser.sol'; import "./ChainlinkAggregatorV3Interface.sol"; contract XplosiveEthereum is Ownable, Pausable, Rebasable { using XplosiveSafeMath for uint256; using SafeCast for int256; using SafeCast for uint8; event Transfer(address indexed from, address indexed to, uint amount); event Approval(address indexed owner, address indexed spender, uint amount); event Rebase(uint256 indexed epoch, uint256 scalingFactor); event NewRebaser(address oldRebaser, address newRebaser); event WhitelistFrom(address _addr, bool _whitelisted); event WhitelistTo(address _addr, bool _whitelisted); event WhitelistRebase(address _addr, bool _whitelisted); string public name = "Xplosive EthereumG"; string public symbol = "xETHG"; uint8 public decimals = 18; AggregatorV3Interface internal priceFeed; // address public rebaser; address public rewardAddress; /** * @notice Internal decimals used to handle scaling factor */ uint256 public constant internalDecimals = 10**24; /** * @notice Used for percentage maths */ uint256 public constant BASE = 10**18; /** * @notice Scaling factor that adjusts everyone's balances */ uint256 public xETHScalingFactor = BASE; mapping (address => uint256) internal _xETHBalances; mapping (address => mapping (address => uint256)) internal _allowedFragments; mapping(address => bool) public whitelistFrom; mapping(address => bool) public whitelistTo; mapping(address => bool) public whitelistRebase; address public noRebaseAddress; uint256 initSupply = 0; uint256 _totalSupply = 0; uint16 public SELL_FEE = 33; uint16 public TX_FEE = 50; constructor( uint256 initialSupply, address initialSupplyAddr ) public Ownable() Pausable() Rebasable() { priceFeed = AggregatorV3Interface(address(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419)); _mint(initialSupplyAddr,initialSupply); } function totalSupply() public view returns (uint256) { return _totalSupply; } function getSellBurn(uint256 value) public view whenNotPaused returns (uint256) { uint256 nPercent = value.divRound(SELL_FEE); return nPercent; } function getTxBurn(uint256 value) public view whenNotPaused returns (uint256) { uint256 nPercent = value.divRound(TX_FEE); return nPercent; } function _isWhitelisted(address _from, address _to) internal view returns (bool) { return whitelistFrom[_from]||whitelistTo[_to]; } function _isRebaseWhitelisted(address _addr) internal view returns (bool) { return whitelistRebase[_addr]; } function setWhitelistedTo(address _addr, bool _whitelisted) external onlyOwner { emit WhitelistTo(_addr, _whitelisted); whitelistTo[_addr] = _whitelisted; } function setTxFee(uint16 fee) external onlyRebaser whenNotPaused { TX_FEE = fee; } function setSellFee(uint16 fee) external onlyRebaser whenNotPaused { SELL_FEE = fee; } function setWhitelistedFrom(address _addr, bool _whitelisted) external onlyOwner { emit WhitelistFrom(_addr, _whitelisted); whitelistFrom[_addr] = _whitelisted; } function setWhitelistedRebase(address _addr, bool _whitelisted) external onlyOwner { emit WhitelistRebase(_addr, _whitelisted); whitelistRebase[_addr] = _whitelisted; } function setNoRebaseAddress(address _addr) external onlyOwner { noRebaseAddress = _addr; } /** * @notice Computes the current max scaling factor */ function maxScalingFactor() external view whenNotPaused returns (uint256) { return _maxScalingFactor(); } function _maxScalingFactor() internal view returns (uint256) { // scaling factor can only go up to 2**256-1 = initSupply * xETHScalingFactor // this is used to check if xETHScalingFactor will be too high to compute balances when rebasing. return uint256(-1) / initSupply; } function _mint(address to, uint256 amount) internal { // increase totalSupply _totalSupply = _totalSupply.add(amount); // get underlying value uint256 xETHValue = amount.mul(internalDecimals).div(xETHScalingFactor); // increase initSupply initSupply = initSupply.add(xETHValue); // make sure the mint didnt push maxScalingFactor too low require(xETHScalingFactor <= _maxScalingFactor(), "max scaling factor too low"); // add balance _xETHBalances[to] = _xETHBalances[to].add(xETHValue); emit Transfer(address(0),to,amount); } /* - ERC20 functionality - */ /** * @dev Transfer tokens to a specified address. * @param to The address to transfer to. * @param value The amount to be transferred. * @return True on success, false otherwise. */ function transfer(address to, uint256 value) external whenNotPaused returns (bool) { // underlying balance is stored in xETH, so divide by current scaling factor // note, this means as scaling factor grows, dust will be untransferrable. // minimum transfer value == xETHScalingFactor / 1e24; // get amount in underlying //from noRebaseWallet if(_isRebaseWhitelisted(msg.sender)) { uint256 noReValue = value.mul(internalDecimals).div(BASE); uint256 noReNextValue = noReValue.mul(BASE).div(xETHScalingFactor); _xETHBalances[msg.sender] = _xETHBalances[msg.sender].sub(noReValue); //value==underlying _xETHBalances[to] = _xETHBalances[to].add(noReNextValue); emit Transfer(msg.sender, to, value); } else if(_isRebaseWhitelisted(to)) { uint256 fee = getSellBurn(value); uint256 tokensToBurn = fee/2; uint256 tokensForRewards = fee-tokensToBurn; uint256 tokensToTransfer = value-fee; uint256 xETHValue = value.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHValueKeep = tokensToTransfer.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHValueReward = tokensForRewards.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHNextValue = xETHValueKeep.mul(xETHScalingFactor).div(BASE); _totalSupply = _totalSupply-fee; _xETHBalances[address(0)] = _xETHBalances[address(0)].add(fee/2); _xETHBalances[msg.sender] = _xETHBalances[msg.sender].sub(xETHValue); _xETHBalances[to] = _xETHBalances[to].add(xETHNextValue); _xETHBalances[rewardAddress] = _xETHBalances[rewardAddress].add(xETHValueReward); emit Transfer(msg.sender, to, tokensToTransfer); emit Transfer(msg.sender, address(0), tokensToBurn); emit Transfer(msg.sender, rewardAddress, tokensForRewards); } else { if(!_isWhitelisted(msg.sender, to)) { uint256 fee = getTxBurn(value); uint256 tokensToBurn = fee/2; uint256 tokensForRewards = fee-tokensToBurn; uint256 tokensToTransfer = value-fee; uint256 xETHValue = value.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHValueKeep = tokensToTransfer.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHValueReward = tokensForRewards.mul(internalDecimals).div(xETHScalingFactor); _totalSupply = _totalSupply-fee; _xETHBalances[address(0)] = _xETHBalances[address(0)].add(fee/2); _xETHBalances[msg.sender] = _xETHBalances[msg.sender].sub(xETHValue); _xETHBalances[to] = _xETHBalances[to].add(xETHValueKeep); _xETHBalances[rewardAddress] = _xETHBalances[rewardAddress].add(xETHValueReward); emit Transfer(msg.sender, to, tokensToTransfer); emit Transfer(msg.sender, address(0), tokensToBurn); emit Transfer(msg.sender, rewardAddress, tokensForRewards); } else { uint256 xETHValue = value.mul(internalDecimals).div(xETHScalingFactor); _xETHBalances[msg.sender] = _xETHBalances[msg.sender].sub(xETHValue); _xETHBalances[to] = _xETHBalances[to].add(xETHValue); emit Transfer(msg.sender, to, xETHValue); } } return true; } /** * @dev Transfer tokens from one address to another. * @param from The address you want to send tokens from. * @param to The address you want to transfer to. * @param value The amount of tokens to be transferred. */ function transferFrom(address from, address to, uint256 value) external whenNotPaused returns (bool) { // decrease allowance _allowedFragments[from][msg.sender] = _allowedFragments[from][msg.sender].sub(value); if(_isRebaseWhitelisted(from)) { uint256 noReValue = value.mul(internalDecimals).div(BASE); uint256 noReNextValue = noReValue.mul(BASE).div(xETHScalingFactor); _xETHBalances[from] = _xETHBalances[from].sub(noReValue); //value==underlying _xETHBalances[to] = _xETHBalances[to].add(noReNextValue); emit Transfer(from, to, value); } else if(_isRebaseWhitelisted(to)) { uint256 fee = getSellBurn(value); uint256 tokensForRewards = fee-(fee/2); uint256 tokensToTransfer = value-fee; uint256 xETHValue = value.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHValueKeep = tokensToTransfer.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHValueReward = tokensForRewards.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHNextValue = xETHValueKeep.mul(xETHScalingFactor).div(BASE); _totalSupply = _totalSupply-fee; _xETHBalances[from] = _xETHBalances[from].sub(xETHValue); _xETHBalances[to] = _xETHBalances[to].add(xETHNextValue); _xETHBalances[rewardAddress] = _xETHBalances[rewardAddress].add(xETHValueReward); _xETHBalances[address(0)] = _xETHBalances[address(0)].add(fee/2); emit Transfer(from, to, tokensToTransfer); emit Transfer(from, address(0), fee/2); emit Transfer(from, rewardAddress, tokensForRewards); } else { if(!_isWhitelisted(from, to)) { uint256 fee = getTxBurn(value); uint256 tokensToBurn = fee/2; uint256 tokensForRewards = fee-tokensToBurn; uint256 tokensToTransfer = value-fee; uint256 xETHValue = value.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHValueKeep = tokensToTransfer.mul(internalDecimals).div(xETHScalingFactor); uint256 xETHValueReward = tokensForRewards.mul(internalDecimals).div(xETHScalingFactor); _totalSupply = _totalSupply-fee; _xETHBalances[address(0)] = _xETHBalances[address(0)].add(fee/2); _xETHBalances[from] = _xETHBalances[from].sub(xETHValue); _xETHBalances[to] = _xETHBalances[to].add(xETHValueKeep); _xETHBalances[rewardAddress] = _xETHBalances[rewardAddress].add(xETHValueReward); emit Transfer(from, to, tokensToTransfer); emit Transfer(from, address(0), tokensToBurn); emit Transfer(from, rewardAddress, tokensForRewards); } else { uint256 xETHValue = value.mul(internalDecimals).div(xETHScalingFactor); _xETHBalances[from] = _xETHBalances[from].sub(xETHValue); _xETHBalances[to] = _xETHBalances[to].add(xETHValue); emit Transfer(from, to, xETHValue); } } return true; } /** * @param who The address to query. * @return The balance of the specified address. */ function balanceOf(address who) external view returns (uint256) { if(_isRebaseWhitelisted(who)) { return _xETHBalances[who].mul(BASE).div(internalDecimals); } else { return _xETHBalances[who].mul(xETHScalingFactor).div(internalDecimals); } } /** @notice Currently returns the internal storage amount * @param who The address to query. * @return The underlying balance of the specified address. */ function balanceOfUnderlying(address who) external view returns (uint256) { return _xETHBalances[who]; } /** * @dev Function to check the amount of tokens that an owner has allowed to a spender. * @param owner_ The address which owns the funds. * @param spender The address which will spend the funds. * @return The number of tokens still available for the spender. */ function allowance(address owner_, address spender) external view whenNotPaused returns (uint256) { return _allowedFragments[owner_][spender]; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of * msg.sender. This method is included for ERC20 compatibility. * increaseAllowance and decreaseAllowance should be used instead. * Changing an allowance with this method brings the risk that someone may transfer both * the old and the new allowance - if they are both greater than zero - if a transfer * transaction is mined before the later approve() call is mined. * * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) external whenNotPaused returns (bool) { _allowedFragments[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /** * @dev Increase the amount of tokens that an owner has allowed to a spender. * This method should be used instead of approve() to avoid the double approval vulnerability * described above. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance(address spender, uint256 addedValue) external whenNotPaused returns (bool) { _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][spender].add(addedValue); emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]); return true; } /** * @dev Decrease the amount of tokens that an owner has allowed to a spender. * * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance(address spender, uint256 subtractedValue) external whenNotPaused returns (bool) { uint256 oldValue = _allowedFragments[msg.sender][spender]; if (subtractedValue >= oldValue) { _allowedFragments[msg.sender][spender] = 0; } else { _allowedFragments[msg.sender][spender] = oldValue.sub(subtractedValue); } emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]); return true; } function _setRewardAddress(address rewards_) external onlyOwner { rewardAddress = rewards_; } function clRebase() external onlyRebaser whenNotPaused returns (uint256) { uint256 clEthValue = this.getChainlinkEthDollarValue(); return this.rebase(now, clEthValue, true); } function clRebaseWtihMultiplier(uint256 _multiplier) external onlyRebaser whenNotPaused returns (uint256) { uint256 clEthValue = this.getChainlinkEthDollarValue(); return this.rebase(now, clEthValue.mul(_multiplier), true); } function getChainlinkEthDollarValue() external view returns (uint256) { ( uint80 roundId, int price, uint startedAt, uint timeStamp, uint80 answeredInRound ) = priceFeed.latestRoundData(); return uint256(10e18).divRound(price.toUint256()).mul(10e6); } function getChainlinkEthDollarValueWithMultiplier(uint256 _multiplier) external view returns (uint256) { uint256 clEthValue = this.getChainlinkEthDollarValue(); return clEthValue.mul(_multiplier); } /** * @notice Initiates a new rebase operation, provided the minimum time period has elapsed. * * @dev The supply adjustment equals (totalSupply * DeviationFromTargetRate) / rebaseLag * Where DeviationFromTargetRate is (MarketOracleRate - targetRate) / targetRate * and targetRate is CpiOracleRate / baseCpi */ function rebase(uint256 epoch, uint256 indexDelta, bool positive) external onlyRebaser whenNotPaused returns (uint256) { if (indexDelta == 0 || !positive) { emit Rebase(epoch, xETHScalingFactor); return _totalSupply; } uint256 newScalingFactor = xETHScalingFactor.mul(BASE.add(indexDelta)).div(BASE); if (newScalingFactor < _maxScalingFactor()) { xETHScalingFactor = newScalingFactor; } else { xETHScalingFactor = _maxScalingFactor(); } _totalSupply = ((initSupply.sub(_xETHBalances[address(0)]).sub(_xETHBalances[noRebaseAddress])) .mul(xETHScalingFactor).div(internalDecimals)) .add(_xETHBalances[noRebaseAddress].mul(BASE).div(internalDecimals)); emit Rebase(epoch, xETHScalingFactor); return _totalSupply; } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.6.12; interface AggregatorV3Interface { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); // getRoundData and latestRoundData should both raise "No data present" // if they do not have data to report, instead of returning unset values // which could be misinterpreted as actual reported values. function getRoundData(uint80 _roundId) external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.6.12; import "@openzeppelin/contracts/access/Ownable.sol"; contract Rebasable is Ownable { address private _rebaser; event TransferredRebasership(address indexed previousRebaser, address indexed newRebaser); constructor() internal { address msgSender = _msgSender(); _rebaser = msgSender; emit TransferredRebasership(address(0), msgSender); } function Rebaser() public view returns(address) { return _rebaser; } modifier onlyRebaser() { require(_rebaser == _msgSender(), "caller is not rebaser"); _; } function transferRebasership(address newRebaser) public virtual onlyOwner { require(newRebaser != address(0), "new rebaser is address zero"); emit TransferredRebasership(_rebaser, newRebaser); _rebaser = newRebaser; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library XplosiveSafeMath { /** * @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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function ceil(uint256 a, uint256 m) internal pure returns (uint256) { uint256 c = add(a,m); uint256 d = sub(c,1); return mul(div(d,m),m); } function divRound(uint256 x, uint256 y) internal pure returns (uint256) { require(y != 0, "Div by zero"); uint256 r = x / y; if (x % y != 0) { r = r + 1; } return r; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.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 GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import "../GSN/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. */ 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 () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import "../GSN/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor () internal { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow * checks. * * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can * easily result in undesired exploitation or bugs, since developers usually * assume that overflows raise errors. `SafeCast` restores this intuition by * reverting the transaction when such an operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. * * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing * all math on `uint256` and `int256` and then downcasting. */ library SafeCast { /** * @dev Returns the downcasted uint128 from uint256, reverting on * overflow (when the input is greater than largest uint128). * * Counterpart to Solidity's `uint128` operator. * * Requirements: * * - input must fit into 128 bits */ function toUint128(uint256 value) internal pure returns (uint128) { require(value < 2**128, "SafeCast: value doesn\'t fit in 128 bits"); return uint128(value); } /** * @dev Returns the downcasted uint64 from uint256, reverting on * overflow (when the input is greater than largest uint64). * * Counterpart to Solidity's `uint64` operator. * * Requirements: * * - input must fit into 64 bits */ function toUint64(uint256 value) internal pure returns (uint64) { require(value < 2**64, "SafeCast: value doesn\'t fit in 64 bits"); return uint64(value); } /** * @dev Returns the downcasted uint32 from uint256, reverting on * overflow (when the input is greater than largest uint32). * * Counterpart to Solidity's `uint32` operator. * * Requirements: * * - input must fit into 32 bits */ function toUint32(uint256 value) internal pure returns (uint32) { require(value < 2**32, "SafeCast: value doesn\'t fit in 32 bits"); return uint32(value); } /** * @dev Returns the downcasted uint16 from uint256, reverting on * overflow (when the input is greater than largest uint16). * * Counterpart to Solidity's `uint16` operator. * * Requirements: * * - input must fit into 16 bits */ function toUint16(uint256 value) internal pure returns (uint16) { require(value < 2**16, "SafeCast: value doesn\'t fit in 16 bits"); return uint16(value); } /** * @dev Returns the downcasted uint8 from uint256, reverting on * overflow (when the input is greater than largest uint8). * * Counterpart to Solidity's `uint8` operator. * * Requirements: * * - input must fit into 8 bits. */ function toUint8(uint256 value) internal pure returns (uint8) { require(value < 2**8, "SafeCast: value doesn\'t fit in 8 bits"); return uint8(value); } /** * @dev Converts a signed int256 into an unsigned uint256. * * Requirements: * * - input must be greater than or equal to 0. */ function toUint256(int256 value) internal pure returns (uint256) { require(value >= 0, "SafeCast: value must be positive"); return uint256(value); } /** * @dev Returns the downcasted int128 from int256, reverting on * overflow (when the input is less than smallest int128 or * greater than largest int128). * * Counterpart to Solidity's `int128` operator. * * Requirements: * * - input must fit into 128 bits * * _Available since v3.1._ */ function toInt128(int256 value) internal pure returns (int128) { require(value >= -2**127 && value < 2**127, "SafeCast: value doesn\'t fit in 128 bits"); return int128(value); } /** * @dev Returns the downcasted int64 from int256, reverting on * overflow (when the input is less than smallest int64 or * greater than largest int64). * * Counterpart to Solidity's `int64` operator. * * Requirements: * * - input must fit into 64 bits * * _Available since v3.1._ */ function toInt64(int256 value) internal pure returns (int64) { require(value >= -2**63 && value < 2**63, "SafeCast: value doesn\'t fit in 64 bits"); return int64(value); } /** * @dev Returns the downcasted int32 from int256, reverting on * overflow (when the input is less than smallest int32 or * greater than largest int32). * * Counterpart to Solidity's `int32` operator. * * Requirements: * * - input must fit into 32 bits * * _Available since v3.1._ */ function toInt32(int256 value) internal pure returns (int32) { require(value >= -2**31 && value < 2**31, "SafeCast: value doesn\'t fit in 32 bits"); return int32(value); } /** * @dev Returns the downcasted int16 from int256, reverting on * overflow (when the input is less than smallest int16 or * greater than largest int16). * * Counterpart to Solidity's `int16` operator. * * Requirements: * * - input must fit into 16 bits * * _Available since v3.1._ */ function toInt16(int256 value) internal pure returns (int16) { require(value >= -2**15 && value < 2**15, "SafeCast: value doesn\'t fit in 16 bits"); return int16(value); } /** * @dev Returns the downcasted int8 from int256, reverting on * overflow (when the input is less than smallest int8 or * greater than largest int8). * * Counterpart to Solidity's `int8` operator. * * Requirements: * * - input must fit into 8 bits. * * _Available since v3.1._ */ function toInt8(int256 value) internal pure returns (int8) { require(value >= -2**7 && value < 2**7, "SafeCast: value doesn\'t fit in 8 bits"); return int8(value); } /** * @dev Converts an unsigned uint256 into a signed int256. * * Requirements: * * - input must be less than or equal to maxInt256. */ function toInt256(uint256 value) internal pure returns (int256) { require(value < 2**255, "SafeCast: value doesn't fit in an int256"); return int256(value); } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "petersburg", "libraries": { "": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"initialSupplyAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRebaser","type":"address"},{"indexed":false,"internalType":"address","name":"newRebaser","type":"address"}],"name":"NewRebaser","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":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"scalingFactor","type":"uint256"}],"name":"Rebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousRebaser","type":"address"},{"indexed":true,"internalType":"address","name":"newRebaser","type":"address"}],"name":"TransferredRebasership","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"inputs":[],"name":"BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Rebaser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELL_FEE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TX_FEE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewards_","type":"address"}],"name":"_setRewardAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"clRebaseWtihMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getChainlinkEthDollarValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"getChainlinkEthDollarValueWithMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"getSellBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"getTxBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"internalDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxScalingFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noRebaseAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"uint256","name":"indexDelta","type":"uint256"},{"internalType":"bool","name":"positive","type":"bool"}],"name":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setNoRebaseAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"fee","type":"uint16"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"fee","type":"uint16"}],"name":"setTxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRebaser","type":"address"}],"name":"transferRebasership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xETHScalingFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c0604052601260808190527f58706c6f7369766520457468657265756d47000000000000000000000000000060a0908152620000409160029190620005a1565b506040805180820190915260058082527f784554484700000000000000000000000000000000000000000000000000000060209092019182526200008791600391620005a1565b5060048054601260ff19909116179055670de0b6b3a76400006006556000600d819055600e55600f8054602161ffff199091161763ffff0000191662320000179055348015620000d657600080fd5b50604051620034583803806200345883398181016040526040811015620000fc57600080fd5b508051602090910151600062000111620001fc565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b1916815562000172620001fc565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907fe8a195812977ad9c31215cd36cddec4a0a2cef58eb984d1169225de6e823ff43908290a35060048054610100600160a81b031916745f4ec3df9cbd43714fe2740f5e3616155c5b841900179055620001f4818362000200565b50506200063d565b3390565b6200021c81600e546200038a60201b6200299c1790919060201c565b600e819055506000620002636006546200024f69d3c21bcecceda1000000856200040860201b620029f61790919060201c565b6200048060201b62002a4f1790919060201c565b90506200028181600d546200038a60201b6200299c1790919060201c565b600d556200028e620004ca565b6006541115620002ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d6178207363616c696e6720666163746f7220746f6f206c6f77000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260076020908152604090912054620003319183906200299c6200038a821b17901c565b6001600160a01b03841660008181526007602090815260408083209490945583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3505050565b600082820183811015620003ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082620004195750600062000402565b828202828482816200042757fe5b0414620003ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620034376021913960400191505060405180910390fd5b6000620003ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004e060201b60201c565b6000600d5460001981620004da57fe5b04905090565b600081836200058a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200054e57818101518382015260200162000534565b50505050905090810190601f1680156200057c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200059757fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005e457805160ff191683800117855562000614565b8280016001018555821562000614579182015b8281111562000614578251825591602001919060010190620005f7565b506200062292915062000626565b5090565b5b8082111562000622576000815560010162000627565b612dea806200064d6000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c8063715018a611610151578063b72bb3d5116100c3578063de52014b11610087578063de52014b1461070e578063e064648a14610716578063ec342ad014610737578063f2fde38b1461073f578063fcdc7b1d14610765578063ff12bbf41461078b57610269565b8063b72bb3d514610667578063bf79cb0d1461066f578063d24ff1fa1461069d578063dd62ed3e146106ba578063de2f7160146106e857610269565b80638da5cb5b116101155780638da5cb5b146105b457806395d89b41146105bc578063a457c2d7146105c4578063a486309d146105f0578063a817a0e51461061e578063a9059cbb1461063b57610269565b8063715018a6146105385780637af548c1146105405780637dbaed881461056b57806389687116146105885780638cf57cb9146105ac57610269565b806339509351116101ea5780634773a6a9116101ae5780634773a6a9146104d35780635c975abb146104f257806364978bf3146104fa57806364dd48f5146105025780636f97857b1461050a57806370a082311461051257610269565b806339509351146104145780633986829d146104405780633af9e669146104615780633d1c28331461048757806343684b21146104ad57610269565b806318160ddd1161023157806318160ddd1461038857806323b872dd146103905780632411e717146103c65780632a8000a6146103ee578063313ce567146103f657610269565b806304cf86821461026e57806306fdde031461029d578063095ea7b31461031a57806311d3e6c41461035a57806316b627d114610362575b600080fd5b61028b6004803603602081101561028457600080fd5b50356107b9565b60408051918252519081900360200190f35b6102a561082a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102df5781810151838201526020016102c7565b50505050905090810190601f16801561030c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103466004803603604081101561033057600080fd5b506001600160a01b0381351690602001356108b5565b604080519115158252519081900360200190f35b61028b610970565b6103466004803603602081101561037857600080fd5b50356001600160a01b03166109d0565b61028b6109e5565b610346600480360360608110156103a657600080fd5b506001600160a01b038135811691602081013590911690604001356109eb565b6103ec600480360360208110156103dc57600080fd5b50356001600160a01b0316611095565b005b61028b6111a4565b6103fe61127c565b6040805160ff9092168252519081900360200190f35b6103466004803603604081101561042a57600080fd5b506001600160a01b038135169060200135611285565b6103ec6004803603602081101561045657600080fd5b503561ffff1661136b565b61028b6004803603602081101561047757600080fd5b50356001600160a01b031661143f565b6103ec6004803603602081101561049d57600080fd5b50356001600160a01b031661145a565b610346600480360360208110156104c357600080fd5b50356001600160a01b03166114d4565b6104db6114e9565b6040805161ffff9092168252519081900360200190f35b6103466114f3565b61028b611503565b61028b6116a3565b61028b6116b1565b61028b6004803603602081101561052857600080fd5b50356001600160a01b03166116b7565b6103ec61173e565b61028b6004803603606081101561055657600080fd5b508035906020810135906040013515156117e0565b61028b6004803603602081101561058157600080fd5b5035611a1e565b610590611a8c565b604080516001600160a01b039092168252519081900360200190f35b610590611a9b565b610590611aaa565b6102a5611ab9565b610346600480360360408110156105da57600080fd5b506001600160a01b038135169060200135611b14565b6103ec6004803603604081101561060657600080fd5b506001600160a01b0381351690602001351515611c50565b61028b6004803603602081101561063457600080fd5b5035611d18565b6103466004803603604081101561065157600080fd5b506001600160a01b038135169060200135611ec3565b61059061249b565b6103ec6004803603604081101561068557600080fd5b506001600160a01b03813516906020013515156124aa565b61028b600480360360208110156106b357600080fd5b5035612572565b61028b600480360360408110156106d057600080fd5b506001600160a01b03813581169160200135166125e6565b610346600480360360208110156106fe57600080fd5b50356001600160a01b0316612665565b6104db61267a565b6103ec6004803603602081101561072c57600080fd5b503561ffff1661268a565b61028b612756565b6103ec6004803603602081101561075557600080fd5b50356001600160a01b0316612762565b6103ec6004803603602081101561077b57600080fd5b50356001600160a01b031661285a565b6103ec600480360360408110156107a157600080fd5b506001600160a01b03813516906020013515156128d4565b60008054600160a01b900460ff161561080c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600f5460009061082190849061ffff16612a91565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156108ad5780601f10610882576101008083540402835291602001916108ad565b820191906000526020600020905b81548152906001019060200180831161089057829003601f168201915b505050505081565b60008054600160a01b900460ff1615610908576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360008181526008602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60008054600160a01b900460ff16156109c3576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6109cb612afa565b905090565b600a6020526000908152604090205460ff1681565b600e5490565b60008054600160a01b900460ff1615610a3e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001600160a01b0384166000908152600860209081526040808320338452909152902054610a6c9083612b0f565b6001600160a01b0385166000908152600860209081526040808320338452909152902055610a9984612b51565b15610b8c576000610ac6670de0b6b3a7640000610ac08569d3c21bcecceda10000006129f6565b90612a4f565b90506000610aeb600654610ac0670de0b6b3a7640000856129f690919063ffffffff16565b6001600160a01b038716600090815260076020526040902054909150610b119083612b0f565b6001600160a01b038088166000908152600760205260408082209390935590871681522054610b40908261299c565b6001600160a01b0380871660008181526007602090815260409182902094909455805188815290519193928a1692600080516020612d7583398151915292918290030190a3505061108a565b610b9583612b51565b15610dd9576000610ba5836107b9565b6006549091506002820482039082850390600090610bd190610ac08869d3c21bcecceda10000006129f6565b90506000610bf8600654610ac069d3c21bcecceda1000000866129f690919063ffffffff16565b90506000610c1f600654610ac069d3c21bcecceda1000000886129f690919063ffffffff16565b90506000610c44670de0b6b3a7640000610ac0600654866129f690919063ffffffff16565b600e805489900390556001600160a01b038c16600090815260076020526040902054909150610c739085612b0f565b6001600160a01b03808d1660009081526007602052604080822093909355908c1681522054610ca2908261299c565b6001600160a01b03808c166000908152600760205260408082209390935560055490911681522054610cd4908361299c565b6005546001600160a01b0316600090815260076020526040902055610d176002885b600080526007602052600080516020612d958339815191525491900461299c565b6000805260076020908152600080516020612d95833981519152919091556040805187815290516001600160a01b038d811693908f1692600080516020612d75833981519152929081900390910190a360006001600160a01b038c16600080516020612d7583398151915260028a60408051929091048252519081900360200190a36005546040805188815290516001600160a01b03928316928e1691600080516020612d75833981519152919081900360200190a35050505050505061108a565b610de38484612b6f565b610fd0576000610df283611a1e565b60065490915060028204908183039083860390600090610e2090610ac08969d3c21bcecceda10000006129f6565b90506000610e47600654610ac069d3c21bcecceda1000000866129f690919063ffffffff16565b90506000610e6e600654610ac069d3c21bcecceda1000000886129f690919063ffffffff16565b600e805489900390559050610e84600288610cf6565b6007602052600080516020612d95833981519152556001600160a01b038b1660009081526040902054610eb79084612b0f565b6001600160a01b03808d1660009081526007602052604080822093909355908c1681522054610ee6908361299c565b6001600160a01b03808c166000908152600760205260408082209390935560055490911681522054610f18908261299c565b6005546001600160a01b0390811660009081526007602090815260409182902093909355805187815290518d831693928f1692600080516020612d75833981519152928290030190a36040805187815290516000916001600160a01b038e1691600080516020612d758339815191529181900360200190a36005546040805187815290516001600160a01b03928316928e1691600080516020612d75833981519152919081900360200190a35050505050505061108a565b600654600090610fee90610ac08569d3c21bcecceda10000006129f6565b6001600160a01b0386166000908152600760205260409020549091506110149082612b0f565b6001600160a01b038087166000908152600760205260408082209390935590861681522054611043908261299c565b6001600160a01b038086166000818152600760209081526040918290209490945580518581529051919392891692600080516020612d7583398151915292918290030190a3505b5060015b9392505050565b61109d612bb2565b6000546001600160a01b039081169116146110ed576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b6001600160a01b038116611148576040805162461bcd60e51b815260206004820152601b60248201527f6e657720726562617365722069732061646472657373207a65726f0000000000604482015290519081900360640190fd5b6001546040516001600160a01b038084169216907fe8a195812977ad9c31215cd36cddec4a0a2cef58eb984d1169225de6e823ff4390600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080600080600460019054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156111fb57600080fd5b505afa15801561120f573d6000803e3d6000fd5b505050506040513d60a081101561122557600080fd5b508051602082015160408301516060840151608090940151929850909650945090925090506112726298968061126c61125d87612bb6565b678ac7230489e8000090612a91565b906129f6565b9550505050505090565b60045460ff1681565b60008054600160a01b900460ff16156112d8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360009081526008602090815260408083206001600160a01b0387168452909152902054611306908361299c565b3360008181526008602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b611373612bb2565b6001546001600160a01b039081169116146113cd576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff161561141f576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600f805461ffff909216620100000263ffff000019909216919091179055565b6001600160a01b031660009081526007602052604090205490565b611462612bb2565b6000546001600160a01b039081169116146114b2576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60096020526000908152604090205460ff1681565b600f5461ffff1681565b600054600160a01b900460ff1690565b600061150d612bb2565b6001546001600160a01b03908116911614611567576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff16156115b9576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000306001600160a01b0316632a8000a66040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f457600080fd5b505afa158015611608573d6000803e3d6000fd5b505050506040513d602081101561161e57600080fd5b505160408051637af548c160e01b8152426004820152602481018390526001604482015290519192503091637af548c1916064808201926020929091908290030181600087803b15801561167157600080fd5b505af1158015611685573d6000803e3d6000fd5b505050506040513d602081101561169b57600080fd5b505191505090565b69d3c21bcecceda100000081565b60065481565b60006116c282612b51565b15611709576001600160a01b0382166000908152600760205260409020546117029069d3c21bcecceda100000090610ac090670de0b6b3a76400006129f6565b9050610825565b6006546001600160a01b0383166000908152600760205260409020546117029169d3c21bcecceda100000091610ac0916129f6565b611746612bb2565b6000546001600160a01b03908116911614611796576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006117ea612bb2565b6001546001600160a01b03908116911614611844576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff1615611896576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b8215806118a1575081155b156118e757600654604080519182525185917f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511919081900360200190a250600e5461108e565b600061190b670de0b6b3a7640000610ac0611902828861299c565b600654906129f6565b9050611915612afa565b811015611926576006819055611932565b61192e612afa565b6006555b600c546001600160a01b03166000908152600760205260409020546119d7906119739069d3c21bcecceda100000090610ac090670de0b6b3a76400006129f6565b600654600c546001600160a01b0316600090815260076020526040812054908052600080516020612d9583398151915254600d546119d19369d3c21bcecceda100000093610ac093919261126c926119cb9190612b0f565b90612b0f565b9061299c565b600e55600654604080519182525186917f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511919081900360200190a25050600e549392505050565b60008054600160a01b900460ff1615611a71576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600f5460009061082190849062010000900461ffff16612a91565b6001546001600160a01b031690565b6005546001600160a01b031681565b6000546001600160a01b031690565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108ad5780601f10610882576101008083540402835291602001916108ad565b60008054600160a01b900460ff1615611b67576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360009081526008602090815260408083206001600160a01b0387168452909152902054808310611bbb573360009081526008602090815260408083206001600160a01b0388168452909152812055611bea565b611bc58184612b0f565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b611c58612bb2565b6000546001600160a01b03908116911614611ca8576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000611d22612bb2565b6001546001600160a01b03908116911614611d7c576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff1615611dce576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000306001600160a01b0316632a8000a66040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0957600080fd5b505afa158015611e1d573d6000803e3d6000fd5b505050506040513d6020811015611e3357600080fd5b5051905030637af548c142611e4884876129f6565b60016040518463ffffffff1660e01b81526004018084815260200183815260200182151581526020019350505050602060405180830381600087803b158015611e9057600080fd5b505af1158015611ea4573d6000803e3d6000fd5b505050506040513d6020811015611eba57600080fd5b50519392505050565b60008054600160a01b900460ff1615611f16576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b611f1f33612b51565b15611ffe576000611f46670de0b6b3a7640000610ac08569d3c21bcecceda10000006129f6565b90506000611f6b600654610ac0670de0b6b3a7640000856129f690919063ffffffff16565b33600090815260076020526040902054909150611f889083612b0f565b33600090815260076020526040808220929092556001600160a01b03871681522054611fb4908261299c565b6001600160a01b038616600081815260076020908152604091829020939093558051878152905191923392600080516020612d758339815191529281900390910190a35050612492565b61200783612b51565b15612205576000612017836107b9565b6006549091506002820490818303908386039060009061204590610ac08969d3c21bcecceda10000006129f6565b9050600061206c600654610ac069d3c21bcecceda1000000866129f690919063ffffffff16565b90506000612093600654610ac069d3c21bcecceda1000000886129f690919063ffffffff16565b905060006120b8670de0b6b3a7640000610ac0600654866129f690919063ffffffff16565b600e80548a9003905590506120ce600289610cf6565b6007602052600080516020612d958339815191525533600090815260409020546120f89085612b0f565b33600090815260076020526040808220929092556001600160a01b038d1681522054612124908261299c565b6001600160a01b03808d166000908152600760205260408082209390935560055490911681522054612156908361299c565b6005546001600160a01b039081166000908152600760209081526040918290209390935580518881529051918e16923392600080516020612d758339815191529281900390910190a36040805188815290516000913391600080516020612d758339815191529181900360200190a36005546040805188815290516001600160a01b03909216913391600080516020612d75833981519152919081900360200190a35050505050505050612492565b61220f3384612b6f565b6123e657600061221e83611a1e565b6006549091506002820490818303908386039060009061224c90610ac08969d3c21bcecceda10000006129f6565b90506000612273600654610ac069d3c21bcecceda1000000866129f690919063ffffffff16565b9050600061229a600654610ac069d3c21bcecceda1000000886129f690919063ffffffff16565b600e8054899003905590506122b0600288610cf6565b6007602052600080516020612d958339815191525533600090815260409020546122da9084612b0f565b33600090815260076020526040808220929092556001600160a01b038c1681522054612306908361299c565b6001600160a01b03808c166000908152600760205260408082209390935560055490911681522054612338908261299c565b6005546001600160a01b039081166000908152600760209081526040918290209390935580518781529051918d16923392600080516020612d758339815191529281900390910190a36040805187815290516000913391600080516020612d758339815191529181900360200190a36005546040805187815290516001600160a01b03909216913391600080516020612d75833981519152919081900360200190a350505050505050612492565b60065460009061240490610ac08569d3c21bcecceda10000006129f6565b336000908152600760205260409020549091506124219082612b0f565b33600090815260076020526040808220929092556001600160a01b0386168152205461244d908261299c565b6001600160a01b038516600081815260076020908152604091829020939093558051848152905191923392600080516020612d758339815191529281900390910190a3505b50600192915050565b600c546001600160a01b031681565b6124b2612bb2565b6000546001600160a01b03908116911614612502576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fcea48012bdb313072f54da033c891e9ad17d42f6fff9a5a1b74dfc865c37e051929181900390910190a16001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600080306001600160a01b0316632a8000a66040518163ffffffff1660e01b815260040160206040518083038186803b1580156125ae57600080fd5b505afa1580156125c2573d6000803e3d6000fd5b505050506040513d60208110156125d857600080fd5b5051905061082181846129f6565b60008054600160a01b900460ff1615612639576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b506001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b600b6020526000908152604090205460ff1681565b600f5462010000900461ffff1681565b612692612bb2565b6001546001600160a01b039081169116146126ec576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff161561273e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600f805461ffff191661ffff92909216919091179055565b670de0b6b3a764000081565b61276a612bb2565b6000546001600160a01b039081169116146127ba576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b6001600160a01b0381166127ff5760405162461bcd60e51b8152600401808060200182810382526026815260200180612d0e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b612862612bb2565b6000546001600160a01b039081169116146128b2576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6128dc612bb2565b6000546001600160a01b0390811691161461292c576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60008282018381101561108e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082612a055750600061096a565b82820282848281612a1257fe5b041461108e5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d346021913960400191505060405180910390fd5b600061108e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c11565b600081612ad3576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b6000828481612ade57fe5b049050828481612aea57fe5b061561108e576001019392505050565b6000600d5460001981612b0957fe5b04905090565b600061108e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cb3565b6001600160a01b03166000908152600b602052604090205460ff1690565b6001600160a01b03821660009081526009602052604081205460ff168061108e5750506001600160a01b03166000908152600a602052604090205460ff16919050565b3390565b600080821215612c0d576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b5090565b60008183612c9d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c62578181015183820152602001612c4a565b50505050905090810190601f168015612c8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612ca957fe5b0495945050505050565b60008184841115612d055760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612c62578181015183820152602001612c4a565b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6dfa26469706673582212203f8b594b6a56a1e0af35387439701ce2bea0f313a47e68fcc9578fc1f8760d3c64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7700000000000000000000000000000000000000000001a784379d99db42000000000000000000000000000000447eea0067a045ca363c7da86a1376e93f59bf8d
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102695760003560e01c8063715018a611610151578063b72bb3d5116100c3578063de52014b11610087578063de52014b1461070e578063e064648a14610716578063ec342ad014610737578063f2fde38b1461073f578063fcdc7b1d14610765578063ff12bbf41461078b57610269565b8063b72bb3d514610667578063bf79cb0d1461066f578063d24ff1fa1461069d578063dd62ed3e146106ba578063de2f7160146106e857610269565b80638da5cb5b116101155780638da5cb5b146105b457806395d89b41146105bc578063a457c2d7146105c4578063a486309d146105f0578063a817a0e51461061e578063a9059cbb1461063b57610269565b8063715018a6146105385780637af548c1146105405780637dbaed881461056b57806389687116146105885780638cf57cb9146105ac57610269565b806339509351116101ea5780634773a6a9116101ae5780634773a6a9146104d35780635c975abb146104f257806364978bf3146104fa57806364dd48f5146105025780636f97857b1461050a57806370a082311461051257610269565b806339509351146104145780633986829d146104405780633af9e669146104615780633d1c28331461048757806343684b21146104ad57610269565b806318160ddd1161023157806318160ddd1461038857806323b872dd146103905780632411e717146103c65780632a8000a6146103ee578063313ce567146103f657610269565b806304cf86821461026e57806306fdde031461029d578063095ea7b31461031a57806311d3e6c41461035a57806316b627d114610362575b600080fd5b61028b6004803603602081101561028457600080fd5b50356107b9565b60408051918252519081900360200190f35b6102a561082a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102df5781810151838201526020016102c7565b50505050905090810190601f16801561030c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103466004803603604081101561033057600080fd5b506001600160a01b0381351690602001356108b5565b604080519115158252519081900360200190f35b61028b610970565b6103466004803603602081101561037857600080fd5b50356001600160a01b03166109d0565b61028b6109e5565b610346600480360360608110156103a657600080fd5b506001600160a01b038135811691602081013590911690604001356109eb565b6103ec600480360360208110156103dc57600080fd5b50356001600160a01b0316611095565b005b61028b6111a4565b6103fe61127c565b6040805160ff9092168252519081900360200190f35b6103466004803603604081101561042a57600080fd5b506001600160a01b038135169060200135611285565b6103ec6004803603602081101561045657600080fd5b503561ffff1661136b565b61028b6004803603602081101561047757600080fd5b50356001600160a01b031661143f565b6103ec6004803603602081101561049d57600080fd5b50356001600160a01b031661145a565b610346600480360360208110156104c357600080fd5b50356001600160a01b03166114d4565b6104db6114e9565b6040805161ffff9092168252519081900360200190f35b6103466114f3565b61028b611503565b61028b6116a3565b61028b6116b1565b61028b6004803603602081101561052857600080fd5b50356001600160a01b03166116b7565b6103ec61173e565b61028b6004803603606081101561055657600080fd5b508035906020810135906040013515156117e0565b61028b6004803603602081101561058157600080fd5b5035611a1e565b610590611a8c565b604080516001600160a01b039092168252519081900360200190f35b610590611a9b565b610590611aaa565b6102a5611ab9565b610346600480360360408110156105da57600080fd5b506001600160a01b038135169060200135611b14565b6103ec6004803603604081101561060657600080fd5b506001600160a01b0381351690602001351515611c50565b61028b6004803603602081101561063457600080fd5b5035611d18565b6103466004803603604081101561065157600080fd5b506001600160a01b038135169060200135611ec3565b61059061249b565b6103ec6004803603604081101561068557600080fd5b506001600160a01b03813516906020013515156124aa565b61028b600480360360208110156106b357600080fd5b5035612572565b61028b600480360360408110156106d057600080fd5b506001600160a01b03813581169160200135166125e6565b610346600480360360208110156106fe57600080fd5b50356001600160a01b0316612665565b6104db61267a565b6103ec6004803603602081101561072c57600080fd5b503561ffff1661268a565b61028b612756565b6103ec6004803603602081101561075557600080fd5b50356001600160a01b0316612762565b6103ec6004803603602081101561077b57600080fd5b50356001600160a01b031661285a565b6103ec600480360360408110156107a157600080fd5b506001600160a01b03813516906020013515156128d4565b60008054600160a01b900460ff161561080c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600f5460009061082190849061ffff16612a91565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156108ad5780601f10610882576101008083540402835291602001916108ad565b820191906000526020600020905b81548152906001019060200180831161089057829003601f168201915b505050505081565b60008054600160a01b900460ff1615610908576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360008181526008602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60008054600160a01b900460ff16156109c3576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6109cb612afa565b905090565b600a6020526000908152604090205460ff1681565b600e5490565b60008054600160a01b900460ff1615610a3e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001600160a01b0384166000908152600860209081526040808320338452909152902054610a6c9083612b0f565b6001600160a01b0385166000908152600860209081526040808320338452909152902055610a9984612b51565b15610b8c576000610ac6670de0b6b3a7640000610ac08569d3c21bcecceda10000006129f6565b90612a4f565b90506000610aeb600654610ac0670de0b6b3a7640000856129f690919063ffffffff16565b6001600160a01b038716600090815260076020526040902054909150610b119083612b0f565b6001600160a01b038088166000908152600760205260408082209390935590871681522054610b40908261299c565b6001600160a01b0380871660008181526007602090815260409182902094909455805188815290519193928a1692600080516020612d7583398151915292918290030190a3505061108a565b610b9583612b51565b15610dd9576000610ba5836107b9565b6006549091506002820482039082850390600090610bd190610ac08869d3c21bcecceda10000006129f6565b90506000610bf8600654610ac069d3c21bcecceda1000000866129f690919063ffffffff16565b90506000610c1f600654610ac069d3c21bcecceda1000000886129f690919063ffffffff16565b90506000610c44670de0b6b3a7640000610ac0600654866129f690919063ffffffff16565b600e805489900390556001600160a01b038c16600090815260076020526040902054909150610c739085612b0f565b6001600160a01b03808d1660009081526007602052604080822093909355908c1681522054610ca2908261299c565b6001600160a01b03808c166000908152600760205260408082209390935560055490911681522054610cd4908361299c565b6005546001600160a01b0316600090815260076020526040902055610d176002885b600080526007602052600080516020612d958339815191525491900461299c565b6000805260076020908152600080516020612d95833981519152919091556040805187815290516001600160a01b038d811693908f1692600080516020612d75833981519152929081900390910190a360006001600160a01b038c16600080516020612d7583398151915260028a60408051929091048252519081900360200190a36005546040805188815290516001600160a01b03928316928e1691600080516020612d75833981519152919081900360200190a35050505050505061108a565b610de38484612b6f565b610fd0576000610df283611a1e565b60065490915060028204908183039083860390600090610e2090610ac08969d3c21bcecceda10000006129f6565b90506000610e47600654610ac069d3c21bcecceda1000000866129f690919063ffffffff16565b90506000610e6e600654610ac069d3c21bcecceda1000000886129f690919063ffffffff16565b600e805489900390559050610e84600288610cf6565b6007602052600080516020612d95833981519152556001600160a01b038b1660009081526040902054610eb79084612b0f565b6001600160a01b03808d1660009081526007602052604080822093909355908c1681522054610ee6908361299c565b6001600160a01b03808c166000908152600760205260408082209390935560055490911681522054610f18908261299c565b6005546001600160a01b0390811660009081526007602090815260409182902093909355805187815290518d831693928f1692600080516020612d75833981519152928290030190a36040805187815290516000916001600160a01b038e1691600080516020612d758339815191529181900360200190a36005546040805187815290516001600160a01b03928316928e1691600080516020612d75833981519152919081900360200190a35050505050505061108a565b600654600090610fee90610ac08569d3c21bcecceda10000006129f6565b6001600160a01b0386166000908152600760205260409020549091506110149082612b0f565b6001600160a01b038087166000908152600760205260408082209390935590861681522054611043908261299c565b6001600160a01b038086166000818152600760209081526040918290209490945580518581529051919392891692600080516020612d7583398151915292918290030190a3505b5060015b9392505050565b61109d612bb2565b6000546001600160a01b039081169116146110ed576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b6001600160a01b038116611148576040805162461bcd60e51b815260206004820152601b60248201527f6e657720726562617365722069732061646472657373207a65726f0000000000604482015290519081900360640190fd5b6001546040516001600160a01b038084169216907fe8a195812977ad9c31215cd36cddec4a0a2cef58eb984d1169225de6e823ff4390600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080600080600460019054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156111fb57600080fd5b505afa15801561120f573d6000803e3d6000fd5b505050506040513d60a081101561122557600080fd5b508051602082015160408301516060840151608090940151929850909650945090925090506112726298968061126c61125d87612bb6565b678ac7230489e8000090612a91565b906129f6565b9550505050505090565b60045460ff1681565b60008054600160a01b900460ff16156112d8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360009081526008602090815260408083206001600160a01b0387168452909152902054611306908361299c565b3360008181526008602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b611373612bb2565b6001546001600160a01b039081169116146113cd576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff161561141f576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600f805461ffff909216620100000263ffff000019909216919091179055565b6001600160a01b031660009081526007602052604090205490565b611462612bb2565b6000546001600160a01b039081169116146114b2576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60096020526000908152604090205460ff1681565b600f5461ffff1681565b600054600160a01b900460ff1690565b600061150d612bb2565b6001546001600160a01b03908116911614611567576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff16156115b9576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000306001600160a01b0316632a8000a66040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f457600080fd5b505afa158015611608573d6000803e3d6000fd5b505050506040513d602081101561161e57600080fd5b505160408051637af548c160e01b8152426004820152602481018390526001604482015290519192503091637af548c1916064808201926020929091908290030181600087803b15801561167157600080fd5b505af1158015611685573d6000803e3d6000fd5b505050506040513d602081101561169b57600080fd5b505191505090565b69d3c21bcecceda100000081565b60065481565b60006116c282612b51565b15611709576001600160a01b0382166000908152600760205260409020546117029069d3c21bcecceda100000090610ac090670de0b6b3a76400006129f6565b9050610825565b6006546001600160a01b0383166000908152600760205260409020546117029169d3c21bcecceda100000091610ac0916129f6565b611746612bb2565b6000546001600160a01b03908116911614611796576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006117ea612bb2565b6001546001600160a01b03908116911614611844576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff1615611896576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b8215806118a1575081155b156118e757600654604080519182525185917f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511919081900360200190a250600e5461108e565b600061190b670de0b6b3a7640000610ac0611902828861299c565b600654906129f6565b9050611915612afa565b811015611926576006819055611932565b61192e612afa565b6006555b600c546001600160a01b03166000908152600760205260409020546119d7906119739069d3c21bcecceda100000090610ac090670de0b6b3a76400006129f6565b600654600c546001600160a01b0316600090815260076020526040812054908052600080516020612d9583398151915254600d546119d19369d3c21bcecceda100000093610ac093919261126c926119cb9190612b0f565b90612b0f565b9061299c565b600e55600654604080519182525186917f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511919081900360200190a25050600e549392505050565b60008054600160a01b900460ff1615611a71576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600f5460009061082190849062010000900461ffff16612a91565b6001546001600160a01b031690565b6005546001600160a01b031681565b6000546001600160a01b031690565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108ad5780601f10610882576101008083540402835291602001916108ad565b60008054600160a01b900460ff1615611b67576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360009081526008602090815260408083206001600160a01b0387168452909152902054808310611bbb573360009081526008602090815260408083206001600160a01b0388168452909152812055611bea565b611bc58184612b0f565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b611c58612bb2565b6000546001600160a01b03908116911614611ca8576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000611d22612bb2565b6001546001600160a01b03908116911614611d7c576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff1615611dce576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000306001600160a01b0316632a8000a66040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0957600080fd5b505afa158015611e1d573d6000803e3d6000fd5b505050506040513d6020811015611e3357600080fd5b5051905030637af548c142611e4884876129f6565b60016040518463ffffffff1660e01b81526004018084815260200183815260200182151581526020019350505050602060405180830381600087803b158015611e9057600080fd5b505af1158015611ea4573d6000803e3d6000fd5b505050506040513d6020811015611eba57600080fd5b50519392505050565b60008054600160a01b900460ff1615611f16576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b611f1f33612b51565b15611ffe576000611f46670de0b6b3a7640000610ac08569d3c21bcecceda10000006129f6565b90506000611f6b600654610ac0670de0b6b3a7640000856129f690919063ffffffff16565b33600090815260076020526040902054909150611f889083612b0f565b33600090815260076020526040808220929092556001600160a01b03871681522054611fb4908261299c565b6001600160a01b038616600081815260076020908152604091829020939093558051878152905191923392600080516020612d758339815191529281900390910190a35050612492565b61200783612b51565b15612205576000612017836107b9565b6006549091506002820490818303908386039060009061204590610ac08969d3c21bcecceda10000006129f6565b9050600061206c600654610ac069d3c21bcecceda1000000866129f690919063ffffffff16565b90506000612093600654610ac069d3c21bcecceda1000000886129f690919063ffffffff16565b905060006120b8670de0b6b3a7640000610ac0600654866129f690919063ffffffff16565b600e80548a9003905590506120ce600289610cf6565b6007602052600080516020612d958339815191525533600090815260409020546120f89085612b0f565b33600090815260076020526040808220929092556001600160a01b038d1681522054612124908261299c565b6001600160a01b03808d166000908152600760205260408082209390935560055490911681522054612156908361299c565b6005546001600160a01b039081166000908152600760209081526040918290209390935580518881529051918e16923392600080516020612d758339815191529281900390910190a36040805188815290516000913391600080516020612d758339815191529181900360200190a36005546040805188815290516001600160a01b03909216913391600080516020612d75833981519152919081900360200190a35050505050505050612492565b61220f3384612b6f565b6123e657600061221e83611a1e565b6006549091506002820490818303908386039060009061224c90610ac08969d3c21bcecceda10000006129f6565b90506000612273600654610ac069d3c21bcecceda1000000866129f690919063ffffffff16565b9050600061229a600654610ac069d3c21bcecceda1000000886129f690919063ffffffff16565b600e8054899003905590506122b0600288610cf6565b6007602052600080516020612d958339815191525533600090815260409020546122da9084612b0f565b33600090815260076020526040808220929092556001600160a01b038c1681522054612306908361299c565b6001600160a01b03808c166000908152600760205260408082209390935560055490911681522054612338908261299c565b6005546001600160a01b039081166000908152600760209081526040918290209390935580518781529051918d16923392600080516020612d758339815191529281900390910190a36040805187815290516000913391600080516020612d758339815191529181900360200190a36005546040805187815290516001600160a01b03909216913391600080516020612d75833981519152919081900360200190a350505050505050612492565b60065460009061240490610ac08569d3c21bcecceda10000006129f6565b336000908152600760205260409020549091506124219082612b0f565b33600090815260076020526040808220929092556001600160a01b0386168152205461244d908261299c565b6001600160a01b038516600081815260076020908152604091829020939093558051848152905191923392600080516020612d758339815191529281900390910190a3505b50600192915050565b600c546001600160a01b031681565b6124b2612bb2565b6000546001600160a01b03908116911614612502576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fcea48012bdb313072f54da033c891e9ad17d42f6fff9a5a1b74dfc865c37e051929181900390910190a16001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600080306001600160a01b0316632a8000a66040518163ffffffff1660e01b815260040160206040518083038186803b1580156125ae57600080fd5b505afa1580156125c2573d6000803e3d6000fd5b505050506040513d60208110156125d857600080fd5b5051905061082181846129f6565b60008054600160a01b900460ff1615612639576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b506001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b600b6020526000908152604090205460ff1681565b600f5462010000900461ffff1681565b612692612bb2565b6001546001600160a01b039081169116146126ec576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91034b9903737ba103932b130b9b2b960591b604482015290519081900360640190fd5b600054600160a01b900460ff161561273e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600f805461ffff191661ffff92909216919091179055565b670de0b6b3a764000081565b61276a612bb2565b6000546001600160a01b039081169116146127ba576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b6001600160a01b0381166127ff5760405162461bcd60e51b8152600401808060200182810382526026815260200180612d0e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b612862612bb2565b6000546001600160a01b039081169116146128b2576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6128dc612bb2565b6000546001600160a01b0390811691161461292c576040805162461bcd60e51b81526020600482018190526024820152600080516020612d55833981519152604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60008282018381101561108e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082612a055750600061096a565b82820282848281612a1257fe5b041461108e5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d346021913960400191505060405180910390fd5b600061108e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c11565b600081612ad3576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b6000828481612ade57fe5b049050828481612aea57fe5b061561108e576001019392505050565b6000600d5460001981612b0957fe5b04905090565b600061108e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cb3565b6001600160a01b03166000908152600b602052604090205460ff1690565b6001600160a01b03821660009081526009602052604081205460ff168061108e5750506001600160a01b03166000908152600a602052604090205460ff16919050565b3390565b600080821215612c0d576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b5090565b60008183612c9d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c62578181015183820152602001612c4a565b50505050905090810190601f168015612c8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612ca957fe5b0495945050505050565b60008184841115612d055760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612c62578181015183820152602001612c4a565b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6dfa26469706673582212203f8b594b6a56a1e0af35387439701ce2bea0f313a47e68fcc9578fc1f8760d3c64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000001a784379d99db42000000000000000000000000000000447eea0067a045ca363c7da86a1376e93f59bf8d
-----Decoded View---------------
Arg [0] : initialSupply (uint256): 2000000000000000000000000
Arg [1] : initialSupplyAddr (address): 0x447eea0067A045ca363C7dA86A1376E93f59BF8D
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000001a784379d99db42000000
Arg [1] : 000000000000000000000000447eea0067a045ca363c7da86a1376e93f59bf8d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.