ERC-20
Overview
Max Total Supply
5,096,107 GDAO
Holders
113
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,234.557915642087830941 GDAOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GDAODelegator
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity Multiple files format)
pragma solidity 0.5.17; import "./GDAODelegate.sol"; contract GDAODelegator is GDAOTokenInterface, GDAODelegatorInterface { /** * @notice Construct a new GDAO * @param name_ ERC-20 name of this token * @param symbol_ ERC-20 symbol of this token * @param decimals_ ERC-20 decimal precision of this token * @param initSupply_ Initial token amount * @param implementation_ The address of the implementation the contract delegates to * @param becomeImplementationData The encoded args for becomeImplementation */ constructor( string memory name_, string memory symbol_, uint8 decimals_, uint256 initSupply_, address implementation_, bytes memory becomeImplementationData ) public { // Creator of the contract is gov during initialization gov = msg.sender; // First delegate gets to initialize the delegator (i.e. storage contract) delegateTo( implementation_, abi.encodeWithSignature( "initialize(string,string,uint8,address,uint256)", name_, symbol_, decimals_, msg.sender, initSupply_ ) ); // New implementations always get set via the settor (post-initialize) _setImplementation(implementation_, false, becomeImplementationData); } /** * @notice Called by the gov to update the implementation of the delegator * @param implementation_ The address of the new implementation for delegation * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation */ function _setImplementation(address implementation_, bool allowResign, bytes memory becomeImplementationData) public { require(msg.sender == gov, "GDAODelegator::_setImplementation: Caller must be gov"); if (allowResign) { delegateToImplementation(abi.encodeWithSignature("_resignImplementation()")); } address oldImplementation = implementation; implementation = implementation_; delegateToImplementation(abi.encodeWithSignature("_becomeImplementation(bytes)", becomeImplementationData)); emit NewImplementation(oldImplementation, implementation); } /** * @notice Sender supplies assets into the market and receives cTokens in exchange * @dev Accrues interest whether or not the operation succeeds, unless reverted * @param mintAmount The amount of the underlying asset to supply * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) */ function mint(address to, uint256 mintAmount) external returns (bool) { to; mintAmount; // Shh delegateAndReturn(); } /** * @notice Burns tokens, decreasing totalSupply, and a users balance. */ function burn(uint256 amount) external returns (bool) { amount; delegateAndReturn(); } /** * @notice Transfer `amount` tokens from `msg.sender` to `dst` * @param dst The address of the destination account * @param amount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transfer(address dst, uint256 amount) external returns (bool) { dst; amount; // Shh delegateAndReturn(); } /** * @notice Transfer `amount` tokens from `src` to `dst` * @param src The address of the source account * @param dst The address of the destination account * @param amount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transferFrom( address src, address dst, uint256 amount ) external returns (bool) { src; dst; amount; // Shh delegateAndReturn(); } /** * @notice Approve `spender` to transfer up to `amount` from `src` * @dev This will overwrite the approval amount for `spender` * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) * @param spender The address of the account which may transfer tokens * @param amount The number of tokens that are approved (-1 means infinite) * @return Whether or not the approval succeeded */ function approve( address spender, uint256 amount ) external returns (bool) { spender; amount; // Shh delegateAndReturn(); } /** * @dev Increase the amount of tokens that an owner has allowed to a spender. * This method should be used instead of approve() to avoid the double approval vulnerability * described above. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance( address spender, uint256 addedValue ) external returns (bool) { spender; addedValue; // Shh delegateAndReturn(); } function totalSupply() external view returns (uint256) { delegateToViewAndReturn(); } function cap() external view returns (uint256) { delegateToViewAndReturn(); } function setCap(uint256 ncap) external returns (bool) { ncap; delegateAndReturn(); } /** * Add minter * @param minter minter */ function addMinter(address minter) external returns (bool) { minter; delegateAndReturn(); } /** * Remove minter * @param minter minter */ function removeMinter(address minter) external returns (bool) { minter; delegateAndReturn(); } function minterCount() external view returns (uint256) { delegateToViewAndReturn(); } function getMinter(uint256 idx) external view returns (address) { idx; delegateToViewAndReturn(); } /** * @dev Decrease the amount of tokens that an owner has allowed to a spender. * * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance( address spender, uint256 subtractedValue ) external returns (bool) { spender; subtractedValue; // Shh delegateAndReturn(); } /** * @notice Get the current allowance from `owner` for `spender` * @param owner The address of the account which owns the tokens to be spent * @param spender The address of the account which may transfer tokens * @return The number of tokens allowed to be spent (-1 means infinite) */ function allowance( address owner, address spender ) external view returns (uint256) { owner; spender; // Shh delegateToViewAndReturn(); } /** * @notice Get the current allowance from `owner` for `spender` * @param delegator The address of the account which has designated a delegate * @return Address of delegatee */ function delegates( address delegator ) external view returns (address) { delegator; // Shh delegateToViewAndReturn(); } /** * @notice Get the token balance of the `owner` * @param owner The address of the account to query * @return The number of tokens owned by `owner` */ function balanceOf(address owner) external view returns (uint256) { owner; // Shh delegateToViewAndReturn(); } /*** Gov Functions ***/ /** * @notice Begins transfer of gov rights. The newPendingGov must call `_acceptGov` to finalize the transfer. * @dev Gov function to begin change of gov. The newPendingGov must call `_acceptGov` to finalize the transfer. * @param newPendingGov New pending gov. */ function _setPendingGov(address newPendingGov) external { newPendingGov; // Shh delegateAndReturn(); } /** * @notice Accepts transfer of gov rights. msg.sender must be pendingGov * @dev Gov function for pending gov to accept role and update gov * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details) */ function _acceptGov() external { delegateAndReturn(); } function getPriorVotes(address account, uint blockNumber) external view returns (uint256) { account; blockNumber; delegateToViewAndReturn(); } function delegateBySig( address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s ) external { delegatee; nonce; expiry; v; r; s; delegateAndReturn(); } function delegate(address delegatee) external { delegatee; delegateAndReturn(); } function getCurrentVotes(address account) external view returns (uint256) { account; delegateToViewAndReturn(); } /** * @notice Internal method to delegate execution to another contract * @dev It returns to the external caller whatever the implementation returns or forwards reverts * @param callee The contract to delegatecall * @param data The raw data to delegatecall * @return The returned bytes from the delegatecall */ function delegateTo(address callee, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returnData) = callee.delegatecall(data); assembly { if eq(success, 0) { revert(add(returnData, 0x20), returndatasize) } } return returnData; } /** * @notice Delegates execution to the implementation contract * @dev It returns to the external caller whatever the implementation returns or forwards reverts * @param data The raw data to delegatecall * @return The returned bytes from the delegatecall */ function delegateToImplementation(bytes memory data) public returns (bytes memory) { return delegateTo(implementation, data); } /** * @notice Delegates execution to an implementation contract * @dev It returns to the external caller whatever the implementation returns or forwards reverts * There are an additional 2 prefix uints from the wrapper returndata, which we ignore since we make an extra hop. * @param data The raw data to delegatecall * @return The returned bytes from the delegatecall */ function delegateToViewImplementation(bytes memory data) public view returns (bytes memory) { (bool success, bytes memory returnData) = address(this).staticcall(abi.encodeWithSignature("delegateToImplementation(bytes)", data)); assembly { if eq(success, 0) { revert(add(returnData, 0x20), returndatasize) } } return abi.decode(returnData, (bytes)); } function delegateToViewAndReturn() private view returns (bytes memory) { (bool success, ) = address(this).staticcall(abi.encodeWithSignature("delegateToImplementation(bytes)", msg.data)); assembly { let free_mem_ptr := mload(0x40) returndatacopy(free_mem_ptr, 0, returndatasize) switch success case 0 { revert(free_mem_ptr, returndatasize) } default { return(add(free_mem_ptr, 0x40), returndatasize) } } } function delegateAndReturn() private returns (bytes memory) { (bool success, ) = implementation.delegatecall(msg.data); assembly { let free_mem_ptr := mload(0x40) returndatacopy(free_mem_ptr, 0, returndatasize) switch success case 0 { revert(free_mem_ptr, returndatasize) } default { return(free_mem_ptr, returndatasize) } } } /** * @notice Delegates execution to an implementation contract * @dev It returns to the external caller whatever the implementation returns or forwards reverts */ function () external payable { require(msg.value == 0,"GDAODelegator:fallback: cannot send value to fallback"); // delegate all other functions to current implementation delegateAndReturn(); } }
pragma solidity 0.5.17; contract GDAOGovernanceStorage { /// @notice A record of each accounts delegate mapping (address => address) internal _delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint256 votes; } /// @notice A record of votes checkpoints for each account, by index mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; /// @notice The number of checkpoints for each account mapping (address => uint32) public numCheckpoints; /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the delegation struct used by the contract bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); /// @notice A record of states for signing / validating signatures mapping (address => uint) public nonces; } // SPDX-License-Identifier: MIT /** * @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. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // Storage for a GDAO token contract GDAOTokenStorage { using SafeMath for uint256; /** * @dev Guard variable for re-entrancy checks. Not currently used */ bool internal _notEntered; /** * @notice EIP-20 token name for this token */ string public name; /** * @notice EIP-20 token symbol for this token */ string public symbol; /** * @notice EIP-20 token decimals for this token */ uint8 public decimals; /** * @notice Governor for this contract */ address public gov; /** * @notice Pending governance for this contract */ address public pendingGov; /** * @notice Total supply of GDAOs */ uint256 internal _totalSupply; uint256 internal _cap; address[] internal _minters; mapping (address => uint256) internal _minterIndex; mapping (address => uint256) internal _gdaoBalances; mapping (address => mapping (address => uint256)) internal _allowedFragments; } contract GDAOTokenInterface is GDAOTokenStorage, GDAOGovernanceStorage { /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /*** Gov Events ***/ /** * @notice Event emitted when pendingGov is changed */ event NewPendingGov(address oldPendingGov, address newPendingGov); /** * @notice Event emitted when gov is changed */ event NewGov(address oldGov, address newGov); /* - ERC20 Events - */ /** * @notice EIP20 Transfer event */ event Transfer(address indexed from, address indexed to, uint amount); /** * @notice EIP20 Approval event */ event Approval(address indexed owner, address indexed spender, uint amount); /* - Extra Events - */ /** * @notice Tokens minted event */ event Mint(address to, uint256 amount); event AddMinter(address minter); event RemoveMinter(address minter); /** * @notice Tokens burned event */ event Burn(address who, uint256 amount); event NewCap(uint256 oldCap, uint256 newCap); // Public functions function totalSupply() external view returns (uint256); function transfer(address to, uint256 value) external returns(bool); function transferFrom(address from, address to, uint256 value) external returns(bool); function balanceOf(address who) external view returns(uint256); function allowance(address owner_, address spender) external view returns(uint256); function approve(address spender, uint256 value) external returns (bool); function increaseAllowance(address spender, uint256 addedValue) external returns (bool); function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); function burn(uint256 amount) external returns (bool); function cap() external view returns (uint256); function minterCount() external view returns (uint256); function getMinter(uint256 idx) external view returns (address); /* - Governance Functions - */ function getPriorVotes(address account, uint blockNumber) external view returns (uint256); function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) external; function delegate(address delegatee) external; function delegates(address delegator) external view returns (address); function getCurrentVotes(address account) external view returns (uint256); /* - Permissioned/Governance functions - */ function mint(address to, uint256 amount) external returns (bool); function _setPendingGov(address pendingGov_) external; function _acceptGov() external; function setCap(uint256 ncap) external returns (bool); function addMinter(address minter) external returns (bool); function removeMinter(address minter) external returns (bool); } contract GDAOGovernanceToken is GDAOTokenInterface { /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegator The address to get delegatee for */ function delegates(address delegator) external view returns (address) { return _delegates[delegator]; } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegatee The address to delegate votes to */ function delegate(address delegatee) external { return _delegate(msg.sender, delegatee); } /** * @notice Delegates votes from signatory to `delegatee` * @param delegatee The address to delegate votes to * @param nonce The contract state required to match the signature * @param expiry The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function delegateBySig( address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s ) external { bytes32 domainSeparator = keccak256( abi.encode( DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this) ) ); bytes32 structHash = keccak256( abi.encode( DELEGATION_TYPEHASH, delegatee, nonce, expiry ) ); bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", domainSeparator, structHash ) ); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "GDAO::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "GDAO::delegateBySig: invalid nonce"); require(now <= expiry, "GDAO::delegateBySig: signature expired"); return _delegate(signatory, delegatee); } /** * @notice Gets the current votes balance for `account` * @param account The address to get votes balance * @return The number of current votes for `account` */ function getCurrentVotes(address account) external view returns (uint256) { uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } /** * @notice Determine the prior number of votes for an account as of a block number * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. * @param account The address of the account to check * @param blockNumber The block number to get the vote balance at * @return The number of votes the account had as of the given block */ function getPriorVotes(address account, uint blockNumber) external view returns (uint256) { require(blockNumber < block.number, "GDAO::getPriorVotes: not yet determined"); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) { return 0; } // First check most recent balance if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { return checkpoints[account][nCheckpoints - 1].votes; } // Next check implicit zero balance if (checkpoints[account][0].fromBlock > blockNumber) { return 0; } uint32 lower = 0; uint32 upper = nCheckpoints - 1; while (upper > lower) { uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow Checkpoint memory cp = checkpoints[account][center]; if (cp.fromBlock == blockNumber) { return cp.votes; } else if (cp.fromBlock < blockNumber) { lower = center; } else { upper = center - 1; } } return checkpoints[account][lower].votes; } function _delegate(address delegator, address delegatee) internal { address currentDelegate = _delegates[delegator]; uint256 delegatorBalance = _gdaoBalances[delegator]; // balance of underlying GDAOs; _delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { // decrease old representative uint32 srcRepNum = numCheckpoints[srcRep]; uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint256 srcRepNew = srcRepOld.sub(amount); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { // increase new representative uint32 dstRepNum = numCheckpoints[dstRep]; uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint256 dstRepNew = dstRepOld.add(amount); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } function _writeCheckpoint( address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes ) internal { uint32 blockNumber = safe32(block.number, "GDAO::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function getChainId() internal pure returns (uint) { uint256 chainId; assembly { chainId := chainid() } return chainId; } } contract GDAOToken is GDAOGovernanceToken { // Modifiers modifier onlyGov() { require(msg.sender == gov); _; } modifier onlyMinter() { require(_minterIndex[msg.sender] != 0 || msg.sender == gov, "not minter"); _; } modifier validRecipient(address to) { require(to != address(0x0)); require(to != address(this)); _; } function initialize( string memory name_, string memory symbol_, uint8 decimals_ ) public { name = name_; symbol = symbol_; decimals = decimals_; _cap = 10000000 * 10 ** uint256(decimals_); } /** * @notice Computes the current totalSupply */ function totalSupply() external view returns (uint256) { return _totalSupply; } function cap() external view returns (uint256) { return _cap; } function setCap(uint256 ncap) external onlyGov returns (bool) { require(ncap >= _totalSupply, "Invalid cap"); uint256 oldCap = _cap; _cap = ncap; emit NewCap(oldCap, ncap); return true; } /** * Add minter * @param minter minter */ function addMinter(address minter) external onlyGov returns (bool) { if (_minterIndex[minter] != 0) { return false; } else { _minters.push(minter); _minterIndex[minter] = _minters.length; emit AddMinter(minter); return true; } } /** * Remove minter * @param minter minter */ function removeMinter(address minter) external onlyGov returns (bool) { uint256 minterIdx = _minterIndex[minter]; if (minterIdx != 0) { uint256 toDelIdx = minterIdx - 1; uint256 lastIdx = _minters.length - 1; address lastMinter = _minters[lastIdx]; _minters[toDelIdx] = lastMinter; _minterIndex[lastMinter] = toDelIdx + 1; _minters.pop(); delete _minterIndex[minter]; emit RemoveMinter(minter); return true; } else { return false; } } function minterCount() external view returns (uint256) { return _minters.length; } function getMinter(uint256 idx) external view returns (address) { return _minters[idx]; } /** * @notice Mints new tokens, increasing totalSupply, and a users balance. * @dev Limited to onlyMinter modifier */ function mint(address to, uint256 amount) external onlyMinter returns (bool) { _mint(to, amount); return true; } function _mint(address to, uint256 amount) internal { require(to != address(0), "Mint to the zero address"); // increase totalSupply _totalSupply = _totalSupply.add(amount); require(_totalSupply <= _cap, "Cap exceeded"); // add balance _gdaoBalances[to] = _gdaoBalances[to].add(amount); emit Transfer(address(0), to, amount); // add delegates to the minter _moveDelegates(address(0), _delegates[to], amount); emit Mint(to, amount); } /** * @notice Burns tokens, decreasing totalSupply, and a users balance. */ function burn(uint256 amount) external returns (bool) { _burn(msg.sender, amount); return true; } function _burn(address who, uint256 amount) internal { // decrease totalSupply _totalSupply = _totalSupply.sub(amount); // decrease cap _cap = _cap.sub(amount); // sub balance _gdaoBalances[who] = _gdaoBalances[who].sub(amount); emit Transfer(who, address(0), amount); // sub delegates _moveDelegates(_delegates[who], address(0), amount); emit Burn(who, amount); } /* - ERC20 functionality - */ /** * @dev Transfer tokens to a specified address. * @param to The address to transfer to. * @param value The amount to be transferred. * @return True on success, false otherwise. */ function transfer(address to, uint256 value) external validRecipient(to) returns (bool) { // sub from balance of sender _gdaoBalances[msg.sender] = _gdaoBalances[msg.sender].sub(value); // add to balance of receiver _gdaoBalances[to] = _gdaoBalances[to].add(value); emit Transfer(msg.sender, to, value); _moveDelegates(_delegates[msg.sender], _delegates[to], value); return true; } /** * @dev Transfer tokens from one address to another. * @param from The address you want to send tokens from. * @param to The address you want to transfer to. * @param value The amount of tokens to be transferred. */ function transferFrom(address from, address to, uint256 value) external validRecipient(to) returns (bool) { // decrease allowance _allowedFragments[from][msg.sender] = _allowedFragments[from][msg.sender].sub(value); // sub from from _gdaoBalances[from] = _gdaoBalances[from].sub(value); _gdaoBalances[to] = _gdaoBalances[to].add(value); emit Transfer(from, to, value); _moveDelegates(_delegates[from], _delegates[to], value); return true; } /** * @param who The address to query. * @return The balance of the specified address. */ function balanceOf(address who) external view returns (uint256) { return _gdaoBalances[who]; } /** * @dev Function to check the amount of tokens that an owner has allowed to a spender. * @param owner_ The address which owns the funds. * @param spender The address which will spend the funds. * @return The number of tokens still available for the spender. */ function allowance(address owner_, address spender) external view returns (uint256) { return _allowedFragments[owner_][spender]; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of * msg.sender. This method is included for ERC20 compatibility. * increaseAllowance and decreaseAllowance should be used instead. * Changing an allowance with this method brings the risk that someone may transfer both * the old and the new allowance - if they are both greater than zero - if a transfer * transaction is mined before the later approve() call is mined. * * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) external returns (bool) { _allowedFragments[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /** * @dev Increase the amount of tokens that an owner has allowed to a spender. * This method should be used instead of approve() to avoid the double approval vulnerability * described above. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][spender].add(addedValue); emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]); return true; } /** * @dev Decrease the amount of tokens that an owner has allowed to a spender. * * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 oldValue = _allowedFragments[msg.sender][spender]; if (subtractedValue >= oldValue) { _allowedFragments[msg.sender][spender] = 0; } else { _allowedFragments[msg.sender][spender] = oldValue.sub(subtractedValue); } emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]); return true; } /* - Governance Functions - */ /** @notice sets the pendingGov * @param pendingGov_ The address of the governor to use for authentication. */ function _setPendingGov(address pendingGov_) external onlyGov { address oldPendingGov = pendingGov; pendingGov = pendingGov_; emit NewPendingGov(oldPendingGov, pendingGov_); } /** @notice lets msg.sender accept governance * */ function _acceptGov() external { require(msg.sender == pendingGov, "!pending"); address oldGov = gov; gov = pendingGov; pendingGov = address(0); emit NewGov(oldGov, gov); } } contract GDAO is GDAOToken { /** * @notice Initialize the new money market * @param name_ ERC-20 name of this token * @param symbol_ ERC-20 symbol of this token * @param decimals_ ERC-20 decimal precision of this token */ function initialize( string memory name_, string memory symbol_, uint8 decimals_, address initial_owner, uint256 initSupply_ ) public { require(initSupply_ >= 0, "0 init supply"); super.initialize(name_, symbol_, decimals_); _mint(initial_owner, initSupply_); } } contract GDAODelegationStorage { /** * @notice Implementation address for this contract */ address public implementation; } contract GDAODelegatorInterface is GDAODelegationStorage { /** * @notice Emitted when implementation is changed */ event NewImplementation(address oldImplementation, address newImplementation); /** * @notice Called by the gov to update the implementation of the delegator * @param implementation_ The address of the new implementation for delegation * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation */ function _setImplementation(address implementation_, bool allowResign, bytes memory becomeImplementationData) public; } contract GDAODelegateInterface is GDAODelegationStorage { /** * @notice Called by the delegator on a delegate to initialize it for duty * @dev Should revert if any issues arise which make it unfit for delegation * @param data The encoded bytes data for any initialization */ function _becomeImplementation(bytes memory data) public; /** * @notice Called by the delegator on a delegate to forfeit its responsibility */ function _resignImplementation() public; } contract GDAODelegate is GDAO, GDAODelegateInterface { /** * @notice Construct an empty delegate */ constructor() public {} /** * @notice Called by the delegator on a delegate to initialize it for duty * @param data The encoded bytes data for any initialization */ function _becomeImplementation(bytes memory data) public { // Shh -- currently unused data; // Shh -- we don't ever want this hook to be marked pure if (false) { implementation = address(0); } require(msg.sender == gov, "only the gov may call _becomeImplementation"); } /** * @notice Called by the delegator on a delegate to forfeit its responsibility */ function _resignImplementation() public { // Shh -- we don't ever want this hook to be marked pure if (false) { implementation = address(0); } require(msg.sender == gov, "only the gov may call _resignImplementation"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"initSupply_","type":"uint256"},{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"}],"name":"AddMinter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCap","type":"uint256"}],"name":"NewCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldGov","type":"address"},{"indexed":false,"internalType":"address","name":"newGov","type":"address"}],"name":"NewGov","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingGov","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingGov","type":"address"}],"name":"NewPendingGov","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"}],"name":"RemoveMinter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"_acceptGov","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"name":"_setImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingGov","type":"address"}],"name":"_setPendingGov","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"payable":false,"stateMutability":"view","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":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"delegateToImplementation","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"delegateToViewImplementation","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"getMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minterCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingGov","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"ncap","type":"uint256"}],"name":"setCap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"dst","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":"src","type":"address"},{"internalType":"address","name":"dst","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
60806040523480156200001157600080fd5b5060405162002a8938038062002a89833981810160405260c08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291908051906020019092919080516040519392919084640100000000821115620001f057600080fd5b838201915060208201858111156200020757600080fd5b82518660018202830111640100000000821117156200022557600080fd5b8083526020830192505050908051906020019080838360005b838110156200025b5780820151818401526020810190506200023e565b50505050905090810190601f168015620002895780820380516001836020036101000a031916815260200191505b5060405250505033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004928287878733886040516024018080602001806020018660ff1660ff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838103835288818151815260200191508051906020019080838360005b83811015620003685780820151818401526020810190506200034b565b50505050905090810190601f168015620003965780820380516001836020036101000a031916815260200191505b50838103825287818151815260200191508051906020019080838360005b83811015620003d1578082015181840152602081019050620003b4565b50505050905090810190601f168015620003ff5780820380516001836020036101000a031916815260200191505b509750505050505050506040516020818303038152906040527f6c945221000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050620004b360201b60201c565b50620004a7826000836200058e60201b60201c565b5050505050506200093d565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b60208310620005065780518252602082019150602081019050602083039250620004e1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811462000568576040519150601f19603f3d011682016040523d82523d6000602084013e6200056d565b606091505b5091509150600082141562000583573d60208201fd5b809250505092915050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462000636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018062002a546035913960400191505060405180910390fd5b8115620006d257620006d06040516024016040516020818303038152906040527f153ab505000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506200090060201b60201c565b505b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000840826040516024018080602001828103825283818151815260200191508051906020019080838360005b838110156200078457808201518184015260208101905062000767565b50505050905090810190601f168015620007b25780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040527f56e67728000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506200090060201b60201c565b507fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a81600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150505050565b606062000936600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683620004b360201b60201c565b9050919050565b612107806200094d6000396000f3fe60806040526004361061021a5760003560e01c8063587cde1e1161012357806395d89b41116100ab578063b4b5ea571161006f578063b4b5ea57146110af578063c3cda52014611114578063dd62ed3e1461119a578063e7a324dc1461121f578063f1127ed81461124a5761021a565b806395d89b4114610ea5578063983b2d5614610f355780639e46e33214610f9e578063a457c2d714610fc9578063a9059cbb1461103c5761021a565b80636fcfff45116100f25780636fcfff4514610caa57806370a0823114610d1b57806373f03dff14610d80578063782d6fe114610dd15780637ecebe0014610e405761021a565b8063587cde1e14610af65780635b7121f814610b875780635c19a95c14610c025780635c60da1b14610c535761021a565b8063313ce567116101a657806342966c681161017557806342966c68146108045780634487152f1461085757806347786d37146109985780634bda2e20146109eb578063555bcc4014610a025761021a565b8063313ce567146106c2578063355274ea146106f3578063395093511461071e57806340c10f19146107915761021a565b806318160ddd116101ed57806318160ddd1461051957806320606b701461054457806323b872dd1461056f57806325240810146106025780633092afd5146106595761021a565b806306fdde031461027e5780630933c1ed1461030e578063095ea7b31461044f57806312d43a51146104c2575b60003414610273576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120216035913960400191505060405180910390fd5b61027b6112d2565b50005b34801561028a57600080fd5b50610293611384565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d35780820151818401526020810190506102b8565b50505050905090810190601f1680156103005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031a57600080fd5b506103d46004803603602081101561033157600080fd5b810190808035906020019064010000000081111561034e57600080fd5b82018360208201111561036057600080fd5b8035906020019184600183028401116401000000008311171561038257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611422565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104145780820151818401526020810190506103f9565b50505050905090810190601f1680156104415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561045b57600080fd5b506104a86004803603604081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611457565b604051808215151515815260200191505060405180910390f35b3480156104ce57600080fd5b506104d7611468565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052557600080fd5b5061052e61148e565b6040518082815260200191505060405180910390f35b34801561055057600080fd5b5061055961149c565b6040518082815260200191505060405180910390f35b34801561057b57600080fd5b506105e86004803603606081101561059257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114b8565b604051808215151515815260200191505060405180910390f35b34801561060e57600080fd5b506106176114ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066557600080fd5b506106a86004803603602081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f0565b604051808215151515815260200191505060405180910390f35b3480156106ce57600080fd5b506106d7611500565b604051808260ff1660ff16815260200191505060405180910390f35b3480156106ff57600080fd5b50610708611513565b6040518082815260200191505060405180910390f35b34801561072a57600080fd5b506107776004803603604081101561074157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611521565b604051808215151515815260200191505060405180910390f35b34801561079d57600080fd5b506107ea600480360360408110156107b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611532565b604051808215151515815260200191505060405180910390f35b34801561081057600080fd5b5061083d6004803603602081101561082757600080fd5b8101908080359060200190929190505050611543565b604051808215151515815260200191505060405180910390f35b34801561086357600080fd5b5061091d6004803603602081101561087a57600080fd5b810190808035906020019064010000000081111561089757600080fd5b8201836020820111156108a957600080fd5b803590602001918460018302840111640100000000831117156108cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611553565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561095d578082015181840152602081019050610942565b50505050905090810190601f16801561098a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109a457600080fd5b506109d1600480360360208110156109bb57600080fd5b81019080803590602001909291905050506117e9565b604051808215151515815260200191505060405180910390f35b3480156109f757600080fd5b50610a006117f9565b005b348015610a0e57600080fd5b50610af460048036036060811015610a2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919080359060200190640100000000811115610a6e57600080fd5b820183602082011115610a8057600080fd5b80359060200191846001830284011164010000000083111715610aa257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611804565b005b348015610b0257600080fd5b50610b4560048036036020811015610b1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b9357600080fd5b50610bc060048036036020811015610baa57600080fd5b8101908080359060200190929190505050611b70565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c0e57600080fd5b50610c5160048036036020811015610c2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b80565b005b348015610c5f57600080fd5b50610c68611b8c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cb657600080fd5b50610cf960048036036020811015610ccd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb2565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b348015610d2757600080fd5b50610d6a60048036036020811015610d3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bd5565b6040518082815260200191505060405180910390f35b348015610d8c57600080fd5b50610dcf60048036036020811015610da357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be5565b005b348015610ddd57600080fd5b50610e2a60048036036040811015610df457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bf1565b6040518082815260200191505060405180910390f35b348015610e4c57600080fd5b50610e8f60048036036020811015610e6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c02565b6040518082815260200191505060405180910390f35b348015610eb157600080fd5b50610eba611c1a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610efa578082015181840152602081019050610edf565b50505050905090810190601f168015610f275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f4157600080fd5b50610f8460048036036020811015610f5857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cb8565b604051808215151515815260200191505060405180910390f35b348015610faa57600080fd5b50610fb3611cc8565b6040518082815260200191505060405180910390f35b348015610fd557600080fd5b5061102260048036036040811015610fec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cd6565b604051808215151515815260200191505060405180910390f35b34801561104857600080fd5b506110956004803603604081101561105f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ce7565b604051808215151515815260200191505060405180910390f35b3480156110bb57600080fd5b506110fe600480360360208110156110d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf8565b6040518082815260200191505060405180910390f35b34801561112057600080fd5b50611198600480360360c081101561113757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611d08565b005b3480156111a657600080fd5b50611209600480360360408110156111bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d19565b6040518082815260200191505060405180910390f35b34801561122b57600080fd5b50611234611d2a565b6040518082815260200191505060405180910390f35b34801561125657600080fd5b506112a96004803603604081101561126d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190505050611d46565b604051808363ffffffff1663ffffffff1681526020018281526020019250505060405180910390f35b60606000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600036604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114611362576040519150601f19603f3d011682016040523d82523d6000602084013e611367565b606091505b505090506040513d6000823e8160008114611380573d82f35b3d82fd5b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561141a5780601f106113ef5761010080835404028352916020019161141a565b820191906000526020600020905b8154815290600101906020018083116113fd57829003601f168201915b505050505081565b6060611450600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611d87565b9050919050565b60006114616112d2565b5092915050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611498611e5d565b5090565b6040518080612056604391396043019050604051809103902081565b60006114c26112d2565b509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114fa6112d2565b50919050565b600360009054906101000a900460ff1681565b600061151d611e5d565b5090565b600061152b6112d2565b5092915050565b600061153c6112d2565b5092915050565b600061154d6112d2565b50919050565b6060600060603073ffffffffffffffffffffffffffffffffffffffff16846040516024018080602001828103825283818151815260200191508051906020019080838360005b838110156115b4578082015181840152602081019050611599565b50505050905090810190601f1680156115e15780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040527f0933c1ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106116965780518252602082019150602081019050602083039250611673565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146116f6576040519150601f19603f3d011682016040523d82523d6000602084013e6116fb565b606091505b50915091506000821415611710573d60208201fd5b80806020019051602081101561172557600080fd5b810190808051604051939291908464010000000082111561174557600080fd5b8382019150602082018581111561175b57600080fd5b825186600182028301116401000000008211171561177857600080fd5b8083526020830192505050908051906020019080838360005b838110156117ac578082015181840152602081019050611791565b50505050905090810190601f1680156117d95780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b60006117f36112d2565b50919050565b6118016112d2565b50565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180611fec6035913960400191505060405180910390fd5b811561193d5761193b6040516024016040516020818303038152906040527f153ab505000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611422565b505b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611aa0826040516024018080602001828103825283818151815260200191508051906020019080838360005b838110156119ec5780820151818401526020810190506119d1565b50505050905090810190601f168015611a195780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040527f56e67728000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611422565b507fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a81600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150505050565b6000611b6a611e5d565b50919050565b6000611b7a611e5d565b50919050565b611b886112d2565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915054906101000a900463ffffffff1681565b6000611bdf611e5d565b50919050565b611bed6112d2565b5050565b6000611bfb611e5d565b5092915050565b600e6020528060005260406000206000915090505481565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cb05780601f10611c8557610100808354040283529160200191611cb0565b820191906000526020600020905b815481529060010190602001808311611c9357829003601f168201915b505050505081565b6000611cc26112d2565b50919050565b6000611cd2611e5d565b5090565b6000611ce06112d2565b5092915050565b6000611cf16112d2565b5092915050565b6000611d02611e5d565b50919050565b611d106112d2565b50505050505050565b6000611d23611e5d565b5092915050565b6040518080612099603a9139603a019050604051809103902081565b600c602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b60208310611dd85780518252602082019150602081019050602083039250611db5565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611e38576040519150601f19603f3d011682016040523d82523d6000602084013e611e3d565b606091505b50915091506000821415611e52573d60208201fd5b809250505092915050565b606060003073ffffffffffffffffffffffffffffffffffffffff1660003660405160240180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040527f0933c1ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611f665780518252602082019150602081019050602083039250611f43565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611fc6576040519150601f19603f3d011682016040523d82523d6000602084013e611fcb565b606091505b505090506040513d6000823e8160008114611fe7573d60408301f35b3d82fdfe4744414f44656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d75737420626520676f764744414f44656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636b454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e74726163742944656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a72315820a9cc54c79ff93d6cb4ba4e04a5e110656e5fd4b969812268a1049bb4b205147164736f6c634300051100324744414f44656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d75737420626520676f7600000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8cc8230e3192dbc2513e3134043bf5605b3db4c00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000011476f6c66662e66696e616e63652044414f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044744414f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061021a5760003560e01c8063587cde1e1161012357806395d89b41116100ab578063b4b5ea571161006f578063b4b5ea57146110af578063c3cda52014611114578063dd62ed3e1461119a578063e7a324dc1461121f578063f1127ed81461124a5761021a565b806395d89b4114610ea5578063983b2d5614610f355780639e46e33214610f9e578063a457c2d714610fc9578063a9059cbb1461103c5761021a565b80636fcfff45116100f25780636fcfff4514610caa57806370a0823114610d1b57806373f03dff14610d80578063782d6fe114610dd15780637ecebe0014610e405761021a565b8063587cde1e14610af65780635b7121f814610b875780635c19a95c14610c025780635c60da1b14610c535761021a565b8063313ce567116101a657806342966c681161017557806342966c68146108045780634487152f1461085757806347786d37146109985780634bda2e20146109eb578063555bcc4014610a025761021a565b8063313ce567146106c2578063355274ea146106f3578063395093511461071e57806340c10f19146107915761021a565b806318160ddd116101ed57806318160ddd1461051957806320606b701461054457806323b872dd1461056f57806325240810146106025780633092afd5146106595761021a565b806306fdde031461027e5780630933c1ed1461030e578063095ea7b31461044f57806312d43a51146104c2575b60003414610273576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120216035913960400191505060405180910390fd5b61027b6112d2565b50005b34801561028a57600080fd5b50610293611384565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d35780820151818401526020810190506102b8565b50505050905090810190601f1680156103005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031a57600080fd5b506103d46004803603602081101561033157600080fd5b810190808035906020019064010000000081111561034e57600080fd5b82018360208201111561036057600080fd5b8035906020019184600183028401116401000000008311171561038257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611422565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104145780820151818401526020810190506103f9565b50505050905090810190601f1680156104415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561045b57600080fd5b506104a86004803603604081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611457565b604051808215151515815260200191505060405180910390f35b3480156104ce57600080fd5b506104d7611468565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052557600080fd5b5061052e61148e565b6040518082815260200191505060405180910390f35b34801561055057600080fd5b5061055961149c565b6040518082815260200191505060405180910390f35b34801561057b57600080fd5b506105e86004803603606081101561059257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114b8565b604051808215151515815260200191505060405180910390f35b34801561060e57600080fd5b506106176114ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066557600080fd5b506106a86004803603602081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f0565b604051808215151515815260200191505060405180910390f35b3480156106ce57600080fd5b506106d7611500565b604051808260ff1660ff16815260200191505060405180910390f35b3480156106ff57600080fd5b50610708611513565b6040518082815260200191505060405180910390f35b34801561072a57600080fd5b506107776004803603604081101561074157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611521565b604051808215151515815260200191505060405180910390f35b34801561079d57600080fd5b506107ea600480360360408110156107b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611532565b604051808215151515815260200191505060405180910390f35b34801561081057600080fd5b5061083d6004803603602081101561082757600080fd5b8101908080359060200190929190505050611543565b604051808215151515815260200191505060405180910390f35b34801561086357600080fd5b5061091d6004803603602081101561087a57600080fd5b810190808035906020019064010000000081111561089757600080fd5b8201836020820111156108a957600080fd5b803590602001918460018302840111640100000000831117156108cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611553565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561095d578082015181840152602081019050610942565b50505050905090810190601f16801561098a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109a457600080fd5b506109d1600480360360208110156109bb57600080fd5b81019080803590602001909291905050506117e9565b604051808215151515815260200191505060405180910390f35b3480156109f757600080fd5b50610a006117f9565b005b348015610a0e57600080fd5b50610af460048036036060811015610a2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919080359060200190640100000000811115610a6e57600080fd5b820183602082011115610a8057600080fd5b80359060200191846001830284011164010000000083111715610aa257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611804565b005b348015610b0257600080fd5b50610b4560048036036020811015610b1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b9357600080fd5b50610bc060048036036020811015610baa57600080fd5b8101908080359060200190929190505050611b70565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c0e57600080fd5b50610c5160048036036020811015610c2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b80565b005b348015610c5f57600080fd5b50610c68611b8c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cb657600080fd5b50610cf960048036036020811015610ccd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb2565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b348015610d2757600080fd5b50610d6a60048036036020811015610d3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bd5565b6040518082815260200191505060405180910390f35b348015610d8c57600080fd5b50610dcf60048036036020811015610da357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be5565b005b348015610ddd57600080fd5b50610e2a60048036036040811015610df457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bf1565b6040518082815260200191505060405180910390f35b348015610e4c57600080fd5b50610e8f60048036036020811015610e6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c02565b6040518082815260200191505060405180910390f35b348015610eb157600080fd5b50610eba611c1a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610efa578082015181840152602081019050610edf565b50505050905090810190601f168015610f275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f4157600080fd5b50610f8460048036036020811015610f5857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cb8565b604051808215151515815260200191505060405180910390f35b348015610faa57600080fd5b50610fb3611cc8565b6040518082815260200191505060405180910390f35b348015610fd557600080fd5b5061102260048036036040811015610fec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cd6565b604051808215151515815260200191505060405180910390f35b34801561104857600080fd5b506110956004803603604081101561105f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ce7565b604051808215151515815260200191505060405180910390f35b3480156110bb57600080fd5b506110fe600480360360208110156110d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf8565b6040518082815260200191505060405180910390f35b34801561112057600080fd5b50611198600480360360c081101561113757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611d08565b005b3480156111a657600080fd5b50611209600480360360408110156111bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d19565b6040518082815260200191505060405180910390f35b34801561122b57600080fd5b50611234611d2a565b6040518082815260200191505060405180910390f35b34801561125657600080fd5b506112a96004803603604081101561126d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190505050611d46565b604051808363ffffffff1663ffffffff1681526020018281526020019250505060405180910390f35b60606000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600036604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114611362576040519150601f19603f3d011682016040523d82523d6000602084013e611367565b606091505b505090506040513d6000823e8160008114611380573d82f35b3d82fd5b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561141a5780601f106113ef5761010080835404028352916020019161141a565b820191906000526020600020905b8154815290600101906020018083116113fd57829003601f168201915b505050505081565b6060611450600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611d87565b9050919050565b60006114616112d2565b5092915050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611498611e5d565b5090565b6040518080612056604391396043019050604051809103902081565b60006114c26112d2565b509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114fa6112d2565b50919050565b600360009054906101000a900460ff1681565b600061151d611e5d565b5090565b600061152b6112d2565b5092915050565b600061153c6112d2565b5092915050565b600061154d6112d2565b50919050565b6060600060603073ffffffffffffffffffffffffffffffffffffffff16846040516024018080602001828103825283818151815260200191508051906020019080838360005b838110156115b4578082015181840152602081019050611599565b50505050905090810190601f1680156115e15780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040527f0933c1ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106116965780518252602082019150602081019050602083039250611673565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146116f6576040519150601f19603f3d011682016040523d82523d6000602084013e6116fb565b606091505b50915091506000821415611710573d60208201fd5b80806020019051602081101561172557600080fd5b810190808051604051939291908464010000000082111561174557600080fd5b8382019150602082018581111561175b57600080fd5b825186600182028301116401000000008211171561177857600080fd5b8083526020830192505050908051906020019080838360005b838110156117ac578082015181840152602081019050611791565b50505050905090810190601f1680156117d95780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b60006117f36112d2565b50919050565b6118016112d2565b50565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180611fec6035913960400191505060405180910390fd5b811561193d5761193b6040516024016040516020818303038152906040527f153ab505000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611422565b505b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611aa0826040516024018080602001828103825283818151815260200191508051906020019080838360005b838110156119ec5780820151818401526020810190506119d1565b50505050905090810190601f168015611a195780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040527f56e67728000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611422565b507fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a81600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150505050565b6000611b6a611e5d565b50919050565b6000611b7a611e5d565b50919050565b611b886112d2565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915054906101000a900463ffffffff1681565b6000611bdf611e5d565b50919050565b611bed6112d2565b5050565b6000611bfb611e5d565b5092915050565b600e6020528060005260406000206000915090505481565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cb05780601f10611c8557610100808354040283529160200191611cb0565b820191906000526020600020905b815481529060010190602001808311611c9357829003601f168201915b505050505081565b6000611cc26112d2565b50919050565b6000611cd2611e5d565b5090565b6000611ce06112d2565b5092915050565b6000611cf16112d2565b5092915050565b6000611d02611e5d565b50919050565b611d106112d2565b50505050505050565b6000611d23611e5d565b5092915050565b6040518080612099603a9139603a019050604051809103902081565b600c602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b60208310611dd85780518252602082019150602081019050602083039250611db5565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611e38576040519150601f19603f3d011682016040523d82523d6000602084013e611e3d565b606091505b50915091506000821415611e52573d60208201fd5b809250505092915050565b606060003073ffffffffffffffffffffffffffffffffffffffff1660003660405160240180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040527f0933c1ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611f665780518252602082019150602081019050602083039250611f43565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611fc6576040519150601f19603f3d011682016040523d82523d6000602084013e611fcb565b606091505b505090506040513d6000823e8160008114611fe7573d60408301f35b3d82fdfe4744414f44656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d75737420626520676f764744414f44656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636b454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e74726163742944656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a72315820a9cc54c79ff93d6cb4ba4e04a5e110656e5fd4b969812268a1049bb4b205147164736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8cc8230e3192dbc2513e3134043bf5605b3db4c00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000011476f6c66662e66696e616e63652044414f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044744414f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): Golff.finance DAO
Arg [1] : symbol_ (string): GDAO
Arg [2] : decimals_ (uint8): 18
Arg [3] : initSupply_ (uint256): 0
Arg [4] : implementation_ (address): 0xA8cc8230E3192dBc2513e3134043bF5605b3dB4C
Arg [5] : becomeImplementationData (bytes): 0x
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000a8cc8230e3192dbc2513e3134043bf5605b3db4c
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [7] : 476f6c66662e66696e616e63652044414f000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 4744414f00000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
55:12914:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12806:1;12793:9;:14;12785:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12941:19;:17;:19::i;:::-;;55:12914;6557:18:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6557:18:0;;;:::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;6557:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10656:139:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10656:139:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10656:139:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10656:139:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10656:139:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10656:139:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10656:139:1;;;;;;;;;;;;;;;:::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;10656:139:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4558:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4558:184:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4558:184:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6829:18:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6829:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5314:125:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5314:125:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;653:122:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;653:122:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3891:207:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3891:207:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3891:207:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6922:25:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6922:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5972:137:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5972:137:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5972:137:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6743:21:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6743:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5446:117:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5446:117:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5106:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5106:202:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5106:202:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2808:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2808:157:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2808:157:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3059:126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3059:126:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3059:126:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11208:426;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11208:426:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11208:426:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11208:426:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11208:426:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11208:426:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11208:426:1;;;;;;;;;;;;;;;:::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;11208:426:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5569:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5569:124:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5569:124:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8856:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8856:79:1;;;:::i;:::-;;1832:626;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1832:626:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1832:626:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1832:626:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1832:626:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1832:626:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1832:626:1;;;;;;;;;;;;;;;:::i;:::-;;7611:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7611:180:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7611:180:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6254:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6254:151:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6254:151:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9396:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9396:113:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9396:113:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;27487:29:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27487:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;534:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;534:49:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;534:49:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7974:158:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7974:158:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7974:158:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8461:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8461:134:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8461:134:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;8942:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8942:190:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8942:190:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1061:39:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1061:39:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1061:39:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6648:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6648:20:0;;;:::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;6648:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5762:134:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5762:134:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5762:134:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6115:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6115:129:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6662:212;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6662:212:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6662:212:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3438:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3438:155:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3438:155:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9515:161;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9515:161:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9515:161:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9138:252;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9138:252:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9138:252:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7196:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7196:206:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7196:206:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;866:117:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;866:117:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;398:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:70:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;398:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12141:416:1;12187:12;12212;12230:14;;;;;;;;;;;:27;;12258:8;;12230:37;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;12230:37:1;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;12211:56:1;;;12327:4;12321:11;12377:14;12374:1;12360:12;12345:47;12413:7;12438:1;12433:47;;;;12524:14;12510:12;12503:36;12433:47;12463:14;12449:12;12442:36;6557:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10656:139:1:-;10725:12;10756:32;10767:14;;;;;;;;;;;10783:4;10756:10;:32::i;:::-;10749:39;;10656:139;;;:::o;4558:184::-;4664:4;4716:19;:17;:19::i;:::-;;4558:184;;;;:::o;6829:18:0:-;;;;;;;;;;;;;:::o;5314:125:1:-;5384:7;5407:25;:23;:25::i;:::-;;5314:125;:::o;653:122:0:-;695:80;;;;;;;;;;;;;;;;;;;653:122;:::o;3891:207:1:-;4019:4;4072:19;:17;:19::i;:::-;;3891:207;;;;;:::o;6922:25:0:-;;;;;;;;;;;;;:::o;5972:137:1:-;6047:4;6083:19;:17;:19::i;:::-;;5972:137;;;:::o;6743:21:0:-;;;;;;;;;;;;;:::o;5446:117:1:-;5508:7;5531:25;:23;:25::i;:::-;;5446:117;:::o;5106:202::-;5226:4;5282:19;:17;:19::i;:::-;;5106:202;;;;:::o;2808:157::-;2888:4;2939:19;:17;:19::i;:::-;;2808:157;;;;:::o;3059:126::-;3123:4;3159:19;:17;:19::i;:::-;;3059:126;;;:::o;11208:426::-;11286:12;11311;11325:23;11360:4;11352:24;;11436:4;11377:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;11377:64:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11377:64:1;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;11377:64:1;11352:90;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11352:90:1;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;11310:132:1;;;;11490:1;11481:7;11478:14;11475:2;;;11541:14;11534:4;11522:10;11518:21;11511:45;11475:2;11607:10;11596:31;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11596:31:1;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;11596:31:1;;;;;;;;;;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;11596:31:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11589:38;;;;11208:426;;;:::o;5569:124::-;5633:4;5667:19;:17;:19::i;:::-;;5569:124;;;:::o;8856:79::-;8909:19;:17;:19::i;:::-;;8856:79::o;1832:626::-;1981:3;;;;;;;;;;;1967:17;;:10;:17;;;1959:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2057:11;2053:118;;;2084:76;2109:50;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2109:50:1;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2109:50:1;2084:24;:76::i;:::-;;2053:118;2181:25;2209:14;;;;;;;;;;;2181:42;;2250:15;2233:14;;:32;;;;;;;;;;;;;;;;;;2276:107;2357:24;2301:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2301:81:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2301:81:1;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2301:81:1;2276:24;:107::i;:::-;;2399:52;2417:17;2436:14;;;;;;;;;;;2399:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1832:626;;;;:::o;7611:180::-;7710:7;7759:25;:23;:25::i;:::-;;7611:180;;;:::o;6254:151::-;6336:7;6373:25;:23;:25::i;:::-;;6254:151;;;:::o;9396:113::-;9483:19;:17;:19::i;:::-;;9396:113;:::o;27487:29:0:-;;;;;;;;;;;;;:::o;534:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;7974:158:1:-;8055:7;8100:25;:23;:25::i;:::-;;7974:158;;;:::o;8461:134::-;8569:19;:17;:19::i;:::-;;8461:134;:::o;8942:190::-;9047:7;9100:25;:23;:25::i;:::-;;8942:190;;;;:::o;1061:39:0:-;;;;;;;;;;;;;;;;;:::o;6648:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5762:134:1:-;5834:4;5870:19;:17;:19::i;:::-;;5762:134;;;:::o;6115:129::-;6188:7;6212:25;:23;:25::i;:::-;;6115:129;:::o;6662:212::-;6787:4;6848:19;:17;:19::i;:::-;;6662:212;;;;:::o;3438:155::-;3519:4;3567:19;:17;:19::i;:::-;;3438:155;;;;:::o;9515:161::-;9604:7;9644:25;:23;:25::i;:::-;;9515:161;;;:::o;9138:252::-;9364:19;:17;:19::i;:::-;;9138:252;;;;;;:::o;7196:206::-;7316:7;7370:25;:23;:25::i;:::-;;7196:206;;;;:::o;866:117:0:-;912:71;;;;;;;;;;;;;;;;;;;866:117;:::o;398:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10027:335:1:-;10100:12;10125;10139:23;10166:6;:19;;10186:4;10166:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10166:25:1;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10124:67:1;;;;10239:1;10230:7;10227:14;10224:2;;;10290:14;10283:4;10271:10;10267:21;10260:45;10224:2;10345:10;10338:17;;;;10027:335;;;;:::o;11640:495::-;11697:12;11722;11748:4;11740:24;;11824:8;;11765:68;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11765:68:1;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11765:68:1;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;11765:68:1;11740:94;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11740:94:1;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;11721:113:1;;;11894:4;11888:11;11944:14;11941:1;11927:12;11912:47;11980:7;12005:1;12000:47;;;;12102:14;12095:4;12081:12;12077:23;12070:47;12000;12030:14;12016:12;12009:36
Swarm Source
bzzr://a9cc54c79ff93d6cb4ba4e04a5e110656e5fd4b969812268a1049bb4b2051471
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.