ERC-20
Overview
Max Total Supply
385.29361 USDF1
Holders
24
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
0.00001 USDF1Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
USDOToken
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <0.8.0; import "./ERC20.sol"; import "./ERC20Detailed.sol"; import "./Owned.sol"; import "./State.sol"; import "./Pausable.sol"; contract USDOToken is Owned, State, Pausable, ERC20, ERC20Detailed { /** * @notice Construct a new STableToken */ constructor(address _associatedContract) public Owned(msg.sender) State(_associatedContract) ERC20Detailed("Frontier USDF1", "USDF1", 8) {} /** * @notice Only associatedContract can do it * @param receiver The address be sended * @param amount The number of token be sended */ function mint(address receiver, uint256 amount) external notPaused onlyAssociatedContract { _mint(receiver, amount); } /** * @notice Only associatedContract can do it * @param account The address of holder * @param amount The number of token be burned */ function burn(address account, uint256 amount) external notPaused onlyAssociatedContract { _burn(account, amount); } }
pragma solidity ^0.5.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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() internal {} // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view 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.5.0 <=0.7.0; import "./SafeMath.sol"; import "./Owned.sol"; import "./IDparam.sol"; import "./WhiteList.sol"; contract Dparam is Owned, WhiteList, IDparam { using SafeMath for uint256; /// @notice Subscription ratio token -> coin uint256 public stakeRate = 32; /// @notice The collateral rate of liquidation uint256 public liquidationLine = 110; /// @notice Redemption rate 0.3% uint256 public feeRate = 3; /// @notice Minimum number of COINS for the first time uint256 public minMint = 0; uint256 constant ONE = 1e18; /// @notice Reset fee event event FeeRateEvent(uint256 feeRate); /// @notice Reset liquidationLine event event LiquidationLineEvent(uint256 liquidationRate); /// @notice Reset minMint event event MinMintEvent(uint256 minMint); /** * @notice Construct a new Dparam, owner by msg.sender */ constructor() public Owned(msg.sender) {} /** * @notice Reset feeRate * @param _feeRate New number of feeRate */ function setFeeRate(uint256 _feeRate) external onlyWhiter { feeRate = _feeRate; emit FeeRateEvent(feeRate); } /** * @notice Reset liquidationLine * @param _liquidationLine New number of liquidationLine */ function setLiquidationLine(uint256 _liquidationLine) external onlyWhiter { // TODO 如果这里价格变动了,就需要价格以及进行关停 liquidationLine = _liquidationLine; emit LiquidationLineEvent(liquidationLine); } /** * @notice Reset minMint * @param _minMint New number of minMint */ function setMinMint(uint256 _minMint) external onlyWhiter { minMint = _minMint; emit MinMintEvent(minMint); } /** * @notice Check Is it below the clearing line * @param price The token/usdt price * @return Whether the clearing line has been no exceeded */ function isLiquidation(uint256 price) external view returns (bool) { return price.mul(stakeRate).mul(100) <= liquidationLine.mul(ONE); } /** * @notice Determine if the exchange value at the current rate is less than $7 * @param price The token/usdt price * @return The value of Checking */ function isNormal(uint256 price) external view returns (bool) { return price.mul(stakeRate) >= 4.8e18; } }
pragma solidity ^0.5.0; import "./Context.sol"; import "./IERC20.sol"; import "./SafeMath.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20Mintable}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Destroys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See {_burn} and {_approve}. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve( account, _msgSender(), _allowances[account][_msgSender()].sub( amount, "ERC20: burn amount exceeds allowance" ) ); } }
pragma solidity ^0.5.0; import "./IERC20.sol"; /** * @dev Optional functions from the ERC20 standard. */ contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of * these values are immutable: they can only be set once during * construction. */ constructor( string memory name, string memory symbol, uint8 decimals ) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <=0.7.0; import "./Owned.sol"; import "./WhiteList.sol"; interface ITokenStake { function updateIndex() external; } contract Esm is Owned, WhiteList { /// @notice Access stake pause uint256 public stakeLive = 1; /// @notice Access redeem pause uint256 public redeemLive = 1; /// @notice System closed time uint256 public time; /// @notice TokenStake for updating on closed ITokenStake public tokenStake; /// @notice System closed yet event event ShutDown(uint256 blocknumber, uint256 time); /** * @notice Construct a new Esm */ constructor() public Owned(msg.sender) {} /** * @notice Set with tokenStake * @param _tokenStake Address of tokenStake */ function setupTokenStake(address _tokenStake) public onlyWhiter { tokenStake = ITokenStake(_tokenStake); } /** * @notice Open stake, if stake pasued */ function openStake() external onlyWhiter { stakeLive = 1; } /** * @notice Paused stake, if stake opened */ function pauseStake() external onlyWhiter { stakeLive = 0; } /** * @notice Open redeem, if redeem paused */ function openRedeem() external onlyWhiter { redeemLive = 1; } /** * @notice Pause redeem, if redeem opened */ function pauseRedeem() external onlyWhiter { redeemLive = 0; } /** * @notice Status of staking */ function isStakePaused() external view returns (bool) { return stakeLive == 0; } /** * @notice Status of redeem */ function isRedeemPaused() external view returns (bool) { return redeemLive == 0; } /** * @notice Status of closing-sys */ function isClosed() external view returns (bool) { return time > 0; } /** * @notice If anything error, project manager can shutdown it * anybody cant stake, but can redeem */ function shutdown() external onlyWhiter { require(time == 0, "System closed yet."); tokenStake.updateIndex(); time = block.timestamp; emit ShutDown(block.number, time); } }
/** *Submitted for verification at Etherscan.io on 2020-09-18 */ /** *Submitted for verification at Etherscan.io on 2020-08-24 */ pragma solidity >=0.4.22 <0.6.0; interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes calldata _extraData) external; } contract FrontToken { // Public variables of the token string public name; string public symbol; uint8 public decimals = 18; // 18 decimals is the strongly suggested default, avoid changing it uint256 public totalSupply; // This creates an array with all balances mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; // This generates a public event on the blockchain that will notify clients event Transfer(address indexed from, address indexed to, uint256 value); // This generates a public event on the blockchain that will notify clients event Approval(address indexed _owner, address indexed _spender, uint256 _value); // This notifies clients about the amount burnt event Burn(address indexed from, uint256 value); /** * Constructor function * * Initializes contract with initial supply tokens to the creator of the contract */ constructor( uint256 initialSupply, string memory tokenName, string memory tokenSymbol ) public { totalSupply = initialSupply * 10 ** uint256(decimals); // Update total supply with the decimal amount balanceOf[msg.sender] = totalSupply; // Give the creator all initial tokens name = tokenName; // Set the name for display purposes symbol = tokenSymbol; // Set the symbol for display purposes } /** * Internal transfer, only can be called by this contract */ function _transfer(address _from, address _to, uint _value) internal { // Prevent transfer to 0x0 address. Use burn() instead // require(_to != address(0x0)); // Check if the sender has enough require(balanceOf[_from] >= _value); // Check for overflows require(balanceOf[_to] + _value >= balanceOf[_to]); // Save this for an assertion in the future uint previousBalances = balanceOf[_from] + balanceOf[_to]; // Subtract from the sender balanceOf[_from] -= _value; // Add the same to the recipient balanceOf[_to] += _value; emit Transfer(_from, _to, _value); // Asserts are used to use static analysis to find bugs in your code. They should never fail assert(balanceOf[_from] + balanceOf[_to] == previousBalances); } /** * Transfer tokens * * Send `_value` tokens to `_to` from your account * * @param _to The address of the recipient * @param _value the amount to send */ function transfer(address _to, uint256 _value) public returns (bool success) { _transfer(msg.sender, _to, _value); return true; } /** * Transfer tokens from other address * * Send `_value` tokens to `_to` on behalf of `_from` * * @param _from The address of the sender * @param _to The address of the recipient * @param _value the amount to send */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require(_value <= allowance[_from][msg.sender]); // Check allowance allowance[_from][msg.sender] -= _value; _transfer(_from, _to, _value); return true; } /** * Set allowance for other address * * Allows `_spender` to spend no more than `_value` tokens on your behalf * * @param _spender The address authorized to spend * @param _value the max amount they can spend */ function approve(address _spender, uint256 _value) public returns (bool success) { allowance[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * Set allowance for other address and notify * * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it * * @param _spender The address authorized to spend * @param _value the max amount they can spend * @param _extraData some extra information to send to the approved contract */ function approveAndCall(address _spender, uint256 _value, bytes memory _extraData) public returns (bool success) { tokenRecipient spender = tokenRecipient(_spender); if (approve(_spender, _value)) { spender.receiveApproval(msg.sender, _value, address(this), _extraData); return true; } } /** * Destroy tokens * * Remove `_value` tokens from the system irreversibly * * @param _value the amount of money to burn */ function burn(uint256 _value) public returns (bool success) { require(balanceOf[msg.sender] >= _value); // Check if the sender has enough balanceOf[msg.sender] -= _value; // Subtract from the sender totalSupply -= _value; // Updates totalSupply emit Burn(msg.sender, _value); return true; } /** * Destroy tokens from other account * * Remove `_value` tokens from the system irreversibly on behalf of `_from`. * * @param _from the address of the sender * @param _value the amount of money to burn */ function burnFrom(address _from, uint256 _value) public returns (bool success) { require(balanceOf[_from] >= _value); // Check if the targeted balance is enough require(_value <= allowance[_from][msg.sender]); // Check allowance balanceOf[_from] -= _value; // Subtract from the targeted balance allowance[_from][msg.sender] -= _value; // Subtract from the sender's allowance totalSupply -= _value; // Update totalSupply emit Burn(_from, _value); return true; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <0.8.0; import "./Math.sol"; import "./SafeMath.sol"; import "./IERC20.sol"; import "./Owned.sol"; import "./IDparam.sol"; import "./WhiteList.sol"; interface IOracle { function val() external returns (uint256); function poke(uint256 price) external; function peek() external; } interface IESM { function isStakePaused() external view returns (bool); function isRedeemPaused() external view returns (bool); function isClosed() external view returns (bool); function time() external view returns (uint256); function shutdown() external; } interface ICoin { function burn(address account, uint256 amount) external; function mint(address account, uint256 amount) external; function balanceOf(address account) external view returns (uint256); } contract FrontStake is Owned, WhiteList { using Math for uint256; using SafeMath for uint256; /** * @notice Struct reward pools state * @param index Accumulated earnings index * @param block Update index, updating blockNumber together */ struct RewardState { uint256 index; uint256 block; } /** * @notice reward pools state * @param index Accumulated earnings index by staker * @param reward Accumulative reward */ struct StakerState { uint256 index; uint256 reward; } /// @notice TThe reward pool put into by the project side uint256 public reward; /// @notice The number of token per-block uint256 public rewardSpeed = 0.5787e18; /// @notice Inital index uint256 public initialIndex = 1e36; /// @notice Amplification factor uint256 public doubleScale = 1e36; /// @notice The instance reward pools state RewardState public rewardState; /// @notice All staker-instances state mapping(address => StakerState) public stakerStates; /// @notice The amount by staker with token mapping(address => uint256) public tokens; /// @notice The amount by staker with coin mapping(address => uint256) public coins; /// @notice The total amount of out-coin in sys uint256 public totalCoin; /// @notice The total amount of stake-token in sys uint256 public totalToken; /// @notice Cumulative service fee, it will be burn, not join reward. uint256 public sFee; uint256 public pmFee; address public pmFeeHolder = 0x1CFC820F300103fC58a8804c221846fD25eC32D5; uint256 constant ONE = 10**8; address constant blackhole = 0x188407eeD7B1bb203dEd6801875C0B5Cb1027053; uint256 public startRewardBlock; /// @notice Dparam address IDparam params; /// @notice Oracle address IOracle orcl; /// @notice Esm address IESM esm; /// @notice Coin address ICoin coin; /// @notice Token address IERC20 token; /// @notice Setup Oracle address success event SetupOracle(address orcl); /// @notice Setup Dparam address success event SetupParam(address param); /// @notice Setup Esm address success event SetupEsm(address esm); /// @notice Setup Token&Coin address success event SetupCoin(address token, address coin); /// @notice Stake success event StakeEvent(uint256 token, uint256 coin); /// @notice redeem success event RedeemEvent(uint256 token, uint256 move, uint256 fee, uint256 coin); /// @notice Update index success event IndexUpdate(uint256 delt, uint256 block, uint256 index); /// @notice ClaimToken success event ClaimToken(address holder, uint256 amount); /// @notice InjectReward success event InjectReward(uint256 amount); /// @notice ExtractReward success event ExtractReward(address reciver, uint256 amount); /** * @notice Construct a new OinStake, owner by msg.sender * @param _param Dparam address * @param _orcl Oracle address * @param _esm Esm address */ constructor( address _param, address _orcl, address _esm ) public Owned(msg.sender) { params = IDparam(_param); orcl = IOracle(_orcl); esm = IESM(_esm); rewardState = RewardState(initialIndex, getBlockNumber()); } modifier notClosed() { require(!esm.isClosed(), "System closed"); _; } /** * @notice reset Dparams address. * @param _params Configuration dynamic params contract address */ function setupParams(address _params) public onlyWhiter { params = IDparam(_params); emit SetupParam(_params); } /** * @notice reset Oracle address. * @param _orcl Configuration Oracle contract address */ function setupOracle(address _orcl) public onlyWhiter { orcl = IOracle(_orcl); emit SetupOracle(_orcl); } /** * @notice reset Esm address. * @param _esm Configuration Esm contract address */ function setupEsm(address _esm) public onlyWhiter { esm = IESM(_esm); emit SetupEsm(_esm); } /** * @notice get Dparam address. * @return Dparam contract address */ function getParamsAddr() public view returns (address) { return address(params); } /** * @notice get Oracle address. * @return Oracle contract address */ function getOracleAddr() public view returns (address) { return address(orcl); } /** * @notice get Esm address. * @return Esm contract address */ function getEsmAddr() public view returns (address) { return address(esm); } /** * @notice get token of staking address. * @return ERC20 address */ function getCoinAddress() public view returns (address) { return address(coin); } /** * @notice get StableToken address. * @return ERC20 address */ function getTokenAddress() public view returns (address) { return address(token); } /** * @notice inject token address & coin address only once. * @param _token token address * @param _coin coin address */ function setup(address _token, address _coin) public onlyWhiter { require( address(token) == address(0) && address(coin) == address(0), "setuped yet." ); token = IERC20(_token); coin = ICoin(_coin); emit SetupCoin(_token, _coin); } /** * @notice Get the number of debt by the `account` * @param account token address * @return (tokenAmount,coinAmount) */ function debtOf(address account) public view returns (uint256, uint256) { return (tokens[account], coins[account]); } /** * @notice Get the number of debt by the `account` * @param coinAmount The amount that staker want to get stableToken * @return The amount that staker want to transfer token. */ function getInputToken(uint256 coinAmount) public view returns (uint256 tokenAmount) { tokenAmount = coinAmount.mul(params.stakeRate()).mul(10**10); } /** * @notice Normally redeem anyAmount internal * @param coinAmount The number of coin will be staking */ function stake(uint256 coinAmount) external notClosed { require(!esm.isStakePaused(), "Stake paused"); require(coinAmount > 0, "The quantity is less than the minimum"); require(orcl.val() > 0, "Oracle price not initialized."); require(params.isNormal(orcl.val()), "STPT's price is too low."); address from = msg.sender; if (coins[from] == 0) { require( coinAmount >= params.minMint(), "First make coin must grater than minMint amount." ); } accuredToken(from); uint256 tokenAmount = getInputToken(coinAmount); token.transferFrom(from, address(this), tokenAmount); coin.mint(from, coinAmount); totalCoin = totalCoin.add(coinAmount); totalToken = totalToken.add(tokenAmount); coins[from] = coins[from].add(coinAmount); tokens[from] = tokens[from].add(tokenAmount); if (startRewardBlock == 0) { startRewardBlock = getBlockNumber(); } emit StakeEvent(tokenAmount, coinAmount); } /** * @notice Normally redeem anyAmount internal * @param coinAmount The number of coin will be redeemed * @param receiver Address of receiving */ function _normalRedeem(uint256 coinAmount, address receiver) internal notClosed { require(!esm.isRedeemPaused(), "Redeem paused"); address staker = msg.sender; require(coins[staker] > 0, "No collateral"); require(coinAmount > 0, "The quantity is less than zero"); require(coinAmount <= coins[staker], "input amount overflow"); accuredToken(staker); uint256 tokenAmount = getInputToken(coinAmount); uint256 feeRate = params.feeRate(); uint256 fee = tokenAmount.mul(feeRate).div(1000); uint256 _pmFee = fee.div(3); uint256 move = tokenAmount.sub(fee); sFee = sFee.add(fee); pmFee = pmFee.add(_pmFee); token.transfer(pmFeeHolder, _pmFee); token.transfer(blackhole, fee - _pmFee); coin.burn(staker, coinAmount); token.transfer(receiver, move); coins[staker] = coins[staker].sub(coinAmount); tokens[staker] = tokens[staker].sub(tokenAmount); totalCoin = totalCoin.sub(coinAmount); totalToken = totalToken.sub(tokenAmount); emit RedeemEvent(tokenAmount, move, fee, coinAmount); } /** * @notice Abnormally redeem anyAmount internal * @param coinAmount The number of coin will be redeemed * @param receiver Address of receiving */ function _abnormalRedeem(uint256 coinAmount, address receiver) internal { require(esm.isClosed(), "System not Closed yet."); address from = msg.sender; require(coinAmount > 0, "The quantity is less than zero"); require(coin.balanceOf(from) > 0, "The coin no balance."); require(coinAmount <= coin.balanceOf(from), "Coin balance exceed"); uint256 tokenAmount = getInputToken(coinAmount); coin.burn(from, coinAmount); token.transfer(receiver, tokenAmount); totalCoin = totalCoin.sub(coinAmount); totalToken = totalToken.sub(tokenAmount); emit RedeemEvent(tokenAmount, tokenAmount, 0, coinAmount); } /** * @notice Normally redeem anyAmount * @param coinAmount The number of coin will be redeemed * @param receiver Address of receiving */ function redeem(uint256 coinAmount, address receiver) public { _normalRedeem(coinAmount, receiver); } /** * @notice Normally redeem anyAmount to msg.sender * @param coinAmount The number of coin will be redeemed */ function redeem(uint256 coinAmount) public { redeem(coinAmount, msg.sender); } /** * @notice normally redeem them all at once * @param holder reciver */ function redeemMax(address holder) public { redeem(coins[msg.sender], holder); } /** * @notice normally redeem them all at once to msg.sender */ function redeemMax() public { redeemMax(msg.sender); } /** * @notice System shutdown under the redemption rule * @param coinAmount The number coin * @param receiver Address of receiving */ function oRedeem(uint256 coinAmount, address receiver) public { _abnormalRedeem(coinAmount, receiver); } /** * @notice System shutdown under the redemption rule * @param coinAmount The number coin */ function oRedeem(uint256 coinAmount) public { oRedeem(coinAmount, msg.sender); } /** * @notice Refresh reward speed. */ function setRewardSpeed(uint256 speed) public onlyWhiter { updateIndex(); rewardSpeed = speed; } /** * @notice Used to correct the effect of one's actions on one's own earnings * System shutdown will no longer count */ function updateIndex() public { if (esm.isClosed()) { return; } uint256 blockNumber = getBlockNumber(); uint256 deltBlock = blockNumber.sub(rewardState.block); if (deltBlock > 0) { uint256 accruedReward = rewardSpeed.mul(deltBlock); uint256 ratio = totalToken == 0 ? 0 : accruedReward.mul(doubleScale).div(totalToken); rewardState.index = rewardState.index.add(ratio); rewardState.block = blockNumber; emit IndexUpdate(deltBlock, blockNumber, rewardState.index); } } /** * @notice Used to correct the effect of one's actions on one's own earnings * System shutdown will no longer count * @param account staker address */ function accuredToken(address account) internal { updateIndex(); StakerState storage stakerState = stakerStates[account]; stakerState.reward = _getReward(account); stakerState.index = rewardState.index; } /** * @notice Calculate the current holder's mining income * @param staker Address of holder */ function _getReward(address staker) internal view returns (uint256 value) { StakerState storage stakerState = stakerStates[staker]; value = stakerState.reward.add( rewardState.index.sub(stakerState.index).mul(tokens[staker]).div( doubleScale ) ); } /** * @notice Estimate the mortgagor's reward * @param account Address of staker */ function getHolderReward(address account) public view returns (uint256 value) { uint256 blockReward2 = (totalToken == 0 || esm.isClosed()) ? 0 : getBlockNumber() .sub(rewardState.block) .mul(rewardSpeed) .mul(tokens[account]) .div(totalToken); value = _getReward(account) + blockReward2; } /** * @notice Extract the current reward in one go * @param holder Address of receiver */ function claimToken(address holder) public { accuredToken(holder); StakerState storage stakerState = stakerStates[holder]; uint256 value = stakerState.reward.min(reward); require(value > 0, "The reward of address is zero."); token.transfer(holder, value); reward = reward.sub(value); stakerState.index = rewardState.index; stakerState.reward = stakerState.reward.sub(value); emit ClaimToken(holder, value); } /** * @notice Get block number now */ function getBlockNumber() public view returns (uint256) { return block.number; } /** * @notice Inject token to reward * @param amount The number of injecting */ function injectReward(uint256 amount) external onlyOwner { token.transferFrom(msg.sender, address(this), amount); reward = reward.add(amount); emit InjectReward(amount); } /** * @notice Extract token from reward * @param account Address of receiver * @param amount The number of extracting */ function extractReward(address account, uint256 amount) external onlyOwner { require(amount <= reward, "withdraw overflow."); token.transfer(account, amount); reward = reward.sub(amount); emit ExtractReward(account, amount); } function setupParam( uint256 liquidationLine, uint256 minMint, uint256 _feeRate, uint256 _rewardSpeed ) public onlyWhiter { if (minMint != 0) { params.setMinMint(minMint); } if (_feeRate != 0 && _feeRate >= 3) { params.setFeeRate(_feeRate); } if (_rewardSpeed != 0) { setRewardSpeed(_rewardSpeed); } if (liquidationLine != 0) { params.setLiquidationLine(liquidationLine); if (params.isLiquidation(orcl.val())) { esm.shutdown(); } } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <0.8.0; interface IDparam { event FeeRateEvent(uint256 feeRate); event LiquidationLineEvent(uint256 liquidationRate); event MinMintEvent(uint256 minMint); function stakeRate() external view returns (uint256); function liquidationLine() external view returns (uint256); function feeRate() external view returns (uint256); function minMint() external view returns (uint256); function setFeeRate(uint256 _feeRate) external; function setLiquidationLine(uint256 _liquidationLine) external; function setMinMint(uint256 _minMint) external; function isLiquidation(uint256 price) external view returns (bool); function isNormal(uint256 price) external view returns (bool); }
pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); }
pragma solidity ^0.5.0; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + (((a % 2) + (b % 2)) / 2); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <0.8.0; import "./SafeMath.sol"; import "./Owned.sol"; import "./WhiteList.sol"; interface IParams { function isLiquidation(uint256 price) external view returns (bool); } interface IEsm { function shutdown() external; function isClosed() external view returns (bool); } contract Oracle is Owned, WhiteList { using SafeMath for uint256; /// @notice Token-usdt price uint256 public val; /// @notice Price update date(s) uint256 public time; /// @notice Oracle Name bytes32 name; /// @notice Oracle update success event event OracleUpdate(uint256 val, uint256 time); /// @notice Dparam address IParams params; /// @notice Esm address IEsm esm; /** * @notice Construct a new Oracle * @param _params Dynamic parameter contract address * @param _esm Esm parameter contract address */ constructor(address _params, address _esm) public Owned(msg.sender) { params = IParams(_params); esm = IEsm(_esm); name = "FRONT-USDF1"; } /** * @notice Chain-off push price to chain-on 喂价方法 喂价时传入参数为 价格*位数 * @param price Token-usdt price decimals is same as token */ function poke(uint256 price) public onlyWhiter { require(!esm.isClosed(), "System closed yet."); val = price; time = block.timestamp; if (params.isLiquidation(price)) { esm.shutdown(); } else { emit OracleUpdate(val, time); } } /** * @notice Anybody can read the oracle price 查询当前的喂价值 */ function peek() public view returns (uint256) { return val; } }
pragma solidity ^0.5.16; // https://docs.synthetix.io/contracts/Owned contract Owned { address public owner; address public nominatedOwner; constructor(address _owner) public { require(_owner != address(0), "Owner address cannot be 0"); owner = _owner; emit OwnerChanged(address(0), _owner); } function nominateNewOwner(address _owner) external onlyOwner { nominatedOwner = _owner; emit OwnerNominated(_owner); } function acceptOwnership() external { require( msg.sender == nominatedOwner, "You must be nominated before you can accept ownership" ); emit OwnerChanged(owner, nominatedOwner); owner = nominatedOwner; nominatedOwner = address(0); } modifier onlyOwner { require( msg.sender == owner, "Only the contract owner may perform this action" ); _; } event OwnerNominated(address newOwner); event OwnerChanged(address oldOwner, address newOwner); }
pragma solidity ^0.5.16; // Inheritance import "./Owned.sol"; // https://docs.synthetix.io/contracts/Pausable contract Pausable is Owned { uint256 public lastPauseTime; bool public paused; constructor() internal { // This contract is abstract, and thus cannot be instantiated directly require(owner != address(0), "Owner must be set"); // Paused will be false, and lastPauseTime will be 0 upon initialisation } /** * @notice Change the paused state of the contract * @dev Only the contract owner may call this. */ function setPaused(bool _paused) external onlyOwner { // Ensure we're actually changing the state before we do anything if (_paused == paused) { return; } // Set our paused state. paused = _paused; // If applicable, set the last pause time. if (paused) { lastPauseTime = now; } // Let everyone know that our pause state has changed. emit PauseChanged(paused); } event PauseChanged(bool isPaused); modifier notPaused { require( !paused, "This action cannot be performed while the contract is paused" ); _; } }
pragma solidity ^0.5.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 SafeMath { /** * @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. * * _Available since v2.4.0._ */ 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. * * _Available since v2.4.0._ */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 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. * * _Available since v2.4.0._ */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
pragma solidity ^0.5.16; // Inheritance import "./Owned.sol"; // https://docs.synthetix.io/contracts/State contract State is Owned { // the address of the contract that can modify variables // this can only be changed by the owner of this contract address public associatedContract; constructor(address _associatedContract) internal { // This contract is abstract, and thus cannot be instantiated directly require(owner != address(0), "Owner must be set"); associatedContract = _associatedContract; emit AssociatedContractUpdated(_associatedContract); } /* ========== SETTERS ========== */ // Change the associated contract to a new address function setAssociatedContract(address _associatedContract) external onlyOwner { associatedContract = _associatedContract; emit AssociatedContractUpdated(_associatedContract); } /* ========== MODIFIERS ========== */ modifier onlyAssociatedContract { require( msg.sender == associatedContract, "Only the associated contract can perform this action" ); _; } /* ========== EVENTS ========== */ event AssociatedContractUpdated(address associatedContract); }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0 <0.8.0; import "./Owned.sol"; contract WhiteList is Owned { /// @notice Users with permissions mapping(address => uint256) public whiter; /// @notice Append address into whiteList successevent event AppendWhiter(address adder); /// @notice Remove address into whiteList successevent event RemoveWhiter(address remover); /** * @notice Construct a new WhiteList, default owner in whiteList */ constructor() internal { appendWhiter(owner); } modifier onlyWhiter() { require(isWhiter(), "WhiteList: msg.sender not in whilteList."); _; } /** * @notice Only onwer can append address into whitelist * @param account The address not added, can added to the whitelist */ function appendWhiter(address account) public onlyOwner { require(account != address(0), "WhiteList: address not zero"); require( !isWhiter(account), "WhiteListe: the account exsit whilteList yet" ); whiter[account] = 1; emit AppendWhiter(account); } /** * @notice Only onwer can remove address into whitelist * @param account The address in whitelist yet */ function removeWhiter(address account) public onlyOwner { require( isWhiter(account), "WhiteListe: the account not exist whilteList" ); delete whiter[account]; emit RemoveWhiter(account); } /** * @notice Check whether acccount in whitelist * @param account Any address */ function isWhiter(address account) public view returns (bool) { return whiter[account] == 1; } /** * @notice Check whether msg.sender in whitelist overrides. */ function isWhiter() public view returns (bool) { return isWhiter(msg.sender); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_associatedContract","type":"address"}],"payable":false,"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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"associatedContract","type":"address"}],"name":"AssociatedContractUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"PauseChanged","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"associatedContract","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastPauseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_associatedContract","type":"address"}],"name":"setAssociatedContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200271238038062002712833981810160405260208110156200003757600080fd5b81019080805190602001909291905050506040518060400160405280600e81526020017f46726f6e746965722055534446310000000000000000000000000000000000008152506040518060400160405280600581526020017f555344463100000000000000000000000000000000000000000000000000000081525060088333600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200015c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f776e657220616464726573732063616e6e6f7420626520300000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c600082604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620002fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4f776e6572206d7573742062652073657400000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f73f20cff579e8a4086fa607db83867595f1b6a798e718c0bfa0b94a404128e0381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141562000464576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4f776e6572206d7573742062652073657400000000000000000000000000000081525060200191505060405180910390fd5b82600890805190602001906200047c929190620004bb565b50816009908051906020019062000495929190620004bb565b5080600a60006101000a81548160ff021916908360ff160217905550505050506200056a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004fe57805160ff19168380011785556200052f565b828001600101855582156200052f579182015b828111156200052e57825182559160200191906001019062000511565b5b5090506200053e919062000542565b5090565b6200056791905b808211156200056357600081600090555060010162000549565b5090565b90565b612198806200057a6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80635c975abb116100b857806395d89b411161007c57806395d89b411461059a5780639dc29fac1461061d578063a457c2d71461066b578063a9059cbb146106d1578063aefc4ccb14610737578063dd62ed3e1461078157610142565b80635c975abb146104ae57806370a08231146104d057806379ba5097146105285780638da5cb5b1461053257806391b4ded91461057c57610142565b806323b872dd1161010a57806323b872dd146102c2578063313ce56714610348578063395093511461036c57806340c10f19146103d257806352f445ca1461042057806353a47bb71461046457610142565b806306fdde0314610147578063095ea7b3146101ca5780631627540c1461023057806316c38b3c1461027457806318160ddd146102a4575b600080fd5b61014f6107f9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018f578082015181840152602081019050610174565b50505050905090810190601f1680156101bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610216600480360360408110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061089b565b604051808215151515815260200191505060405180910390f35b6102726004803603602081101561024657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108b9565b005b6102a26004803603602081101561028a57600080fd5b81019080803515159060200190929190505050610a05565b005b6102ac610b4f565b6040518082815260200191505060405180910390f35b61032e600480360360608110156102d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b59565b604051808215151515815260200191505060405180910390f35b610350610c32565b604051808260ff1660ff16815260200191505060405180910390f35b6103b86004803603604081101561038257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c49565b604051808215151515815260200191505060405180910390f35b61041e600480360360408110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cfc565b005b6104626004803603602081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e16565b005b61046c610f62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104b6610f88565b604051808215151515815260200191505060405180910390f35b610512600480360360208110156104e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9b565b6040518082815260200191505060405180910390f35b610530610fe4565b005b61053a61120a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058461122f565b6040518082815260200191505060405180910390f35b6105a2611235565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e25780820151818401526020810190506105c7565b50505050905090810190601f16801561060f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106696004803603604081101561063357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112d7565b005b6106b76004803603604081101561068157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f1565b604051808215151515815260200191505060405180910390f35b61071d600480360360408110156106e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114be565b604051808215151515815260200191505060405180910390f35b61073f6114dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107e36004803603604081101561079757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611502565b6040518082815260200191505060405180910390f35b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050905090565b60006108af6108a8611589565b8484611591565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061200e602f913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061200e602f913960400191505060405180910390fd5b600460009054906101000a900460ff1615158115151415610aca57610b4c565b80600460006101000a81548160ff021916908315150217905550600460009054906101000a900460ff1615610b0157426003819055505b7f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec5600460009054906101000a900460ff16604051808215151515815260200191505060405180910390a15b50565b6000600754905090565b6000610b66848484611788565b610c2784610b72611589565b610c228560405180606001604052806028815260200161203d60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bd8611589565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429092919063ffffffff16565b611591565b600190509392505050565b6000600a60009054906101000a900460ff16905090565b6000610cf2610c56611589565b84610ced8560066000610c67611589565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0290919063ffffffff16565b611591565b6001905092915050565b600460009054906101000a900460ff1615610d62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806120ba603c913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806120656034913960400191505060405180910390fd5b610e128282611b8a565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061200e602f913960400191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f73f20cff579e8a4086fa607db83867595f1b6a798e718c0bfa0b94a404128e0381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180611f6f6035913960400191505060405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112cd5780601f106112a2576101008083540402835291602001916112cd565b820191906000526020600020905b8154815290600101906020018083116112b057829003601f168201915b5050505050905090565b600460009054906101000a900460ff161561133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806120ba603c913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806120656034913960400191505060405180910390fd5b6113ed8282611d47565b5050565b60006114b46113fe611589565b846114af8560405180606001604052806025815260200161213f6025913960066000611428611589565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429092919063ffffffff16565b611591565b6001905092915050565b60006114d26114cb611589565b8484611788565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061211b6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561169d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611fc66022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561180e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120f66025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611894576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611f4c6023913960400191505060405180910390fd5b61190081604051806060016040528060268152602001611fe860269139600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429092919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061199581600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0290919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611aef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ab4578082015181840152602081019050611a99565b50505050905090810190601f168015611ae15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611b80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611c4281600754611b0290919063ffffffff16565b600781905550611c9a81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0290919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dcd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120996021913960400191505060405180910390fd5b611e3981604051806060016040528060228152602001611fa460229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9181600754611f0190919063ffffffff16565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611f4383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a42565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e65727368697045524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f6e6c7920746865206173736f63696174656420636f6e74726163742063616e20706572666f726d207468697320616374696f6e45524332303a206275726e2066726f6d20746865207a65726f20616464726573735468697320616374696f6e2063616e6e6f7420626520706572666f726d6564207768696c652074686520636f6e74726163742069732070617573656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582008047952d8bd3e2245672d512d79e663292c7728a3c366334773e3c6fc59d7a364736f6c634300051000320000000000000000000000006c64cded6bdd702a3bd9bb9e70c6d758fc358021
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c80635c975abb116100b857806395d89b411161007c57806395d89b411461059a5780639dc29fac1461061d578063a457c2d71461066b578063a9059cbb146106d1578063aefc4ccb14610737578063dd62ed3e1461078157610142565b80635c975abb146104ae57806370a08231146104d057806379ba5097146105285780638da5cb5b1461053257806391b4ded91461057c57610142565b806323b872dd1161010a57806323b872dd146102c2578063313ce56714610348578063395093511461036c57806340c10f19146103d257806352f445ca1461042057806353a47bb71461046457610142565b806306fdde0314610147578063095ea7b3146101ca5780631627540c1461023057806316c38b3c1461027457806318160ddd146102a4575b600080fd5b61014f6107f9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018f578082015181840152602081019050610174565b50505050905090810190601f1680156101bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610216600480360360408110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061089b565b604051808215151515815260200191505060405180910390f35b6102726004803603602081101561024657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108b9565b005b6102a26004803603602081101561028a57600080fd5b81019080803515159060200190929190505050610a05565b005b6102ac610b4f565b6040518082815260200191505060405180910390f35b61032e600480360360608110156102d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b59565b604051808215151515815260200191505060405180910390f35b610350610c32565b604051808260ff1660ff16815260200191505060405180910390f35b6103b86004803603604081101561038257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c49565b604051808215151515815260200191505060405180910390f35b61041e600480360360408110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cfc565b005b6104626004803603602081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e16565b005b61046c610f62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104b6610f88565b604051808215151515815260200191505060405180910390f35b610512600480360360208110156104e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9b565b6040518082815260200191505060405180910390f35b610530610fe4565b005b61053a61120a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058461122f565b6040518082815260200191505060405180910390f35b6105a2611235565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e25780820151818401526020810190506105c7565b50505050905090810190601f16801561060f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106696004803603604081101561063357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112d7565b005b6106b76004803603604081101561068157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f1565b604051808215151515815260200191505060405180910390f35b61071d600480360360408110156106e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114be565b604051808215151515815260200191505060405180910390f35b61073f6114dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107e36004803603604081101561079757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611502565b6040518082815260200191505060405180910390f35b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050905090565b60006108af6108a8611589565b8484611591565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061200e602f913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061200e602f913960400191505060405180910390fd5b600460009054906101000a900460ff1615158115151415610aca57610b4c565b80600460006101000a81548160ff021916908315150217905550600460009054906101000a900460ff1615610b0157426003819055505b7f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec5600460009054906101000a900460ff16604051808215151515815260200191505060405180910390a15b50565b6000600754905090565b6000610b66848484611788565b610c2784610b72611589565b610c228560405180606001604052806028815260200161203d60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bd8611589565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429092919063ffffffff16565b611591565b600190509392505050565b6000600a60009054906101000a900460ff16905090565b6000610cf2610c56611589565b84610ced8560066000610c67611589565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0290919063ffffffff16565b611591565b6001905092915050565b600460009054906101000a900460ff1615610d62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806120ba603c913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806120656034913960400191505060405180910390fd5b610e128282611b8a565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061200e602f913960400191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f73f20cff579e8a4086fa607db83867595f1b6a798e718c0bfa0b94a404128e0381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180611f6f6035913960400191505060405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112cd5780601f106112a2576101008083540402835291602001916112cd565b820191906000526020600020905b8154815290600101906020018083116112b057829003601f168201915b5050505050905090565b600460009054906101000a900460ff161561133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806120ba603c913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806120656034913960400191505060405180910390fd5b6113ed8282611d47565b5050565b60006114b46113fe611589565b846114af8560405180606001604052806025815260200161213f6025913960066000611428611589565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429092919063ffffffff16565b611591565b6001905092915050565b60006114d26114cb611589565b8484611788565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061211b6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561169d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611fc66022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561180e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120f66025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611894576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611f4c6023913960400191505060405180910390fd5b61190081604051806060016040528060268152602001611fe860269139600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429092919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061199581600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0290919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611aef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ab4578082015181840152602081019050611a99565b50505050905090810190601f168015611ae15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611b80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611c4281600754611b0290919063ffffffff16565b600781905550611c9a81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0290919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dcd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120996021913960400191505060405180910390fd5b611e3981604051806060016040528060228152602001611fa460229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9181600754611f0190919063ffffffff16565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611f4383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a42565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e65727368697045524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f6e6c7920746865206173736f63696174656420636f6e74726163742063616e20706572666f726d207468697320616374696f6e45524332303a206275726e2066726f6d20746865207a65726f20616464726573735468697320616374696f6e2063616e6e6f7420626520706572666f726d6564207768696c652074686520636f6e74726163742069732070617573656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582008047952d8bd3e2245672d512d79e663292c7728a3c366334773e3c6fc59d7a364736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006c64cded6bdd702a3bd9bb9e70c6d758fc358021
-----Decoded View---------------
Arg [0] : _associatedContract (address): 0x6c64cded6BDD702a3BD9bB9e70C6d758fC358021
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006c64cded6bdd702a3bd9bb9e70c6d758fc358021
Deployed Bytecode Sourcemap
187:957:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;187:957:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;673:81:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;673:81:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2508:149:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2508:149:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;341:138:11;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;341:138:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;581:472:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;581:472:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;1539:89:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3115:422;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3115:422:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1501:81:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3932:273:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3932:273:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;661:158:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;661:158:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;711:217:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;711:217:14;;;;;;;;;;;;;;;;;;;:::i;:::-;;118:29:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;179:18:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1686:108:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1686:108:2;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;485:300:11;;;:::i;:::-;;92:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;145:28:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;867:85:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;867:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;986:156:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;986:156:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4692:370:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4692:370:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1997:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1997:155:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;262:33:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2210:160:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2210:160:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;673:81:3;710:13;742:5;735:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;673:81;:::o;2508:149:2:-;2574:4;2590:39;2599:12;:10;:12::i;:::-;2613:7;2622:6;2590:8;:39::i;:::-;2646:4;2639:11;;2508:149;;;;:::o;341:138:11:-;855:5;;;;;;;;;;;841:19;;:10;:19;;;820:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;429:6;412:14;;:23;;;;;;;;;;;;;;;;;;450:22;465:6;450:22;;;;;;;;;;;;;;;;;;;;;;341:138;:::o;581:472:12:-;855:5:11;;;;;;;;;;;841:19;;:10;:19;;;820:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;732:6:12;;;;;;;;;;;721:17;;:7;:17;;;717:54;;;754:7;;717:54;823:7;814:6;;:16;;;;;;;;;;;;;;;;;;896:6;;;;;;;;;;;892:56;;;934:3;918:13;:19;;;;892:56;1026:20;1039:6;;;;;;;;;;;1026:20;;;;;;;;;;;;;;;;;;;;;;943:1:11;581:472:12;:::o;1539:89:2:-;1583:7;1609:12;;1602:19;;1539:89;:::o;3115:422::-;3234:4;3250:36;3260:6;3268:9;3279:6;3250:9;:36::i;:::-;3296:213;3318:6;3338:12;:10;:12::i;:::-;3364:135;3419:6;3364:135;;;;;;;;;;;;;;;;;:11;:19;3376:6;3364:19;;;;;;;;;;;;;;;:33;3384:12;:10;:12::i;:::-;3364:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;3296:8;:213::i;:::-;3526:4;3519:11;;3115:422;;;;;:::o;1501:81:3:-;1542:5;1566:9;;;;;;;;;;;1559:16;;1501:81;:::o;3932:273:2:-;4028:4;4048:129;4070:12;:10;:12::i;:::-;4096:7;4117:50;4156:10;4117:11;:25;4129:12;:10;:12::i;:::-;4117:25;;;;;;;;;;;;;;;:34;4143:7;4117:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4048:8;:129::i;:::-;4194:4;4187:11;;3932:273;;;;:::o;661:158:15:-;1150:6:12;;;;;;;;;;;1149:7;1128:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1054:18:14;;;;;;;;;;;1040:32;;:10;:32;;;1019:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;789:23:15;795:8;805:6;789:5;:23::i;:::-;661:158;;:::o;711:217:14:-;855:5:11;;;;;;;;;;;841:19;;:10;:19;;;820:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;841:19:14;820:18;;:40;;;;;;;;;;;;;;;;;;875:46;901:19;875:46;;;;;;;;;;;;;;;;;;;;;;711:217;:::o;118:29:11:-;;;;;;;;;;;;;:::o;179:18:12:-;;;;;;;;;;;;;:::o;1686:108:2:-;1743:7;1769:9;:18;1779:7;1769:18;;;;;;;;;;;;;;;;1762:25;;1686:108;;;:::o;485:300:11:-;566:14;;;;;;;;;;;552:28;;:10;:28;;;531:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;674:35;687:5;;;;;;;;;;;694:14;;;;;;;;;;;674:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;727:14;;;;;;;;;;;719:5;;:22;;;;;;;;;;;;;;;;;;776:1;751:14;;:27;;;;;;;;;;;;;;;;;;485:300::o;92:20::-;;;;;;;;;;;;;:::o;145:28:12:-;;;;:::o;867:85:3:-;906:13;938:7;931:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;867:85;:::o;986:156:15:-;1150:6:12;;;;;;;;;;;1149:7;1128:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1054:18:14;;;;;;;;;;;1040:32;;:10;:32;;;1019:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1113:22:15;1119:7;1128:6;1113:5;:22::i;:::-;986:156;;:::o;4692:370:2:-;4793:4;4813:221;4835:12;:10;:12::i;:::-;4861:7;4882:142;4938:15;4882:142;;;;;;;;;;;;;;;;;:11;:25;4894:12;:10;:12::i;:::-;4882:25;;;;;;;;;;;;;;;:34;4908:7;4882:34;;;;;;;;;;;;;;;;:38;;:142;;;;;:::i;:::-;4813:8;:221::i;:::-;5051:4;5044:11;;4692:370;;;;:::o;1997:155::-;2066:4;2082:42;2092:12;:10;:12::i;:::-;2106:9;2117:6;2082:9;:42::i;:::-;2141:4;2134:11;;1997:155;;;;:::o;262:33:14:-;;;;;;;;;;;;;:::o;2210:160:2:-;2306:7;2336:11;:18;2348:5;2336:18;;;;;;;;;;;;;;;:27;2355:7;2336:27;;;;;;;;;;;;;;;;2329:34;;2210:160;;;;:::o;787:96:0:-;832:15;866:10;859:17;;787:96;:::o;7756:362:2:-;7896:1;7879:19;;:5;:19;;;;7871:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7976:1;7957:21;;:7;:21;;;;7949:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8058:6;8028:11;:18;8040:5;8028:18;;;;;;;;;;;;;;;:27;8047:7;8028:27;;;;;;;;;;;;;;;:36;;;;8095:7;8079:32;;8088:5;8079:32;;;8104:6;8079:32;;;;;;;;;;;;;;;;;;7756:362;;;:::o;5536:528::-;5681:1;5663:20;;:6;:20;;;;5655:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5764:1;5743:23;;:9;:23;;;;5735:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5837:105;5872:6;5837:105;;;;;;;;;;;;;;;;;:9;:17;5847:6;5837:17;;;;;;;;;;;;;;;;:21;;:105;;;;;:::i;:::-;5817:9;:17;5827:6;5817:17;;;;;;;;;;;;;;;:125;;;;5975:32;6000:6;5975:9;:20;5985:9;5975:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5952:9;:20;5962:9;5952:20;;;;;;;;;;;;;;;:55;;;;6039:9;6022:35;;6031:6;6022:35;;;6050:6;6022:35;;;;;;;;;;;;;;;;;;5536:528;;;:::o;1732:217:13:-;1848:7;1880:1;1875;:6;;1883:12;1867:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1867:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:9;1922:1;1918;:5;1906:17;;1941:1;1934:8;;;1732:217;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6334:302:2:-;6428:1;6409:21;;:7;:21;;;;6401:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6492:24;6509:6;6492:12;;:16;;:24;;;;:::i;:::-;6477:12;:39;;;;6547:30;6570:6;6547:9;:18;6557:7;6547:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6526:9;:18;6536:7;6526:18;;;;;;;;;;;;;;;:51;;;;6613:7;6592:37;;6609:1;6592:37;;;6622:6;6592:37;;;;;;;;;;;;;;;;;;6334:302;;:::o;6955:376::-;7049:1;7030:21;;:7;:21;;;;7022:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7121:102;7157:6;7121:102;;;;;;;;;;;;;;;;;:9;:18;7131:7;7121:18;;;;;;;;;;;;;;;;:22;;:102;;;;;:::i;:::-;7100:9;:18;7110:7;7100:18;;;;;;;;;;;;;;;:123;;;;7248:24;7265:6;7248:12;;:16;;:24;;;;:::i;:::-;7233:12;:39;;;;7313:1;7287:37;;7296:7;7287:37;;;7317:6;7287:37;;;;;;;;;;;;;;;;;;6955:376;;:::o;1274:134:13:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o
Swarm Source
bzzr://08047952d8bd3e2245672d512d79e663292c7728a3c366334773e3c6fc59d7a3
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.