More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 7,284 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 45325098 | 8 secs ago | IN | 0 BNB | 0.00004245 | ||||
Transfer | 45325091 | 29 secs ago | IN | 0 BNB | 0.0000655 | ||||
Transfer | 45325088 | 38 secs ago | IN | 0 BNB | 0.0000655 | ||||
Transfer | 45325075 | 1 min ago | IN | 0 BNB | 0.00003765 | ||||
Approve | 45325061 | 1 min ago | IN | 0 BNB | 0.00004725 | ||||
Transfer | 45325050 | 2 mins ago | IN | 0 BNB | 0.00004669 | ||||
Transfer | 45325034 | 3 mins ago | IN | 0 BNB | 0.00003765 | ||||
Transfer | 45325021 | 3 mins ago | IN | 0 BNB | 0.0000655 | ||||
Transfer | 45325001 | 4 mins ago | IN | 0 BNB | 0.00003765 | ||||
Transfer | 45324995 | 5 mins ago | IN | 0 BNB | 0.00003764 | ||||
Transfer | 45324970 | 6 mins ago | IN | 0 BNB | 0.00005954 | ||||
Transfer | 45324969 | 6 mins ago | IN | 0 BNB | 0.00003765 | ||||
Transfer | 45324946 | 7 mins ago | IN | 0 BNB | 0.00003765 | ||||
Transfer | 45324944 | 7 mins ago | IN | 0 BNB | 0.00008931 | ||||
Transfer | 45324918 | 9 mins ago | IN | 0 BNB | 0.00004245 | ||||
Approve | 45324901 | 9 mins ago | IN | 0 BNB | 0.00004725 | ||||
Transfer | 45324901 | 9 mins ago | IN | 0 BNB | 0.00004245 | ||||
Transfer | 45324897 | 10 mins ago | IN | 0 BNB | 0.00005955 | ||||
Transfer | 45324896 | 10 mins ago | IN | 0 BNB | 0.00004245 | ||||
Transfer | 45324866 | 11 mins ago | IN | 0 BNB | 0.00003765 | ||||
Transfer | 45324865 | 11 mins ago | IN | 0 BNB | 0.00003765 | ||||
Transfer | 45324863 | 11 mins ago | IN | 0 BNB | 0.00005475 | ||||
Transfer | 45324858 | 12 mins ago | IN | 0 BNB | 0.00003765 | ||||
Transfer | 45324856 | 12 mins ago | IN | 0 BNB | 0.00005475 | ||||
Transfer | 45324816 | 14 mins ago | IN | 0 BNB | 0.00004669 |
Loading...
Loading
Contract Name:
GDC
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2024-12-15 */ /** *Submitted for verification at BscScan.com on 2024-05-17 */ /** *Submitted for verification at BscScan.com on 2023-12-23 */ /** *Submitted for verification at BscScan.com on 2023-08-18 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 ); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.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); } // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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; } } // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol) /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * 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 Contracts guidelines: functions revert * instead 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) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint256 private _maxSupply = 10000000000 * 10**decimals(); string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default 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_; } /** * @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 maxSupply() public view virtual returns (uint256) { return _maxSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, 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) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, 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) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This 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: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); require( _totalSupply < _maxSupply, "Max supply reached. Cannot mint more tokens." ); require( _totalSupply + amount <= _maxSupply, "Minting would exceed max supply." ); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(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 virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted 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 {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol) /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 { _transferOwnership(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" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // 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. 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 GDC is ERC20, ERC20Burnable, Pausable, Ownable { using SafeMath for uint256; uint256 private _supply = 10000000000 * 10**decimals(); uint256 public constant PER_DIVI = 10000; uint256 public sellTax = 100; // 1% uint256 public buyTax = 100; // 1% address private feeWallet; mapping(address => bool) public lps; mapping(address => bool) public whitelisted; event SetLiquidPair(address LP, bool Status); constructor() ERC20("GDC", "GDC") { _mint(msg.sender, _supply); feeWallet = msg.sender; } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal override whenNotPaused { super._beforeTokenTransfer(from, to, amount); } function _transfer( address from, address to, uint256 amount ) internal override whenNotPaused { if ( lps[from] == true && !whitelisted[to] && buyTax > 0 && feeWallet != address(0) ) { uint256 fee = amount.mul(buyTax).div(PER_DIVI); uint256 transferA = amount.sub(fee); super._transfer(from, feeWallet, fee); super._transfer(from, to, transferA); } else if ( lps[to] == true && !whitelisted[from] && sellTax > 0 && feeWallet != address(0) ) { uint256 fee = amount.mul(sellTax).div(PER_DIVI); uint256 transferA = amount.sub(fee); super._transfer(from, feeWallet, fee); super._transfer(from, to, transferA); } else { super._transfer(from, to, amount); } } function whitelist(address _user, bool _enable) external onlyOwner { whitelisted[_user] = _enable; } function setLiquidPair(address _lp, bool _status) external onlyOwner { require(address(0) != _lp, "_lp zero address"); lps[_lp] = _status; emit SetLiquidPair(_lp, _status); } function setFeeWallet(address _feeWallet) public onlyOwner { feeWallet = _feeWallet; } function setSellTax(uint256 _taxPercent) public onlyOwner { sellTax = _taxPercent; } function setBuyTax(uint256 _taxPercent) public onlyOwner { buyTax = _taxPercent; } function rescueStuckToken(address _token, address _to) external onlyOwner { require(_token != address(this), "Invalid token"); uint256 _amount = ERC20(_token).balanceOf(address(this)); ERC20(_token).transfer(_to, _amount); } function mint(uint256 amount) public onlyOwner returns (bool) { _mint(_msgSender(), amount); return true; } }
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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"LP","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"SetLiquidPair","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"PER_DIVI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTax","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":[{"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":"","type":"address"}],"name":"lps","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"rescueStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxPercent","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lp","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setLiquidPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxPercent","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_enable","type":"bool"}],"name":"whitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405262000014620001b860201b60201c565b600a620000229190620008a8565b6402540be400620000349190620009e5565b60035562000047620001b860201b60201c565b600a620000559190620008a8565b6402540be400620000679190620009e5565b600755606460085560646009553480156200008157600080fd5b506040518060400160405280600381526020017f47444300000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f47444300000000000000000000000000000000000000000000000000000000008152508160049080519060200190620001069291906200054b565b5080600590805190602001906200011f9291906200054b565b5050506000600660006101000a81548160ff0219169083151502179055506200015d62000151620001c160201b60201c565b620001c960201b60201c565b62000171336007546200028f60201b60201c565b33600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000afe565b60006012905090565b600033905090565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000302576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f990620007a0565b60405180910390fd5b600354600254106200034b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000342906200075c565b60405180910390fd5b600354816002546200035e9190620007f0565b1115620003a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000399906200073a565b60405180910390fd5b620003b660008383620004a860201b60201c565b8060026000828254620003ca9190620007f0565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620004219190620007f0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004889190620007c2565b60405180910390a3620004a460008383620004d560201b60201c565b5050565b620004b8620004da60201b60201c565b620004d08383836200052f60201b62000e6b1760201c565b505050565b505050565b620004ea6200053460201b60201c565b156200052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000524906200077e565b60405180910390fd5b565b505050565b6000600660009054906101000a900460ff16905090565b828054620005599062000a5d565b90600052602060002090601f0160209004810192826200057d5760008555620005c9565b82601f106200059857805160ff1916838001178555620005c9565b82800160010185558215620005c9579182015b82811115620005c8578251825591602001919060010190620005ab565b5b509050620005d89190620005dc565b5090565b5b80821115620005f7576000816000905550600101620005dd565b5090565b60006200060a602083620007df565b91507f4d696e74696e6720776f756c6420657863656564206d617820737570706c792e6000830152602082019050919050565b60006200064c602c83620007df565b91507f4d617820737570706c7920726561636865642e2043616e6e6f74206d696e742060008301527f6d6f726520746f6b656e732e00000000000000000000000000000000000000006020830152604082019050919050565b6000620006b4601083620007df565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000620006f6601f83620007df565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620007348162000a46565b82525050565b600060208201905081810360008301526200075581620005fb565b9050919050565b6000602082019050818103600083015262000777816200063d565b9050919050565b600060208201905081810360008301526200079981620006a5565b9050919050565b60006020820190508181036000830152620007bb81620006e7565b9050919050565b6000602082019050620007d9600083018462000729565b92915050565b600082825260208201905092915050565b6000620007fd8262000a46565b91506200080a8362000a46565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000842576200084162000a93565b5b828201905092915050565b6000808291508390505b60018511156200089f5780860481111562000877576200087662000a93565b5b6001851615620008875780820291505b8081029050620008978562000af1565b945062000857565b94509492505050565b6000620008b58262000a46565b9150620008c28362000a50565b9250620008f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008f9565b905092915050565b6000826200090b5760019050620009de565b816200091b5760009050620009de565b81600181146200093457600281146200093f5762000975565b6001915050620009de565b60ff84111562000954576200095362000a93565b5b8360020a9150848211156200096e576200096d62000a93565b5b50620009de565b5060208310610133831016604e8410600b8410161715620009af5782820a905083811115620009a957620009a862000a93565b5b620009de565b620009be84848460016200084d565b92509050818404811115620009d857620009d762000a93565b5b81810290505b9392505050565b6000620009f28262000a46565b9150620009ff8362000a46565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a3b5762000a3a62000a93565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000a7657607f821691505b6020821081141562000a8d5762000a8c62000ac2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b612c108062000b0e6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638cd09d501161010f578063cc1776d3116100a2578063dc1052e211610071578063dc1052e214610597578063dd62ed3e146105b3578063f2fde38b146105e3578063f59c3708146105ff576101f0565b8063cc1776d3146104fb578063d12e733214610519578063d5abeb0114610549578063d936547e14610567576101f0565b8063a0712d68116100de578063a0712d681461044f578063a457c2d71461047f578063a9059cbb146104af578063bb3acd48146104df576101f0565b80638cd09d50146103db5780638da5cb5b146103f757806390d49b9d1461041557806395d89b4114610431576101f0565b80634f7041a511610187578063715018a611610156578063715018a61461038f57806379cc6790146103995780638456cb59146103b55780638969a1d6146103bf576101f0565b80634f7041a5146103055780635c975abb146103235780635d922c611461034157806370a082311461035f576101f0565b8063313ce567116101c3578063313ce5671461029157806339509351146102af5780633f4ba83a146102df57806342966c68146102e9576101f0565b806306fdde03146101f5578063095ea7b31461021357806318160ddd1461024357806323b872dd14610261575b600080fd5b6101fd61061b565b60405161020a9190612674565b60405180910390f35b61022d60048036038101906102289190611ec4565b6106ad565b60405161023a9190612659565b60405180910390f35b61024b6106d0565b60405161025891906128d6565b60405180910390f35b61027b60048036038101906102769190611e39565b6106da565b6040516102889190612659565b60405180910390f35b610299610709565b6040516102a691906128f1565b60405180910390f35b6102c960048036038101906102c49190611ec4565b610712565b6040516102d69190612659565b60405180910390f35b6102e7610749565b005b61030360048036038101906102fe9190611f29565b61075b565b005b61030d61076f565b60405161031a91906128d6565b60405180910390f35b61032b610775565b6040516103389190612659565b60405180910390f35b61034961078c565b60405161035691906128d6565b60405180910390f35b61037960048036038101906103749190611dd4565b610792565b60405161038691906128d6565b60405180910390f35b6103976107da565b005b6103b360048036038101906103ae9190611ec4565b6107ee565b005b6103bd61080e565b005b6103d960048036038101906103d49190611dfd565b610820565b005b6103f560048036038101906103f09190611f29565b6109b7565b005b6103ff6109c9565b60405161040c91906125ec565b60405180910390f35b61042f600480360381019061042a9190611dd4565b6109f3565b005b610439610a3f565b6040516104469190612674565b60405180910390f35b61046960048036038101906104649190611f29565b610ad1565b6040516104769190612659565b60405180910390f35b61049960048036038101906104949190611ec4565b610af5565b6040516104a69190612659565b60405180910390f35b6104c960048036038101906104c49190611ec4565b610b6c565b6040516104d69190612659565b60405180910390f35b6104f960048036038101906104f49190611e88565b610b8f565b005b610503610c9b565b60405161051091906128d6565b60405180910390f35b610533600480360381019061052e9190611dd4565b610ca1565b6040516105409190612659565b60405180910390f35b610551610cc1565b60405161055e91906128d6565b60405180910390f35b610581600480360381019061057c9190611dd4565b610ccb565b60405161058e9190612659565b60405180910390f35b6105b160048036038101906105ac9190611f29565b610ceb565b005b6105cd60048036038101906105c89190611dfd565b610cfd565b6040516105da91906128d6565b60405180910390f35b6105fd60048036038101906105f89190611dd4565b610d84565b005b61061960048036038101906106149190611e88565b610e08565b005b60606004805461062a90612ac5565b80601f016020809104026020016040519081016040528092919081815260200182805461065690612ac5565b80156106a35780601f10610678576101008083540402835291602001916106a3565b820191906000526020600020905b81548152906001019060200180831161068657829003601f168201915b5050505050905090565b6000806106b8610e70565b90506106c5818585610e78565b600191505092915050565b6000600254905090565b6000806106e5610e70565b90506106f2858285611043565b6106fd8585856110cf565b60019150509392505050565b60006012905090565b60008061071d610e70565b905061073e81858561072f8589610cfd565b6107399190612928565b610e78565b600191505092915050565b61075161141f565b61075961149d565b565b61076c610766610e70565b82611500565b50565b60095481565b6000600660009054906101000a900460ff16905090565b61271081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107e261141f565b6107ec60006116d7565b565b610800826107fa610e70565b83611043565b61080a8282611500565b5050565b61081661141f565b61081e61179d565b565b61082861141f565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e90612796565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108d291906125ec565b60206040518083038186803b1580156108ea57600080fd5b505afa1580156108fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109229190611f52565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161095f929190612630565b602060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b19190611f00565b50505050565b6109bf61141f565b8060088190555050565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109fb61141f565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060058054610a4e90612ac5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7a90612ac5565b8015610ac75780601f10610a9c57610100808354040283529160200191610ac7565b820191906000526020600020905b815481529060010190602001808311610aaa57829003601f168201915b5050505050905090565b6000610adb61141f565b610aec610ae6610e70565b83611800565b60019050919050565b600080610b00610e70565b90506000610b0e8286610cfd565b905083811015610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a90612896565b60405180910390fd5b610b608286868403610e78565b60019250505092915050565b600080610b77610e70565b9050610b848185856110cf565b600191505092915050565b610b9761141f565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe90612816565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff9d2205caa6b302bf4869c72df6bfacff966d0d54f860881d7fe0f73b986a70b8282604051610c8f929190612607565b60405180910390a15050565b60085481565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b600c6020528060005260406000206000915054906101000a900460ff1681565b610cf361141f565b8060098190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d8c61141f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df3906126f6565b60405180910390fd5b610e05816116d7565b50565b610e1061141f565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90612876565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4f90612716565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161103691906128d6565b60405180910390a3505050565b600061104f8484610cfd565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110c957818110156110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290612736565b60405180910390fd5b6110c88484848403610e78565b5b50505050565b6110d76119f8565b60011515600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156111815750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561118f57506000600954115b80156111ea5750600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561127257600061121a61271061120c60095485611a4290919063ffffffff16565b611a5890919063ffffffff16565b905060006112318284611a6e90919063ffffffff16565b905061126085600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a84565b61126b858583611a84565b505061141a565b60011515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561131c5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561132a57506000600854115b80156113855750600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561140d5760006113b56127106113a760085485611a4290919063ffffffff16565b611a5890919063ffffffff16565b905060006113cc8284611a6e90919063ffffffff16565b90506113fb85600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a84565b611406858583611a84565b5050611419565b611418838383611a84565b5b5b505050565b611427610e70565b73ffffffffffffffffffffffffffffffffffffffff166114456109c9565b73ffffffffffffffffffffffffffffffffffffffff161461149b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611492906127f6565b60405180910390fd5b565b6114a5611d05565b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6114e9610e70565b6040516114f691906125ec565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790612836565b60405180910390fd5b61157c82600083611d4e565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f9906126d6565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546116599190612a09565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116be91906128d6565b60405180910390a36116d283600084611d66565b505050565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6117a56119f8565b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117e9610e70565b6040516117f691906125ec565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867906128b6565b60405180910390fd5b600354600254106118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad906127b6565b60405180910390fd5b600354816002546118c79190612928565b1115611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90612776565b60405180910390fd5b61191460008383611d4e565b80600260008282546119269190612928565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461197b9190612928565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119e091906128d6565b60405180910390a36119f460008383611d66565b5050565b611a00610775565b15611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a37906127d6565b60405180910390fd5b565b60008183611a5091906129af565b905092915050565b60008183611a66919061297e565b905092915050565b60008183611a7c9190612a09565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90612856565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b90612696565b60405180910390fd5b611b6f838383611d4e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bec90612756565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c889190612928565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cec91906128d6565b60405180910390a3611cff848484611d66565b50505050565b611d0d610775565b611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d43906126b6565b60405180910390fd5b565b611d566119f8565b611d61838383610e6b565b505050565b505050565b600081359050611d7a81612b95565b92915050565b600081359050611d8f81612bac565b92915050565b600081519050611da481612bac565b92915050565b600081359050611db981612bc3565b92915050565b600081519050611dce81612bc3565b92915050565b600060208284031215611de657600080fd5b6000611df484828501611d6b565b91505092915050565b60008060408385031215611e1057600080fd5b6000611e1e85828601611d6b565b9250506020611e2f85828601611d6b565b9150509250929050565b600080600060608486031215611e4e57600080fd5b6000611e5c86828701611d6b565b9350506020611e6d86828701611d6b565b9250506040611e7e86828701611daa565b9150509250925092565b60008060408385031215611e9b57600080fd5b6000611ea985828601611d6b565b9250506020611eba85828601611d80565b9150509250929050565b60008060408385031215611ed757600080fd5b6000611ee585828601611d6b565b9250506020611ef685828601611daa565b9150509250929050565b600060208284031215611f1257600080fd5b6000611f2084828501611d95565b91505092915050565b600060208284031215611f3b57600080fd5b6000611f4984828501611daa565b91505092915050565b600060208284031215611f6457600080fd5b6000611f7284828501611dbf565b91505092915050565b611f8481612a3d565b82525050565b611f9381612a4f565b82525050565b6000611fa48261290c565b611fae8185612917565b9350611fbe818560208601612a92565b611fc781612b84565b840191505092915050565b6000611fdf602383612917565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612045601483612917565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000612085602283612917565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120eb602683612917565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612151602283612917565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121b7601d83612917565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b60006121f7602683612917565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061225d602083612917565b91507f4d696e74696e6720776f756c6420657863656564206d617820737570706c792e6000830152602082019050919050565b600061229d600d83612917565b91507f496e76616c696420746f6b656e000000000000000000000000000000000000006000830152602082019050919050565b60006122dd602c83612917565b91507f4d617820737570706c7920726561636865642e2043616e6e6f74206d696e742060008301527f6d6f726520746f6b656e732e00000000000000000000000000000000000000006020830152604082019050919050565b6000612343601083612917565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000612383602083612917565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006123c3601083612917565b91507f5f6c70207a65726f2061646472657373000000000000000000000000000000006000830152602082019050919050565b6000612403602183612917565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612469602583612917565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006124cf602483612917565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612535602583612917565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061259b601f83612917565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6125d781612a7b565b82525050565b6125e681612a85565b82525050565b60006020820190506126016000830184611f7b565b92915050565b600060408201905061261c6000830185611f7b565b6126296020830184611f8a565b9392505050565b60006040820190506126456000830185611f7b565b61265260208301846125ce565b9392505050565b600060208201905061266e6000830184611f8a565b92915050565b6000602082019050818103600083015261268e8184611f99565b905092915050565b600060208201905081810360008301526126af81611fd2565b9050919050565b600060208201905081810360008301526126cf81612038565b9050919050565b600060208201905081810360008301526126ef81612078565b9050919050565b6000602082019050818103600083015261270f816120de565b9050919050565b6000602082019050818103600083015261272f81612144565b9050919050565b6000602082019050818103600083015261274f816121aa565b9050919050565b6000602082019050818103600083015261276f816121ea565b9050919050565b6000602082019050818103600083015261278f81612250565b9050919050565b600060208201905081810360008301526127af81612290565b9050919050565b600060208201905081810360008301526127cf816122d0565b9050919050565b600060208201905081810360008301526127ef81612336565b9050919050565b6000602082019050818103600083015261280f81612376565b9050919050565b6000602082019050818103600083015261282f816123b6565b9050919050565b6000602082019050818103600083015261284f816123f6565b9050919050565b6000602082019050818103600083015261286f8161245c565b9050919050565b6000602082019050818103600083015261288f816124c2565b9050919050565b600060208201905081810360008301526128af81612528565b9050919050565b600060208201905081810360008301526128cf8161258e565b9050919050565b60006020820190506128eb60008301846125ce565b92915050565b600060208201905061290660008301846125dd565b92915050565b600081519050919050565b600082825260208201905092915050565b600061293382612a7b565b915061293e83612a7b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561297357612972612af7565b5b828201905092915050565b600061298982612a7b565b915061299483612a7b565b9250826129a4576129a3612b26565b5b828204905092915050565b60006129ba82612a7b565b91506129c583612a7b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129fe576129fd612af7565b5b828202905092915050565b6000612a1482612a7b565b9150612a1f83612a7b565b925082821015612a3257612a31612af7565b5b828203905092915050565b6000612a4882612a5b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612ab0578082015181840152602081019050612a95565b83811115612abf576000848401525b50505050565b60006002820490506001821680612add57607f821691505b60208210811415612af157612af0612b55565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b612b9e81612a3d565b8114612ba957600080fd5b50565b612bb581612a4f565b8114612bc057600080fd5b50565b612bcc81612a7b565b8114612bd757600080fd5b5056fea2646970667358221220101c85a1de55c0cad469ba23a551f0d4d373945e3acd1212f24d94e0d3833a3f64736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80638cd09d501161010f578063cc1776d3116100a2578063dc1052e211610071578063dc1052e214610597578063dd62ed3e146105b3578063f2fde38b146105e3578063f59c3708146105ff576101f0565b8063cc1776d3146104fb578063d12e733214610519578063d5abeb0114610549578063d936547e14610567576101f0565b8063a0712d68116100de578063a0712d681461044f578063a457c2d71461047f578063a9059cbb146104af578063bb3acd48146104df576101f0565b80638cd09d50146103db5780638da5cb5b146103f757806390d49b9d1461041557806395d89b4114610431576101f0565b80634f7041a511610187578063715018a611610156578063715018a61461038f57806379cc6790146103995780638456cb59146103b55780638969a1d6146103bf576101f0565b80634f7041a5146103055780635c975abb146103235780635d922c611461034157806370a082311461035f576101f0565b8063313ce567116101c3578063313ce5671461029157806339509351146102af5780633f4ba83a146102df57806342966c68146102e9576101f0565b806306fdde03146101f5578063095ea7b31461021357806318160ddd1461024357806323b872dd14610261575b600080fd5b6101fd61061b565b60405161020a9190612674565b60405180910390f35b61022d60048036038101906102289190611ec4565b6106ad565b60405161023a9190612659565b60405180910390f35b61024b6106d0565b60405161025891906128d6565b60405180910390f35b61027b60048036038101906102769190611e39565b6106da565b6040516102889190612659565b60405180910390f35b610299610709565b6040516102a691906128f1565b60405180910390f35b6102c960048036038101906102c49190611ec4565b610712565b6040516102d69190612659565b60405180910390f35b6102e7610749565b005b61030360048036038101906102fe9190611f29565b61075b565b005b61030d61076f565b60405161031a91906128d6565b60405180910390f35b61032b610775565b6040516103389190612659565b60405180910390f35b61034961078c565b60405161035691906128d6565b60405180910390f35b61037960048036038101906103749190611dd4565b610792565b60405161038691906128d6565b60405180910390f35b6103976107da565b005b6103b360048036038101906103ae9190611ec4565b6107ee565b005b6103bd61080e565b005b6103d960048036038101906103d49190611dfd565b610820565b005b6103f560048036038101906103f09190611f29565b6109b7565b005b6103ff6109c9565b60405161040c91906125ec565b60405180910390f35b61042f600480360381019061042a9190611dd4565b6109f3565b005b610439610a3f565b6040516104469190612674565b60405180910390f35b61046960048036038101906104649190611f29565b610ad1565b6040516104769190612659565b60405180910390f35b61049960048036038101906104949190611ec4565b610af5565b6040516104a69190612659565b60405180910390f35b6104c960048036038101906104c49190611ec4565b610b6c565b6040516104d69190612659565b60405180910390f35b6104f960048036038101906104f49190611e88565b610b8f565b005b610503610c9b565b60405161051091906128d6565b60405180910390f35b610533600480360381019061052e9190611dd4565b610ca1565b6040516105409190612659565b60405180910390f35b610551610cc1565b60405161055e91906128d6565b60405180910390f35b610581600480360381019061057c9190611dd4565b610ccb565b60405161058e9190612659565b60405180910390f35b6105b160048036038101906105ac9190611f29565b610ceb565b005b6105cd60048036038101906105c89190611dfd565b610cfd565b6040516105da91906128d6565b60405180910390f35b6105fd60048036038101906105f89190611dd4565b610d84565b005b61061960048036038101906106149190611e88565b610e08565b005b60606004805461062a90612ac5565b80601f016020809104026020016040519081016040528092919081815260200182805461065690612ac5565b80156106a35780601f10610678576101008083540402835291602001916106a3565b820191906000526020600020905b81548152906001019060200180831161068657829003601f168201915b5050505050905090565b6000806106b8610e70565b90506106c5818585610e78565b600191505092915050565b6000600254905090565b6000806106e5610e70565b90506106f2858285611043565b6106fd8585856110cf565b60019150509392505050565b60006012905090565b60008061071d610e70565b905061073e81858561072f8589610cfd565b6107399190612928565b610e78565b600191505092915050565b61075161141f565b61075961149d565b565b61076c610766610e70565b82611500565b50565b60095481565b6000600660009054906101000a900460ff16905090565b61271081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107e261141f565b6107ec60006116d7565b565b610800826107fa610e70565b83611043565b61080a8282611500565b5050565b61081661141f565b61081e61179d565b565b61082861141f565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e90612796565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108d291906125ec565b60206040518083038186803b1580156108ea57600080fd5b505afa1580156108fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109229190611f52565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161095f929190612630565b602060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b19190611f00565b50505050565b6109bf61141f565b8060088190555050565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109fb61141f565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060058054610a4e90612ac5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7a90612ac5565b8015610ac75780601f10610a9c57610100808354040283529160200191610ac7565b820191906000526020600020905b815481529060010190602001808311610aaa57829003601f168201915b5050505050905090565b6000610adb61141f565b610aec610ae6610e70565b83611800565b60019050919050565b600080610b00610e70565b90506000610b0e8286610cfd565b905083811015610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a90612896565b60405180910390fd5b610b608286868403610e78565b60019250505092915050565b600080610b77610e70565b9050610b848185856110cf565b600191505092915050565b610b9761141f565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe90612816565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff9d2205caa6b302bf4869c72df6bfacff966d0d54f860881d7fe0f73b986a70b8282604051610c8f929190612607565b60405180910390a15050565b60085481565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b600c6020528060005260406000206000915054906101000a900460ff1681565b610cf361141f565b8060098190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d8c61141f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df3906126f6565b60405180910390fd5b610e05816116d7565b50565b610e1061141f565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90612876565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4f90612716565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161103691906128d6565b60405180910390a3505050565b600061104f8484610cfd565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110c957818110156110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290612736565b60405180910390fd5b6110c88484848403610e78565b5b50505050565b6110d76119f8565b60011515600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156111815750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561118f57506000600954115b80156111ea5750600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561127257600061121a61271061120c60095485611a4290919063ffffffff16565b611a5890919063ffffffff16565b905060006112318284611a6e90919063ffffffff16565b905061126085600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a84565b61126b858583611a84565b505061141a565b60011515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561131c5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561132a57506000600854115b80156113855750600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561140d5760006113b56127106113a760085485611a4290919063ffffffff16565b611a5890919063ffffffff16565b905060006113cc8284611a6e90919063ffffffff16565b90506113fb85600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a84565b611406858583611a84565b5050611419565b611418838383611a84565b5b5b505050565b611427610e70565b73ffffffffffffffffffffffffffffffffffffffff166114456109c9565b73ffffffffffffffffffffffffffffffffffffffff161461149b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611492906127f6565b60405180910390fd5b565b6114a5611d05565b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6114e9610e70565b6040516114f691906125ec565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790612836565b60405180910390fd5b61157c82600083611d4e565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f9906126d6565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546116599190612a09565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116be91906128d6565b60405180910390a36116d283600084611d66565b505050565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6117a56119f8565b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117e9610e70565b6040516117f691906125ec565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867906128b6565b60405180910390fd5b600354600254106118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad906127b6565b60405180910390fd5b600354816002546118c79190612928565b1115611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90612776565b60405180910390fd5b61191460008383611d4e565b80600260008282546119269190612928565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461197b9190612928565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119e091906128d6565b60405180910390a36119f460008383611d66565b5050565b611a00610775565b15611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a37906127d6565b60405180910390fd5b565b60008183611a5091906129af565b905092915050565b60008183611a66919061297e565b905092915050565b60008183611a7c9190612a09565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90612856565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b90612696565b60405180910390fd5b611b6f838383611d4e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bec90612756565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c889190612928565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cec91906128d6565b60405180910390a3611cff848484611d66565b50505050565b611d0d610775565b611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d43906126b6565b60405180910390fd5b565b611d566119f8565b611d61838383610e6b565b505050565b505050565b600081359050611d7a81612b95565b92915050565b600081359050611d8f81612bac565b92915050565b600081519050611da481612bac565b92915050565b600081359050611db981612bc3565b92915050565b600081519050611dce81612bc3565b92915050565b600060208284031215611de657600080fd5b6000611df484828501611d6b565b91505092915050565b60008060408385031215611e1057600080fd5b6000611e1e85828601611d6b565b9250506020611e2f85828601611d6b565b9150509250929050565b600080600060608486031215611e4e57600080fd5b6000611e5c86828701611d6b565b9350506020611e6d86828701611d6b565b9250506040611e7e86828701611daa565b9150509250925092565b60008060408385031215611e9b57600080fd5b6000611ea985828601611d6b565b9250506020611eba85828601611d80565b9150509250929050565b60008060408385031215611ed757600080fd5b6000611ee585828601611d6b565b9250506020611ef685828601611daa565b9150509250929050565b600060208284031215611f1257600080fd5b6000611f2084828501611d95565b91505092915050565b600060208284031215611f3b57600080fd5b6000611f4984828501611daa565b91505092915050565b600060208284031215611f6457600080fd5b6000611f7284828501611dbf565b91505092915050565b611f8481612a3d565b82525050565b611f9381612a4f565b82525050565b6000611fa48261290c565b611fae8185612917565b9350611fbe818560208601612a92565b611fc781612b84565b840191505092915050565b6000611fdf602383612917565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612045601483612917565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000612085602283612917565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120eb602683612917565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612151602283612917565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121b7601d83612917565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b60006121f7602683612917565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061225d602083612917565b91507f4d696e74696e6720776f756c6420657863656564206d617820737570706c792e6000830152602082019050919050565b600061229d600d83612917565b91507f496e76616c696420746f6b656e000000000000000000000000000000000000006000830152602082019050919050565b60006122dd602c83612917565b91507f4d617820737570706c7920726561636865642e2043616e6e6f74206d696e742060008301527f6d6f726520746f6b656e732e00000000000000000000000000000000000000006020830152604082019050919050565b6000612343601083612917565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000612383602083612917565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006123c3601083612917565b91507f5f6c70207a65726f2061646472657373000000000000000000000000000000006000830152602082019050919050565b6000612403602183612917565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612469602583612917565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006124cf602483612917565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612535602583612917565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061259b601f83612917565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6125d781612a7b565b82525050565b6125e681612a85565b82525050565b60006020820190506126016000830184611f7b565b92915050565b600060408201905061261c6000830185611f7b565b6126296020830184611f8a565b9392505050565b60006040820190506126456000830185611f7b565b61265260208301846125ce565b9392505050565b600060208201905061266e6000830184611f8a565b92915050565b6000602082019050818103600083015261268e8184611f99565b905092915050565b600060208201905081810360008301526126af81611fd2565b9050919050565b600060208201905081810360008301526126cf81612038565b9050919050565b600060208201905081810360008301526126ef81612078565b9050919050565b6000602082019050818103600083015261270f816120de565b9050919050565b6000602082019050818103600083015261272f81612144565b9050919050565b6000602082019050818103600083015261274f816121aa565b9050919050565b6000602082019050818103600083015261276f816121ea565b9050919050565b6000602082019050818103600083015261278f81612250565b9050919050565b600060208201905081810360008301526127af81612290565b9050919050565b600060208201905081810360008301526127cf816122d0565b9050919050565b600060208201905081810360008301526127ef81612336565b9050919050565b6000602082019050818103600083015261280f81612376565b9050919050565b6000602082019050818103600083015261282f816123b6565b9050919050565b6000602082019050818103600083015261284f816123f6565b9050919050565b6000602082019050818103600083015261286f8161245c565b9050919050565b6000602082019050818103600083015261288f816124c2565b9050919050565b600060208201905081810360008301526128af81612528565b9050919050565b600060208201905081810360008301526128cf8161258e565b9050919050565b60006020820190506128eb60008301846125ce565b92915050565b600060208201905061290660008301846125dd565b92915050565b600081519050919050565b600082825260208201905092915050565b600061293382612a7b565b915061293e83612a7b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561297357612972612af7565b5b828201905092915050565b600061298982612a7b565b915061299483612a7b565b9250826129a4576129a3612b26565b5b828204905092915050565b60006129ba82612a7b565b91506129c583612a7b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129fe576129fd612af7565b5b828202905092915050565b6000612a1482612a7b565b9150612a1f83612a7b565b925082821015612a3257612a31612af7565b5b828203905092915050565b6000612a4882612a5b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612ab0578082015181840152602081019050612a95565b83811115612abf576000848401525b50505050565b60006002820490506001821680612add57607f821691505b60208210811415612af157612af0612b55565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b612b9e81612a3d565b8114612ba957600080fd5b50565b612bb581612a4f565b8114612bc057600080fd5b50565b612bcc81612a7b565b8114612bd757600080fd5b5056fea2646970667358221220101c85a1de55c0cad469ba23a551f0d4d373945e3acd1212f24d94e0d3833a3f64736f6c63430008000033
Deployed Bytecode Sourcemap
31507:2963:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6667:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9262:242;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7787:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10084:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7629:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10788:270;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32164:65;;;:::i;:::-;;18662:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31754:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20825:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31666:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8061:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23627:103;;;:::i;:::-;;19072:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32095:61;;;:::i;:::-;;34073:256;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33863:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22979:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33755:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6886:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34337:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11561:505;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8444:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33541:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31713:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31826:35;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7903:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31870:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33969:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8741:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23885:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33419:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6667:100;6721:13;6754:5;6747:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6667:100;:::o;9262:242::-;9381:4;9403:13;9419:12;:10;:12::i;:::-;9403:28;;9442:32;9451:5;9458:7;9467:6;9442:8;:32::i;:::-;9492:4;9485:11;;;9262:242;;;;:::o;7787:108::-;7848:7;7875:12;;7868:19;;7787:108;:::o;10084:295::-;10215:4;10232:15;10250:12;:10;:12::i;:::-;10232:30;;10273:38;10289:4;10295:7;10304:6;10273:15;:38::i;:::-;10322:27;10332:4;10338:2;10342:6;10322:9;:27::i;:::-;10367:4;10360:11;;;10084:295;;;;;:::o;7629:93::-;7687:5;7712:2;7705:9;;7629:93;:::o;10788:270::-;10903:4;10925:13;10941:12;:10;:12::i;:::-;10925:28;;10964:64;10973:5;10980:7;11017:10;10989:25;10999:5;11006:7;10989:9;:25::i;:::-;:38;;;;:::i;:::-;10964:8;:64::i;:::-;11046:4;11039:11;;;10788:270;;;;:::o;32164:65::-;22865:13;:11;:13::i;:::-;32211:10:::1;:8;:10::i;:::-;32164:65::o:0;18662:91::-;18718:27;18724:12;:10;:12::i;:::-;18738:6;18718:5;:27::i;:::-;18662:91;:::o;31754:27::-;;;;:::o;20825:86::-;20872:4;20896:7;;;;;;;;;;;20889:14;;20825:86;:::o;31666:40::-;31701:5;31666:40;:::o;8061:177::-;8180:7;8212:9;:18;8222:7;8212:18;;;;;;;;;;;;;;;;8205:25;;8061:177;;;:::o;23627:103::-;22865:13;:11;:13::i;:::-;23692:30:::1;23719:1;23692:18;:30::i;:::-;23627:103::o:0;19072:164::-;19149:46;19165:7;19174:12;:10;:12::i;:::-;19188:6;19149:15;:46::i;:::-;19206:22;19212:7;19221:6;19206:5;:22::i;:::-;19072:164;;:::o;32095:61::-;22865:13;:11;:13::i;:::-;32140:8:::1;:6;:8::i;:::-;32095:61::o:0;34073:256::-;22865:13;:11;:13::i;:::-;34184:4:::1;34166:23;;:6;:23;;;;34158:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;34218:15;34242:6;34236:23;;;34268:4;34236:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34218:56;;34291:6;34285:22;;;34308:3;34313:7;34285:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22889:1;34073:256:::0;;:::o;33863:98::-;22865:13;:11;:13::i;:::-;33942:11:::1;33932:7;:21;;;;33863:98:::0;:::o;22979:87::-;23025:7;23052:6;;;;;;;;;;;23045:13;;22979:87;:::o;33755:100::-;22865:13;:11;:13::i;:::-;33837:10:::1;33825:9;;:22;;;;;;;;;;;;;;;;;;33755:100:::0;:::o;6886:104::-;6942:13;6975:7;6968:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6886:104;:::o;34337:130::-;34393:4;22865:13;:11;:13::i;:::-;34410:27:::1;34416:12;:10;:12::i;:::-;34430:6;34410:5;:27::i;:::-;34455:4;34448:11;;34337:130:::0;;;:::o;11561:505::-;11681:4;11703:13;11719:12;:10;:12::i;:::-;11703:28;;11742:24;11769:25;11779:5;11786:7;11769:9;:25::i;:::-;11742:52;;11847:15;11827:16;:35;;11805:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11963:60;11972:5;11979:7;12007:15;11988:16;:34;11963:8;:60::i;:::-;12054:4;12047:11;;;;11561:505;;;;:::o;8444:234::-;8559:4;8581:13;8597:12;:10;:12::i;:::-;8581:28;;8620;8630:5;8637:2;8641:6;8620:9;:28::i;:::-;8666:4;8659:11;;;8444:234;;;;:::o;33541:206::-;22865:13;:11;:13::i;:::-;33643:3:::1;33629:17;;33637:1;33629:17;;;;33621:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33689:7;33678:3;:8;33682:3;33678:8;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;33712:27;33726:3;33731:7;33712:27;;;;;;;:::i;:::-;;;;;;;;33541:206:::0;;:::o;31713:28::-;;;;:::o;31826:35::-;;;;;;;;;;;;;;;;;;;;;;:::o;7903:95::-;7953:7;7980:10;;7973:17;;7903:95;:::o;31870:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;33969:96::-;22865:13;:11;:13::i;:::-;34046:11:::1;34037:6;:20;;;;33969:96:::0;:::o;8741:201::-;8875:7;8907:11;:18;8919:5;8907:18;;;;;;;;;;;;;;;:27;8926:7;8907:27;;;;;;;;;;;;;;;;8900:34;;8741:201;;;;:::o;23885:238::-;22865:13;:11;:13::i;:::-;24008:1:::1;23988:22;;:8;:22;;;;23966:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;24087:28;24106:8;24087:18;:28::i;:::-;23885:238:::0;:::o;33419:114::-;22865:13;:11;:13::i;:::-;33518:7:::1;33497:11;:18;33509:5;33497:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;33419:114:::0;;:::o;17331:125::-;;;;:::o;4338:98::-;4391:7;4418:10;4411:17;;4338:98;:::o;15558:380::-;15711:1;15694:19;;:5;:19;;;;15686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15792:1;15773:21;;:7;:21;;;;15765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15876:6;15846:11;:18;15858:5;15846:18;;;;;;;;;;;;;;;:27;15865:7;15846:27;;;;;;;;;;;;;;;:36;;;;15914:7;15898:32;;15907:5;15898:32;;;15923:6;15898:32;;;;;;:::i;:::-;;;;;;;;15558:380;;;:::o;16229:502::-;16364:24;16391:25;16401:5;16408:7;16391:9;:25::i;:::-;16364:52;;16451:17;16431:16;:37;16427:297;;16531:6;16511:16;:26;;16485:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;16646:51;16655:5;16662:7;16690:6;16671:16;:25;16646:8;:51::i;:::-;16427:297;16229:502;;;;:::o;32446:965::-;20430:19;:17;:19::i;:::-;32615:4:::1;32602:17;;:3;:9;32606:4;32602:9;;;;;;;;;;;;;;;;;;;;;;;;;:17;;;:50;;;;;32637:11;:15;32649:2;32637:15;;;;;;;;;;;;;;;;;;;;;;;;;32636:16;32602:50;:77;;;;;32678:1;32669:6;;:10;32602:77;:117;;;;;32717:1;32696:23;;:9;;;;;;;;;;;:23;;;;32602:117;32584:820;;;32746:11;32760:32;31701:5;32760:18;32771:6;;32760;:10;;:18;;;;:::i;:::-;:22;;:32;;;;:::i;:::-;32746:46;;32807:17;32827:15;32838:3;32827:6;:10;;:15;;;;:::i;:::-;32807:35;;32857:37;32873:4;32879:9;;;;;;;;;;;32890:3;32857:15;:37::i;:::-;32909:36;32925:4;32931:2;32935:9;32909:15;:36::i;:::-;32584:820;;;;;32992:4;32981:15;;:3;:7;32985:2;32981:7;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;:50;;;;;33014:11;:17;33026:4;33014:17;;;;;;;;;;;;;;;;;;;;;;;;;33013:18;32981:50;:78;;;;;33058:1;33048:7;;:11;32981:78;:118;;;;;33097:1;33076:23;;:9;;;;;;;;;;;:23;;;;32981:118;32963:441;;;33126:11;33140:33;31701:5;33140:19;33151:7;;33140:6;:10;;:19;;;;:::i;:::-;:23;;:33;;;;:::i;:::-;33126:47;;33188:17;33208:15;33219:3;33208:6;:10;;:15;;;;:::i;:::-;33188:35;;33238:37;33254:4;33260:9;;;;;;;;;;;33271:3;33238:15;:37::i;:::-;33290:36;33306:4;33312:2;33316:9;33290:15;:36::i;:::-;32963:441;;;;;33359:33;33375:4;33381:2;33385:6;33359:15;:33::i;:::-;32963:441;32584:820;32446:965:::0;;;:::o;23144:132::-;23219:12;:10;:12::i;:::-;23208:23;;:7;:5;:7::i;:::-;:23;;;23200:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23144:132::o;21680:120::-;20689:16;:14;:16::i;:::-;21749:5:::1;21739:7;;:15;;;;;;;;;;;;;;;;;;21770:22;21779:12;:10;:12::i;:::-;21770:22;;;;;;:::i;:::-;;;;;;;;21680:120::o:0;14529:591::-;14632:1;14613:21;;:7;:21;;;;14605:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14685:49;14706:7;14723:1;14727:6;14685:20;:49::i;:::-;14747:22;14772:9;:18;14782:7;14772:18;;;;;;;;;;;;;;;;14747:43;;14827:6;14809:14;:24;;14801:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14946:6;14929:14;:23;14908:9;:18;14918:7;14908:18;;;;;;;;;;;;;;;:44;;;;14990:6;14974:12;;:22;;;;;;;:::i;:::-;;;;;;;;15040:1;15014:37;;15023:7;15014:37;;;15044:6;15014:37;;;;;;:::i;:::-;;;;;;;;15064:48;15084:7;15101:1;15105:6;15064:19;:48::i;:::-;14529:591;;;:::o;24283:191::-;24357:16;24376:6;;;;;;;;;;;24357:25;;24402:8;24393:6;;:17;;;;;;;;;;;;;;;;;;24457:8;24426:40;;24447:8;24426:40;;;;;;;;;;;;24283:191;;:::o;21421:118::-;20430:19;:17;:19::i;:::-;21491:4:::1;21481:7;;:14;;;;;;;;;;;;;;;;;;21511:20;21518:12;:10;:12::i;:::-;21511:20;;;;;;:::i;:::-;;;;;;;;21421:118::o:0;13531:665::-;13634:1;13615:21;;:7;:21;;;;13607:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13720:10;;13705:12;;:25;13683:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;13862:10;;13852:6;13837:12;;:21;;;;:::i;:::-;:35;;13815:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13943:49;13972:1;13976:7;13985:6;13943:20;:49::i;:::-;14029:6;14013:12;;:22;;;;;;;:::i;:::-;;;;;;;;14068:6;14046:9;:18;14056:7;14046:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;14111:7;14090:37;;14107:1;14090:37;;;14120:6;14090:37;;;;;;:::i;:::-;;;;;;;;14140:48;14168:1;14172:7;14181:6;14140:19;:48::i;:::-;13531:665;;:::o;20984:108::-;21055:8;:6;:8::i;:::-;21054:9;21046:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20984:108::o;28080:98::-;28138:7;28169:1;28165;:5;;;;:::i;:::-;28158:12;;28080:98;;;;:::o;28479:::-;28537:7;28568:1;28564;:5;;;;:::i;:::-;28557:12;;28479:98;;;;:::o;27723:::-;27781:7;27812:1;27808;:5;;;;:::i;:::-;27801:12;;27723:98;;;;:::o;12536:708::-;12683:1;12667:18;;:4;:18;;;;12659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12760:1;12746:16;;:2;:16;;;;12738:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12815:38;12836:4;12842:2;12846:6;12815:20;:38::i;:::-;12866:19;12888:9;:15;12898:4;12888:15;;;;;;;;;;;;;;;;12866:37;;12951:6;12936:11;:21;;12914:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13091:6;13077:11;:20;13059:9;:15;13069:4;13059:15;;;;;;;;;;;;;;;:38;;;;13136:6;13119:9;:13;13129:2;13119:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;13175:2;13160:26;;13169:4;13160:26;;;13179:6;13160:26;;;;;;:::i;:::-;;;;;;;;13199:37;13219:4;13225:2;13229:6;13199:19;:37::i;:::-;12536:708;;;;:::o;21169:108::-;21236:8;:6;:8::i;:::-;21228:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;21169:108::o;32237:201::-;20430:19;:17;:19::i;:::-;32386:44:::1;32413:4;32419:2;32423:6;32386:26;:44::i;:::-;32237:201:::0;;;:::o;18060:124::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:137::-;;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;351:77;;;;:::o;434:139::-;;518:6;505:20;496:29;;534:33;561:5;534:33;:::i;:::-;486:87;;;;:::o;579:143::-;;667:6;661:13;652:22;;683:33;710:5;683:33;:::i;:::-;642:80;;;;:::o;728:262::-;;836:2;824:9;815:7;811:23;807:32;804:2;;;852:1;849;842:12;804:2;895:1;920:53;965:7;956:6;945:9;941:22;920:53;:::i;:::-;910:63;;866:117;794:196;;;;:::o;996:407::-;;;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:53;1250:7;1241:6;1230:9;1226:22;1205:53;:::i;:::-;1195:63;;1151:117;1307:2;1333:53;1378:7;1369:6;1358:9;1354:22;1333:53;:::i;:::-;1323:63;;1278:118;1079:324;;;;;:::o;1409:552::-;;;;1551:2;1539:9;1530:7;1526:23;1522:32;1519:2;;;1567:1;1564;1557:12;1519:2;1610:1;1635:53;1680:7;1671:6;1660:9;1656:22;1635:53;:::i;:::-;1625:63;;1581:117;1737:2;1763:53;1808:7;1799:6;1788:9;1784:22;1763:53;:::i;:::-;1753:63;;1708:118;1865:2;1891:53;1936:7;1927:6;1916:9;1912:22;1891:53;:::i;:::-;1881:63;;1836:118;1509:452;;;;;:::o;1967:401::-;;;2089:2;2077:9;2068:7;2064:23;2060:32;2057:2;;;2105:1;2102;2095:12;2057:2;2148:1;2173:53;2218:7;2209:6;2198:9;2194:22;2173:53;:::i;:::-;2163:63;;2119:117;2275:2;2301:50;2343:7;2334:6;2323:9;2319:22;2301:50;:::i;:::-;2291:60;;2246:115;2047:321;;;;;:::o;2374:407::-;;;2499:2;2487:9;2478:7;2474:23;2470:32;2467:2;;;2515:1;2512;2505:12;2467:2;2558:1;2583:53;2628:7;2619:6;2608:9;2604:22;2583:53;:::i;:::-;2573:63;;2529:117;2685:2;2711:53;2756:7;2747:6;2736:9;2732:22;2711:53;:::i;:::-;2701:63;;2656:118;2457:324;;;;;:::o;2787:278::-;;2903:2;2891:9;2882:7;2878:23;2874:32;2871:2;;;2919:1;2916;2909:12;2871:2;2962:1;2987:61;3040:7;3031:6;3020:9;3016:22;2987:61;:::i;:::-;2977:71;;2933:125;2861:204;;;;:::o;3071:262::-;;3179:2;3167:9;3158:7;3154:23;3150:32;3147:2;;;3195:1;3192;3185:12;3147:2;3238:1;3263:53;3308:7;3299:6;3288:9;3284:22;3263:53;:::i;:::-;3253:63;;3209:117;3137:196;;;;:::o;3339:284::-;;3458:2;3446:9;3437:7;3433:23;3429:32;3426:2;;;3474:1;3471;3464:12;3426:2;3517:1;3542:64;3598:7;3589:6;3578:9;3574:22;3542:64;:::i;:::-;3532:74;;3488:128;3416:207;;;;:::o;3629:118::-;3716:24;3734:5;3716:24;:::i;:::-;3711:3;3704:37;3694:53;;:::o;3753:109::-;3834:21;3849:5;3834:21;:::i;:::-;3829:3;3822:34;3812:50;;:::o;3868:364::-;;3984:39;4017:5;3984:39;:::i;:::-;4039:71;4103:6;4098:3;4039:71;:::i;:::-;4032:78;;4119:52;4164:6;4159:3;4152:4;4145:5;4141:16;4119:52;:::i;:::-;4196:29;4218:6;4196:29;:::i;:::-;4191:3;4187:39;4180:46;;3960:272;;;;;:::o;4238:367::-;;4401:67;4465:2;4460:3;4401:67;:::i;:::-;4394:74;;4498:34;4494:1;4489:3;4485:11;4478:55;4564:5;4559:2;4554:3;4550:12;4543:27;4596:2;4591:3;4587:12;4580:19;;4384:221;;;:::o;4611:318::-;;4774:67;4838:2;4833:3;4774:67;:::i;:::-;4767:74;;4871:22;4867:1;4862:3;4858:11;4851:43;4920:2;4915:3;4911:12;4904:19;;4757:172;;;:::o;4935:366::-;;5098:67;5162:2;5157:3;5098:67;:::i;:::-;5091:74;;5195:34;5191:1;5186:3;5182:11;5175:55;5261:4;5256:2;5251:3;5247:12;5240:26;5292:2;5287:3;5283:12;5276:19;;5081:220;;;:::o;5307:370::-;;5470:67;5534:2;5529:3;5470:67;:::i;:::-;5463:74;;5567:34;5563:1;5558:3;5554:11;5547:55;5633:8;5628:2;5623:3;5619:12;5612:30;5668:2;5663:3;5659:12;5652:19;;5453:224;;;:::o;5683:366::-;;5846:67;5910:2;5905:3;5846:67;:::i;:::-;5839:74;;5943:34;5939:1;5934:3;5930:11;5923:55;6009:4;6004:2;5999:3;5995:12;5988:26;6040:2;6035:3;6031:12;6024:19;;5829:220;;;:::o;6055:327::-;;6218:67;6282:2;6277:3;6218:67;:::i;:::-;6211:74;;6315:31;6311:1;6306:3;6302:11;6295:52;6373:2;6368:3;6364:12;6357:19;;6201:181;;;:::o;6388:370::-;;6551:67;6615:2;6610:3;6551:67;:::i;:::-;6544:74;;6648:34;6644:1;6639:3;6635:11;6628:55;6714:8;6709:2;6704:3;6700:12;6693:30;6749:2;6744:3;6740:12;6733:19;;6534:224;;;:::o;6764:330::-;;6927:67;6991:2;6986:3;6927:67;:::i;:::-;6920:74;;7024:34;7020:1;7015:3;7011:11;7004:55;7085:2;7080:3;7076:12;7069:19;;6910:184;;;:::o;7100:311::-;;7263:67;7327:2;7322:3;7263:67;:::i;:::-;7256:74;;7360:15;7356:1;7351:3;7347:11;7340:36;7402:2;7397:3;7393:12;7386:19;;7246:165;;;:::o;7417:376::-;;7580:67;7644:2;7639:3;7580:67;:::i;:::-;7573:74;;7677:34;7673:1;7668:3;7664:11;7657:55;7743:14;7738:2;7733:3;7729:12;7722:36;7784:2;7779:3;7775:12;7768:19;;7563:230;;;:::o;7799:314::-;;7962:67;8026:2;8021:3;7962:67;:::i;:::-;7955:74;;8059:18;8055:1;8050:3;8046:11;8039:39;8104:2;8099:3;8095:12;8088:19;;7945:168;;;:::o;8119:330::-;;8282:67;8346:2;8341:3;8282:67;:::i;:::-;8275:74;;8379:34;8375:1;8370:3;8366:11;8359:55;8440:2;8435:3;8431:12;8424:19;;8265:184;;;:::o;8455:314::-;;8618:67;8682:2;8677:3;8618:67;:::i;:::-;8611:74;;8715:18;8711:1;8706:3;8702:11;8695:39;8760:2;8755:3;8751:12;8744:19;;8601:168;;;:::o;8775:365::-;;8938:67;9002:2;8997:3;8938:67;:::i;:::-;8931:74;;9035:34;9031:1;9026:3;9022:11;9015:55;9101:3;9096:2;9091:3;9087:12;9080:25;9131:2;9126:3;9122:12;9115:19;;8921:219;;;:::o;9146:369::-;;9309:67;9373:2;9368:3;9309:67;:::i;:::-;9302:74;;9406:34;9402:1;9397:3;9393:11;9386:55;9472:7;9467:2;9462:3;9458:12;9451:29;9506:2;9501:3;9497:12;9490:19;;9292:223;;;:::o;9521:368::-;;9684:67;9748:2;9743:3;9684:67;:::i;:::-;9677:74;;9781:34;9777:1;9772:3;9768:11;9761:55;9847:6;9842:2;9837:3;9833:12;9826:28;9880:2;9875:3;9871:12;9864:19;;9667:222;;;:::o;9895:369::-;;10058:67;10122:2;10117:3;10058:67;:::i;:::-;10051:74;;10155:34;10151:1;10146:3;10142:11;10135:55;10221:7;10216:2;10211:3;10207:12;10200:29;10255:2;10250:3;10246:12;10239:19;;10041:223;;;:::o;10270:329::-;;10433:67;10497:2;10492:3;10433:67;:::i;:::-;10426:74;;10530:33;10526:1;10521:3;10517:11;10510:54;10590:2;10585:3;10581:12;10574:19;;10416:183;;;:::o;10605:118::-;10692:24;10710:5;10692:24;:::i;:::-;10687:3;10680:37;10670:53;;:::o;10729:112::-;10812:22;10828:5;10812:22;:::i;:::-;10807:3;10800:35;10790:51;;:::o;10847:222::-;;10978:2;10967:9;10963:18;10955:26;;10991:71;11059:1;11048:9;11044:17;11035:6;10991:71;:::i;:::-;10945:124;;;;:::o;11075:320::-;;11228:2;11217:9;11213:18;11205:26;;11241:71;11309:1;11298:9;11294:17;11285:6;11241:71;:::i;:::-;11322:66;11384:2;11373:9;11369:18;11360:6;11322:66;:::i;:::-;11195:200;;;;;:::o;11401:332::-;;11560:2;11549:9;11545:18;11537:26;;11573:71;11641:1;11630:9;11626:17;11617:6;11573:71;:::i;:::-;11654:72;11722:2;11711:9;11707:18;11698:6;11654:72;:::i;:::-;11527:206;;;;;:::o;11739:210::-;;11864:2;11853:9;11849:18;11841:26;;11877:65;11939:1;11928:9;11924:17;11915:6;11877:65;:::i;:::-;11831:118;;;;:::o;11955:313::-;;12106:2;12095:9;12091:18;12083:26;;12155:9;12149:4;12145:20;12141:1;12130:9;12126:17;12119:47;12183:78;12256:4;12247:6;12183:78;:::i;:::-;12175:86;;12073:195;;;;:::o;12274:419::-;;12478:2;12467:9;12463:18;12455:26;;12527:9;12521:4;12517:20;12513:1;12502:9;12498:17;12491:47;12555:131;12681:4;12555:131;:::i;:::-;12547:139;;12445:248;;;:::o;12699:419::-;;12903:2;12892:9;12888:18;12880:26;;12952:9;12946:4;12942:20;12938:1;12927:9;12923:17;12916:47;12980:131;13106:4;12980:131;:::i;:::-;12972:139;;12870:248;;;:::o;13124:419::-;;13328:2;13317:9;13313:18;13305:26;;13377:9;13371:4;13367:20;13363:1;13352:9;13348:17;13341:47;13405:131;13531:4;13405:131;:::i;:::-;13397:139;;13295:248;;;:::o;13549:419::-;;13753:2;13742:9;13738:18;13730:26;;13802:9;13796:4;13792:20;13788:1;13777:9;13773:17;13766:47;13830:131;13956:4;13830:131;:::i;:::-;13822:139;;13720:248;;;:::o;13974:419::-;;14178:2;14167:9;14163:18;14155:26;;14227:9;14221:4;14217:20;14213:1;14202:9;14198:17;14191:47;14255:131;14381:4;14255:131;:::i;:::-;14247:139;;14145:248;;;:::o;14399:419::-;;14603:2;14592:9;14588:18;14580:26;;14652:9;14646:4;14642:20;14638:1;14627:9;14623:17;14616:47;14680:131;14806:4;14680:131;:::i;:::-;14672:139;;14570:248;;;:::o;14824:419::-;;15028:2;15017:9;15013:18;15005:26;;15077:9;15071:4;15067:20;15063:1;15052:9;15048:17;15041:47;15105:131;15231:4;15105:131;:::i;:::-;15097:139;;14995:248;;;:::o;15249:419::-;;15453:2;15442:9;15438:18;15430:26;;15502:9;15496:4;15492:20;15488:1;15477:9;15473:17;15466:47;15530:131;15656:4;15530:131;:::i;:::-;15522:139;;15420:248;;;:::o;15674:419::-;;15878:2;15867:9;15863:18;15855:26;;15927:9;15921:4;15917:20;15913:1;15902:9;15898:17;15891:47;15955:131;16081:4;15955:131;:::i;:::-;15947:139;;15845:248;;;:::o;16099:419::-;;16303:2;16292:9;16288:18;16280:26;;16352:9;16346:4;16342:20;16338:1;16327:9;16323:17;16316:47;16380:131;16506:4;16380:131;:::i;:::-;16372:139;;16270:248;;;:::o;16524:419::-;;16728:2;16717:9;16713:18;16705:26;;16777:9;16771:4;16767:20;16763:1;16752:9;16748:17;16741:47;16805:131;16931:4;16805:131;:::i;:::-;16797:139;;16695:248;;;:::o;16949:419::-;;17153:2;17142:9;17138:18;17130:26;;17202:9;17196:4;17192:20;17188:1;17177:9;17173:17;17166:47;17230:131;17356:4;17230:131;:::i;:::-;17222:139;;17120:248;;;:::o;17374:419::-;;17578:2;17567:9;17563:18;17555:26;;17627:9;17621:4;17617:20;17613:1;17602:9;17598:17;17591:47;17655:131;17781:4;17655:131;:::i;:::-;17647:139;;17545:248;;;:::o;17799:419::-;;18003:2;17992:9;17988:18;17980:26;;18052:9;18046:4;18042:20;18038:1;18027:9;18023:17;18016:47;18080:131;18206:4;18080:131;:::i;:::-;18072:139;;17970:248;;;:::o;18224:419::-;;18428:2;18417:9;18413:18;18405:26;;18477:9;18471:4;18467:20;18463:1;18452:9;18448:17;18441:47;18505:131;18631:4;18505:131;:::i;:::-;18497:139;;18395:248;;;:::o;18649:419::-;;18853:2;18842:9;18838:18;18830:26;;18902:9;18896:4;18892:20;18888:1;18877:9;18873:17;18866:47;18930:131;19056:4;18930:131;:::i;:::-;18922:139;;18820:248;;;:::o;19074:419::-;;19278:2;19267:9;19263:18;19255:26;;19327:9;19321:4;19317:20;19313:1;19302:9;19298:17;19291:47;19355:131;19481:4;19355:131;:::i;:::-;19347:139;;19245:248;;;:::o;19499:419::-;;19703:2;19692:9;19688:18;19680:26;;19752:9;19746:4;19742:20;19738:1;19727:9;19723:17;19716:47;19780:131;19906:4;19780:131;:::i;:::-;19772:139;;19670:248;;;:::o;19924:222::-;;20055:2;20044:9;20040:18;20032:26;;20068:71;20136:1;20125:9;20121:17;20112:6;20068:71;:::i;:::-;20022:124;;;;:::o;20152:214::-;;20279:2;20268:9;20264:18;20256:26;;20292:67;20356:1;20345:9;20341:17;20332:6;20292:67;:::i;:::-;20246:120;;;;:::o;20372:99::-;;20458:5;20452:12;20442:22;;20431:40;;;:::o;20477:169::-;;20595:6;20590:3;20583:19;20635:4;20630:3;20626:14;20611:29;;20573:73;;;;:::o;20652:305::-;;20711:20;20729:1;20711:20;:::i;:::-;20706:25;;20745:20;20763:1;20745:20;:::i;:::-;20740:25;;20899:1;20831:66;20827:74;20824:1;20821:81;20818:2;;;20905:18;;:::i;:::-;20818:2;20949:1;20946;20942:9;20935:16;;20696:261;;;;:::o;20963:185::-;;21020:20;21038:1;21020:20;:::i;:::-;21015:25;;21054:20;21072:1;21054:20;:::i;:::-;21049:25;;21093:1;21083:2;;21098:18;;:::i;:::-;21083:2;21140:1;21137;21133:9;21128:14;;21005:143;;;;:::o;21154:348::-;;21217:20;21235:1;21217:20;:::i;:::-;21212:25;;21251:20;21269:1;21251:20;:::i;:::-;21246:25;;21439:1;21371:66;21367:74;21364:1;21361:81;21356:1;21349:9;21342:17;21338:105;21335:2;;;21446:18;;:::i;:::-;21335:2;21494:1;21491;21487:9;21476:20;;21202:300;;;;:::o;21508:191::-;;21568:20;21586:1;21568:20;:::i;:::-;21563:25;;21602:20;21620:1;21602:20;:::i;:::-;21597:25;;21641:1;21638;21635:8;21632:2;;;21646:18;;:::i;:::-;21632:2;21691:1;21688;21684:9;21676:17;;21553:146;;;;:::o;21705:96::-;;21771:24;21789:5;21771:24;:::i;:::-;21760:35;;21750:51;;;:::o;21807:90::-;;21884:5;21877:13;21870:21;21859:32;;21849:48;;;:::o;21903:126::-;;21980:42;21973:5;21969:54;21958:65;;21948:81;;;:::o;22035:77::-;;22101:5;22090:16;;22080:32;;;:::o;22118:86::-;;22193:4;22186:5;22182:16;22171:27;;22161:43;;;:::o;22210:307::-;22278:1;22288:113;22302:6;22299:1;22296:13;22288:113;;;22387:1;22382:3;22378:11;22372:18;22368:1;22363:3;22359:11;22352:39;22324:2;22321:1;22317:10;22312:15;;22288:113;;;22419:6;22416:1;22413:13;22410:2;;;22499:1;22490:6;22485:3;22481:16;22474:27;22410:2;22259:258;;;;:::o;22523:320::-;;22604:1;22598:4;22594:12;22584:22;;22651:1;22645:4;22641:12;22672:18;22662:2;;22728:4;22720:6;22716:17;22706:27;;22662:2;22790;22782:6;22779:14;22759:18;22756:38;22753:2;;;22809:18;;:::i;:::-;22753:2;22574:269;;;;:::o;22849:180::-;22897:77;22894:1;22887:88;22994:4;22991:1;22984:15;23018:4;23015:1;23008:15;23035:180;23083:77;23080:1;23073:88;23180:4;23177:1;23170:15;23204:4;23201:1;23194:15;23221:180;23269:77;23266:1;23259:88;23366:4;23363:1;23356:15;23390:4;23387:1;23380:15;23407:102;;23499:2;23495:7;23490:2;23483:5;23479:14;23475:28;23465:38;;23455:54;;;:::o;23515:122::-;23588:24;23606:5;23588:24;:::i;:::-;23581:5;23578:35;23568:2;;23627:1;23624;23617:12;23568:2;23558:79;:::o;23643:116::-;23713:21;23728:5;23713:21;:::i;:::-;23706:5;23703:32;23693:2;;23749:1;23746;23739:12;23693:2;23683:76;:::o;23765:122::-;23838:24;23856:5;23838:24;:::i;:::-;23831:5;23828:35;23818:2;;23877:1;23874;23867:12;23818:2;23808:79;:::o
Swarm Source
ipfs://101c85a1de55c0cad469ba23a551f0d4d373945e3acd1212f24d94e0d3833a3f
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | 100.00% | $0.997956 | 516.6939 | $515.64 |
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.