ERC-20
DEX
Overview
Max Total Supply
150,000,000 MCF
Holders
481 (0.00%)
Market
Price
$0.01 @ 0.000002 ETH (-4.61%)
Onchain Market Cap
$809,543.03
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 10 Decimals)
Balance
3,081,593.861615481 MCFValue
$16,631.22 ( ~4.8955 Eth) [2.0544%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
McfToken
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity Multiple files format)
pragma solidity ^0.8.0; import './Ownable.sol'; import './Context.sol'; import './SafeMath.sol'; import './IERC20.sol'; contract McfToken is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; constructor() { _name = "MCF token"; _symbol = "MCF"; _decimals = 10; } /** * @dev Returns the mcf token owner. */ function getOwner() external override view returns (address) { return owner(); } /** * @dev Returns the name of the token. */ function name() public override view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public override view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. */ function decimals() public override view returns (uint8) { return _decimals; } /** * @dev See {ERC20-totalSupply}. */ function totalSupply() public override view returns (uint256) { return _totalSupply; } /** * @dev See {ERC20-balanceOf}. */ function balanceOf(address account) public override view returns (uint256) { return _balances[account]; } /** * @dev See {ERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {ERC20-allowance}. */ function allowance(address sender, address spender) external override view returns (uint256) { return _allowances[sender][spender]; } /** * @dev See {ERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) external override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {ERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom (address sender, address recipient, uint256 amount) external override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, 'ERC20: transfer amount exceeds allowance') ); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {ERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {ERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, 'ERC20: decreased allowance below zero')); return true; } /** * @dev Creates `amount` tokens and assigns them to `msg.sender`, increasing * the total supply. * * Requirements * * - `msg.sender` must be the token owner */ function mint(address _to, uint256 amount) external onlyOwner returns (bool) { _mint(_to, amount); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer (address sender, address recipient, uint256 amount) internal { require(sender != address(0), 'ERC20: transfer from the zero address'); require(recipient != address(0), 'ERC20: transfer to the zero address'); _balances[sender] = _balances[sender].sub(amount, 'ERC20: transfer amount exceeds balance'); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), 'ERC20: mint to the zero address'); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal { require(account != address(0), 'ERC20: burn from the zero address'); _balances[account] = _balances[account].sub(amount, 'ERC20: burn amount exceeds balance'); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve (address sender, address spender, uint256 amount) internal { require(sender != address(0), 'ERC20: approve from the zero address'); require(spender != address(0), 'ERC20: approve to the zero address'); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } /** * @dev Destroys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See {_burn} and {_approve}. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, 'ERC20: burn amount exceeds allowance')); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
pragma solidity >=0.6.4; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506000620000246200018060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600981526020017f4d434620746f6b656e0000000000000000000000000000000000000000000000815250600490805190602001906200010f92919062000188565b506040518060400160405280600381526020017f4d43460000000000000000000000000000000000000000000000000000000000815250600590805190602001906200015d92919062000188565b50600a600660006101000a81548160ff021916908360ff1602179055506200029d565b600033905090565b828054620001969062000238565b90600052602060002090601f016020900481019282620001ba576000855562000206565b82601f10620001d557805160ff191683800117855562000206565b8280016001018555821562000206579182015b8281111562000205578251825591602001919060010190620001e8565b5b50905062000215919062000219565b5090565b5b80821115620002345760008160009055506001016200021a565b5090565b600060028204905060018216806200025157607f821691505b602082108114156200026857620002676200026e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6119f980620002ad6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d7146102b3578063a9059cbb146102e3578063dd62ed3e14610313578063f2fde38b1461034357610100565b8063715018a61461024f578063893d20e8146102595780638da5cb5b1461027757806395d89b411461029557610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806340c10f19146101ef57806370a082311461021f57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61035f565b60405161011a919061164f565b60405180910390f35b61013d600480360381019061013891906112ea565b6103f1565b60405161014a9190611634565b60405180910390f35b61015b61040f565b6040516101689190611751565b60405180910390f35b61018b6004803603810190610186919061129b565b610419565b6040516101989190611634565b60405180910390f35b6101a96104f2565b6040516101b6919061176c565b60405180910390f35b6101d960048036038101906101d491906112ea565b610509565b6040516101e69190611634565b60405180910390f35b610209600480360381019061020491906112ea565b6105bc565b6040516102169190611634565b60405180910390f35b61023960048036038101906102349190611236565b61064e565b6040516102469190611751565b60405180910390f35b610257610697565b005b6102616107d1565b60405161026e9190611619565b60405180910390f35b61027f6107e0565b60405161028c9190611619565b60405180910390f35b61029d610809565b6040516102aa919061164f565b60405180910390f35b6102cd60048036038101906102c891906112ea565b61089b565b6040516102da9190611634565b60405180910390f35b6102fd60048036038101906102f891906112ea565b610968565b60405161030a9190611634565b60405180910390f35b61032d6004803603810190610328919061125f565b610986565b60405161033a9190611751565b60405180910390f35b61035d60048036038101906103589190611236565b610a0d565b005b60606004805461036e90611881565b80601f016020809104026020016040519081016040528092919081815260200182805461039a90611881565b80156103e75780601f106103bc576101008083540402835291602001916103e7565b820191906000526020600020905b8154815290600101906020018083116103ca57829003601f168201915b5050505050905090565b60006104056103fe610bb6565b8484610bbe565b6001905092915050565b6000600354905090565b6000610426848484610d89565b6104e784610432610bb6565b6104e28560405180606001604052806028815260200161197760289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610498610bb6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110179092919063ffffffff16565b610bbe565b600190509392505050565b6000600660009054906101000a900460ff16905090565b60006105b2610516610bb6565b846105ad8560026000610527610bb6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b610bbe565b6001905092915050565b60006105c6610bb6565b73ffffffffffffffffffffffffffffffffffffffff166105e46107e0565b73ffffffffffffffffffffffffffffffffffffffff161461063a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610631906116d1565b60405180910390fd5b6106448383611082565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61069f610bb6565b73ffffffffffffffffffffffffffffffffffffffff166106bd6107e0565b73ffffffffffffffffffffffffffffffffffffffff1614610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a906116d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006107db6107e0565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461081890611881565b80601f016020809104026020016040519081016040528092919081815260200182805461084490611881565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050905090565b600061095e6108a8610bb6565b846109598560405180606001604052806025815260200161199f60259139600260006108d2610bb6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110179092919063ffffffff16565b610bbe565b6001905092915050565b600061097c610975610bb6565b8484610d89565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a15610bb6565b73ffffffffffffffffffffffffffffffffffffffff16610a336107e0565b73ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906116d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af090611691565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590611711565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c95906116b1565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d7c9190611751565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df0906116f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090611671565b60405180910390fd5b610ed58160405180606001604052806026815260200161195160269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110179092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f6a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161100a9190611751565b60405180910390a3505050565b600083831115829061105f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611056919061164f565b60405180910390fd5b5082840390509392505050565b6000818361107a91906117a3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990611731565b60405180910390fd5b6111078160035461106c90919063ffffffff16565b60038190555061115f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112009190611751565b60405180910390a35050565b60008135905061121b81611922565b92915050565b60008135905061123081611939565b92915050565b60006020828403121561124857600080fd5b60006112568482850161120c565b91505092915050565b6000806040838503121561127257600080fd5b60006112808582860161120c565b92505060206112918582860161120c565b9150509250929050565b6000806000606084860312156112b057600080fd5b60006112be8682870161120c565b93505060206112cf8682870161120c565b92505060406112e086828701611221565b9150509250925092565b600080604083850312156112fd57600080fd5b600061130b8582860161120c565b925050602061131c85828601611221565b9150509250929050565b61132f816117f9565b82525050565b61133e8161180b565b82525050565b600061134f82611787565b6113598185611792565b935061136981856020860161184e565b61137281611911565b840191505092915050565b600061138a602383611792565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113f0602683611792565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611456602283611792565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114bc602083611792565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006114fc602583611792565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611562602483611792565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115c8601f83611792565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61160481611837565b82525050565b61161381611841565b82525050565b600060208201905061162e6000830184611326565b92915050565b60006020820190506116496000830184611335565b92915050565b600060208201905081810360008301526116698184611344565b905092915050565b6000602082019050818103600083015261168a8161137d565b9050919050565b600060208201905081810360008301526116aa816113e3565b9050919050565b600060208201905081810360008301526116ca81611449565b9050919050565b600060208201905081810360008301526116ea816114af565b9050919050565b6000602082019050818103600083015261170a816114ef565b9050919050565b6000602082019050818103600083015261172a81611555565b9050919050565b6000602082019050818103600083015261174a816115bb565b9050919050565b600060208201905061176660008301846115fb565b92915050565b6000602082019050611781600083018461160a565b92915050565b600081519050919050565b600082825260208201905092915050565b60006117ae82611837565b91506117b983611837565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117ee576117ed6118b3565b5b828201905092915050565b600061180482611817565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561186c578082015181840152602081019050611851565b8381111561187b576000848401525b50505050565b6000600282049050600182168061189957607f821691505b602082108114156118ad576118ac6118e2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61192b816117f9565b811461193657600080fd5b50565b61194281611837565b811461194d57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201dd4553a4f85a67db1d8f0003c2181c7ba652aff7f7cd98c267d6c255c08d3d264736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d7146102b3578063a9059cbb146102e3578063dd62ed3e14610313578063f2fde38b1461034357610100565b8063715018a61461024f578063893d20e8146102595780638da5cb5b1461027757806395d89b411461029557610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806340c10f19146101ef57806370a082311461021f57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61035f565b60405161011a919061164f565b60405180910390f35b61013d600480360381019061013891906112ea565b6103f1565b60405161014a9190611634565b60405180910390f35b61015b61040f565b6040516101689190611751565b60405180910390f35b61018b6004803603810190610186919061129b565b610419565b6040516101989190611634565b60405180910390f35b6101a96104f2565b6040516101b6919061176c565b60405180910390f35b6101d960048036038101906101d491906112ea565b610509565b6040516101e69190611634565b60405180910390f35b610209600480360381019061020491906112ea565b6105bc565b6040516102169190611634565b60405180910390f35b61023960048036038101906102349190611236565b61064e565b6040516102469190611751565b60405180910390f35b610257610697565b005b6102616107d1565b60405161026e9190611619565b60405180910390f35b61027f6107e0565b60405161028c9190611619565b60405180910390f35b61029d610809565b6040516102aa919061164f565b60405180910390f35b6102cd60048036038101906102c891906112ea565b61089b565b6040516102da9190611634565b60405180910390f35b6102fd60048036038101906102f891906112ea565b610968565b60405161030a9190611634565b60405180910390f35b61032d6004803603810190610328919061125f565b610986565b60405161033a9190611751565b60405180910390f35b61035d60048036038101906103589190611236565b610a0d565b005b60606004805461036e90611881565b80601f016020809104026020016040519081016040528092919081815260200182805461039a90611881565b80156103e75780601f106103bc576101008083540402835291602001916103e7565b820191906000526020600020905b8154815290600101906020018083116103ca57829003601f168201915b5050505050905090565b60006104056103fe610bb6565b8484610bbe565b6001905092915050565b6000600354905090565b6000610426848484610d89565b6104e784610432610bb6565b6104e28560405180606001604052806028815260200161197760289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610498610bb6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110179092919063ffffffff16565b610bbe565b600190509392505050565b6000600660009054906101000a900460ff16905090565b60006105b2610516610bb6565b846105ad8560026000610527610bb6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b610bbe565b6001905092915050565b60006105c6610bb6565b73ffffffffffffffffffffffffffffffffffffffff166105e46107e0565b73ffffffffffffffffffffffffffffffffffffffff161461063a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610631906116d1565b60405180910390fd5b6106448383611082565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61069f610bb6565b73ffffffffffffffffffffffffffffffffffffffff166106bd6107e0565b73ffffffffffffffffffffffffffffffffffffffff1614610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a906116d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006107db6107e0565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461081890611881565b80601f016020809104026020016040519081016040528092919081815260200182805461084490611881565b80156108915780601f1061086657610100808354040283529160200191610891565b820191906000526020600020905b81548152906001019060200180831161087457829003601f168201915b5050505050905090565b600061095e6108a8610bb6565b846109598560405180606001604052806025815260200161199f60259139600260006108d2610bb6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110179092919063ffffffff16565b610bbe565b6001905092915050565b600061097c610975610bb6565b8484610d89565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a15610bb6565b73ffffffffffffffffffffffffffffffffffffffff16610a336107e0565b73ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906116d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af090611691565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590611711565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c95906116b1565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d7c9190611751565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df0906116f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090611671565b60405180910390fd5b610ed58160405180606001604052806026815260200161195160269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110179092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f6a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161100a9190611751565b60405180910390a3505050565b600083831115829061105f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611056919061164f565b60405180910390fd5b5082840390509392505050565b6000818361107a91906117a3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990611731565b60405180910390fd5b6111078160035461106c90919063ffffffff16565b60038190555061115f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112009190611751565b60405180910390a35050565b60008135905061121b81611922565b92915050565b60008135905061123081611939565b92915050565b60006020828403121561124857600080fd5b60006112568482850161120c565b91505092915050565b6000806040838503121561127257600080fd5b60006112808582860161120c565b92505060206112918582860161120c565b9150509250929050565b6000806000606084860312156112b057600080fd5b60006112be8682870161120c565b93505060206112cf8682870161120c565b92505060406112e086828701611221565b9150509250925092565b600080604083850312156112fd57600080fd5b600061130b8582860161120c565b925050602061131c85828601611221565b9150509250929050565b61132f816117f9565b82525050565b61133e8161180b565b82525050565b600061134f82611787565b6113598185611792565b935061136981856020860161184e565b61137281611911565b840191505092915050565b600061138a602383611792565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113f0602683611792565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611456602283611792565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114bc602083611792565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006114fc602583611792565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611562602483611792565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115c8601f83611792565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61160481611837565b82525050565b61161381611841565b82525050565b600060208201905061162e6000830184611326565b92915050565b60006020820190506116496000830184611335565b92915050565b600060208201905081810360008301526116698184611344565b905092915050565b6000602082019050818103600083015261168a8161137d565b9050919050565b600060208201905081810360008301526116aa816113e3565b9050919050565b600060208201905081810360008301526116ca81611449565b9050919050565b600060208201905081810360008301526116ea816114af565b9050919050565b6000602082019050818103600083015261170a816114ef565b9050919050565b6000602082019050818103600083015261172a81611555565b9050919050565b6000602082019050818103600083015261174a816115bb565b9050919050565b600060208201905061176660008301846115fb565b92915050565b6000602082019050611781600083018461160a565b92915050565b600081519050919050565b600082825260208201905092915050565b60006117ae82611837565b91506117b983611837565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117ee576117ed6118b3565b5b828201905092915050565b600061180482611817565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561186c578082015181840152602081019050611851565b8381111561187b576000848401525b50505050565b6000600282049050600182168061189957607f821691505b602082108114156118ad576118ac6118e2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61192b816117f9565b811461193657600080fd5b50565b61194281611837565b811461194d57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201dd4553a4f85a67db1d8f0003c2181c7ba652aff7f7cd98c267d6c255c08d3d264736f6c63430008000033
Deployed Bytecode Sourcemap
122:8182:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;771:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2296:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1317:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2913:358;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1168:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3665:209;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4828:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1472:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1693:145:3;;;:::i;:::-;;614:92:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1061:85:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;974:94:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4360:260;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1791:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2014:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1987:240:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;771:90:2;817:13;849:5;842:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;771:90;:::o;2296:160::-;2373:4;2389:39;2398:12;:10;:12::i;:::-;2412:7;2421:6;2389:8;:39::i;:::-;2445:4;2438:11;;2296:160;;;;:::o;1317:98::-;1370:7;1396:12;;1389:19;;1317:98;:::o;2913:358::-;3014:4;3030:36;3040:6;3048:9;3059:6;3030:9;:36::i;:::-;3076:167;3098:6;3118:12;:10;:12::i;:::-;3144:89;3182:6;3144:89;;;;;;;;;;;;;;;;;:11;:19;3156:6;3144:19;;;;;;;;;;;;;;;:33;3164:12;:10;:12::i;:::-;3144:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3076:8;:167::i;:::-;3260:4;3253:11;;2913:358;;;;;:::o;1168:90::-;1218:5;1242:9;;;;;;;;;;;1235:16;;1168:90;:::o;3665:209::-;3747:4;3763:83;3772:12;:10;:12::i;:::-;3786:7;3795:50;3834:10;3795:11;:25;3807:12;:10;:12::i;:::-;3795:25;;;;;;;;;;;;;;;:34;3821:7;3795:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3763:8;:83::i;:::-;3863:4;3856:11;;3665:209;;;;:::o;4828:133::-;4899:4;1284:12:3;:10;:12::i;:::-;1273:23;;:7;:5;:7::i;:::-;:23;;;1265:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4915:18:2::1;4921:3;4926:6;4915:5;:18::i;:::-;4950:4;4943:11;;4828:133:::0;;;;:::o;1472:117::-;1538:7;1564:9;:18;1574:7;1564:18;;;;;;;;;;;;;;;;1557:25;;1472:117;;;:::o;1693:145:3:-;1284:12;:10;:12::i;:::-;1273:23;;:7;:5;:7::i;:::-;:23;;;1265:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1799:1:::1;1762:40;;1783:6;::::0;::::1;;;;;;;;1762:40;;;;;;;;;;;;1829:1;1812:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1693:145::o:0;614:92:2:-;666:7;692;:5;:7::i;:::-;685:14;;614:92;:::o;1061:85:3:-;1107:7;1133:6;;;;;;;;;;;1126:13;;1061:85;:::o;974:94:2:-;1022:13;1054:7;1047:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:94;:::o;4360:260::-;4447:4;4463:129;4472:12;:10;:12::i;:::-;4486:7;4495:96;4534:15;4495:96;;;;;;;;;;;;;;;;;:11;:25;4507:12;:10;:12::i;:::-;4495:25;;;;;;;;;;;;;;;:34;4521:7;4495:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4463:8;:129::i;:::-;4609:4;4602:11;;4360:260;;;;:::o;1791:166::-;1871:4;1887:42;1897:12;:10;:12::i;:::-;1911:9;1922:6;1887:9;:42::i;:::-;1946:4;1939:11;;1791:166;;;;:::o;2014:145::-;2098:7;2124:11;:19;2136:6;2124:19;;;;;;;;;;;;;;;:28;2144:7;2124:28;;;;;;;;;;;;;;;;2117:35;;2014:145;;;;:::o;1987:240:3:-;1284:12;:10;:12::i;:::-;1273:23;;:7;:5;:7::i;:::-;:23;;;1265:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2095:1:::1;2075:22;;:8;:22;;;;2067:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2184:8;2155:38;;2176:6;::::0;::::1;;;;;;;;2155:38;;;;;;;;;;;;2212:8;2203:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1987:240:::0;:::o;586:96:0:-;639:7;665:10;658:17;;586:96;:::o;7558:337:2:-;7671:1;7653:20;;:6;:20;;;;7645:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7751:1;7732:21;;:7;:21;;;;7724:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7834:6;7803:11;:19;7815:6;7803:19;;;;;;;;;;;;;;;:28;7823:7;7803:28;;;;;;;;;;;;;;;:37;;;;7872:7;7855:33;;7864:6;7855:33;;;7881:6;7855:33;;;;;;:::i;:::-;;;;;;;;7558:337;;;:::o;5435:465::-;5551:1;5533:20;;:6;:20;;;;5525:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5634:1;5613:23;;:9;:23;;;;5605:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5707;5729:6;5707:71;;;;;;;;;;;;;;;;;:9;:17;5717:6;5707:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5687:9;:17;5697:6;5687:17;;;;;;;;;;;;;;;:91;;;;5811:32;5836:6;5811:9;:20;5821:9;5811:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5788:9;:20;5798:9;5788:20;;;;;;;;;;;;;;;:55;;;;5875:9;5858:35;;5867:6;5858:35;;;5886:6;5858:35;;;;;;:::i;:::-;;;;;;;;5435:465;;;:::o;4876:201:4:-;4962:7;5018:1;5013;:6;;5021:12;5005:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5059:1;5055;:5;5048:12;;4876:201;;;;;:::o;2672:96::-;2730:7;2760:1;2756;:5;;;;:::i;:::-;2749:12;;2672:96;;;;:::o;6170:302:2:-;6264:1;6245:21;;:7;:21;;;;6237:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;6328:24;6345:6;6328:12;;:16;;:24;;;;:::i;:::-;6313:12;:39;;;;6383:30;6406:6;6383:9;:18;6393:7;6383:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6362:9;:18;6372:7;6362:18;;;;;;;;;;;;;;;:51;;;;6449:7;6428:37;;6445:1;6428:37;;;6458:6;6428:37;;;;;;:::i;:::-;;;;;;;;6170:302;;:::o;7:139:5:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:118::-;2036:24;2054:5;2036:24;:::i;:::-;2031:3;2024:37;2014:53;;:::o;2073:109::-;2154:21;2169:5;2154:21;:::i;:::-;2149:3;2142:34;2132:50;;:::o;2188:364::-;;2304:39;2337:5;2304:39;:::i;:::-;2359:71;2423:6;2418:3;2359:71;:::i;:::-;2352:78;;2439:52;2484:6;2479:3;2472:4;2465:5;2461:16;2439:52;:::i;:::-;2516:29;2538:6;2516:29;:::i;:::-;2511:3;2507:39;2500:46;;2280:272;;;;;:::o;2558:367::-;;2721:67;2785:2;2780:3;2721:67;:::i;:::-;2714:74;;2818:34;2814:1;2809:3;2805:11;2798:55;2884:5;2879:2;2874:3;2870:12;2863:27;2916:2;2911:3;2907:12;2900:19;;2704:221;;;:::o;2931:370::-;;3094:67;3158:2;3153:3;3094:67;:::i;:::-;3087:74;;3191:34;3187:1;3182:3;3178:11;3171:55;3257:8;3252:2;3247:3;3243:12;3236:30;3292:2;3287:3;3283:12;3276:19;;3077:224;;;:::o;3307:366::-;;3470:67;3534:2;3529:3;3470:67;:::i;:::-;3463:74;;3567:34;3563:1;3558:3;3554:11;3547:55;3633:4;3628:2;3623:3;3619:12;3612:26;3664:2;3659:3;3655:12;3648:19;;3453:220;;;:::o;3679:330::-;;3842:67;3906:2;3901:3;3842:67;:::i;:::-;3835:74;;3939:34;3935:1;3930:3;3926:11;3919:55;4000:2;3995:3;3991:12;3984:19;;3825:184;;;:::o;4015:369::-;;4178:67;4242:2;4237:3;4178:67;:::i;:::-;4171:74;;4275:34;4271:1;4266:3;4262:11;4255:55;4341:7;4336:2;4331:3;4327:12;4320:29;4375:2;4370:3;4366:12;4359:19;;4161:223;;;:::o;4390:368::-;;4553:67;4617:2;4612:3;4553:67;:::i;:::-;4546:74;;4650:34;4646:1;4641:3;4637:11;4630:55;4716:6;4711:2;4706:3;4702:12;4695:28;4749:2;4744:3;4740:12;4733:19;;4536:222;;;:::o;4764:329::-;;4927:67;4991:2;4986:3;4927:67;:::i;:::-;4920:74;;5024:33;5020:1;5015:3;5011:11;5004:54;5084:2;5079:3;5075:12;5068:19;;4910:183;;;:::o;5099:118::-;5186:24;5204:5;5186:24;:::i;:::-;5181:3;5174:37;5164:53;;:::o;5223:112::-;5306:22;5322:5;5306:22;:::i;:::-;5301:3;5294:35;5284:51;;:::o;5341:222::-;;5472:2;5461:9;5457:18;5449:26;;5485:71;5553:1;5542:9;5538:17;5529:6;5485:71;:::i;:::-;5439:124;;;;:::o;5569:210::-;;5694:2;5683:9;5679:18;5671:26;;5707:65;5769:1;5758:9;5754:17;5745:6;5707:65;:::i;:::-;5661:118;;;;:::o;5785:313::-;;5936:2;5925:9;5921:18;5913:26;;5985:9;5979:4;5975:20;5971:1;5960:9;5956:17;5949:47;6013:78;6086:4;6077:6;6013:78;:::i;:::-;6005:86;;5903:195;;;;:::o;6104:419::-;;6308:2;6297:9;6293:18;6285:26;;6357:9;6351:4;6347:20;6343:1;6332:9;6328:17;6321:47;6385:131;6511:4;6385:131;:::i;:::-;6377:139;;6275:248;;;:::o;6529:419::-;;6733:2;6722:9;6718:18;6710:26;;6782:9;6776:4;6772:20;6768:1;6757:9;6753:17;6746:47;6810:131;6936:4;6810:131;:::i;:::-;6802:139;;6700:248;;;:::o;6954:419::-;;7158:2;7147:9;7143:18;7135:26;;7207:9;7201:4;7197:20;7193:1;7182:9;7178:17;7171:47;7235:131;7361:4;7235:131;:::i;:::-;7227:139;;7125:248;;;:::o;7379:419::-;;7583:2;7572:9;7568:18;7560:26;;7632:9;7626:4;7622:20;7618:1;7607:9;7603:17;7596:47;7660:131;7786:4;7660:131;:::i;:::-;7652:139;;7550:248;;;:::o;7804:419::-;;8008:2;7997:9;7993:18;7985:26;;8057:9;8051:4;8047:20;8043:1;8032:9;8028:17;8021:47;8085:131;8211:4;8085:131;:::i;:::-;8077:139;;7975:248;;;:::o;8229:419::-;;8433:2;8422:9;8418:18;8410:26;;8482:9;8476:4;8472:20;8468:1;8457:9;8453:17;8446:47;8510:131;8636:4;8510:131;:::i;:::-;8502:139;;8400:248;;;:::o;8654:419::-;;8858:2;8847:9;8843:18;8835:26;;8907:9;8901:4;8897:20;8893:1;8882:9;8878:17;8871:47;8935:131;9061:4;8935:131;:::i;:::-;8927:139;;8825:248;;;:::o;9079:222::-;;9210:2;9199:9;9195:18;9187:26;;9223:71;9291:1;9280:9;9276:17;9267:6;9223:71;:::i;:::-;9177:124;;;;:::o;9307:214::-;;9434:2;9423:9;9419:18;9411:26;;9447:67;9511:1;9500:9;9496:17;9487:6;9447:67;:::i;:::-;9401:120;;;;:::o;9527:99::-;;9613:5;9607:12;9597:22;;9586:40;;;:::o;9632:169::-;;9750:6;9745:3;9738:19;9790:4;9785:3;9781:14;9766:29;;9728:73;;;;:::o;9807:305::-;;9866:20;9884:1;9866:20;:::i;:::-;9861:25;;9900:20;9918:1;9900:20;:::i;:::-;9895:25;;10054:1;9986:66;9982:74;9979:1;9976:81;9973:2;;;10060:18;;:::i;:::-;9973:2;10104:1;10101;10097:9;10090:16;;9851:261;;;;:::o;10118:96::-;;10184:24;10202:5;10184:24;:::i;:::-;10173:35;;10163:51;;;:::o;10220:90::-;;10297:5;10290:13;10283:21;10272:32;;10262:48;;;:::o;10316:126::-;;10393:42;10386:5;10382:54;10371:65;;10361:81;;;:::o;10448:77::-;;10514:5;10503:16;;10493:32;;;:::o;10531:86::-;;10606:4;10599:5;10595:16;10584:27;;10574:43;;;:::o;10623:307::-;10691:1;10701:113;10715:6;10712:1;10709:13;10701:113;;;10800:1;10795:3;10791:11;10785:18;10781:1;10776:3;10772:11;10765:39;10737:2;10734:1;10730:10;10725:15;;10701:113;;;10832:6;10829:1;10826:13;10823:2;;;10912:1;10903:6;10898:3;10894:16;10887:27;10823:2;10672:258;;;;:::o;10936:320::-;;11017:1;11011:4;11007:12;10997:22;;11064:1;11058:4;11054:12;11085:18;11075:2;;11141:4;11133:6;11129:17;11119:27;;11075:2;11203;11195:6;11192:14;11172:18;11169:38;11166:2;;;11222:18;;:::i;:::-;11166:2;10987:269;;;;:::o;11262:180::-;11310:77;11307:1;11300:88;11407:4;11404:1;11397:15;11431:4;11428:1;11421:15;11448:180;11496:77;11493:1;11486:88;11593:4;11590:1;11583:15;11617:4;11614:1;11607:15;11634:102;;11726:2;11722:7;11717:2;11710:5;11706:14;11702:28;11692:38;;11682:54;;;:::o;11742:122::-;11815:24;11833:5;11815:24;:::i;:::-;11808:5;11805:35;11795:2;;11854:1;11851;11844:12;11795:2;11785:79;:::o;11870:122::-;11943:24;11961:5;11943:24;:::i;:::-;11936:5;11933:35;11923:2;;11982:1;11979;11972:12;11923:2;11913:79;:::o
Swarm Source
ipfs://1dd4553a4f85a67db1d8f0003c2181c7ba652aff7f7cd98c267d6c255c08d3d2
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.