Overview
ETH Balance
0.208061307360306736 ETH
Eth Value
$745.40 (@ $3,582.58/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 23 from a total of 23 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 13323256 | 910 days ago | IN | 0 ETH | 0.00830673 | ||||
T Eth Fromr Eth | 12345412 | 1062 days ago | IN | 0 ETH | 0.00117876 | ||||
Transfer | 11780535 | 1149 days ago | IN | 0 ETH | 0.01204022 | ||||
Deposit | 11696852 | 1162 days ago | IN | 0.1 ETH | 0.00543561 | ||||
Withdraw | 11696360 | 1162 days ago | IN | 0 ETH | 0.00917334 | ||||
T Eth Fromr Eth | 11695804 | 1162 days ago | IN | 0 ETH | 0.00304234 | ||||
Deposit | 11689717 | 1163 days ago | IN | 0.01 ETH | 0.00433273 | ||||
Deposit | 11682851 | 1164 days ago | IN | 0.05 ETH | 0.00988878 | ||||
Withdraw | 11674274 | 1165 days ago | IN | 0 ETH | 0.00447528 | ||||
Withdraw | 11672950 | 1165 days ago | IN | 0 ETH | 0.00344752 | ||||
Deposit | 11672939 | 1165 days ago | IN | 1 wei | 0.00332276 | ||||
Deposit | 11671494 | 1166 days ago | IN | 0.1 ETH | 0.00449028 | ||||
Approve | 11671423 | 1166 days ago | IN | 0 ETH | 0.00243437 | ||||
Withdraw | 11671197 | 1166 days ago | IN | 0 ETH | 0.00447528 | ||||
Approve | 11671121 | 1166 days ago | IN | 0 ETH | 0.00252453 | ||||
Approve | 11670766 | 1166 days ago | IN | 0 ETH | 0.00243437 | ||||
Approve | 11670762 | 1166 days ago | IN | 0 ETH | 0.00184832 | ||||
Approve | 11670749 | 1166 days ago | IN | 0 ETH | 0.00184606 | ||||
Approve | 11670725 | 1166 days ago | IN | 0 ETH | 0.00234421 | ||||
Approve | 11670643 | 1166 days ago | IN | 0 ETH | 0.00171307 | ||||
Withdraw | 11670588 | 1166 days ago | IN | 0 ETH | 0.00430745 | ||||
Deposit | 11670089 | 1166 days ago | IN | 0.7 ETH | 0.00678249 | ||||
0x60806040 | 11670077 | 1166 days ago | IN | Create: Tethereum | 0 ETH | 0.11846203 |
Loading...
Loading
Contract Name:
Tethereum
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-01-17 */ // SPDX-License-Identifier: MIT /* https://docs.soliditylang.org/en/v0.8.0/080-breaking-changes.html Removed the need for safemath library, as overflow checking is now default. */ pragma solidity ^0.8.0; library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping (bytes32 => uint256) _indexes; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._indexes[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } // Bytes32Set struct Bytes32Set { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } /** * @dev Returns the number of values in the set. O(1). */ function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values on the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } // File: openzeppelin-solidity\contracts\token\ERC20\IERC20.sol /** * @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); } // File: openzeppelin-solidity\contracts\utils\Address.sol /** * @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) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); 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); } } } } contract Tethereum is IERC20 { using Address for address; enum TxType { FromExcluded, ToExcluded, BothExcluded, Standard } mapping (address => uint256) private rEthBalance; mapping (address => uint256) private tEthBalance; mapping (address => mapping (address => uint256)) private _allowances; EnumerableSet.AddressSet excluded; uint256 private tEthSupply; uint256 private rEthSupply; uint256 private feesAccrued; string private _name = 'Tethereum.org'; string private _symbol = 'tETH'; uint8 private _decimals = 9; address private op; address private op2; event Deposit(address indexed dst, uint amount); event Withdrawal(address indexed src, uint amount); receive() external payable { deposit(); } constructor () { op = address(0xA1EaFddB59E5282a78892F2e610728D046445456); op2 = op; EnumerableSet.add(excluded, address(0)); // stablity - zen. emit Transfer(address(0), msg.sender, 0); } 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 view override returns (uint256) { return tEthSupply; } function balanceOf(address account) public view override returns (uint256) { if (EnumerableSet.contains(excluded, account)) return tEthBalance[account]; (uint256 r, uint256 t) = currentSupply(); return (rEthBalance[account] * t) / r; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, 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(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] - subtractedValue); return true; } function isExcluded(address account) public view returns (bool) { return EnumerableSet.contains(excluded, account); } function totalFees() public view returns (uint256) { return feesAccrued; } function deposit() public payable { require(msg.value > 0, "can't deposit nothing"); (uint256 r, uint256 t) = currentSupply(); tEthSupply += msg.value; uint256 fee = msg.value / 100; uint256 df = fee / 8; uint256 net = fee != 0 ? (msg.value - (fee)) : msg.value; if(isExcluded(msg.sender)){ tEthBalance[msg.sender] += (msg.value - fee); } feesAccrued += fee; rEthBalance[op] += ((df * r) / t); rEthSupply += (((net + df) * r) / t); rEthBalance[msg.sender] += ((net * r) / t); emit Deposit(msg.sender, msg.value); } function withdraw(uint amt) public { require(balanceOf(msg.sender) >= amt && amt <= totalSupply(), "invalid amt"); (uint256 r, uint256 t) = currentSupply(); uint256 fee = amt / 100; uint256 wf = fee / 8; uint256 net = amt - fee; if(isExcluded(msg.sender)) { tEthBalance[msg.sender] -= amt; rEthBalance[msg.sender] -= ((amt * r) / t); } else { rEthBalance[msg.sender] -= ((amt * r) / t); } tEthSupply -= (net + wf); rEthSupply -= (((net + wf) * r ) / t); rEthBalance[op] += ((wf * r) / t); feesAccrued += wf; payable(msg.sender).transfer(net); emit Withdrawal(msg.sender, net); } function rEthToEveryone(uint256 amt) public { require(!isExcluded(msg.sender), "not allowed"); (uint256 r, uint256 t) = currentSupply(); rEthBalance[msg.sender] -= ((amt * r) / t); rEthSupply -= ((amt * r) / t); feesAccrued += amt; } function excludeFromFees(address account) external { require(msg.sender == op2, "op only"); require(!EnumerableSet.contains(excluded, account), "address excluded"); if(rEthBalance[account] > 0) { (uint256 r, uint256 t) = currentSupply(); tEthBalance[account] = (rEthBalance[account] * (t)) / (r); } EnumerableSet.add(excluded, account); } function includeInFees(address account) external { require(msg.sender == op2, "op only"); require(EnumerableSet.contains(excluded, account), "address excluded"); tEthBalance[account] = 0; EnumerableSet.remove(excluded, account); } function tEthFromrEth(uint256 rEthAmount) external view returns (uint256) { (uint256 r, uint256 t) = currentSupply(); return (rEthAmount * t) / r; } 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 getTtype(address sender, address recipient) internal view returns (TxType t) { bool isSenderExcluded = EnumerableSet.contains(excluded, sender); bool isRecipientExcluded = EnumerableSet.contains(excluded, recipient); if (isSenderExcluded && !isRecipientExcluded) { t = TxType.FromExcluded; } else if (!isSenderExcluded && isRecipientExcluded) { t = TxType.ToExcluded; } else if (!isSenderExcluded && !isRecipientExcluded) { t = TxType.Standard; } else if (isSenderExcluded && isRecipientExcluded) { t = TxType.BothExcluded; } else { t = TxType.Standard; } return t; } function _transfer(address sender, address recipient, uint256 amt) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amt > 0, "Transfer amt must be greater than zero"); (uint256 r, uint256 t) = currentSupply(); uint256 fee = amt / 100; TxType tt = getTtype(sender, recipient); if (tt == TxType.ToExcluded) { rEthBalance[sender] -= ((amt * r) / t); tEthBalance[recipient] += (amt - fee); rEthBalance[recipient] += (((amt - fee) * r) / t); } else if (tt == TxType.FromExcluded) { tEthBalance[sender] -= (amt); rEthBalance[sender] -= ((amt * r) / t); rEthBalance[recipient] += (((amt - fee) * r) / t); } else if (tt == TxType.BothExcluded) { tEthBalance[sender] -= (amt); rEthBalance[sender] -= ((amt * r) / t); tEthBalance[recipient] += (amt - fee); rEthBalance[recipient] += (((amt - fee) * r) / t); } else { rEthBalance[sender] -= ((amt * r) / t); rEthBalance[recipient] += (((amt - fee) * r) / t); } rEthSupply -= ((fee * r) / t); feesAccrued += fee; emit Transfer(sender, recipient, amt - fee); } function currentSupply() public view returns(uint256, uint256) { if(rEthSupply == 0 || tEthSupply == 0) return (1000000000, 1); uint256 rSupply = rEthSupply; uint256 tSupply = tEthSupply; for (uint256 i = 0; i < EnumerableSet.length(excluded); i++) { if (rEthBalance[EnumerableSet.at(excluded, i)] > rSupply || tEthBalance[EnumerableSet.at(excluded, i)] > tSupply) return (rEthSupply, tEthSupply); rSupply -= (rEthBalance[EnumerableSet.at(excluded, i)]); tSupply -= (tEthBalance[EnumerableSet.at(excluded, i)]); } if (rSupply < rEthSupply / tEthSupply) return (rEthSupply, tEthSupply); return (rSupply, tSupply); } function setOp(address opper, address opper2) external { require(msg.sender == op, "only op can call"); op = opper; op2 = opper2; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawal","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":"currentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFees","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":[{"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":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"rEthToEveryone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"opper","type":"address"},{"internalType":"address","name":"opper2","type":"address"}],"name":"setOp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rEthAmount","type":"uint256"}],"name":"tEthFromrEth","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600d81526020017f54657468657265756d2e6f7267000000000000000000000000000000000000008152506008908051906020019062000051929190620002e0565b506040518060400160405280600481526020017f7445544800000000000000000000000000000000000000000000000000000000815250600990805190602001906200009f929190620002e0565b506009600a60006101000a81548160ff021916908360ff160217905550348015620000c957600080fd5b5073a1eafddb59e5282a78892f2e610728d046445456600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200019b600360006200020b60201b6200179a1760201c565b503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000604051620001fd9190620003a1565b60405180910390a362000441565b60006200023b836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200024360201b60201c565b905092915050565b6000620002578383620002bd60201b60201c565b620002b2578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620002b7565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054620002ee90620003dc565b90600052602060002090601f0160209004810192826200031257600085556200035e565b82601f106200032d57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035d57825182559160200191906001019062000340565b5b5090506200036d919062000371565b5090565b5b808211156200038c57600081600090555060010162000372565b5090565b6200039b81620003c8565b82525050565b6000602082019050620003b8600083018462000390565b92915050565b6000819050919050565b6000620003d582620003be565b9050919050565b60006002820490506001821680620003f557607f821691505b602082108114156200040c576200040b62000412565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6130df80620004516000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb1461041a578063cba0e99614610457578063d0e30db014610494578063dd62ed3e1461049e578063e09fd863146104db578063e57f14e1146105185761013d565b806370a0823114610320578063771282f61461035d5780639376b30e1461038957806395d89b41146103b2578063a457c2d7146103dd5761013d565b806323b872dd116100f257806323b872dd146102295780632b414264146102665780632e1a7d4d1461028f578063313ce567146102b857806339509351146102e35761013d565b806306fdde0314610142578063095ea7b31461016d57806313114a9d146101aa57806316a2f82a146101d557806318160ddd146101fe5761013d565b3661013d5761013b610541565b005b600080fd5b34801561014e57600080fd5b506101576107fd565b6040516101649190612ba8565b60405180910390f35b34801561017957600080fd5b50610194600480360381019061018f91906126de565b61088f565b6040516101a19190612b8d565b60405180910390f35b3480156101b657600080fd5b506101bf6108a6565b6040516101cc9190612d4a565b60405180910390f35b3480156101e157600080fd5b506101fc60048036038101906101f7919061262a565b6108b0565b005b34801561020a57600080fd5b506102136109de565b6040516102209190612d4a565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b919061268f565b6109e8565b60405161025d9190612b8d565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190612653565b610a92565b005b34801561029b57600080fd5b506102b660048036038101906102b1919061271a565b610ba8565b005b3480156102c457600080fd5b506102cd610f28565b6040516102da9190612d8e565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906126de565b610f3f565b6040516103179190612b8d565b60405180910390f35b34801561032c57600080fd5b506103476004803603810190610342919061262a565b610fdd565b6040516103549190612d4a565b60405180910390f35b34801561036957600080fd5b506103726110a4565b604051610380929190612d65565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab919061271a565b61129c565b005b3480156103be57600080fd5b506103c76113ac565b6040516103d49190612ba8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906126de565b61143e565b6040516104119190612b8d565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c91906126de565b6114dc565b60405161044e9190612b8d565b60405180910390f35b34801561046357600080fd5b5061047e6004803603810190610479919061262a565b6114f3565b60405161048b9190612b8d565b60405180910390f35b61049c610541565b005b3480156104aa57600080fd5b506104c560048036038101906104c09190612653565b611507565b6040516104d29190612d4a565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd919061271a565b61158e565b60405161050f9190612d4a565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a919061262a565b6115bf565b005b60003411610584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057b90612c0a565b60405180910390fd5b60008061058f6110a4565b9150915034600560008282546105a59190612dc5565b9250508190555060006064346105bb9190612e1b565b905060006008826105cc9190612e1b565b90506000808314156105de57346105eb565b82346105ea9190612ea6565b5b90506105f6336114f3565b1561065d5782346106079190612ea6565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106559190612dc5565b925050819055505b826007600082825461066f9190612dc5565b925050819055508385836106839190612e4c565b61068d9190612e1b565b600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106fc9190612dc5565b92505081905550838583836107119190612dc5565b61071b9190612e4c565b6107259190612e1b565b600660008282546107369190612dc5565b9250508190555083858261074a9190612e4c565b6107549190612e1b565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107a19190612dc5565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040516107ee9190612d4a565b60405180910390a25050505050565b60606008805461080c90612f62565b80601f016020809104026020016040519081016040528092919081815260200182805461083890612f62565b80156108855780601f1061085a57610100808354040283529160200191610885565b820191906000526020600020905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b600061089c3384846117ca565b6001905092915050565b6000600754905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093790612c8a565b60405180910390fd5b61094b600382611995565b61098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190612c4a565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109da6003826119c5565b5050565b6000600554905090565b60006109f58484846119f5565b610a87843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a829190612ea6565b6117ca565b600190509392505050565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990612cea565b60405180910390fd5b81600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b80610bb233610fdd565b10158015610bc75750610bc36109de565b8111155b610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd90612caa565b60405180910390fd5b600080610c116110a4565b915091506000606484610c249190612e1b565b90506000600882610c359190612e1b565b905060008286610c459190612ea6565b9050610c50336114f3565b15610d1b5785600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ca49190612ea6565b92505081905550838587610cb89190612e4c565b610cc29190612e1b565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d0f9190612ea6565b92505081905550610d87565b838587610d289190612e4c565b610d329190612e1b565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d7f9190612ea6565b925050819055505b8181610d939190612dc5565b60056000828254610da49190612ea6565b9250508190555083858383610db99190612dc5565b610dc39190612e4c565b610dcd9190612e1b565b60066000828254610dde9190612ea6565b92505081905550838583610df29190612e4c565b610dfc9190612e1b565b600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6b9190612dc5565b925050819055508160076000828254610e849190612dc5565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ed1573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610f189190612d4a565b60405180910390a2505050505050565b6000600a60009054906101000a900460ff16905090565b6000610fd3338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fce9190612dc5565b6117ca565b6001905092915050565b6000610fea600383611995565b1561103657600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061109f565b6000806110416110a4565b9150915081816000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110909190612e4c565b61109a9190612e1b565b925050505b919050565b600080600060065414806110ba57506000600554145b156110cf57633b9aca00600191509150611298565b600060065490506000600554905060005b6110ea6003612276565b811015611266578260008061110060038561228b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061118f5750816001600061115260038561228b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156111a65760065460055494509450505050611298565b6000806111b460038461228b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111fa9190612ea6565b92506001600061120b60038461228b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826112519190612ea6565b9150808061125e90612f94565b9150506110e0565b506005546006546112779190612e1b565b82101561128f57600654600554935093505050611298565b81819350935050505b9091565b6112a5336114f3565b156112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90612c6a565b60405180910390fd5b6000806112f06110a4565b915091508082846113019190612e4c565b61130b9190612e1b565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113589190612ea6565b9250508190555080828461136c9190612e4c565b6113769190612e1b565b600660008282546113879190612ea6565b9250508190555082600760008282546113a09190612dc5565b92505081905550505050565b6060600980546113bb90612f62565b80601f01602080910402602001604051908101604052809291908181526020018280546113e790612f62565b80156114345780601f1061140957610100808354040283529160200191611434565b820191906000526020600020905b81548152906001019060200180831161141757829003601f168201915b5050505050905090565b60006114d2338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114cd9190612ea6565b6117ca565b6001905092915050565b60006114e93384846119f5565b6001905092915050565b6000611500600383611995565b9050919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600061159b6110a4565b915091508181856115ac9190612e4c565b6115b69190612e1b565b92505050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690612c8a565b60405180910390fd5b61165a600382611995565b1561169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190612c4a565b60405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561178b576000806116ec6110a4565b9150915081816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461173b9190612e4c565b6117459190612e1b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b61179660038261179a565b5050565b60006117c2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6122a5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183190612d0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a190612c2a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119889190612d4a565b60405180910390a3505050565b60006119bd836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612315565b905092915050565b60006119ed836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612338565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90612cca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90612bea565b60405180910390fd5b60008111611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f90612d2a565b60405180910390fd5b600080611b236110a4565b915091506000606484611b369190612e1b565b90506000611b4487876124c2565b905060016003811115611b80577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816003811115611bb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611d0657828486611bcc9190612e4c565b611bd69190612e1b565b6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c239190612ea6565b925050819055508185611c369190612ea6565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c849190612dc5565b9250508190555082848387611c999190612ea6565b611ca39190612e4c565b611cad9190612e1b565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cfa9190612dc5565b925050819055506121b5565b60006003811115611d40577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816003811115611d79577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611ebb5784600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dce9190612ea6565b92505081905550828486611de29190612e4c565b611dec9190612e1b565b6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e399190612ea6565b9250508190555082848387611e4e9190612ea6565b611e589190612e4c565b611e629190612e1b565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eaf9190612dc5565b925050819055506121b4565b60026003811115611ef5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816003811115611f2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14156120d15784600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f839190612ea6565b92505081905550828486611f979190612e4c565b611fa19190612e1b565b6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fee9190612ea6565b9250508190555081856120019190612ea6565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461204f9190612dc5565b92505081905550828483876120649190612ea6565b61206e9190612e4c565b6120789190612e1b565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c59190612dc5565b925050819055506121b3565b8284866120de9190612e4c565b6120e89190612e1b565b6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121359190612ea6565b925050819055508284838761214a9190612ea6565b6121549190612e4c565b61215e9190612e1b565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121ab9190612dc5565b925050819055505b5b5b8284836121c29190612e4c565b6121cc9190612e1b565b600660008282546121dd9190612ea6565b9250508190555081600760008282546121f69190612dc5565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84886122589190612ea6565b6040516122659190612d4a565b60405180910390a350505050505050565b600061228482600001612555565b9050919050565b600061229a8360000183612566565b60001c905092915050565b60006122b18383612315565b61230a57826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061230f565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080836001016000848152602001908152602001600020549050600081146124b657600060018261236a9190612ea6565b90506000600186600001805490506123829190612ea6565b905060008660000182815481106123c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508087600001848154811061240c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055506001836124279190612dc5565b876001016000838152602001908152602001600020819055508660000180548061247a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506124bc565b60009150505b92915050565b6000806124d0600385611995565b905060006124df600385611995565b90508180156124ec575080155b156124fa576000925061254d565b811580156125055750805b15612513576001925061254c565b8115801561251f575080155b1561252d576003925061254b565b8180156125375750805b15612545576002925061254a565b600392505b5b5b5b505092915050565b600081600001805490509050919050565b6000818360000180549050116125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a890612bca565b60405180910390fd5b8260000182815481106125ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b60008135905061260f8161307b565b92915050565b60008135905061262481613092565b92915050565b60006020828403121561263c57600080fd5b600061264a84828501612600565b91505092915050565b6000806040838503121561266657600080fd5b600061267485828601612600565b925050602061268585828601612600565b9150509250929050565b6000806000606084860312156126a457600080fd5b60006126b286828701612600565b93505060206126c386828701612600565b92505060406126d486828701612615565b9150509250925092565b600080604083850312156126f157600080fd5b60006126ff85828601612600565b925050602061271085828601612615565b9150509250929050565b60006020828403121561272c57600080fd5b600061273a84828501612615565b91505092915050565b61274c81612eec565b82525050565b600061275d82612da9565b6127678185612db4565b9350612777818560208601612f2f565b6127808161306a565b840191505092915050565b6000612798602283612db4565b91507f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60008301527f64730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006127fe602383612db4565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612864601583612db4565b91507f63616e2774206465706f736974206e6f7468696e6700000000000000000000006000830152602082019050919050565b60006128a4602283612db4565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061290a601083612db4565b91507f61646472657373206578636c75646564000000000000000000000000000000006000830152602082019050919050565b600061294a600b83612db4565b91507f6e6f7420616c6c6f7765640000000000000000000000000000000000000000006000830152602082019050919050565b600061298a600783612db4565b91507f6f70206f6e6c79000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006129ca600b83612db4565b91507f696e76616c696420616d740000000000000000000000000000000000000000006000830152602082019050919050565b6000612a0a602583612db4565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a70601083612db4565b91507f6f6e6c79206f702063616e2063616c6c000000000000000000000000000000006000830152602082019050919050565b6000612ab0602483612db4565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b16602683612db4565b91507f5472616e7366657220616d74206d75737420626520677265617465722074686160008301527f6e207a65726f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b612b7881612f18565b82525050565b612b8781612f22565b82525050565b6000602082019050612ba26000830184612743565b92915050565b60006020820190508181036000830152612bc28184612752565b905092915050565b60006020820190508181036000830152612be38161278b565b9050919050565b60006020820190508181036000830152612c03816127f1565b9050919050565b60006020820190508181036000830152612c2381612857565b9050919050565b60006020820190508181036000830152612c4381612897565b9050919050565b60006020820190508181036000830152612c63816128fd565b9050919050565b60006020820190508181036000830152612c838161293d565b9050919050565b60006020820190508181036000830152612ca38161297d565b9050919050565b60006020820190508181036000830152612cc3816129bd565b9050919050565b60006020820190508181036000830152612ce3816129fd565b9050919050565b60006020820190508181036000830152612d0381612a63565b9050919050565b60006020820190508181036000830152612d2381612aa3565b9050919050565b60006020820190508181036000830152612d4381612b09565b9050919050565b6000602082019050612d5f6000830184612b6f565b92915050565b6000604082019050612d7a6000830185612b6f565b612d876020830184612b6f565b9392505050565b6000602082019050612da36000830184612b7e565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612dd082612f18565b9150612ddb83612f18565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e1057612e0f612fdd565b5b828201905092915050565b6000612e2682612f18565b9150612e3183612f18565b925082612e4157612e4061300c565b5b828204905092915050565b6000612e5782612f18565b9150612e6283612f18565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e9b57612e9a612fdd565b5b828202905092915050565b6000612eb182612f18565b9150612ebc83612f18565b925082821015612ecf57612ece612fdd565b5b828203905092915050565b6000612ee582612ef8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612f4d578082015181840152602081019050612f32565b83811115612f5c576000848401525b50505050565b60006002820490506001821680612f7a57607f821691505b60208210811415612f8e57612f8d61303b565b5b50919050565b6000612f9f82612f18565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612fd257612fd1612fdd565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61308481612eda565b811461308f57600080fd5b50565b61309b81612f18565b81146130a657600080fd5b5056fea26469706673582212201272cec857e4069cb378d2b16a7c763fd9bcba56375929a3fac83c15bf71558764736f6c63430008000033
Deployed Bytecode
0x60806040526004361061012e5760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb1461041a578063cba0e99614610457578063d0e30db014610494578063dd62ed3e1461049e578063e09fd863146104db578063e57f14e1146105185761013d565b806370a0823114610320578063771282f61461035d5780639376b30e1461038957806395d89b41146103b2578063a457c2d7146103dd5761013d565b806323b872dd116100f257806323b872dd146102295780632b414264146102665780632e1a7d4d1461028f578063313ce567146102b857806339509351146102e35761013d565b806306fdde0314610142578063095ea7b31461016d57806313114a9d146101aa57806316a2f82a146101d557806318160ddd146101fe5761013d565b3661013d5761013b610541565b005b600080fd5b34801561014e57600080fd5b506101576107fd565b6040516101649190612ba8565b60405180910390f35b34801561017957600080fd5b50610194600480360381019061018f91906126de565b61088f565b6040516101a19190612b8d565b60405180910390f35b3480156101b657600080fd5b506101bf6108a6565b6040516101cc9190612d4a565b60405180910390f35b3480156101e157600080fd5b506101fc60048036038101906101f7919061262a565b6108b0565b005b34801561020a57600080fd5b506102136109de565b6040516102209190612d4a565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b919061268f565b6109e8565b60405161025d9190612b8d565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190612653565b610a92565b005b34801561029b57600080fd5b506102b660048036038101906102b1919061271a565b610ba8565b005b3480156102c457600080fd5b506102cd610f28565b6040516102da9190612d8e565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906126de565b610f3f565b6040516103179190612b8d565b60405180910390f35b34801561032c57600080fd5b506103476004803603810190610342919061262a565b610fdd565b6040516103549190612d4a565b60405180910390f35b34801561036957600080fd5b506103726110a4565b604051610380929190612d65565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab919061271a565b61129c565b005b3480156103be57600080fd5b506103c76113ac565b6040516103d49190612ba8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906126de565b61143e565b6040516104119190612b8d565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c91906126de565b6114dc565b60405161044e9190612b8d565b60405180910390f35b34801561046357600080fd5b5061047e6004803603810190610479919061262a565b6114f3565b60405161048b9190612b8d565b60405180910390f35b61049c610541565b005b3480156104aa57600080fd5b506104c560048036038101906104c09190612653565b611507565b6040516104d29190612d4a565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd919061271a565b61158e565b60405161050f9190612d4a565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a919061262a565b6115bf565b005b60003411610584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057b90612c0a565b60405180910390fd5b60008061058f6110a4565b9150915034600560008282546105a59190612dc5565b9250508190555060006064346105bb9190612e1b565b905060006008826105cc9190612e1b565b90506000808314156105de57346105eb565b82346105ea9190612ea6565b5b90506105f6336114f3565b1561065d5782346106079190612ea6565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106559190612dc5565b925050819055505b826007600082825461066f9190612dc5565b925050819055508385836106839190612e4c565b61068d9190612e1b565b600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106fc9190612dc5565b92505081905550838583836107119190612dc5565b61071b9190612e4c565b6107259190612e1b565b600660008282546107369190612dc5565b9250508190555083858261074a9190612e4c565b6107549190612e1b565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107a19190612dc5565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040516107ee9190612d4a565b60405180910390a25050505050565b60606008805461080c90612f62565b80601f016020809104026020016040519081016040528092919081815260200182805461083890612f62565b80156108855780601f1061085a57610100808354040283529160200191610885565b820191906000526020600020905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b600061089c3384846117ca565b6001905092915050565b6000600754905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093790612c8a565b60405180910390fd5b61094b600382611995565b61098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190612c4a565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109da6003826119c5565b5050565b6000600554905090565b60006109f58484846119f5565b610a87843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a829190612ea6565b6117ca565b600190509392505050565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990612cea565b60405180910390fd5b81600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b80610bb233610fdd565b10158015610bc75750610bc36109de565b8111155b610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd90612caa565b60405180910390fd5b600080610c116110a4565b915091506000606484610c249190612e1b565b90506000600882610c359190612e1b565b905060008286610c459190612ea6565b9050610c50336114f3565b15610d1b5785600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ca49190612ea6565b92505081905550838587610cb89190612e4c565b610cc29190612e1b565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d0f9190612ea6565b92505081905550610d87565b838587610d289190612e4c565b610d329190612e1b565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d7f9190612ea6565b925050819055505b8181610d939190612dc5565b60056000828254610da49190612ea6565b9250508190555083858383610db99190612dc5565b610dc39190612e4c565b610dcd9190612e1b565b60066000828254610dde9190612ea6565b92505081905550838583610df29190612e4c565b610dfc9190612e1b565b600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6b9190612dc5565b925050819055508160076000828254610e849190612dc5565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ed1573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610f189190612d4a565b60405180910390a2505050505050565b6000600a60009054906101000a900460ff16905090565b6000610fd3338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fce9190612dc5565b6117ca565b6001905092915050565b6000610fea600383611995565b1561103657600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061109f565b6000806110416110a4565b9150915081816000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110909190612e4c565b61109a9190612e1b565b925050505b919050565b600080600060065414806110ba57506000600554145b156110cf57633b9aca00600191509150611298565b600060065490506000600554905060005b6110ea6003612276565b811015611266578260008061110060038561228b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061118f5750816001600061115260038561228b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156111a65760065460055494509450505050611298565b6000806111b460038461228b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111fa9190612ea6565b92506001600061120b60038461228b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826112519190612ea6565b9150808061125e90612f94565b9150506110e0565b506005546006546112779190612e1b565b82101561128f57600654600554935093505050611298565b81819350935050505b9091565b6112a5336114f3565b156112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90612c6a565b60405180910390fd5b6000806112f06110a4565b915091508082846113019190612e4c565b61130b9190612e1b565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113589190612ea6565b9250508190555080828461136c9190612e4c565b6113769190612e1b565b600660008282546113879190612ea6565b9250508190555082600760008282546113a09190612dc5565b92505081905550505050565b6060600980546113bb90612f62565b80601f01602080910402602001604051908101604052809291908181526020018280546113e790612f62565b80156114345780601f1061140957610100808354040283529160200191611434565b820191906000526020600020905b81548152906001019060200180831161141757829003601f168201915b5050505050905090565b60006114d2338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114cd9190612ea6565b6117ca565b6001905092915050565b60006114e93384846119f5565b6001905092915050565b6000611500600383611995565b9050919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600061159b6110a4565b915091508181856115ac9190612e4c565b6115b69190612e1b565b92505050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690612c8a565b60405180910390fd5b61165a600382611995565b1561169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190612c4a565b60405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561178b576000806116ec6110a4565b9150915081816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461173b9190612e4c565b6117459190612e1b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b61179660038261179a565b5050565b60006117c2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6122a5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183190612d0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a190612c2a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119889190612d4a565b60405180910390a3505050565b60006119bd836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612315565b905092915050565b60006119ed836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612338565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90612cca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90612bea565b60405180910390fd5b60008111611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f90612d2a565b60405180910390fd5b600080611b236110a4565b915091506000606484611b369190612e1b565b90506000611b4487876124c2565b905060016003811115611b80577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816003811115611bb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611d0657828486611bcc9190612e4c565b611bd69190612e1b565b6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c239190612ea6565b925050819055508185611c369190612ea6565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c849190612dc5565b9250508190555082848387611c999190612ea6565b611ca39190612e4c565b611cad9190612e1b565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cfa9190612dc5565b925050819055506121b5565b60006003811115611d40577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816003811115611d79577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611ebb5784600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dce9190612ea6565b92505081905550828486611de29190612e4c565b611dec9190612e1b565b6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e399190612ea6565b9250508190555082848387611e4e9190612ea6565b611e589190612e4c565b611e629190612e1b565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eaf9190612dc5565b925050819055506121b4565b60026003811115611ef5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816003811115611f2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14156120d15784600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f839190612ea6565b92505081905550828486611f979190612e4c565b611fa19190612e1b565b6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fee9190612ea6565b9250508190555081856120019190612ea6565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461204f9190612dc5565b92505081905550828483876120649190612ea6565b61206e9190612e4c565b6120789190612e1b565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c59190612dc5565b925050819055506121b3565b8284866120de9190612e4c565b6120e89190612e1b565b6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121359190612ea6565b925050819055508284838761214a9190612ea6565b6121549190612e4c565b61215e9190612e1b565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121ab9190612dc5565b925050819055505b5b5b8284836121c29190612e4c565b6121cc9190612e1b565b600660008282546121dd9190612ea6565b9250508190555081600760008282546121f69190612dc5565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84886122589190612ea6565b6040516122659190612d4a565b60405180910390a350505050505050565b600061228482600001612555565b9050919050565b600061229a8360000183612566565b60001c905092915050565b60006122b18383612315565b61230a57826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061230f565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080836001016000848152602001908152602001600020549050600081146124b657600060018261236a9190612ea6565b90506000600186600001805490506123829190612ea6565b905060008660000182815481106123c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508087600001848154811061240c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055506001836124279190612dc5565b876001016000838152602001908152602001600020819055508660000180548061247a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506124bc565b60009150505b92915050565b6000806124d0600385611995565b905060006124df600385611995565b90508180156124ec575080155b156124fa576000925061254d565b811580156125055750805b15612513576001925061254c565b8115801561251f575080155b1561252d576003925061254b565b8180156125375750805b15612545576002925061254a565b600392505b5b5b5b505092915050565b600081600001805490509050919050565b6000818360000180549050116125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a890612bca565b60405180910390fd5b8260000182815481106125ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b60008135905061260f8161307b565b92915050565b60008135905061262481613092565b92915050565b60006020828403121561263c57600080fd5b600061264a84828501612600565b91505092915050565b6000806040838503121561266657600080fd5b600061267485828601612600565b925050602061268585828601612600565b9150509250929050565b6000806000606084860312156126a457600080fd5b60006126b286828701612600565b93505060206126c386828701612600565b92505060406126d486828701612615565b9150509250925092565b600080604083850312156126f157600080fd5b60006126ff85828601612600565b925050602061271085828601612615565b9150509250929050565b60006020828403121561272c57600080fd5b600061273a84828501612615565b91505092915050565b61274c81612eec565b82525050565b600061275d82612da9565b6127678185612db4565b9350612777818560208601612f2f565b6127808161306a565b840191505092915050565b6000612798602283612db4565b91507f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60008301527f64730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006127fe602383612db4565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612864601583612db4565b91507f63616e2774206465706f736974206e6f7468696e6700000000000000000000006000830152602082019050919050565b60006128a4602283612db4565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061290a601083612db4565b91507f61646472657373206578636c75646564000000000000000000000000000000006000830152602082019050919050565b600061294a600b83612db4565b91507f6e6f7420616c6c6f7765640000000000000000000000000000000000000000006000830152602082019050919050565b600061298a600783612db4565b91507f6f70206f6e6c79000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006129ca600b83612db4565b91507f696e76616c696420616d740000000000000000000000000000000000000000006000830152602082019050919050565b6000612a0a602583612db4565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a70601083612db4565b91507f6f6e6c79206f702063616e2063616c6c000000000000000000000000000000006000830152602082019050919050565b6000612ab0602483612db4565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b16602683612db4565b91507f5472616e7366657220616d74206d75737420626520677265617465722074686160008301527f6e207a65726f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b612b7881612f18565b82525050565b612b8781612f22565b82525050565b6000602082019050612ba26000830184612743565b92915050565b60006020820190508181036000830152612bc28184612752565b905092915050565b60006020820190508181036000830152612be38161278b565b9050919050565b60006020820190508181036000830152612c03816127f1565b9050919050565b60006020820190508181036000830152612c2381612857565b9050919050565b60006020820190508181036000830152612c4381612897565b9050919050565b60006020820190508181036000830152612c63816128fd565b9050919050565b60006020820190508181036000830152612c838161293d565b9050919050565b60006020820190508181036000830152612ca38161297d565b9050919050565b60006020820190508181036000830152612cc3816129bd565b9050919050565b60006020820190508181036000830152612ce3816129fd565b9050919050565b60006020820190508181036000830152612d0381612a63565b9050919050565b60006020820190508181036000830152612d2381612aa3565b9050919050565b60006020820190508181036000830152612d4381612b09565b9050919050565b6000602082019050612d5f6000830184612b6f565b92915050565b6000604082019050612d7a6000830185612b6f565b612d876020830184612b6f565b9392505050565b6000602082019050612da36000830184612b7e565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612dd082612f18565b9150612ddb83612f18565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e1057612e0f612fdd565b5b828201905092915050565b6000612e2682612f18565b9150612e3183612f18565b925082612e4157612e4061300c565b5b828204905092915050565b6000612e5782612f18565b9150612e6283612f18565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e9b57612e9a612fdd565b5b828202905092915050565b6000612eb182612f18565b9150612ebc83612f18565b925082821015612ecf57612ece612fdd565b5b828203905092915050565b6000612ee582612ef8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612f4d578082015181840152602081019050612f32565b83811115612f5c576000848401525b50505050565b60006002820490506001821680612f7a57607f821691505b60208210811415612f8e57612f8d61303b565b5b50919050565b6000612f9f82612f18565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612fd257612fd1612fdd565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61308481612eda565b811461308f57600080fd5b50565b61309b81612f18565b81146130a657600080fd5b5056fea26469706673582212201272cec857e4069cb378d2b16a7c763fd9bcba56375929a3fac83c15bf71558764736f6c63430008000033
Deployed Bytecode Sourcemap
18135:9156:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18941:9;:7;:9::i;:::-;18135:9156;;;;;19203:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20186:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21210:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23443:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19480:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20353:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27125:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21969:749;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19389:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20623:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19586:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26392:721;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;22730:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19294:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20842:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19862:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21071:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21310:651;;;:::i;:::-;;20035:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23726:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23021:414;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21310:651;21375:1;21363:9;:13;21355:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21414:9;21425;21438:15;:13;:15::i;:::-;21413:40;;;;21478:9;21464:10;;:23;;;;;;;:::i;:::-;;;;;;;;21498:11;21524:3;21512:9;:15;;;;:::i;:::-;21498:29;;21539:10;21558:1;21552:3;:7;;;;:::i;:::-;21539:20;;21570:11;21591:1;21584:3;:8;;:42;;21617:9;21584:42;;;21609:3;21596:9;:17;;;;:::i;:::-;21584:42;21570:56;;21640:22;21651:10;21640;:22::i;:::-;21637:97;;;21718:3;21706:9;:15;;;;:::i;:::-;21678:11;:23;21690:10;21678:23;;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;;;;;;;21637:97;21760:3;21745:11;;:18;;;;;;;:::i;:::-;;;;;;;;21805:1;21800;21795:2;:6;;;;:::i;:::-;21794:12;;;;:::i;:::-;21774:11;:15;21786:2;;;;;;;;;;;21774:15;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;21852:1;21847;21841:2;21835:3;:8;;;;:::i;:::-;21834:14;;;;:::i;:::-;21833:20;;;;:::i;:::-;21818:10;;:36;;;;;;;:::i;:::-;;;;;;;;21905:1;21900;21894:3;:7;;;;:::i;:::-;21893:13;;;;:::i;:::-;21865:11;:23;21877:10;21865:23;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;21931:10;21923:30;;;21943:9;21923:30;;;;;;:::i;:::-;;;;;;;;21310:651;;;;;:::o;19203:83::-;19240:13;19273:5;19266:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19203:83;:::o;20186:159::-;20261:4;20278:37;20287:10;20299:7;20308:6;20278:8;:37::i;:::-;20333:4;20326:11;;20186:159;;;;:::o;21210:88::-;21252:7;21279:11;;21272:18;;21210:88;:::o;23443:271::-;23525:3;;;;;;;;;;;23511:17;;:10;:17;;;23503:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;23559:41;23582:8;23592:7;23559:22;:41::i;:::-;23551:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23655:1;23632:11;:20;23644:7;23632:20;;;;;;;;;;;;;;;:24;;;;23667:39;23688:8;23698:7;23667:20;:39::i;:::-;;23443:271;:::o;19480:98::-;19533:7;19560:10;;19553:17;;19480:98;:::o;20353:262::-;20451:4;20468:36;20478:6;20486:9;20497:6;20468:9;:36::i;:::-;20515:70;20524:6;20532:10;20578:6;20544:11;:19;20556:6;20544:19;;;;;;;;;;;;;;;:31;20564:10;20544:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;20515:8;:70::i;:::-;20603:4;20596:11;;20353:262;;;;;:::o;27125:163::-;27213:2;;;;;;;;;;;27199:16;;:10;:16;;;27191:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;27252:5;27247:2;;:10;;;;;;;;;;;;;;;;;;27274:6;27268:3;;:12;;;;;;;;;;;;;;;;;;27125:163;;:::o;21969:749::-;22048:3;22023:21;22033:10;22023:9;:21::i;:::-;:28;;:52;;;;;22062:13;:11;:13::i;:::-;22055:3;:20;;22023:52;22015:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22103:9;22114;22127:15;:13;:15::i;:::-;22102:40;;;;22153:11;22173:3;22167;:9;;;;:::i;:::-;22153:23;;22187:10;22206:1;22200:3;:7;;;;:::i;:::-;22187:20;;22218:11;22238:3;22232;:9;;;;:::i;:::-;22218:23;;22255:22;22266:10;22255;:22::i;:::-;22252:216;;;22321:3;22294:11;:23;22306:10;22294:23;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;22379:1;22374;22368:3;:7;;;;:::i;:::-;22367:13;;;;:::i;:::-;22339:11;:23;22351:10;22339:23;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;22252:216;;;22454:1;22449;22443:3;:7;;;;:::i;:::-;22442:13;;;;:::i;:::-;22414:11;:23;22426:10;22414:23;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;22252:216;22499:2;22493:3;:8;;;;:::i;:::-;22478:10;;:24;;;;;;;:::i;:::-;;;;;;;;22548:1;22542;22536:2;22530:3;:8;;;;:::i;:::-;22529:14;;;;:::i;:::-;22528:21;;;;:::i;:::-;22513:10;;:37;;;;;;;:::i;:::-;;;;;;;;22592:1;22587;22582:2;:6;;;;:::i;:::-;22581:12;;;;:::i;:::-;22561:11;:15;22573:2;;;;;;;;;;;22561:15;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;22620:2;22605:11;;:17;;;;;;;:::i;:::-;;;;;;;;22641:10;22633:28;;:33;22662:3;22633:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22694:10;22683:27;;;22706:3;22683:27;;;;;;:::i;:::-;;;;;;;;21969:749;;;;;;:::o;19389:83::-;19430:5;19455:9;;;;;;;;;;;19448:16;;19389:83;:::o;20623:211::-;20711:4;20728:76;20737:10;20749:7;20793:10;20758:11;:23;20770:10;20758:23;;;;;;;;;;;;;;;:32;20782:7;20758:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;20728:8;:76::i;:::-;20822:4;20815:11;;20623:211;;;;:::o;19586:268::-;19652:7;19676:41;19699:8;19709:7;19676:22;:41::i;:::-;19672:74;;;19726:11;:20;19738:7;19726:20;;;;;;;;;;;;;;;;19719:27;;;;19672:74;19758:9;19769;19782:15;:13;:15::i;:::-;19757:40;;;;19845:1;19839;19816:11;:20;19828:7;19816:20;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;19815:31;;;;:::i;:::-;19808:38;;;;19586:268;;;;:::o;26392:721::-;26437:7;26446;26483:1;26469:10;;:15;:34;;;;26502:1;26488:10;;:15;26469:34;26466:61;;;26513:10;26525:1;26505:22;;;;;;26466:61;26538:15;26556:10;;26538:28;;26577:15;26595:10;;26577:28;;26621:9;26616:373;26640:30;26661:8;26640:20;:30::i;:::-;26636:1;:34;26616:373;;;26741:7;26696:11;:42;26708:29;26725:8;26735:1;26708:16;:29::i;:::-;26696:42;;;;;;;;;;;;;;;;:52;:108;;;;26797:7;26752:11;:42;26764:29;26781:8;26791:1;26764:16;:29::i;:::-;26752:42;;;;;;;;;;;;;;;;:52;26696:108;26692:145;;;26814:10;;26826;;26806:31;;;;;;;;;26692:145;26864:11;:42;26876:29;26893:8;26903:1;26876:16;:29::i;:::-;26864:42;;;;;;;;;;;;;;;;26852:55;;;;;:::i;:::-;;;26934:11;:42;26946:29;26963:8;26973:1;26946:16;:29::i;:::-;26934:42;;;;;;;;;;;;;;;;26922:55;;;;;:::i;:::-;;;26672:3;;;;;:::i;:::-;;;;26616:373;;;;27026:10;;27013;;:23;;;;:::i;:::-;27003:7;:33;26999:70;;;27046:10;;27058;;27038:31;;;;;;;;26999:70;27088:7;27097;27080:25;;;;;;26392:721;;;:::o;22730:283::-;22794:22;22805:10;22794;:22::i;:::-;22793:23;22785:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22844:9;22855;22868:15;:13;:15::i;:::-;22843:40;;;;22934:1;22929;22923:3;:7;;;;:::i;:::-;22922:13;;;;:::i;:::-;22894:11;:23;22906:10;22894:23;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;22974:1;22969;22963:3;:7;;;;:::i;:::-;22962:13;;;;:::i;:::-;22947:10;;:29;;;;;;;:::i;:::-;;;;;;;;23002:3;22987:11;;:18;;;;;;;:::i;:::-;;;;;;;;22730:283;;;:::o;19294:87::-;19333:13;19366:7;19359:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19294:87;:::o;20842:221::-;20935:4;20952:81;20961:10;20973:7;21017:15;20982:11;:23;20994:10;20982:23;;;;;;;;;;;;;;;:32;21006:7;20982:32;;;;;;;;;;;;;;;;:50;;;;:::i;:::-;20952:8;:81::i;:::-;21051:4;21044:11;;20842:221;;;;:::o;19862:165::-;19940:4;19957:40;19967:10;19979:9;19990:6;19957:9;:40::i;:::-;20015:4;20008:11;;19862:165;;;;:::o;21071:131::-;21129:4;21153:41;21176:8;21186:7;21153:22;:41::i;:::-;21146:48;;21071:131;;;:::o;20035:143::-;20116:7;20143:11;:18;20155:5;20143:18;;;;;;;;;;;;;;;:27;20162:7;20143:27;;;;;;;;;;;;;;;;20136:34;;20035:143;;;;:::o;23726:171::-;23791:7;23812:9;23823;23836:15;:13;:15::i;:::-;23811:40;;;;23888:1;23883;23870:10;:14;;;;:::i;:::-;23869:20;;;;:::i;:::-;23862:27;;;;23726:171;;;:::o;23021:414::-;23105:3;;;;;;;;;;;23091:17;;:10;:17;;;23083:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;23140:41;23163:8;23173:7;23140:22;:41::i;:::-;23139:42;23131:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23239:1;23216:11;:20;23228:7;23216:20;;;;;;;;;;;;;;;;:24;23213:168;;;23258:9;23269;23282:15;:13;:15::i;:::-;23257:40;;;;23367:1;23360;23336:11;:20;23348:7;23336:20;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;23335:34;;;;:::i;:::-;23312:11;:20;23324:7;23312:20;;;;;;;;;;;;;;;:57;;;;23213:168;;;23391:36;23409:8;23419:7;23391:17;:36::i;:::-;;23021:414;:::o;6068:152::-;6138:4;6162:50;6167:3;:10;;6203:5;6187:23;;6179:32;;6162:4;:50::i;:::-;6155:57;;6068:152;;;;:::o;23907:337::-;24017:1;24000:19;;:5;:19;;;;23992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24098:1;24079:21;;:7;:21;;;;24071:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24182:6;24152:11;:18;24164:5;24152:18;;;;;;;;;;;;;;;:27;24171:7;24152:27;;;;;;;;;;;;;;;:36;;;;24220:7;24204:32;;24213:5;24204:32;;;24229:6;24204:32;;;;;;:::i;:::-;;;;;;;;23907:337;;;:::o;6640:167::-;6720:4;6744:55;6754:3;:10;;6790:5;6774:23;;6766:32;;6744:9;:55::i;:::-;6737:62;;6640:167;;;;:::o;6396:158::-;6469:4;6493:53;6501:3;:10;;6537:5;6521:23;;6513:32;;6493:7;:53::i;:::-;6486:60;;6396:158;;;;:::o;24985:1399::-;25097:1;25079:20;;:6;:20;;;;25071:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25181:1;25160:23;;:9;:23;;;;25152:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25248:1;25242:3;:7;25234:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;25304:9;25315;25328:15;:13;:15::i;:::-;25303:40;;;;25354:11;25374:3;25368;:9;;;;:::i;:::-;25354:23;;25388:9;25400:27;25409:6;25417:9;25400:8;:27::i;:::-;25388:39;;25448:17;25442:23;;;;;;;;;;;;;;;;:2;:23;;;;;;;;;;;;;;;;;25438:815;;;25518:1;25513;25507:3;:7;;;;:::i;:::-;25506:13;;;;:::i;:::-;25482:11;:19;25494:6;25482:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;25568:3;25562;:9;;;;:::i;:::-;25535:11;:22;25547:9;25535:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;25634:1;25629;25622:3;25616;:9;;;;:::i;:::-;25615:15;;;;:::i;:::-;25614:21;;;;:::i;:::-;25587:11;:22;25599:9;25587:22;;;;;;;;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;25438:815;;;25664:19;25658:25;;;;;;;;;;;;;;;;:2;:25;;;;;;;;;;;;;;;;;25654:599;;;25724:3;25700:11;:19;25712:6;25700:19;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;25779:1;25774;25768:3;:7;;;;:::i;:::-;25767:13;;;;:::i;:::-;25743:11;:19;25755:6;25743:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;25843:1;25838;25831:3;25825;:9;;;;:::i;:::-;25824:15;;;;:::i;:::-;25823:21;;;;:::i;:::-;25796:11;:22;25808:9;25796:22;;;;;;;;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;25654:599;;;25873:19;25867:25;;;;;;;;;;;;;;;;:2;:25;;;;;;;;;;;;;;;;;25863:390;;;25933:3;25909:11;:19;25921:6;25909:19;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;25988:1;25983;25977:3;:7;;;;:::i;:::-;25976:13;;;;:::i;:::-;25952:11;:19;25964:6;25952:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;26038:3;26032;:9;;;;:::i;:::-;26005:11;:22;26017:9;26005:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;26104:1;26099;26092:3;26086;:9;;;;:::i;:::-;26085:15;;;;:::i;:::-;26084:21;;;;:::i;:::-;26057:11;:22;26069:9;26057:22;;;;;;;;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;25863:390;;;26175:1;26170;26164:3;:7;;;;:::i;:::-;26163:13;;;;:::i;:::-;26139:11;:19;26151:6;26139:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;26239:1;26234;26227:3;26221;:9;;;;:::i;:::-;26220:15;;;;:::i;:::-;26219:21;;;;:::i;:::-;26192:11;:22;26204:9;26192:22;;;;;;;;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;25863:390;25654:599;25438:815;26291:1;26286;26280:3;:7;;;;:::i;:::-;26279:13;;;;:::i;:::-;26263:10;;:30;;;;;;;:::i;:::-;;;;;;;;26319:3;26304:11;;:18;;;;;;;:::i;:::-;;;;;;;;26355:9;26338:38;;26347:6;26338:38;;;26372:3;26366;:9;;;;:::i;:::-;26338:38;;;;;;:::i;:::-;;;;;;;;24985:1399;;;;;;;:::o;6893:117::-;6956:7;6983:19;6991:3;:10;;6983:7;:19::i;:::-;6976:26;;6893:117;;;:::o;7354:158::-;7428:7;7479:22;7483:3;:10;;7495:5;7479:3;:22::i;:::-;7471:31;;7448:56;;7354:158;;;;:::o;1132:414::-;1195:4;1217:21;1227:3;1232:5;1217:9;:21::i;:::-;1212:327;;1255:3;:11;;1272:5;1255:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:3;:11;;:18;;;;1416:3;:12;;:19;1429:5;1416:19;;;;;;;;;;;:40;;;;1478:4;1471:11;;;;1212:327;1522:5;1515:12;;1132:414;;;;;:::o;3352:129::-;3425:4;3472:1;3449:3;:12;;:19;3462:5;3449:19;;;;;;;;;;;;:24;;3442:31;;3352:129;;;;:::o;1722:1544::-;1788:4;1906:18;1927:3;:12;;:19;1940:5;1927:19;;;;;;;;;;;;1906:40;;1977:1;1963:10;:15;1959:1300;;2325:21;2362:1;2349:10;:14;;;;:::i;:::-;2325:38;;2378:17;2419:1;2398:3;:11;;:18;;;;:22;;;;:::i;:::-;2378:42;;2665:17;2685:3;:11;;2697:9;2685:22;;;;;;;;;;;;;;;;;;;;;;;;2665:42;;2831:9;2802:3;:11;;2814:13;2802:26;;;;;;;;;;;;;;;;;;;;;;;:38;;;;2950:1;2934:13;:17;;;;:::i;:::-;2908:3;:12;;:23;2921:9;2908:23;;;;;;;;;;;:43;;;;3060:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3155:3;:12;;:19;3168:5;3155:19;;;;;;;;;;;3148:26;;;3198:4;3191:11;;;;;;;;1959:1300;3242:5;3235:12;;;1722:1544;;;;;:::o;24252:727::-;24328:8;24349:21;24373:40;24396:8;24406:6;24373:22;:40::i;:::-;24349:64;;24424:24;24451:43;24474:8;24484:9;24451:22;:43::i;:::-;24424:70;;24509:16;:40;;;;;24530:19;24529:20;24509:40;24505:448;;;24570:19;24566:23;;24505:448;;;24612:16;24611:17;:40;;;;;24632:19;24611:40;24607:346;;;24672:17;24668:21;;24607:346;;;24712:16;24711:17;:41;;;;;24733:19;24732:20;24711:41;24707:246;;;24773:15;24769:19;;24707:246;;;24810:16;:39;;;;;24830:19;24810:39;24806:147;;;24870:19;24866:23;;24806:147;;;24926:15;24922:19;;24806:147;24707:246;24607:346;24505:448;24963:8;;24252:727;;;;:::o;3567:109::-;3623:7;3650:3;:11;;:18;;;;3643:25;;3567:109;;;:::o;4020:204::-;4087:7;4136:5;4115:3;:11;;:18;;;;:26;4107:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4198:3;:11;;4210:5;4198:18;;;;;;;;;;;;;;;;;;;;;;;;4191:25;;4020:204;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:109::-;2298:21;2313:5;2298:21;:::i;:::-;2293:3;2286:34;2276:50;;:::o;2332:364::-;;2448:39;2481:5;2448:39;:::i;:::-;2503:71;2567:6;2562:3;2503:71;:::i;:::-;2496:78;;2583:52;2628:6;2623:3;2616:4;2609:5;2605:16;2583:52;:::i;:::-;2660:29;2682:6;2660:29;:::i;:::-;2655:3;2651:39;2644:46;;2424:272;;;;;:::o;2702:366::-;;2865:67;2929:2;2924:3;2865:67;:::i;:::-;2858:74;;2962:34;2958:1;2953:3;2949:11;2942:55;3028:4;3023:2;3018:3;3014:12;3007:26;3059:2;3054:3;3050:12;3043:19;;2848:220;;;:::o;3074:367::-;;3237:67;3301:2;3296:3;3237:67;:::i;:::-;3230:74;;3334:34;3330:1;3325:3;3321:11;3314:55;3400:5;3395:2;3390:3;3386:12;3379:27;3432:2;3427:3;3423:12;3416:19;;3220:221;;;:::o;3447:319::-;;3610:67;3674:2;3669:3;3610:67;:::i;:::-;3603:74;;3707:23;3703:1;3698:3;3694:11;3687:44;3757:2;3752:3;3748:12;3741:19;;3593:173;;;:::o;3772:366::-;;3935:67;3999:2;3994:3;3935:67;:::i;:::-;3928:74;;4032:34;4028:1;4023:3;4019:11;4012:55;4098:4;4093:2;4088:3;4084:12;4077:26;4129:2;4124:3;4120:12;4113:19;;3918:220;;;:::o;4144:314::-;;4307:67;4371:2;4366:3;4307:67;:::i;:::-;4300:74;;4404:18;4400:1;4395:3;4391:11;4384:39;4449:2;4444:3;4440:12;4433:19;;4290:168;;;:::o;4464:309::-;;4627:67;4691:2;4686:3;4627:67;:::i;:::-;4620:74;;4724:13;4720:1;4715:3;4711:11;4704:34;4764:2;4759:3;4755:12;4748:19;;4610:163;;;:::o;4779:304::-;;4942:66;5006:1;5001:3;4942:66;:::i;:::-;4935:73;;5038:9;5034:1;5029:3;5025:11;5018:30;5074:2;5069:3;5065:12;5058:19;;4925:158;;;:::o;5089:309::-;;5252:67;5316:2;5311:3;5252:67;:::i;:::-;5245:74;;5349:13;5345:1;5340:3;5336:11;5329:34;5389:2;5384:3;5380:12;5373:19;;5235:163;;;:::o;5404:369::-;;5567:67;5631:2;5626:3;5567:67;:::i;:::-;5560:74;;5664:34;5660:1;5655:3;5651:11;5644:55;5730:7;5725:2;5720:3;5716:12;5709:29;5764:2;5759:3;5755:12;5748:19;;5550:223;;;:::o;5779:314::-;;5942:67;6006:2;6001:3;5942:67;:::i;:::-;5935:74;;6039:18;6035:1;6030:3;6026:11;6019:39;6084:2;6079:3;6075:12;6068:19;;5925:168;;;:::o;6099:368::-;;6262:67;6326:2;6321:3;6262:67;:::i;:::-;6255:74;;6359:34;6355:1;6350:3;6346:11;6339:55;6425:6;6420:2;6415:3;6411:12;6404:28;6458:2;6453:3;6449:12;6442:19;;6245:222;;;:::o;6473:370::-;;6636:67;6700:2;6695:3;6636:67;:::i;:::-;6629:74;;6733:34;6729:1;6724:3;6720:11;6713:55;6799:8;6794:2;6789:3;6785:12;6778:30;6834:2;6829:3;6825:12;6818:19;;6619:224;;;:::o;6849:118::-;6936:24;6954:5;6936:24;:::i;:::-;6931:3;6924:37;6914:53;;:::o;6973:112::-;7056:22;7072:5;7056:22;:::i;:::-;7051:3;7044:35;7034:51;;:::o;7091:210::-;;7216:2;7205:9;7201:18;7193:26;;7229:65;7291:1;7280:9;7276:17;7267:6;7229:65;:::i;:::-;7183:118;;;;:::o;7307:313::-;;7458:2;7447:9;7443:18;7435:26;;7507:9;7501:4;7497:20;7493:1;7482:9;7478:17;7471:47;7535:78;7608:4;7599:6;7535:78;:::i;:::-;7527:86;;7425:195;;;;:::o;7626:419::-;;7830:2;7819:9;7815:18;7807:26;;7879:9;7873:4;7869:20;7865:1;7854:9;7850:17;7843:47;7907:131;8033:4;7907:131;:::i;:::-;7899:139;;7797:248;;;:::o;8051:419::-;;8255:2;8244:9;8240:18;8232:26;;8304:9;8298:4;8294:20;8290:1;8279:9;8275:17;8268:47;8332:131;8458:4;8332:131;:::i;:::-;8324:139;;8222:248;;;:::o;8476:419::-;;8680:2;8669:9;8665:18;8657:26;;8729:9;8723:4;8719:20;8715:1;8704:9;8700:17;8693:47;8757:131;8883:4;8757:131;:::i;:::-;8749:139;;8647:248;;;:::o;8901:419::-;;9105:2;9094:9;9090:18;9082:26;;9154:9;9148:4;9144:20;9140:1;9129:9;9125:17;9118:47;9182:131;9308:4;9182:131;:::i;:::-;9174:139;;9072:248;;;:::o;9326:419::-;;9530:2;9519:9;9515:18;9507:26;;9579:9;9573:4;9569:20;9565:1;9554:9;9550:17;9543:47;9607:131;9733:4;9607:131;:::i;:::-;9599:139;;9497:248;;;:::o;9751:419::-;;9955:2;9944:9;9940:18;9932:26;;10004:9;9998:4;9994:20;9990:1;9979:9;9975:17;9968:47;10032:131;10158:4;10032:131;:::i;:::-;10024:139;;9922:248;;;:::o;10176:419::-;;10380:2;10369:9;10365:18;10357:26;;10429:9;10423:4;10419:20;10415:1;10404:9;10400:17;10393:47;10457:131;10583:4;10457:131;:::i;:::-;10449:139;;10347:248;;;:::o;10601:419::-;;10805:2;10794:9;10790:18;10782:26;;10854:9;10848:4;10844:20;10840:1;10829:9;10825:17;10818:47;10882:131;11008:4;10882:131;:::i;:::-;10874:139;;10772:248;;;:::o;11026:419::-;;11230:2;11219:9;11215:18;11207:26;;11279:9;11273:4;11269:20;11265:1;11254:9;11250:17;11243:47;11307:131;11433:4;11307:131;:::i;:::-;11299:139;;11197:248;;;:::o;11451:419::-;;11655:2;11644:9;11640:18;11632:26;;11704:9;11698:4;11694:20;11690:1;11679:9;11675:17;11668:47;11732:131;11858:4;11732:131;:::i;:::-;11724:139;;11622:248;;;:::o;11876:419::-;;12080:2;12069:9;12065:18;12057:26;;12129:9;12123:4;12119:20;12115:1;12104:9;12100:17;12093:47;12157:131;12283:4;12157:131;:::i;:::-;12149:139;;12047:248;;;:::o;12301:419::-;;12505:2;12494:9;12490:18;12482:26;;12554:9;12548:4;12544:20;12540:1;12529:9;12525:17;12518:47;12582:131;12708:4;12582:131;:::i;:::-;12574:139;;12472:248;;;:::o;12726:222::-;;12857:2;12846:9;12842:18;12834:26;;12870:71;12938:1;12927:9;12923:17;12914:6;12870:71;:::i;:::-;12824:124;;;;:::o;12954:332::-;;13113:2;13102:9;13098:18;13090:26;;13126:71;13194:1;13183:9;13179:17;13170:6;13126:71;:::i;:::-;13207:72;13275:2;13264:9;13260:18;13251:6;13207:72;:::i;:::-;13080:206;;;;;:::o;13292:214::-;;13419:2;13408:9;13404:18;13396:26;;13432:67;13496:1;13485:9;13481:17;13472:6;13432:67;:::i;:::-;13386:120;;;;:::o;13512:99::-;;13598:5;13592:12;13582:22;;13571:40;;;:::o;13617:169::-;;13735:6;13730:3;13723:19;13775:4;13770:3;13766:14;13751:29;;13713:73;;;;:::o;13792:305::-;;13851:20;13869:1;13851:20;:::i;:::-;13846:25;;13885:20;13903:1;13885:20;:::i;:::-;13880:25;;14039:1;13971:66;13967:74;13964:1;13961:81;13958:2;;;14045:18;;:::i;:::-;13958:2;14089:1;14086;14082:9;14075:16;;13836:261;;;;:::o;14103:185::-;;14160:20;14178:1;14160:20;:::i;:::-;14155:25;;14194:20;14212:1;14194:20;:::i;:::-;14189:25;;14233:1;14223:2;;14238:18;;:::i;:::-;14223:2;14280:1;14277;14273:9;14268:14;;14145:143;;;;:::o;14294:348::-;;14357:20;14375:1;14357:20;:::i;:::-;14352:25;;14391:20;14409:1;14391:20;:::i;:::-;14386:25;;14579:1;14511:66;14507:74;14504:1;14501:81;14496:1;14489:9;14482:17;14478:105;14475:2;;;14586:18;;:::i;:::-;14475:2;14634:1;14631;14627:9;14616:20;;14342:300;;;;:::o;14648:191::-;;14708:20;14726:1;14708:20;:::i;:::-;14703:25;;14742:20;14760:1;14742:20;:::i;:::-;14737:25;;14781:1;14778;14775:8;14772:2;;;14786:18;;:::i;:::-;14772:2;14831:1;14828;14824:9;14816:17;;14693:146;;;;:::o;14845:96::-;;14911:24;14929:5;14911:24;:::i;:::-;14900:35;;14890:51;;;:::o;14947:90::-;;15024:5;15017:13;15010:21;14999:32;;14989:48;;;:::o;15043:126::-;;15120:42;15113:5;15109:54;15098:65;;15088:81;;;:::o;15175:77::-;;15241:5;15230:16;;15220:32;;;:::o;15258:86::-;;15333:4;15326:5;15322:16;15311:27;;15301:43;;;:::o;15350:307::-;15418:1;15428:113;15442:6;15439:1;15436:13;15428:113;;;15527:1;15522:3;15518:11;15512:18;15508:1;15503:3;15499:11;15492:39;15464:2;15461:1;15457:10;15452:15;;15428:113;;;15559:6;15556:1;15553:13;15550:2;;;15639:1;15630:6;15625:3;15621:16;15614:27;15550:2;15399:258;;;;:::o;15663:320::-;;15744:1;15738:4;15734:12;15724:22;;15791:1;15785:4;15781:12;15812:18;15802:2;;15868:4;15860:6;15856:17;15846:27;;15802:2;15930;15922:6;15919:14;15899:18;15896:38;15893:2;;;15949:18;;:::i;:::-;15893:2;15714:269;;;;:::o;15989:233::-;;16051:24;16069:5;16051:24;:::i;:::-;16042:33;;16097:66;16090:5;16087:77;16084:2;;;16167:18;;:::i;:::-;16084:2;16214:1;16207:5;16203:13;16196:20;;16032:190;;;:::o;16228:180::-;16276:77;16273:1;16266:88;16373:4;16370:1;16363:15;16397:4;16394:1;16387:15;16414:180;16462:77;16459:1;16452:88;16559:4;16556:1;16549:15;16583:4;16580:1;16573:15;16600:180;16648:77;16645:1;16638:88;16745:4;16742:1;16735:15;16769:4;16766:1;16759:15;16786:102;;16878:2;16874:7;16869:2;16862:5;16858:14;16854:28;16844:38;;16834:54;;;:::o;16894:122::-;16967:24;16985:5;16967:24;:::i;:::-;16960:5;16957:35;16947:2;;17006:1;17003;16996:12;16947:2;16937:79;:::o;17022:122::-;17095:24;17113:5;17095:24;:::i;:::-;17088:5;17085:35;17075:2;;17134:1;17131;17124:12;17075:2;17065:79;:::o
Swarm Source
ipfs://1272cec857e4069cb378d2b16a7c763fd9bcba56375929a3fac83c15bf715587
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 24 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,582.58 | 0.2081 | $745.4 |
[ Download: CSV Export ]
[ 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.