Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
EMaxCoin
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-25 */ // File: @openzeppelin/contracts/utils/Context.sol // SPDX-License-Identifier: MIT // SPDX-License-Identifier: GPL-3.0-only pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. 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; } } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/proxy/utils/Initializable.sol // solhint-disable-next-line compiler-version pragma solidity ^0.8.0; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require(_initializing || !_initialized, "Initializable: contract is already initialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } } // File: contracts/ProxyOwnable.sol pragma solidity ^0.8.0; /** * @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 ProxyOwnable is Context, Initializable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ function ownerInitialize() public initializer { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/REFLECT.sol pragma solidity ^0.8.0; // import "@openzeppelin/contracts/utils/math/SafeMath.sol"; abstract contract REFLECT is Context, IERC20, ProxyOwnable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 2000000000 * 10**6 * 10**18; uint256 private _rTotal; uint256 private _tFeeTotal; string private _name; string private _symbol; uint8 private _decimals; // constructor () public { function initialize() public initializer { ownerInitialize(); _rTotal = (MAX - (MAX % _tTotal)); _name = 'EthereumMax'; _symbol = 'eMax'; _decimals = 18; _rOwned[_msgSender()] = _rTotal; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function reflect(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function _approve(address owner, address spender, uint256 amount) private { 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); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee); } function _getTValues(uint256 tAmount) private pure returns (uint256, uint256) { uint256 tFee = tAmount.div(100).mul(2); uint256 tTransferAmount = tAmount.sub(tFee); return (tTransferAmount, tFee); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } //------------------- Owner function excludeAccount(address account) external onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } } // File: contracts/EMaxCoin.sol pragma solidity ^0.8.0; contract EMaxCoin is REFLECT { }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":[],"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":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"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":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"ownerInitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50613c60806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a9059cbb1161007c578063a9059cbb14610390578063cba0e996146103c0578063dd62ed3e146103f0578063f2cc0c1814610420578063f2fde38b1461043c578063f84354f1146104585761014d565b806370a08231146102e0578063715018a6146103105780638129fc1c1461031a5780638da5cb5b1461032457806395d89b4114610342578063a457c2d7146103605761014d565b80631b4e8cc2116101155780631b4e8cc2146101f857806323b872dd146102025780632d83811914610232578063313ce5671461026257806339509351146102805780634549b039146102b05761014d565b8063053ab1821461015257806306fdde031461016e578063095ea7b31461018c57806313114a9d146101bc57806318160ddd146101da575b600080fd5b61016c600480360381019061016791906130c7565b610474565b005b6101766105ee565b604051610183919061337b565b60405180910390f35b6101a660048036038101906101a1919061308b565b610680565b6040516101b39190613360565b60405180910390f35b6101c461069e565b6040516101d1919061351d565b60405180910390f35b6101e26106a8565b6040516101ef919061351d565b60405180910390f35b6102006106be565b005b61021c6004803603810190610217919061303c565b610840565b6040516102299190613360565b60405180910390f35b61024c600480360381019061024791906130c7565b610919565b604051610259919061351d565b60405180910390f35b61026a610987565b6040516102779190613538565b60405180910390f35b61029a6004803603810190610295919061308b565b61099e565b6040516102a79190613360565b60405180910390f35b6102ca60048036038101906102c591906130f0565b610a51565b6040516102d7919061351d565b60405180910390f35b6102fa60048036038101906102f59190612fd7565b610adf565b604051610307919061351d565b60405180910390f35b610318610bca565b005b610322610d06565b005b61032c610f92565b6040516103399190613345565b60405180910390f35b61034a610fbb565b604051610357919061337b565b60405180910390f35b61037a6004803603810190610375919061308b565b61104d565b6040516103879190613360565b60405180910390f35b6103aa60048036038101906103a5919061308b565b61111a565b6040516103b79190613360565b60405180910390f35b6103da60048036038101906103d59190612fd7565b611138565b6040516103e79190613360565b60405180910390f35b61040a60048036038101906104059190613000565b61118e565b604051610417919061351d565b60405180910390f35b61043a60048036038101906104359190612fd7565b611215565b005b61045660048036038101906104519190612fd7565b6114b0565b005b610472600480360381019061046d9190612fd7565b61165c565b005b600061047e611a2a565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561050d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610504906134fd565b60405180910390fd5b600061051883611a32565b50505050905061057081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105c881600654611a8a90919063ffffffff16565b6006819055506105e383600754611aa090919063ffffffff16565b600781905550505050565b6060600880546105fd9061370c565b80601f01602080910402602001604051908101604052809291908181526020018280546106299061370c565b80156106765780601f1061064b57610100808354040283529160200191610676565b820191906000526020600020905b81548152906001019060200180831161065957829003601f168201915b5050505050905090565b600061069461068d611a2a565b8484611ab6565b6001905092915050565b6000600754905090565b60006d629b8c891b267182b61400000000905090565b600060019054906101000a900460ff16806106e4575060008054906101000a900460ff16155b610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a9061345d565b60405180910390fd5b60008060019054906101000a900460ff161590508015610773576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b600061077d611a2a565b905080600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350801561083d5760008060016101000a81548160ff0219169083151502179055505b50565b600061084d848484611c81565b61090e84610859611a2a565b61090985604051806060016040528060288152602001613bde60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108bf611a2a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120989092919063ffffffff16565b611ab6565b600190509392505050565b6000600654821115610960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610957906133bd565b60405180910390fd5b600061096a6120ed565b905061097f818461211890919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b6000610a476109ab611a2a565b84610a4285600360006109bc611a2a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b611ab6565b6001905092915050565b60006d629b8c891b267182b61400000000831115610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b9061343d565b60405180910390fd5b81610ac3576000610ab484611a32565b50505050905080915050610ad9565b6000610ace84611a32565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610bc5565b610bc2600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610919565b90505b919050565b610bd2611a2a565b73ffffffffffffffffffffffffffffffffffffffff16610bf0610f92565b73ffffffffffffffffffffffffffffffffffffffff1614610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d9061347d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff1680610d2c575060008054906101000a900460ff16155b610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d629061345d565b60405180910390fd5b60008060019054906101000a900460ff161590508015610dbb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610dc36106be565b6d629b8c891b267182b61400000000600019610ddf9190613787565b600019610dec9190613650565b6006819055506040518060400160405280600b81526020017f457468657265756d4d617800000000000000000000000000000000000000000081525060089080519060200190610e3d929190612ef5565b506040518060400160405280600481526020017f654d61780000000000000000000000000000000000000000000000000000000081525060099080519060200190610e89929190612ef5565b506012600a60006101000a81548160ff021916908360ff16021790555060065460016000610eb5611a2a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610efb611a2a565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d629b8c891b267182b61400000000604051610f66919061351d565b60405180910390a38015610f8f5760008060016101000a81548160ff0219169083151502179055505b50565b60008060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610fca9061370c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff69061370c565b80156110435780601f1061101857610100808354040283529160200191611043565b820191906000526020600020905b81548152906001019060200180831161102657829003601f168201915b5050505050905090565b600061111061105a611a2a565b8461110b85604051806060016040528060258152602001613c066025913960036000611084611a2a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120989092919063ffffffff16565b611ab6565b6001905092915050565b600061112e611127611a2a565b8484611c81565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61121d611a2a565b73ffffffffffffffffffffffffffffffffffffffff1661123b610f92565b73ffffffffffffffffffffffffffffffffffffffff1614611291576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112889061347d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561131e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113159061341d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113f2576113ae600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610919565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114b8611a2a565b73ffffffffffffffffffffffffffffffffffffffff166114d6610f92565b73ffffffffffffffffffffffffffffffffffffffff161461152c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115239061347d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561159c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611593906133dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611664611a2a565b73ffffffffffffffffffffffffffffffffffffffff16611682610f92565b73ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf9061347d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b9061341d565b60405180910390fd5b60005b600580549050811015611a26578173ffffffffffffffffffffffffffffffffffffffff16600582815481106117c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a1357600560016005805490506118209190613650565b81548110611857577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600582815481106118bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806119d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611a26565b8080611a1e9061373e565b915050611767565b5050565b600033905090565b6000806000806000806000611a468861212e565b915091506000611a546120ed565b90506000806000611a668c8686612180565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60008183611a989190613650565b905092915050565b60008183611aae919061356f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d906134dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d906133fd565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c74919061351d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce8906134bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d589061339d565b60405180910390fd5b60008111611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b9061349d565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e475750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5c57611e578383836121de565b612093565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611eff5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f1457611f0f838383612431565b612092565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fb85750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fcd57611fc8838383612684565b612091565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561206f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120845761207f838383612842565b612090565b61208f838383612684565b5b5b5b5b505050565b60008383111582906120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d7919061337b565b60405180910390fd5b5082840390509392505050565b60008060006120fa612b2a565b91509150612111818361211890919063ffffffff16565b9250505090565b6000818361212691906135c5565b905092915050565b600080600061215a600261214c60648761211890919063ffffffff16565b612ea590919063ffffffff16565b905060006121718286611a8a90919063ffffffff16565b90508082935093505050915091565b6000806000806121998588612ea590919063ffffffff16565b905060006121b08688612ea590919063ffffffff16565b905060006121c78284611a8a90919063ffffffff16565b905082818395509550955050505093509350939050565b60008060008060006121ef86611a32565b9450945094509450945061224b86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122e085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237584600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c28382612ebb565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161241f919061351d565b60405180910390a35050505050505050565b600080600080600061244286611a32565b9450945094509450945061249e85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061253382600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125c884600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126158382612ebb565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612672919061351d565b60405180910390a35050505050505050565b600080600080600061269586611a32565b945094509450945094506126f185600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061278684600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127d38382612ebb565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612830919061351d565b60405180910390a35050505050505050565b600080600080600061285386611a32565b945094509450945094506128af86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061294485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129d982600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a6e84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612abb8382612ebb565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b18919061351d565b60405180910390a35050505050505050565b6000806000600654905060006d629b8c891b267182b61400000000905060005b600580549050811015612e5057826001600060058481548110612b96577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612caa5750816002600060058481548110612c42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ccd576006546d629b8c891b267182b6140000000094509450505050612ea1565b612d836001600060058481548110612d0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611a8a90919063ffffffff16565b9250612e3b6002600060058481548110612dc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611a8a90919063ffffffff16565b91508080612e489061373e565b915050612b4a565b50612e746d629b8c891b267182b6140000000060065461211890919063ffffffff16565b821015612e98576006546d629b8c891b267182b61400000000935093505050612ea1565b81819350935050505b9091565b60008183612eb391906135f6565b905092915050565b612ed082600654611a8a90919063ffffffff16565b600681905550612eeb81600754611aa090919063ffffffff16565b6007819055505050565b828054612f019061370c565b90600052602060002090601f016020900481019282612f235760008555612f6a565b82601f10612f3c57805160ff1916838001178555612f6a565b82800160010185558215612f6a579182015b82811115612f69578251825591602001919060010190612f4e565b5b509050612f779190612f7b565b5090565b5b80821115612f94576000816000905550600101612f7c565b5090565b600081359050612fa781613b98565b92915050565b600081359050612fbc81613baf565b92915050565b600081359050612fd181613bc6565b92915050565b600060208284031215612fe957600080fd5b6000612ff784828501612f98565b91505092915050565b6000806040838503121561301357600080fd5b600061302185828601612f98565b925050602061303285828601612f98565b9150509250929050565b60008060006060848603121561305157600080fd5b600061305f86828701612f98565b935050602061307086828701612f98565b925050604061308186828701612fc2565b9150509250925092565b6000806040838503121561309e57600080fd5b60006130ac85828601612f98565b92505060206130bd85828601612fc2565b9150509250929050565b6000602082840312156130d957600080fd5b60006130e784828501612fc2565b91505092915050565b6000806040838503121561310357600080fd5b600061311185828601612fc2565b925050602061312285828601612fad565b9150509250929050565b61313581613684565b82525050565b61314481613696565b82525050565b600061315582613553565b61315f818561355e565b935061316f8185602086016136d9565b61317881613845565b840191505092915050565b600061319060238361355e565b915061319b82613856565b604082019050919050565b60006131b3602a8361355e565b91506131be826138a5565b604082019050919050565b60006131d660268361355e565b91506131e1826138f4565b604082019050919050565b60006131f960228361355e565b915061320482613943565b604082019050919050565b600061321c601b8361355e565b915061322782613992565b602082019050919050565b600061323f601f8361355e565b915061324a826139bb565b602082019050919050565b6000613262602e8361355e565b915061326d826139e4565b604082019050919050565b600061328560208361355e565b915061329082613a33565b602082019050919050565b60006132a860298361355e565b91506132b382613a5c565b604082019050919050565b60006132cb60258361355e565b91506132d682613aab565b604082019050919050565b60006132ee60248361355e565b91506132f982613afa565b604082019050919050565b6000613311602c8361355e565b915061331c82613b49565b604082019050919050565b613330816136c2565b82525050565b61333f816136cc565b82525050565b600060208201905061335a600083018461312c565b92915050565b6000602082019050613375600083018461313b565b92915050565b60006020820190508181036000830152613395818461314a565b905092915050565b600060208201905081810360008301526133b681613183565b9050919050565b600060208201905081810360008301526133d6816131a6565b9050919050565b600060208201905081810360008301526133f6816131c9565b9050919050565b60006020820190508181036000830152613416816131ec565b9050919050565b600060208201905081810360008301526134368161320f565b9050919050565b6000602082019050818103600083015261345681613232565b9050919050565b6000602082019050818103600083015261347681613255565b9050919050565b6000602082019050818103600083015261349681613278565b9050919050565b600060208201905081810360008301526134b68161329b565b9050919050565b600060208201905081810360008301526134d6816132be565b9050919050565b600060208201905081810360008301526134f6816132e1565b9050919050565b6000602082019050818103600083015261351681613304565b9050919050565b60006020820190506135326000830184613327565b92915050565b600060208201905061354d6000830184613336565b92915050565b600081519050919050565b600082825260208201905092915050565b600061357a826136c2565b9150613585836136c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135ba576135b96137b8565b5b828201905092915050565b60006135d0826136c2565b91506135db836136c2565b9250826135eb576135ea6137e7565b5b828204905092915050565b6000613601826136c2565b915061360c836136c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613645576136446137b8565b5b828202905092915050565b600061365b826136c2565b9150613666836136c2565b925082821015613679576136786137b8565b5b828203905092915050565b600061368f826136a2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156136f75780820151818401526020810190506136dc565b83811115613706576000848401525b50505050565b6000600282049050600182168061372457607f821691505b6020821081141561373857613737613816565b5b50919050565b6000613749826136c2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561377c5761377b6137b8565b5b600182019050919050565b6000613792826136c2565b915061379d836136c2565b9250826137ad576137ac6137e7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b613ba181613684565b8114613bac57600080fd5b50565b613bb881613696565b8114613bc357600080fd5b50565b613bcf816136c2565b8114613bda57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122071754685bd3c4df13358161d34cc236a0eab0ac42f8a0d9875ac10c7d2359fb164736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a9059cbb1161007c578063a9059cbb14610390578063cba0e996146103c0578063dd62ed3e146103f0578063f2cc0c1814610420578063f2fde38b1461043c578063f84354f1146104585761014d565b806370a08231146102e0578063715018a6146103105780638129fc1c1461031a5780638da5cb5b1461032457806395d89b4114610342578063a457c2d7146103605761014d565b80631b4e8cc2116101155780631b4e8cc2146101f857806323b872dd146102025780632d83811914610232578063313ce5671461026257806339509351146102805780634549b039146102b05761014d565b8063053ab1821461015257806306fdde031461016e578063095ea7b31461018c57806313114a9d146101bc57806318160ddd146101da575b600080fd5b61016c600480360381019061016791906130c7565b610474565b005b6101766105ee565b604051610183919061337b565b60405180910390f35b6101a660048036038101906101a1919061308b565b610680565b6040516101b39190613360565b60405180910390f35b6101c461069e565b6040516101d1919061351d565b60405180910390f35b6101e26106a8565b6040516101ef919061351d565b60405180910390f35b6102006106be565b005b61021c6004803603810190610217919061303c565b610840565b6040516102299190613360565b60405180910390f35b61024c600480360381019061024791906130c7565b610919565b604051610259919061351d565b60405180910390f35b61026a610987565b6040516102779190613538565b60405180910390f35b61029a6004803603810190610295919061308b565b61099e565b6040516102a79190613360565b60405180910390f35b6102ca60048036038101906102c591906130f0565b610a51565b6040516102d7919061351d565b60405180910390f35b6102fa60048036038101906102f59190612fd7565b610adf565b604051610307919061351d565b60405180910390f35b610318610bca565b005b610322610d06565b005b61032c610f92565b6040516103399190613345565b60405180910390f35b61034a610fbb565b604051610357919061337b565b60405180910390f35b61037a6004803603810190610375919061308b565b61104d565b6040516103879190613360565b60405180910390f35b6103aa60048036038101906103a5919061308b565b61111a565b6040516103b79190613360565b60405180910390f35b6103da60048036038101906103d59190612fd7565b611138565b6040516103e79190613360565b60405180910390f35b61040a60048036038101906104059190613000565b61118e565b604051610417919061351d565b60405180910390f35b61043a60048036038101906104359190612fd7565b611215565b005b61045660048036038101906104519190612fd7565b6114b0565b005b610472600480360381019061046d9190612fd7565b61165c565b005b600061047e611a2a565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561050d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610504906134fd565b60405180910390fd5b600061051883611a32565b50505050905061057081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105c881600654611a8a90919063ffffffff16565b6006819055506105e383600754611aa090919063ffffffff16565b600781905550505050565b6060600880546105fd9061370c565b80601f01602080910402602001604051908101604052809291908181526020018280546106299061370c565b80156106765780601f1061064b57610100808354040283529160200191610676565b820191906000526020600020905b81548152906001019060200180831161065957829003601f168201915b5050505050905090565b600061069461068d611a2a565b8484611ab6565b6001905092915050565b6000600754905090565b60006d629b8c891b267182b61400000000905090565b600060019054906101000a900460ff16806106e4575060008054906101000a900460ff16155b610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a9061345d565b60405180910390fd5b60008060019054906101000a900460ff161590508015610773576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b600061077d611a2a565b905080600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350801561083d5760008060016101000a81548160ff0219169083151502179055505b50565b600061084d848484611c81565b61090e84610859611a2a565b61090985604051806060016040528060288152602001613bde60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108bf611a2a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120989092919063ffffffff16565b611ab6565b600190509392505050565b6000600654821115610960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610957906133bd565b60405180910390fd5b600061096a6120ed565b905061097f818461211890919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b6000610a476109ab611a2a565b84610a4285600360006109bc611a2a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b611ab6565b6001905092915050565b60006d629b8c891b267182b61400000000831115610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b9061343d565b60405180910390fd5b81610ac3576000610ab484611a32565b50505050905080915050610ad9565b6000610ace84611a32565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610bc5565b610bc2600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610919565b90505b919050565b610bd2611a2a565b73ffffffffffffffffffffffffffffffffffffffff16610bf0610f92565b73ffffffffffffffffffffffffffffffffffffffff1614610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d9061347d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff1680610d2c575060008054906101000a900460ff16155b610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d629061345d565b60405180910390fd5b60008060019054906101000a900460ff161590508015610dbb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610dc36106be565b6d629b8c891b267182b61400000000600019610ddf9190613787565b600019610dec9190613650565b6006819055506040518060400160405280600b81526020017f457468657265756d4d617800000000000000000000000000000000000000000081525060089080519060200190610e3d929190612ef5565b506040518060400160405280600481526020017f654d61780000000000000000000000000000000000000000000000000000000081525060099080519060200190610e89929190612ef5565b506012600a60006101000a81548160ff021916908360ff16021790555060065460016000610eb5611a2a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610efb611a2a565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d629b8c891b267182b61400000000604051610f66919061351d565b60405180910390a38015610f8f5760008060016101000a81548160ff0219169083151502179055505b50565b60008060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610fca9061370c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff69061370c565b80156110435780601f1061101857610100808354040283529160200191611043565b820191906000526020600020905b81548152906001019060200180831161102657829003601f168201915b5050505050905090565b600061111061105a611a2a565b8461110b85604051806060016040528060258152602001613c066025913960036000611084611a2a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120989092919063ffffffff16565b611ab6565b6001905092915050565b600061112e611127611a2a565b8484611c81565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61121d611a2a565b73ffffffffffffffffffffffffffffffffffffffff1661123b610f92565b73ffffffffffffffffffffffffffffffffffffffff1614611291576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112889061347d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561131e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113159061341d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113f2576113ae600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610919565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114b8611a2a565b73ffffffffffffffffffffffffffffffffffffffff166114d6610f92565b73ffffffffffffffffffffffffffffffffffffffff161461152c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115239061347d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561159c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611593906133dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611664611a2a565b73ffffffffffffffffffffffffffffffffffffffff16611682610f92565b73ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf9061347d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b9061341d565b60405180910390fd5b60005b600580549050811015611a26578173ffffffffffffffffffffffffffffffffffffffff16600582815481106117c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a1357600560016005805490506118209190613650565b81548110611857577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600582815481106118bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806119d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611a26565b8080611a1e9061373e565b915050611767565b5050565b600033905090565b6000806000806000806000611a468861212e565b915091506000611a546120ed565b90506000806000611a668c8686612180565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60008183611a989190613650565b905092915050565b60008183611aae919061356f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d906134dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d906133fd565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c74919061351d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce8906134bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d589061339d565b60405180910390fd5b60008111611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b9061349d565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e475750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5c57611e578383836121de565b612093565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611eff5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f1457611f0f838383612431565b612092565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fb85750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fcd57611fc8838383612684565b612091565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561206f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120845761207f838383612842565b612090565b61208f838383612684565b5b5b5b5b505050565b60008383111582906120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d7919061337b565b60405180910390fd5b5082840390509392505050565b60008060006120fa612b2a565b91509150612111818361211890919063ffffffff16565b9250505090565b6000818361212691906135c5565b905092915050565b600080600061215a600261214c60648761211890919063ffffffff16565b612ea590919063ffffffff16565b905060006121718286611a8a90919063ffffffff16565b90508082935093505050915091565b6000806000806121998588612ea590919063ffffffff16565b905060006121b08688612ea590919063ffffffff16565b905060006121c78284611a8a90919063ffffffff16565b905082818395509550955050505093509350939050565b60008060008060006121ef86611a32565b9450945094509450945061224b86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122e085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237584600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c28382612ebb565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161241f919061351d565b60405180910390a35050505050505050565b600080600080600061244286611a32565b9450945094509450945061249e85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061253382600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125c884600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126158382612ebb565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612672919061351d565b60405180910390a35050505050505050565b600080600080600061269586611a32565b945094509450945094506126f185600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061278684600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127d38382612ebb565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612830919061351d565b60405180910390a35050505050505050565b600080600080600061285386611a32565b945094509450945094506128af86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061294485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129d982600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a6e84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612abb8382612ebb565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b18919061351d565b60405180910390a35050505050505050565b6000806000600654905060006d629b8c891b267182b61400000000905060005b600580549050811015612e5057826001600060058481548110612b96577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612caa5750816002600060058481548110612c42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ccd576006546d629b8c891b267182b6140000000094509450505050612ea1565b612d836001600060058481548110612d0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611a8a90919063ffffffff16565b9250612e3b6002600060058481548110612dc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611a8a90919063ffffffff16565b91508080612e489061373e565b915050612b4a565b50612e746d629b8c891b267182b6140000000060065461211890919063ffffffff16565b821015612e98576006546d629b8c891b267182b61400000000935093505050612ea1565b81819350935050505b9091565b60008183612eb391906135f6565b905092915050565b612ed082600654611a8a90919063ffffffff16565b600681905550612eeb81600754611aa090919063ffffffff16565b6007819055505050565b828054612f019061370c565b90600052602060002090601f016020900481019282612f235760008555612f6a565b82601f10612f3c57805160ff1916838001178555612f6a565b82800160010185558215612f6a579182015b82811115612f69578251825591602001919060010190612f4e565b5b509050612f779190612f7b565b5090565b5b80821115612f94576000816000905550600101612f7c565b5090565b600081359050612fa781613b98565b92915050565b600081359050612fbc81613baf565b92915050565b600081359050612fd181613bc6565b92915050565b600060208284031215612fe957600080fd5b6000612ff784828501612f98565b91505092915050565b6000806040838503121561301357600080fd5b600061302185828601612f98565b925050602061303285828601612f98565b9150509250929050565b60008060006060848603121561305157600080fd5b600061305f86828701612f98565b935050602061307086828701612f98565b925050604061308186828701612fc2565b9150509250925092565b6000806040838503121561309e57600080fd5b60006130ac85828601612f98565b92505060206130bd85828601612fc2565b9150509250929050565b6000602082840312156130d957600080fd5b60006130e784828501612fc2565b91505092915050565b6000806040838503121561310357600080fd5b600061311185828601612fc2565b925050602061312285828601612fad565b9150509250929050565b61313581613684565b82525050565b61314481613696565b82525050565b600061315582613553565b61315f818561355e565b935061316f8185602086016136d9565b61317881613845565b840191505092915050565b600061319060238361355e565b915061319b82613856565b604082019050919050565b60006131b3602a8361355e565b91506131be826138a5565b604082019050919050565b60006131d660268361355e565b91506131e1826138f4565b604082019050919050565b60006131f960228361355e565b915061320482613943565b604082019050919050565b600061321c601b8361355e565b915061322782613992565b602082019050919050565b600061323f601f8361355e565b915061324a826139bb565b602082019050919050565b6000613262602e8361355e565b915061326d826139e4565b604082019050919050565b600061328560208361355e565b915061329082613a33565b602082019050919050565b60006132a860298361355e565b91506132b382613a5c565b604082019050919050565b60006132cb60258361355e565b91506132d682613aab565b604082019050919050565b60006132ee60248361355e565b91506132f982613afa565b604082019050919050565b6000613311602c8361355e565b915061331c82613b49565b604082019050919050565b613330816136c2565b82525050565b61333f816136cc565b82525050565b600060208201905061335a600083018461312c565b92915050565b6000602082019050613375600083018461313b565b92915050565b60006020820190508181036000830152613395818461314a565b905092915050565b600060208201905081810360008301526133b681613183565b9050919050565b600060208201905081810360008301526133d6816131a6565b9050919050565b600060208201905081810360008301526133f6816131c9565b9050919050565b60006020820190508181036000830152613416816131ec565b9050919050565b600060208201905081810360008301526134368161320f565b9050919050565b6000602082019050818103600083015261345681613232565b9050919050565b6000602082019050818103600083015261347681613255565b9050919050565b6000602082019050818103600083015261349681613278565b9050919050565b600060208201905081810360008301526134b68161329b565b9050919050565b600060208201905081810360008301526134d6816132be565b9050919050565b600060208201905081810360008301526134f6816132e1565b9050919050565b6000602082019050818103600083015261351681613304565b9050919050565b60006020820190506135326000830184613327565b92915050565b600060208201905061354d6000830184613336565b92915050565b600081519050919050565b600082825260208201905092915050565b600061357a826136c2565b9150613585836136c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135ba576135b96137b8565b5b828201905092915050565b60006135d0826136c2565b91506135db836136c2565b9250826135eb576135ea6137e7565b5b828204905092915050565b6000613601826136c2565b915061360c836136c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613645576136446137b8565b5b828202905092915050565b600061365b826136c2565b9150613666836136c2565b925082821015613679576136786137b8565b5b828203905092915050565b600061368f826136a2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156136f75780820151818401526020810190506136dc565b83811115613706576000848401525b50505050565b6000600282049050600182168061372457607f821691505b6020821081141561373857613737613816565b5b50919050565b6000613749826136c2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561377c5761377b6137b8565b5b600182019050919050565b6000613792826136c2565b915061379d836136c2565b9250826137ad576137ac6137e7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b613ba181613684565b8114613bac57600080fd5b50565b613bb881613696565b8114613bc357600080fd5b50565b613bcf816136c2565b8114613bda57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122071754685bd3c4df13358161d34cc236a0eab0ac42f8a0d9875ac10c7d2359fb164736f6c63430008040033
Deployed Bytecode Sourcemap
33461:39:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26159:376;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24041:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24953:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26064:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24318:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21403:185;;;:::i;:::-;;25122:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26985:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24227:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25443:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26543:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24421:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22320:148;;;:::i;:::-;;23714:319;;;:::i;:::-;;21669:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24132;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25669:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24627:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25946:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24802:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32570:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22623:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32910:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26159:376;26211:14;26228:12;:10;:12::i;:::-;26211:29;;26260:11;:19;26272:6;26260:19;;;;;;;;;;;;;;;;;;;;;;;;;26259:20;26251:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;26340:15;26363:19;26374:7;26363:10;:19::i;:::-;26339:43;;;;;;26411:28;26431:7;26411;:15;26419:6;26411:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26393:7;:15;26401:6;26393:15;;;;;;;;;;;;;;;:46;;;;26460:20;26472:7;26460;;:11;;:20;;;;:::i;:::-;26450:7;:30;;;;26504:23;26519:7;26504:10;;:14;;:23;;;;:::i;:::-;26491:10;:36;;;;26159:376;;;:::o;24041:83::-;24078:13;24111:5;24104:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24041:83;:::o;24953:161::-;25028:4;25045:39;25054:12;:10;:12::i;:::-;25068:7;25077:6;25045:8;:39::i;:::-;25102:4;25095:11;;24953:161;;;;:::o;26064:87::-;26106:7;26133:10;;26126:17;;26064:87;:::o;24318:95::-;24371:7;23494:27;24391:14;;24318:95;:::o;21403:185::-;20188:13;;;;;;;;;;;:30;;;;20206:12;;;;;;;;;;20205:13;20188:30;20180:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;20282:19;20305:13;;;;;;;;;;;20304:14;20282:36;;20333:14;20329:101;;;20380:4;20364:13;;:20;;;;;;;;;;;;;;;;;;20414:4;20399:12;;:19;;;;;;;;;;;;;;;;;;20329:101;21460:17:::1;21480:12;:10;:12::i;:::-;21460:32;;21512:9;21503:6;;:18;;;;;;;;;;;;;;;;;;21570:9;21537:43;;21566:1;21537:43;;;;;;;;;;;;20442:1;20460:14:::0;20456:68;;;20507:5;20491:13;;:21;;;;;;;;;;;;;;;;;;20456:68;21403:185;:::o;25122:313::-;25220:4;25237:36;25247:6;25255:9;25266:6;25237:9;:36::i;:::-;25284:121;25293:6;25301:12;:10;:12::i;:::-;25315:89;25353:6;25315:89;;;;;;;;;;;;;;;;;:11;:19;25327:6;25315:19;;;;;;;;;;;;;;;:33;25335:12;:10;:12::i;:::-;25315:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;25284:8;:121::i;:::-;25423:4;25416:11;;25122:313;;;;;:::o;26985:253::-;27051:7;27090;;27079;:18;;27071:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27155:19;27178:10;:8;:10::i;:::-;27155:33;;27206:24;27218:11;27206:7;:11;;:24;;;;:::i;:::-;27199:31;;;26985:253;;;:::o;24227:83::-;24268:5;24293:9;;;;;;;;;;;24286:16;;24227:83;:::o;25443:218::-;25531:4;25548:83;25557:12;:10;:12::i;:::-;25571:7;25580:50;25619:10;25580:11;:25;25592:12;:10;:12::i;:::-;25580:25;;;;;;;;;;;;;;;:34;25606:7;25580:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;25548:8;:83::i;:::-;25649:4;25642:11;;25443:218;;;;:::o;26543:434::-;26633:7;23494:27;26661:7;:18;;26653:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;26731:17;26726:244;;26766:15;26789:19;26800:7;26789:10;:19::i;:::-;26765:43;;;;;;26830:7;26823:14;;;;;26726:244;26872:23;26902:19;26913:7;26902:10;:19::i;:::-;26870:51;;;;;;26943:15;26936:22;;;26543:434;;;;;:::o;24421:198::-;24487:7;24511:11;:20;24523:7;24511:20;;;;;;;;;;;;;;;;;;;;;;;;;24507:49;;;24540:7;:16;24548:7;24540:16;;;;;;;;;;;;;;;;24533:23;;;;24507:49;24574:37;24594:7;:16;24602:7;24594:16;;;;;;;;;;;;;;;;24574:19;:37::i;:::-;24567:44;;24421:198;;;;:::o;22320:148::-;21900:12;:10;:12::i;:::-;21889:23;;:7;:5;:7::i;:::-;:23;;;21881:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22427:1:::1;22390:40;;22411:6;;;;;;;;;;;22390:40;;;;;;;;;;;;22458:1;22441:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;22320:148::o:0;23714:319::-;20188:13;;;;;;;;;;;:30;;;;20206:12;;;;;;;;;;20205:13;20188:30;20180:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;20282:19;20305:13;;;;;;;;;;;20304:14;20282:36;;20333:14;20329:101;;;20380:4;20364:13;;:20;;;;;;;;;;;;;;;;;;20414:4;20399:12;;:19;;;;;;;;;;;;;;;;;;20329:101;23766:17:::1;:15;:17::i;:::-;23494:27;23453:1;23444:11;23812:13;;;;:::i;:::-;23453:1;23444:11;23805:21;;;;:::i;:::-;23794:7;:33;;;;23847:21;;;;;;;;;;;;;;;;::::0;:5:::1;:21;;;;;;;;;;;;:::i;:::-;;23879:16;;;;;;;;;;;;;;;;::::0;:7:::1;:16;;;;;;;;;;;;:::i;:::-;;23918:2;23906:9;;:14;;;;;;;;;;;;;;;;;;23959:7;;23935;:21;23943:12;:10;:12::i;:::-;23935:21;;;;;;;;;;;;;;;:31;;;;24003:12;:10;:12::i;:::-;23982:43;;23999:1;23982:43;;;23494:27;23982:43;;;;;;:::i;:::-;;;;;;;;20460:14:::0;20456:68;;;20507:5;20491:13;;:21;;;;;;;;;;;;;;;;;;20456:68;23714:319;:::o;21669:87::-;21715:7;21742:6;;;;;;;;;;;21735:13;;21669:87;:::o;24132:::-;24171:13;24204:7;24197:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24132:87;:::o;25669:269::-;25762:4;25779:129;25788:12;:10;:12::i;:::-;25802:7;25811:96;25850:15;25811:96;;;;;;;;;;;;;;;;;:11;:25;25823:12;:10;:12::i;:::-;25811:25;;;;;;;;;;;;;;;:34;25837:7;25811:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;25779:8;:129::i;:::-;25926:4;25919:11;;25669:269;;;;:::o;24627:167::-;24705:4;24722:42;24732:12;:10;:12::i;:::-;24746:9;24757:6;24722:9;:42::i;:::-;24782:4;24775:11;;24627:167;;;;:::o;25946:110::-;26004:4;26028:11;:20;26040:7;26028:20;;;;;;;;;;;;;;;;;;;;;;;;;26021:27;;25946:110;;;:::o;24802:143::-;24883:7;24910:11;:18;24922:5;24910:18;;;;;;;;;;;;;;;:27;24929:7;24910:27;;;;;;;;;;;;;;;;24903:34;;24802:143;;;;:::o;32570:332::-;21900:12;:10;:12::i;:::-;21889:23;;:7;:5;:7::i;:::-;:23;;;21881:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32652:11:::1;:20;32664:7;32652:20;;;;;;;;;;;;;;;;;;;;;;;;;32651:21;32643:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;32737:1;32718:7;:16;32726:7;32718:16;;;;;;;;;;;;;;;;:20;32715:108;;;32774:37;32794:7;:16;32802:7;32794:16;;;;;;;;;;;;;;;;32774:19;:37::i;:::-;32755:7;:16;32763:7;32755:16;;;;;;;;;;;;;;;:56;;;;32715:108;32856:4;32833:11;:20;32845:7;32833:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;32871:9;32886:7;32871:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32570:332:::0;:::o;22623:244::-;21900:12;:10;:12::i;:::-;21889:23;;:7;:5;:7::i;:::-;:23;;;21881:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22732:1:::1;22712:22;;:8;:22;;;;22704:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22822:8;22793:38;;22814:6;;;;;;;;;;;22793:38;;;;;;;;;;;;22851:8;22842:6;;:17;;;;;;;;;;;;;;;;;;22623:244:::0;:::o;32910:478::-;21900:12;:10;:12::i;:::-;21889:23;;:7;:5;:7::i;:::-;:23;;;21881:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32991:11:::1;:20;33003:7;32991:20;;;;;;;;;;;;;;;;;;;;;;;;;32983:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;33059:9;33054:327;33078:9;:16;;;;33074:1;:20;33054:327;;;33136:7;33120:23;;:9;33130:1;33120:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;33116:254;;;33179:9;33208:1;33189:9;:16;;;;:20;;;;:::i;:::-;33179:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33164:9;33174:1;33164:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33248:1;33229:7;:16;33237:7;33229:16;;;;;;;;;;;;;;;:20;;;;33291:5;33268:11;:20;33280:7;33268:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;33315:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33349:5;;33116:254;33096:3;;;;;:::i;:::-;;;;33054:327;;;;32910:478:::0;:::o;697:98::-;750:7;777:10;770:17;;697:98;:::o;30794:411::-;30853:7;30862;30871;30880;30889;30910:23;30935:12;30951:20;30963:7;30951:11;:20::i;:::-;30909:62;;;;30982:19;31005:10;:8;:10::i;:::-;30982:33;;31027:15;31044:23;31069:12;31085:39;31097:7;31106:4;31112:11;31085;:39::i;:::-;31026:98;;;;;;31143:7;31152:15;31169:4;31175:15;31192:4;31135:62;;;;;;;;;;;;;;;;30794:411;;;;;;;:::o;6961:98::-;7019:7;7050:1;7046;:5;;;;:::i;:::-;7039:12;;6961:98;;;;:::o;6580:::-;6638:7;6669:1;6665;:5;;;;:::i;:::-;6658:12;;6580:98;;;;:::o;27248:337::-;27358:1;27341:19;;:5;:19;;;;27333:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27439:1;27420:21;;:7;:21;;;;27412:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27523:6;27493:11;:18;27505:5;27493:18;;;;;;;;;;;;;;;:27;27512:7;27493:27;;;;;;;;;;;;;;;:36;;;;27561:7;27545:32;;27554:5;27545:32;;;27570:6;27545:32;;;;;;:::i;:::-;;;;;;;;27248:337;;;:::o;27593:931::-;27708:1;27690:20;;:6;:20;;;;27682:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;27792:1;27771:23;;:9;:23;;;;27763:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27862:1;27853:6;:10;27845:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27924:11;:19;27936:6;27924:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;27948:11;:22;27960:9;27948:22;;;;;;;;;;;;;;;;;;;;;;;;;27947:23;27924:46;27920:597;;;27987:48;28009:6;28017:9;28028:6;27987:21;:48::i;:::-;27920:597;;;28058:11;:19;28070:6;28058:19;;;;;;;;;;;;;;;;;;;;;;;;;28057:20;:46;;;;;28081:11;:22;28093:9;28081:22;;;;;;;;;;;;;;;;;;;;;;;;;28057:46;28053:464;;;28120:46;28140:6;28148:9;28159:6;28120:19;:46::i;:::-;28053:464;;;28189:11;:19;28201:6;28189:19;;;;;;;;;;;;;;;;;;;;;;;;;28188:20;:47;;;;;28213:11;:22;28225:9;28213:22;;;;;;;;;;;;;;;;;;;;;;;;;28212:23;28188:47;28184:333;;;28252:44;28270:6;28278:9;28289:6;28252:17;:44::i;:::-;28184:333;;;28318:11;:19;28330:6;28318:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;28341:11;:22;28353:9;28341:22;;;;;;;;;;;;;;;;;;;;;;;;;28318:45;28314:203;;;28380:48;28402:6;28410:9;28421:6;28380:21;:48::i;:::-;28314:203;;;28461:44;28479:6;28487:9;28498:6;28461:17;:44::i;:::-;28314:203;28184:333;28053:464;27920:597;27593:931;;;:::o;8859:206::-;8945:7;9003:1;8998;:6;;9006:12;8990:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9045:1;9041;:5;9034:12;;8859:206;;;;;:::o;31793:163::-;31834:7;31855:15;31872;31891:19;:17;:19::i;:::-;31854:56;;;;31928:20;31940:7;31928;:11;;:20;;;;:::i;:::-;31921:27;;;;31793:163;:::o;7717:98::-;7775:7;7806:1;7802;:5;;;;:::i;:::-;7795:12;;7717:98;;;;:::o;31213:230::-;31273:7;31282;31302:12;31317:23;31338:1;31317:16;31329:3;31317:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;31302:38;;31351:23;31377:17;31389:4;31377:7;:11;;:17;;;;:::i;:::-;31351:43;;31413:15;31430:4;31405:30;;;;;;31213:230;;;:::o;31451:334::-;31546:7;31555;31564;31584:15;31602:24;31614:11;31602:7;:11;;:24;;;;:::i;:::-;31584:42;;31637:12;31652:21;31661:11;31652:4;:8;;:21;;;;:::i;:::-;31637:36;;31684:23;31710:17;31722:4;31710:7;:11;;:17;;;;:::i;:::-;31684:43;;31746:7;31755:15;31772:4;31738:39;;;;;;;;;31451:334;;;;;;;:::o;29529:509::-;29632:15;29649:23;29674:12;29688:23;29713:12;29729:19;29740:7;29729:10;:19::i;:::-;29631:117;;;;;;;;;;29777:28;29797:7;29777;:15;29785:6;29777:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29759:7;:15;29767:6;29759:15;;;;;;;;;;;;;;;:46;;;;29834:28;29854:7;29834;:15;29842:6;29834:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29816:7;:15;29824:6;29816:15;;;;;;;;;;;;;;;:46;;;;29894:39;29917:15;29894:7;:18;29902:9;29894:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29873:7;:18;29881:9;29873:18;;;;;;;;;;;;;;;:60;;;;29947:23;29959:4;29965;29947:11;:23::i;:::-;30003:9;29986:44;;29995:6;29986:44;;;30014:15;29986:44;;;;;;:::i;:::-;;;;;;;;29529:509;;;;;;;;:::o;28992:529::-;29093:15;29110:23;29135:12;29149:23;29174:12;29190:19;29201:7;29190:10;:19::i;:::-;29092:117;;;;;;;;;;29238:28;29258:7;29238;:15;29246:6;29238:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29220:7;:15;29228:6;29220:15;;;;;;;;;;;;;;;:46;;;;29298:39;29321:15;29298:7;:18;29306:9;29298:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29277:7;:18;29285:9;29277:18;;;;;;;;;;;;;;;:60;;;;29369:39;29392:15;29369:7;:18;29377:9;29369:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29348:7;:18;29356:9;29348:18;;;;;;;;;;;;;;;:60;;;;29430:23;29442:4;29448;29430:11;:23::i;:::-;29486:9;29469:44;;29478:6;29469:44;;;29497:15;29469:44;;;;;;:::i;:::-;;;;;;;;28992:529;;;;;;;;:::o;28532:452::-;28631:15;28648:23;28673:12;28687:23;28712:12;28728:19;28739:7;28728:10;:19::i;:::-;28630:117;;;;;;;;;;28776:28;28796:7;28776;:15;28784:6;28776:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28758:7;:15;28766:6;28758:15;;;;;;;;;;;;;;;:46;;;;28836:39;28859:15;28836:7;:18;28844:9;28836:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28815:7;:18;28823:9;28815:18;;;;;;;;;;;;;;;:60;;;;28893:23;28905:4;28911;28893:11;:23::i;:::-;28949:9;28932:44;;28941:6;28932:44;;;28960:15;28932:44;;;;;;:::i;:::-;;;;;;;;28532:452;;;;;;;;:::o;30046:585::-;30149:15;30166:23;30191:12;30205:23;30230:12;30246:19;30257:7;30246:10;:19::i;:::-;30148:117;;;;;;;;;;30294:28;30314:7;30294;:15;30302:6;30294:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30276:7;:15;30284:6;30276:15;;;;;;;;;;;;;;;:46;;;;30351:28;30371:7;30351;:15;30359:6;30351:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30333:7;:15;30341:6;30333:15;;;;;;;;;;;;;;;:46;;;;30411:39;30434:15;30411:7;:18;30419:9;30411:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30390:7;:18;30398:9;30390:18;;;;;;;;;;;;;;;:60;;;;30482:39;30505:15;30482:7;:18;30490:9;30482:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30461:7;:18;30469:9;30461:18;;;;;;;;;;;;;;;:60;;;;30540:23;30552:4;30558;30540:11;:23::i;:::-;30596:9;30579:44;;30588:6;30579:44;;;30607:15;30579:44;;;;;;:::i;:::-;;;;;;;;30046:585;;;;;;;;:::o;31964:561::-;32014:7;32023;32043:15;32061:7;;32043:25;;32079:15;23494:27;32079:25;;32126:9;32121:289;32145:9;:16;;;;32141:1;:20;32121:289;;;32211:7;32187;:21;32195:9;32205:1;32195:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32187:21;;;;;;;;;;;;;;;;:31;:66;;;;32246:7;32222;:21;32230:9;32240:1;32230:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32222:21;;;;;;;;;;;;;;;;:31;32187:66;32183:97;;;32263:7;;23494:27;32255:25;;;;;;;;;32183:97;32305:34;32317:7;:21;32325:9;32335:1;32325:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32317:21;;;;;;;;;;;;;;;;32305:7;:11;;:34;;;;:::i;:::-;32295:44;;32364:34;32376:7;:21;32384:9;32394:1;32384:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32376:21;;;;;;;;;;;;;;;;32364:7;:11;;:34;;;;:::i;:::-;32354:44;;32163:3;;;;;:::i;:::-;;;;32121:289;;;;32434:20;23494:27;32434:7;;:11;;:20;;;;:::i;:::-;32424:7;:30;32420:61;;;32464:7;;23494:27;32456:25;;;;;;;;32420:61;32500:7;32509;32492:25;;;;;;31964:561;;;:::o;7318:98::-;7376:7;7407:1;7403;:5;;;;:::i;:::-;7396:12;;7318:98;;;;:::o;30639:147::-;30717:17;30729:4;30717:7;;:11;;:17;;;;:::i;:::-;30707:7;:27;;;;30758:20;30773:4;30758:10;;:14;;:20;;;;:::i;:::-;30745:10;:33;;;;30639:147;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;337:5;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;495:6;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;772:6;780;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;1194:6;1202;1210;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;1743:6;1751;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:262::-;2147:6;2196:2;2184:9;2175:7;2171:23;2167:32;2164:2;;;2212:1;2209;2202:12;2164:2;2255:1;2280:53;2325:7;2316:6;2305:9;2301:22;2280:53;:::i;:::-;2270:63;;2226:117;2154:196;;;;:::o;2356:401::-;2421:6;2429;2478:2;2466:9;2457:7;2453:23;2449:32;2446:2;;;2494:1;2491;2484:12;2446:2;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:50;2732:7;2723:6;2712:9;2708:22;2690:50;:::i;:::-;2680:60;;2635:115;2436:321;;;;;:::o;2763:118::-;2850:24;2868:5;2850:24;:::i;:::-;2845:3;2838:37;2828:53;;:::o;2887:109::-;2968:21;2983:5;2968:21;:::i;:::-;2963:3;2956:34;2946:50;;:::o;3002:364::-;3090:3;3118:39;3151:5;3118:39;:::i;:::-;3173:71;3237:6;3232:3;3173:71;:::i;:::-;3166:78;;3253:52;3298:6;3293:3;3286:4;3279:5;3275:16;3253:52;:::i;:::-;3330:29;3352:6;3330:29;:::i;:::-;3325:3;3321:39;3314:46;;3094:272;;;;;:::o;3372:366::-;3514:3;3535:67;3599:2;3594:3;3535:67;:::i;:::-;3528:74;;3611:93;3700:3;3611:93;:::i;:::-;3729:2;3724:3;3720:12;3713:19;;3518:220;;;:::o;3744:366::-;3886:3;3907:67;3971:2;3966:3;3907:67;:::i;:::-;3900:74;;3983:93;4072:3;3983:93;:::i;:::-;4101:2;4096:3;4092:12;4085:19;;3890:220;;;:::o;4116:366::-;4258:3;4279:67;4343:2;4338:3;4279:67;:::i;:::-;4272:74;;4355:93;4444:3;4355:93;:::i;:::-;4473:2;4468:3;4464:12;4457:19;;4262:220;;;:::o;4488:366::-;4630:3;4651:67;4715:2;4710:3;4651:67;:::i;:::-;4644:74;;4727:93;4816:3;4727:93;:::i;:::-;4845:2;4840:3;4836:12;4829:19;;4634:220;;;:::o;4860:366::-;5002:3;5023:67;5087:2;5082:3;5023:67;:::i;:::-;5016:74;;5099:93;5188:3;5099:93;:::i;:::-;5217:2;5212:3;5208:12;5201:19;;5006:220;;;:::o;5232:366::-;5374:3;5395:67;5459:2;5454:3;5395:67;:::i;:::-;5388:74;;5471:93;5560:3;5471:93;:::i;:::-;5589:2;5584:3;5580:12;5573:19;;5378:220;;;:::o;5604:366::-;5746:3;5767:67;5831:2;5826:3;5767:67;:::i;:::-;5760:74;;5843:93;5932:3;5843:93;:::i;:::-;5961:2;5956:3;5952:12;5945:19;;5750:220;;;:::o;5976:366::-;6118:3;6139:67;6203:2;6198:3;6139:67;:::i;:::-;6132:74;;6215:93;6304:3;6215:93;:::i;:::-;6333:2;6328:3;6324:12;6317:19;;6122:220;;;:::o;6348:366::-;6490:3;6511:67;6575:2;6570:3;6511:67;:::i;:::-;6504:74;;6587:93;6676:3;6587:93;:::i;:::-;6705:2;6700:3;6696:12;6689:19;;6494:220;;;:::o;6720:366::-;6862:3;6883:67;6947:2;6942:3;6883:67;:::i;:::-;6876:74;;6959:93;7048:3;6959:93;:::i;:::-;7077:2;7072:3;7068:12;7061:19;;6866:220;;;:::o;7092:366::-;7234:3;7255:67;7319:2;7314:3;7255:67;:::i;:::-;7248:74;;7331:93;7420:3;7331:93;:::i;:::-;7449:2;7444:3;7440:12;7433:19;;7238:220;;;:::o;7464:366::-;7606:3;7627:67;7691:2;7686:3;7627:67;:::i;:::-;7620:74;;7703:93;7792:3;7703:93;:::i;:::-;7821:2;7816:3;7812:12;7805:19;;7610:220;;;:::o;7836:118::-;7923:24;7941:5;7923:24;:::i;:::-;7918:3;7911:37;7901:53;;:::o;7960:112::-;8043:22;8059:5;8043:22;:::i;:::-;8038:3;8031:35;8021:51;;:::o;8078:222::-;8171:4;8209:2;8198:9;8194:18;8186:26;;8222:71;8290:1;8279:9;8275:17;8266:6;8222:71;:::i;:::-;8176:124;;;;:::o;8306:210::-;8393:4;8431:2;8420:9;8416:18;8408:26;;8444:65;8506:1;8495:9;8491:17;8482:6;8444:65;:::i;:::-;8398:118;;;;:::o;8522:313::-;8635:4;8673:2;8662:9;8658:18;8650:26;;8722:9;8716:4;8712:20;8708:1;8697:9;8693:17;8686:47;8750:78;8823:4;8814:6;8750:78;:::i;:::-;8742:86;;8640:195;;;;:::o;8841:419::-;9007:4;9045:2;9034:9;9030:18;9022:26;;9094:9;9088:4;9084:20;9080:1;9069:9;9065:17;9058:47;9122:131;9248:4;9122:131;:::i;:::-;9114:139;;9012:248;;;:::o;9266:419::-;9432:4;9470:2;9459:9;9455:18;9447:26;;9519:9;9513:4;9509:20;9505:1;9494:9;9490:17;9483:47;9547:131;9673:4;9547:131;:::i;:::-;9539:139;;9437:248;;;:::o;9691:419::-;9857:4;9895:2;9884:9;9880:18;9872:26;;9944:9;9938:4;9934:20;9930:1;9919:9;9915:17;9908:47;9972:131;10098:4;9972:131;:::i;:::-;9964:139;;9862:248;;;:::o;10116:419::-;10282:4;10320:2;10309:9;10305:18;10297:26;;10369:9;10363:4;10359:20;10355:1;10344:9;10340:17;10333:47;10397:131;10523:4;10397:131;:::i;:::-;10389:139;;10287:248;;;:::o;10541:419::-;10707:4;10745:2;10734:9;10730:18;10722:26;;10794:9;10788:4;10784:20;10780:1;10769:9;10765:17;10758:47;10822:131;10948:4;10822:131;:::i;:::-;10814:139;;10712:248;;;:::o;10966:419::-;11132:4;11170:2;11159:9;11155:18;11147:26;;11219:9;11213:4;11209:20;11205:1;11194:9;11190:17;11183:47;11247:131;11373:4;11247:131;:::i;:::-;11239:139;;11137:248;;;:::o;11391:419::-;11557:4;11595:2;11584:9;11580:18;11572:26;;11644:9;11638:4;11634:20;11630:1;11619:9;11615:17;11608:47;11672:131;11798:4;11672:131;:::i;:::-;11664:139;;11562:248;;;:::o;11816:419::-;11982:4;12020:2;12009:9;12005:18;11997:26;;12069:9;12063:4;12059:20;12055:1;12044:9;12040:17;12033:47;12097:131;12223:4;12097:131;:::i;:::-;12089:139;;11987:248;;;:::o;12241:419::-;12407:4;12445:2;12434:9;12430:18;12422:26;;12494:9;12488:4;12484:20;12480:1;12469:9;12465:17;12458:47;12522:131;12648:4;12522:131;:::i;:::-;12514:139;;12412:248;;;:::o;12666:419::-;12832:4;12870:2;12859:9;12855:18;12847:26;;12919:9;12913:4;12909:20;12905:1;12894:9;12890:17;12883:47;12947:131;13073:4;12947:131;:::i;:::-;12939:139;;12837:248;;;:::o;13091:419::-;13257:4;13295:2;13284:9;13280:18;13272:26;;13344:9;13338:4;13334:20;13330:1;13319:9;13315:17;13308:47;13372:131;13498:4;13372:131;:::i;:::-;13364:139;;13262:248;;;:::o;13516:419::-;13682:4;13720:2;13709:9;13705:18;13697:26;;13769:9;13763:4;13759:20;13755:1;13744:9;13740:17;13733:47;13797:131;13923:4;13797:131;:::i;:::-;13789:139;;13687:248;;;:::o;13941:222::-;14034:4;14072:2;14061:9;14057:18;14049:26;;14085:71;14153:1;14142:9;14138:17;14129:6;14085:71;:::i;:::-;14039:124;;;;:::o;14169:214::-;14258:4;14296:2;14285:9;14281:18;14273:26;;14309:67;14373:1;14362:9;14358:17;14349:6;14309:67;:::i;:::-;14263:120;;;;:::o;14389:99::-;14441:6;14475:5;14469:12;14459:22;;14448:40;;;:::o;14494:169::-;14578:11;14612:6;14607:3;14600:19;14652:4;14647:3;14643:14;14628:29;;14590:73;;;;:::o;14669:305::-;14709:3;14728:20;14746:1;14728:20;:::i;:::-;14723:25;;14762:20;14780:1;14762:20;:::i;:::-;14757:25;;14916:1;14848:66;14844:74;14841:1;14838:81;14835:2;;;14922:18;;:::i;:::-;14835:2;14966:1;14963;14959:9;14952:16;;14713:261;;;;:::o;14980:185::-;15020:1;15037:20;15055:1;15037:20;:::i;:::-;15032:25;;15071:20;15089:1;15071:20;:::i;:::-;15066:25;;15110:1;15100:2;;15115:18;;:::i;:::-;15100:2;15157:1;15154;15150:9;15145:14;;15022:143;;;;:::o;15171:348::-;15211:7;15234:20;15252:1;15234:20;:::i;:::-;15229:25;;15268:20;15286:1;15268:20;:::i;:::-;15263:25;;15456:1;15388:66;15384:74;15381:1;15378:81;15373:1;15366:9;15359:17;15355:105;15352:2;;;15463:18;;:::i;:::-;15352:2;15511:1;15508;15504:9;15493:20;;15219:300;;;;:::o;15525:191::-;15565:4;15585:20;15603:1;15585:20;:::i;:::-;15580:25;;15619:20;15637:1;15619:20;:::i;:::-;15614:25;;15658:1;15655;15652:8;15649:2;;;15663:18;;:::i;:::-;15649:2;15708:1;15705;15701:9;15693:17;;15570:146;;;;:::o;15722:96::-;15759:7;15788:24;15806:5;15788:24;:::i;:::-;15777:35;;15767:51;;;:::o;15824:90::-;15858:7;15901:5;15894:13;15887:21;15876:32;;15866:48;;;:::o;15920:126::-;15957:7;15997:42;15990:5;15986:54;15975:65;;15965:81;;;:::o;16052:77::-;16089:7;16118:5;16107:16;;16097:32;;;:::o;16135:86::-;16170:7;16210:4;16203:5;16199:16;16188:27;;16178:43;;;:::o;16227:307::-;16295:1;16305:113;16319:6;16316:1;16313:13;16305:113;;;16404:1;16399:3;16395:11;16389:18;16385:1;16380:3;16376:11;16369:39;16341:2;16338:1;16334:10;16329:15;;16305:113;;;16436:6;16433:1;16430:13;16427:2;;;16516:1;16507:6;16502:3;16498:16;16491:27;16427:2;16276:258;;;;:::o;16540:320::-;16584:6;16621:1;16615:4;16611:12;16601:22;;16668:1;16662:4;16658:12;16689:18;16679:2;;16745:4;16737:6;16733:17;16723:27;;16679:2;16807;16799:6;16796:14;16776:18;16773:38;16770:2;;;16826:18;;:::i;:::-;16770:2;16591:269;;;;:::o;16866:233::-;16905:3;16928:24;16946:5;16928:24;:::i;:::-;16919:33;;16974:66;16967:5;16964:77;16961:2;;;17044:18;;:::i;:::-;16961:2;17091:1;17084:5;17080:13;17073:20;;16909:190;;;:::o;17105:176::-;17137:1;17154:20;17172:1;17154:20;:::i;:::-;17149:25;;17188:20;17206:1;17188:20;:::i;:::-;17183:25;;17227:1;17217:2;;17232:18;;:::i;:::-;17217:2;17273:1;17270;17266:9;17261:14;;17139:142;;;;:::o;17287:180::-;17335:77;17332:1;17325:88;17432:4;17429:1;17422:15;17456:4;17453:1;17446:15;17473:180;17521:77;17518:1;17511:88;17618:4;17615:1;17608:15;17642:4;17639:1;17632:15;17659:180;17707:77;17704:1;17697:88;17804:4;17801:1;17794:15;17828:4;17825:1;17818:15;17845:102;17886:6;17937:2;17933:7;17928:2;17921:5;17917:14;17913:28;17903:38;;17893:54;;;:::o;17953:222::-;18093:34;18089:1;18081:6;18077:14;18070:58;18162:5;18157:2;18149:6;18145:15;18138:30;18059:116;:::o;18181:229::-;18321:34;18317:1;18309:6;18305:14;18298:58;18390:12;18385:2;18377:6;18373:15;18366:37;18287:123;:::o;18416:225::-;18556:34;18552:1;18544:6;18540:14;18533:58;18625:8;18620:2;18612:6;18608:15;18601:33;18522:119;:::o;18647:221::-;18787:34;18783:1;18775:6;18771:14;18764:58;18856:4;18851:2;18843:6;18839:15;18832:29;18753:115;:::o;18874:177::-;19014:29;19010:1;19002:6;18998:14;18991:53;18980:71;:::o;19057:181::-;19197:33;19193:1;19185:6;19181:14;19174:57;19163:75;:::o;19244:233::-;19384:34;19380:1;19372:6;19368:14;19361:58;19453:16;19448:2;19440:6;19436:15;19429:41;19350:127;:::o;19483:182::-;19623:34;19619:1;19611:6;19607:14;19600:58;19589:76;:::o;19671:228::-;19811:34;19807:1;19799:6;19795:14;19788:58;19880:11;19875:2;19867:6;19863:15;19856:36;19777:122;:::o;19905:224::-;20045:34;20041:1;20033:6;20029:14;20022:58;20114:7;20109:2;20101:6;20097:15;20090:32;20011:118;:::o;20135:223::-;20275:34;20271:1;20263:6;20259:14;20252:58;20344:6;20339:2;20331:6;20327:15;20320:31;20241:117;:::o;20364:231::-;20504:34;20500:1;20492:6;20488:14;20481:58;20573:14;20568:2;20560:6;20556:15;20549:39;20470:125;:::o;20601:122::-;20674:24;20692:5;20674:24;:::i;:::-;20667:5;20664:35;20654:2;;20713:1;20710;20703:12;20654:2;20644:79;:::o;20729:116::-;20799:21;20814:5;20799:21;:::i;:::-;20792:5;20789:32;20779:2;;20835:1;20832;20825:12;20779:2;20769:76;:::o;20851:122::-;20924:24;20942:5;20924:24;:::i;:::-;20917:5;20914:35;20904:2;;20963:1;20960;20953:12;20904:2;20894:79;:::o
Swarm Source
ipfs://71754685bd3c4df13358161d34cc236a0eab0ac42f8a0d9875ac10c7d2359fb1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.