Source Code
Multichain Info
N/A
Latest 25 from a total of 160 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Claim Tokens | 32819099 | 17 hrs ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32800702 | 27 hrs ago | IN | 0 APE | 0.00383893 | ||||
| Claim Tokens | 32800643 | 27 hrs ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32788219 | 34 hrs ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32788204 | 34 hrs ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32685223 | 3 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32655450 | 4 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32651421 | 4 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32650711 | 4 days ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32649660 | 4 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32649653 | 4 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32649645 | 4 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32649628 | 4 days ago | IN | 0 APE | 0.00383893 | ||||
| Claim Tokens | 32649626 | 4 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32649616 | 4 days ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32649604 | 4 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32649590 | 4 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32648065 | 4 days ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32646909 | 4 days ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32621103 | 5 days ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32605362 | 5 days ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32604353 | 5 days ago | IN | 0 APE | 0.00671736 | ||||
| Claim Tokens | 32443356 | 9 days ago | IN | 0 APE | 0.00383893 | ||||
| Claim Tokens | 32443334 | 9 days ago | IN | 0 APE | 0.00845614 | ||||
| Claim Tokens | 32330893 | 12 days ago | IN | 0 APE | 0.01019491 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
HBOXTokenClaim
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2025-11-20 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; // Sources flattened with hardhat v2.12.6 https://hardhat.org // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance( address owner, address spender ) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } library Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall( address target, bytes memory data ) internal returns (bytes memory) { return functionCallWithValue( target, data, 0, "Address: low-level call failed" ); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } 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" ); } 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" ); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } function functionStaticCall( address target, bytes memory data ) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } function functionDelegateCall( address target, bytes memory data ) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert( bytes memory returndata, string memory errorMessage ) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } interface IERC20Permit { function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function nonces(address owner) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); } library SafeERC20 { using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require( oldAllowance >= value, "SafeERC20: decreased allowance below zero" ); uint256 newAllowance = oldAllowance - value; _callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require( nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed" ); } function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall( data, "SafeERC20: low-level call failed" ); if (returndata.length > 0) { // Return data is optional require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } // File @openzeppelin/contracts/utils/math/[email protected] // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract HBOXTokenClaim is Ownable { using SafeERC20 for IERC20; using SafeMath for uint256; IERC20 public token = IERC20(0x5e88483A602f865D3B39e2548A8C3AC266A4F096); uint256 public totalAllocated; uint256 public totalClaimed; uint256 public totalDeposited; address[] public vestingUsers; bool public vestingStarted; uint256 public vestingStartTime; struct VestingInfo { uint256 totalAllocation; uint256 claimed; uint256 tgePercent; uint256 vestingMonths; } mapping(address => VestingInfo) public vestingList; function uploadBatch( address[] calldata users, uint256[] calldata allocations, uint256[] calldata tgePercents, uint256[] calldata vestingMonths ) external onlyOwner { require( users.length == allocations.length && users.length == tgePercents.length && users.length == vestingMonths.length, "Length mismatch" ); require( !vestingStarted, "Vesting already started, cannot upload batch now" ); for (uint256 i = 0; i < users.length; i++) { address user = users[i]; uint256 allocation = allocations[i]; uint256 tge = tgePercents[i]; uint256 months = vestingMonths[i]; require(user != address(0), "Invalid address"); require(allocation > 0, "Allocation must be greater than zero"); require(tge >= 1 && tge <= 100, "TGE % must be between 1 and 100"); if (tge <= 89) { require( months == 3 || months == 6 || months == 9 || months == 12 || months == 18 || months == 24, "Invalid months for TGE <= 89%" ); } else if (tge <= 99) { require( months == 3 || months == 6 || months == 9, "Only 3 ,6 or 9 months allowed for TGE 90 to 99%" ); } else if (tge == 100) { require(months == 0, "No vesting months for TGE 100%"); } if (vestingList[user].totalAllocation == 0) { vestingUsers.push(user); } vestingList[user] = VestingInfo({ totalAllocation: allocation, claimed: 0, tgePercent: tge, vestingMonths: months }); totalAllocated += allocation; } } function startVesting() external onlyOwner { require(!vestingStarted, "Vesting already started"); vestingStarted = true; vestingStartTime = block.timestamp; } function claimTokens() external { require(vestingStarted, "Vesting not started yet"); VestingInfo storage info = vestingList[msg.sender]; require(info.totalAllocation > 0, "You are not whitelisted"); uint256 claimable = getClaimableAmount(msg.sender); require(claimable > 0, "No tokens available to claim"); info.claimed = info.claimed.add(claimable); totalClaimed = totalClaimed.add(claimable); token.safeTransfer(msg.sender, claimable); } function getClaimableAmount(address user) public view returns (uint256) { VestingInfo memory info = vestingList[user]; if (!vestingStarted || info.totalAllocation == 0) return 0; if (info.tgePercent == 100) { return info.totalAllocation.sub(info.claimed); } uint256 start = vestingStartTime; uint256 timePassed = block.timestamp.sub(start); uint256 monthsPassed = timePassed.div(30 days); uint256 unlockedPercent = info.tgePercent; if (monthsPassed > 0 && info.vestingMonths > 0) { uint256 linearPercent = monthsPassed .mul(uint256(100).sub(info.tgePercent)) .div(info.vestingMonths); if (info.tgePercent.add(linearPercent) > 100) linearPercent = 100 - info.tgePercent; unlockedPercent = info.tgePercent.add(linearPercent); } uint256 totalUnlocked = info.totalAllocation.mul(unlockedPercent).div( 100 ); uint256 claimableNow = totalUnlocked.sub(info.claimed); return claimableNow; } function viewUserInfo( address user ) public view returns ( uint256 allocation, uint256 claimed, uint256 remaining, uint256 tgePercent, uint256 vestingMonths, uint256 claimableNow ) { VestingInfo memory info = vestingList[user]; uint256 claimable = getClaimableAmount(user); return ( info.totalAllocation, info.claimed, info.totalAllocation.sub(info.claimed), info.tgePercent, info.vestingMonths, claimable ); } function depositTokens(uint256 amount) external onlyOwner { require(address(token) != address(0), "Token not set"); require(amount > 0, "Amount must be greater than zero"); totalDeposited += amount; token.safeTransferFrom(msg.sender, address(this), amount); } function withdrawUnallocated(uint256 amount) external onlyOwner { require(address(token) != address(0), "Token not set"); uint256 balance = token.balanceOf(address(this)); uint256 reserved = 0; if (totalAllocated > totalClaimed) { reserved = totalAllocated.sub(totalClaimed); } require(balance > reserved, "No unallocated tokens"); uint256 available = balance.sub(reserved); require(amount <= available, "Amount exceeds unallocated balance"); token.safeTransfer(msg.sender, amount); } function getVestingStatus() public view returns (bool) { return vestingStarted; } function getVestingStartTime() public view returns (uint256) { return vestingStartTime; } function getTotalAllocated() public view returns (uint256) { return totalAllocated; } function getTotalClaimed() public view returns (uint256) { return totalClaimed; } function contractTokenBalance() public view returns (uint256) { return token.balanceOf(address(this)); } function getTotalVestingUsers() public view returns (uint256) { return vestingUsers.length; } function emergencyWithdraw() external onlyOwner { uint256 balance = token.balanceOf(address(this)); require(balance > 0, "No tokens in contract"); token.safeTransfer(msg.sender, balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAllocated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalVestingUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVestingStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVestingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"allocations","type":"uint256[]"},{"internalType":"uint256[]","name":"tgePercents","type":"uint256[]"},{"internalType":"uint256[]","name":"vestingMonths","type":"uint256[]"}],"name":"uploadBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vestingList","outputs":[{"internalType":"uint256","name":"totalAllocation","type":"uint256"},{"internalType":"uint256","name":"claimed","type":"uint256"},{"internalType":"uint256","name":"tgePercent","type":"uint256"},{"internalType":"uint256","name":"vestingMonths","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"vestingUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"viewUserInfo","outputs":[{"internalType":"uint256","name":"allocation","type":"uint256"},{"internalType":"uint256","name":"claimed","type":"uint256"},{"internalType":"uint256","name":"remaining","type":"uint256"},{"internalType":"uint256","name":"tgePercent","type":"uint256"},{"internalType":"uint256","name":"vestingMonths","type":"uint256"},{"internalType":"uint256","name":"claimableNow","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawUnallocated","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052735e88483a602f865d3b39e2548a8c3ac266a4f09660015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000064575f80fd5b5062000085620000796200008b60201b60201c565b6200009260201b60201c565b62000153565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612c1b80620001615f395ff3fe608060405234801561000f575f80fd5b5060043610610171575f3560e01c8063a8660a78116100dc578063e12f3a6111610095578063f2fde38b1161006f578063f2fde38b146103e5578063f998c8e814610401578063fc0c546a1461041f578063ff50abdc1461043d57610171565b8063e12f3a6114610364578063ee4a745c14610394578063efb64d51146103b257610171565b8063a8660a78146102dc578063a9015400146102fa578063d54ad2a114610316578063db2e21bc14610334578063dd49756e1461033e578063deb36e321461035a57610171565b80638307dc981161012e5780638307dc98146101ff5780638da5cb5b1461021d57806395909f6b1461023b57806398e4d8a61461026b5780639e9aed6214610289578063a37d9850146102a757610171565b806345f7f2491461017557806348c54b9d1461019357806369c77e5a1461019d578063715018a6146101b9578063736a83a1146101c357806382299a5c146101e1575b5f80fd5b61017d61045b565b60405161018a9190611a93565b60405180910390f35b61019b610461565b005b6101b760048036038101906101b29190611b6a565b61060c565b005b6101c1610af9565b005b6101cb610b0c565b6040516101d89190611a93565b60405180910390f35b6101e9610b15565b6040516101f69190611a93565b60405180910390f35b610207610b1e565b6040516102149190611a93565b60405180910390f35b610225610b27565b6040516102329190611c8d565b60405180910390f35b61025560048036038101906102509190611cd0565b610b4e565b6040516102629190611c8d565b60405180910390f35b610273610b89565b6040516102809190611a93565b60405180910390f35b610291610b95565b60405161029e9190611a93565b60405180910390f35b6102c160048036038101906102bc9190611d25565b610c34565b6040516102d396959493929190611d50565b60405180910390f35b6102e4610cfd565b6040516102f19190611a93565b60405180910390f35b610314600480360381019061030f9190611cd0565b610d03565b005b61031e610f4a565b60405161032b9190611a93565b60405180910390f35b61033c610f50565b005b61035860048036038101906103539190611cd0565b611085565b005b6103626111c7565b005b61037e60048036038101906103799190611d25565b611241565b60405161038b9190611a93565b60405180910390f35b61039c611448565b6040516103a99190611dc9565b60405180910390f35b6103cc60048036038101906103c79190611d25565b61145d565b6040516103dc9493929190611de2565b60405180910390f35b6103ff60048036038101906103fa9190611d25565b611489565b005b61040961150b565b6040516104169190611dc9565b60405180910390f35b61042761151d565b6040516104349190611e80565b60405180910390f35b610445611542565b6040516104529190611a93565b60405180910390f35b60025481565b60065f9054906101000a900460ff166104af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a690611ef3565b60405180910390fd5b5f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f015411610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052b90611f5b565b60405180910390fd5b5f61053e33611241565b90505f8111610582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057990611fc3565b60405180910390fd5b61059981836001015461154890919063ffffffff16565b82600101819055506105b68160035461154890919063ffffffff16565b600381905550610608338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661155d9092919063ffffffff16565b5050565b6106146115e3565b858590508888905014801561062e57508383905088889050145b801561063f57508181905088889050145b61067e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106759061202b565b60405180910390fd5b60065f9054906101000a900460ff16156106cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c4906120b9565b60405180910390fd5b5f5b88889050811015610aee575f8989838181106106ee576106ed6120d7565b5b90506020020160208101906107039190611d25565b90505f888884818110610719576107186120d7565b5b9050602002013590505f878785818110610736576107356120d7565b5b9050602002013590505f868686818110610753576107526120d7565b5b9050602002013590505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c19061214e565b60405180910390fd5b5f831161080c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610803906121dc565b60405180910390fd5b6001821015801561081e575060648211155b61085d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085490612244565b60405180910390fd5b605982116108e45760038114806108745750600681145b8061087f5750600981145b8061088a5750600c81145b806108955750601281145b806108a05750601881145b6108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d6906122ac565b60405180910390fd5b610997565b6063821161094a5760038114806108fb5750600681145b806109065750600981145b610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061233a565b60405180910390fd5b610996565b60648203610995575f8114610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b906123a2565b60405180910390fd5b5b5b5b5f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015403610a3e57600584908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60405180608001604052808481526020015f81526020018381526020018281525060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f01556020820151816001015560408201518160020155606082015181600301559050508260025f828254610ad691906123ed565b925050819055505050505080806001019150506106cf565b505050505050505050565b610b016115e3565b610b0a5f611661565b565b5f600354905090565b5f600254905090565b5f600754905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60058181548110610b5d575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600580549050905090565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bf09190611c8d565b602060405180830381865afa158015610c0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2f9190612434565b905090565b5f805f805f805f60085f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f8201548152602001600182015481526020016002820154815260200160038201548152505090505f610cb689611241565b9050815f01518260200151610cdb8460200151855f015161172290919063ffffffff16565b8460400151856060015185975097509750975097509750505091939550919395565b60075481565b610d0b6115e3565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d91906124a9565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610df59190611c8d565b602060405180830381865afa158015610e10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e349190612434565b90505f6003546002541115610e5d57610e5a60035460025461172290919063ffffffff16565b90505b808211610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690612511565b60405180910390fd5b5f610eb3828461172290919063ffffffff16565b905080841115610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef9061259f565b60405180910390fd5b610f44338560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661155d9092919063ffffffff16565b50505050565b60035481565b610f586115e3565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fb39190611c8d565b602060405180830381865afa158015610fce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff29190612434565b90505f8111611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90612607565b60405180910390fd5b611082338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661155d9092919063ffffffff16565b50565b61108d6115e3565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361111c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611113906124a9565b60405180910390fd5b5f811161115e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111559061266f565b60405180910390fd5b8060045f82825461116f91906123ed565b925050819055506111c433308360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611737909392919063ffffffff16565b50565b6111cf6115e3565b60065f9054906101000a900460ff161561121e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611215906126d7565b60405180910390fd5b600160065f6101000a81548160ff02191690831515021790555042600781905550565b5f8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050905060065f9054906101000a900460ff1615806112d157505f815f0151145b156112df575f915050611443565b606481604001510361130d576113058160200151825f015161172290919063ffffffff16565b915050611443565b5f60075490505f611327824261172290919063ffffffff16565b90505f61134062278d00836117c090919063ffffffff16565b90505f846040015190505f8211801561135c57505f8560600151115b156113f2575f6113a286606001516113946113858960400151606461172290919063ffffffff16565b866117d590919063ffffffff16565b6117c090919063ffffffff16565b905060646113bd82886040015161154890919063ffffffff16565b11156113d757856040015160646113d491906126f5565b90505b6113ee81876040015161154890919063ffffffff16565b9150505b5f61141c606461140e84895f01516117d590919063ffffffff16565b6117c090919063ffffffff16565b90505f61143687602001518361172290919063ffffffff16565b9050809750505050505050505b919050565b5f60065f9054906101000a900460ff16905090565b6008602052805f5260405f205f91509050805f0154908060010154908060020154908060030154905084565b6114916115e3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690612798565b60405180910390fd5b61150881611661565b50565b60065f9054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b5f818361155591906123ed565b905092915050565b6115de8363a9059cbb60e01b848460405160240161157c9291906127b6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117ea565b505050565b6115eb6118af565b73ffffffffffffffffffffffffffffffffffffffff16611609610b27565b73ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690612827565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f818361172f91906126f5565b905092915050565b6117ba846323b872dd60e01b85858560405160240161175893929190612845565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117ea565b50505050565b5f81836117cd91906128a7565b905092915050565b5f81836117e291906128d7565b905092915050565b5f61184b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118b69092919063ffffffff16565b90505f815111156118aa578080602001905181019061186a9190612942565b6118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a0906129dd565b60405180910390fd5b5b505050565b5f33905090565b60606118c484845f856118cd565b90509392505050565b606082471015611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990612a6b565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff16858760405161193a9190612af5565b5f6040518083038185875af1925050503d805f8114611974576040519150601f19603f3d011682016040523d82523d5f602084013e611979565b606091505b509150915061198a87838387611996565b92505050949350505050565b606083156119f7575f8351036119ef576119af85611a0a565b6119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e590612b55565b60405180910390fd5b5b829050611a02565b611a018383611a2c565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f82511115611a3e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a729190612bc5565b60405180910390fd5b5f819050919050565b611a8d81611a7b565b82525050565b5f602082019050611aa65f830184611a84565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ad557611ad4611ab4565b5b8235905067ffffffffffffffff811115611af257611af1611ab8565b5b602083019150836020820283011115611b0e57611b0d611abc565b5b9250929050565b5f8083601f840112611b2a57611b29611ab4565b5b8235905067ffffffffffffffff811115611b4757611b46611ab8565b5b602083019150836020820283011115611b6357611b62611abc565b5b9250929050565b5f805f805f805f806080898b031215611b8657611b85611aac565b5b5f89013567ffffffffffffffff811115611ba357611ba2611ab0565b5b611baf8b828c01611ac0565b9850985050602089013567ffffffffffffffff811115611bd257611bd1611ab0565b5b611bde8b828c01611b15565b9650965050604089013567ffffffffffffffff811115611c0157611c00611ab0565b5b611c0d8b828c01611b15565b9450945050606089013567ffffffffffffffff811115611c3057611c2f611ab0565b5b611c3c8b828c01611b15565b92509250509295985092959890939650565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c7782611c4e565b9050919050565b611c8781611c6d565b82525050565b5f602082019050611ca05f830184611c7e565b92915050565b611caf81611a7b565b8114611cb9575f80fd5b50565b5f81359050611cca81611ca6565b92915050565b5f60208284031215611ce557611ce4611aac565b5b5f611cf284828501611cbc565b91505092915050565b611d0481611c6d565b8114611d0e575f80fd5b50565b5f81359050611d1f81611cfb565b92915050565b5f60208284031215611d3a57611d39611aac565b5b5f611d4784828501611d11565b91505092915050565b5f60c082019050611d635f830189611a84565b611d706020830188611a84565b611d7d6040830187611a84565b611d8a6060830186611a84565b611d976080830185611a84565b611da460a0830184611a84565b979650505050505050565b5f8115159050919050565b611dc381611daf565b82525050565b5f602082019050611ddc5f830184611dba565b92915050565b5f608082019050611df55f830187611a84565b611e026020830186611a84565b611e0f6040830185611a84565b611e1c6060830184611a84565b95945050505050565b5f819050919050565b5f611e48611e43611e3e84611c4e565b611e25565b611c4e565b9050919050565b5f611e5982611e2e565b9050919050565b5f611e6a82611e4f565b9050919050565b611e7a81611e60565b82525050565b5f602082019050611e935f830184611e71565b92915050565b5f82825260208201905092915050565b7f56657374696e67206e6f742073746172746564207965740000000000000000005f82015250565b5f611edd601783611e99565b9150611ee882611ea9565b602082019050919050565b5f6020820190508181035f830152611f0a81611ed1565b9050919050565b7f596f7520617265206e6f742077686974656c69737465640000000000000000005f82015250565b5f611f45601783611e99565b9150611f5082611f11565b602082019050919050565b5f6020820190508181035f830152611f7281611f39565b9050919050565b7f4e6f20746f6b656e7320617661696c61626c6520746f20636c61696d000000005f82015250565b5f611fad601c83611e99565b9150611fb882611f79565b602082019050919050565b5f6020820190508181035f830152611fda81611fa1565b9050919050565b7f4c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f612015600f83611e99565b915061202082611fe1565b602082019050919050565b5f6020820190508181035f83015261204281612009565b9050919050565b7f56657374696e6720616c726561647920737461727465642c2063616e6e6f74205f8201527f75706c6f6164206261746368206e6f7700000000000000000000000000000000602082015250565b5f6120a3603083611e99565b91506120ae82612049565b604082019050919050565b5f6020820190508181035f8301526120d081612097565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f612138600f83611e99565b915061214382612104565b602082019050919050565b5f6020820190508181035f8301526121658161212c565b9050919050565b7f416c6c6f636174696f6e206d7573742062652067726561746572207468616e205f8201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b5f6121c6602483611e99565b91506121d18261216c565b604082019050919050565b5f6020820190508181035f8301526121f3816121ba565b9050919050565b7f5447452025206d757374206265206265747765656e203120616e6420313030005f82015250565b5f61222e601f83611e99565b9150612239826121fa565b602082019050919050565b5f6020820190508181035f83015261225b81612222565b9050919050565b7f496e76616c6964206d6f6e74687320666f7220544745203c3d203839250000005f82015250565b5f612296601d83611e99565b91506122a182612262565b602082019050919050565b5f6020820190508181035f8301526122c38161228a565b9050919050565b7f4f6e6c792033202c36206f722039206d6f6e74687320616c6c6f77656420666f5f8201527f722054474520393020746f203939250000000000000000000000000000000000602082015250565b5f612324602f83611e99565b915061232f826122ca565b604082019050919050565b5f6020820190508181035f83015261235181612318565b9050919050565b7f4e6f2076657374696e67206d6f6e74687320666f7220544745203130302500005f82015250565b5f61238c601e83611e99565b915061239782612358565b602082019050919050565b5f6020820190508181035f8301526123b981612380565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6123f782611a7b565b915061240283611a7b565b925082820190508082111561241a576124196123c0565b5b92915050565b5f8151905061242e81611ca6565b92915050565b5f6020828403121561244957612448611aac565b5b5f61245684828501612420565b91505092915050565b7f546f6b656e206e6f7420736574000000000000000000000000000000000000005f82015250565b5f612493600d83611e99565b915061249e8261245f565b602082019050919050565b5f6020820190508181035f8301526124c081612487565b9050919050565b7f4e6f20756e616c6c6f636174656420746f6b656e7300000000000000000000005f82015250565b5f6124fb601583611e99565b9150612506826124c7565b602082019050919050565b5f6020820190508181035f830152612528816124ef565b9050919050565b7f416d6f756e74206578636565647320756e616c6c6f63617465642062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612589602283611e99565b91506125948261252f565b604082019050919050565b5f6020820190508181035f8301526125b68161257d565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f6125f1601583611e99565b91506125fc826125bd565b602082019050919050565b5f6020820190508181035f83015261261e816125e5565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f612659602083611e99565b915061266482612625565b602082019050919050565b5f6020820190508181035f8301526126868161264d565b9050919050565b7f56657374696e6720616c726561647920737461727465640000000000000000005f82015250565b5f6126c1601783611e99565b91506126cc8261268d565b602082019050919050565b5f6020820190508181035f8301526126ee816126b5565b9050919050565b5f6126ff82611a7b565b915061270a83611a7b565b9250828203905081811115612722576127216123c0565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612782602683611e99565b915061278d82612728565b604082019050919050565b5f6020820190508181035f8301526127af81612776565b9050919050565b5f6040820190506127c95f830185611c7e565b6127d66020830184611a84565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612811602083611e99565b915061281c826127dd565b602082019050919050565b5f6020820190508181035f83015261283e81612805565b9050919050565b5f6060820190506128585f830186611c7e565b6128656020830185611c7e565b6128726040830184611a84565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6128b182611a7b565b91506128bc83611a7b565b9250826128cc576128cb61287a565b5b828204905092915050565b5f6128e182611a7b565b91506128ec83611a7b565b92508282026128fa81611a7b565b91508282048414831517612911576129106123c0565b5b5092915050565b61292181611daf565b811461292b575f80fd5b50565b5f8151905061293c81612918565b92915050565b5f6020828403121561295757612956611aac565b5b5f6129648482850161292e565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f6129c7602a83611e99565b91506129d28261296d565b604082019050919050565b5f6020820190508181035f8301526129f4816129bb565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f612a55602683611e99565b9150612a60826129fb565b604082019050919050565b5f6020820190508181035f830152612a8281612a49565b9050919050565b5f81519050919050565b5f81905092915050565b5f5b83811015612aba578082015181840152602081019050612a9f565b5f8484015250505050565b5f612acf82612a89565b612ad98185612a93565b9350612ae9818560208601612a9d565b80840191505092915050565b5f612b008284612ac5565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f612b3f601d83611e99565b9150612b4a82612b0b565b602082019050919050565b5f6020820190508181035f830152612b6c81612b33565b9050919050565b5f81519050919050565b5f601f19601f8301169050919050565b5f612b9782612b73565b612ba18185611e99565b9350612bb1818560208601612a9d565b612bba81612b7d565b840191505092915050565b5f6020820190508181035f830152612bdd8184612b8d565b90509291505056fea264697066735822122070a8b4ed740001f348f7c95547ce92a30312048aa607f59247a0ef69e9c7eaf764736f6c63430008180033
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610171575f3560e01c8063a8660a78116100dc578063e12f3a6111610095578063f2fde38b1161006f578063f2fde38b146103e5578063f998c8e814610401578063fc0c546a1461041f578063ff50abdc1461043d57610171565b8063e12f3a6114610364578063ee4a745c14610394578063efb64d51146103b257610171565b8063a8660a78146102dc578063a9015400146102fa578063d54ad2a114610316578063db2e21bc14610334578063dd49756e1461033e578063deb36e321461035a57610171565b80638307dc981161012e5780638307dc98146101ff5780638da5cb5b1461021d57806395909f6b1461023b57806398e4d8a61461026b5780639e9aed6214610289578063a37d9850146102a757610171565b806345f7f2491461017557806348c54b9d1461019357806369c77e5a1461019d578063715018a6146101b9578063736a83a1146101c357806382299a5c146101e1575b5f80fd5b61017d61045b565b60405161018a9190611a93565b60405180910390f35b61019b610461565b005b6101b760048036038101906101b29190611b6a565b61060c565b005b6101c1610af9565b005b6101cb610b0c565b6040516101d89190611a93565b60405180910390f35b6101e9610b15565b6040516101f69190611a93565b60405180910390f35b610207610b1e565b6040516102149190611a93565b60405180910390f35b610225610b27565b6040516102329190611c8d565b60405180910390f35b61025560048036038101906102509190611cd0565b610b4e565b6040516102629190611c8d565b60405180910390f35b610273610b89565b6040516102809190611a93565b60405180910390f35b610291610b95565b60405161029e9190611a93565b60405180910390f35b6102c160048036038101906102bc9190611d25565b610c34565b6040516102d396959493929190611d50565b60405180910390f35b6102e4610cfd565b6040516102f19190611a93565b60405180910390f35b610314600480360381019061030f9190611cd0565b610d03565b005b61031e610f4a565b60405161032b9190611a93565b60405180910390f35b61033c610f50565b005b61035860048036038101906103539190611cd0565b611085565b005b6103626111c7565b005b61037e60048036038101906103799190611d25565b611241565b60405161038b9190611a93565b60405180910390f35b61039c611448565b6040516103a99190611dc9565b60405180910390f35b6103cc60048036038101906103c79190611d25565b61145d565b6040516103dc9493929190611de2565b60405180910390f35b6103ff60048036038101906103fa9190611d25565b611489565b005b61040961150b565b6040516104169190611dc9565b60405180910390f35b61042761151d565b6040516104349190611e80565b60405180910390f35b610445611542565b6040516104529190611a93565b60405180910390f35b60025481565b60065f9054906101000a900460ff166104af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a690611ef3565b60405180910390fd5b5f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f015411610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052b90611f5b565b60405180910390fd5b5f61053e33611241565b90505f8111610582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057990611fc3565b60405180910390fd5b61059981836001015461154890919063ffffffff16565b82600101819055506105b68160035461154890919063ffffffff16565b600381905550610608338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661155d9092919063ffffffff16565b5050565b6106146115e3565b858590508888905014801561062e57508383905088889050145b801561063f57508181905088889050145b61067e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106759061202b565b60405180910390fd5b60065f9054906101000a900460ff16156106cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c4906120b9565b60405180910390fd5b5f5b88889050811015610aee575f8989838181106106ee576106ed6120d7565b5b90506020020160208101906107039190611d25565b90505f888884818110610719576107186120d7565b5b9050602002013590505f878785818110610736576107356120d7565b5b9050602002013590505f868686818110610753576107526120d7565b5b9050602002013590505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c19061214e565b60405180910390fd5b5f831161080c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610803906121dc565b60405180910390fd5b6001821015801561081e575060648211155b61085d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085490612244565b60405180910390fd5b605982116108e45760038114806108745750600681145b8061087f5750600981145b8061088a5750600c81145b806108955750601281145b806108a05750601881145b6108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d6906122ac565b60405180910390fd5b610997565b6063821161094a5760038114806108fb5750600681145b806109065750600981145b610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061233a565b60405180910390fd5b610996565b60648203610995575f8114610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b906123a2565b60405180910390fd5b5b5b5b5f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015403610a3e57600584908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60405180608001604052808481526020015f81526020018381526020018281525060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f01556020820151816001015560408201518160020155606082015181600301559050508260025f828254610ad691906123ed565b925050819055505050505080806001019150506106cf565b505050505050505050565b610b016115e3565b610b0a5f611661565b565b5f600354905090565b5f600254905090565b5f600754905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60058181548110610b5d575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600580549050905090565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bf09190611c8d565b602060405180830381865afa158015610c0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2f9190612434565b905090565b5f805f805f805f60085f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f8201548152602001600182015481526020016002820154815260200160038201548152505090505f610cb689611241565b9050815f01518260200151610cdb8460200151855f015161172290919063ffffffff16565b8460400151856060015185975097509750975097509750505091939550919395565b60075481565b610d0b6115e3565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d91906124a9565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610df59190611c8d565b602060405180830381865afa158015610e10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e349190612434565b90505f6003546002541115610e5d57610e5a60035460025461172290919063ffffffff16565b90505b808211610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690612511565b60405180910390fd5b5f610eb3828461172290919063ffffffff16565b905080841115610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef9061259f565b60405180910390fd5b610f44338560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661155d9092919063ffffffff16565b50505050565b60035481565b610f586115e3565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fb39190611c8d565b602060405180830381865afa158015610fce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff29190612434565b90505f8111611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90612607565b60405180910390fd5b611082338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661155d9092919063ffffffff16565b50565b61108d6115e3565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361111c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611113906124a9565b60405180910390fd5b5f811161115e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111559061266f565b60405180910390fd5b8060045f82825461116f91906123ed565b925050819055506111c433308360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611737909392919063ffffffff16565b50565b6111cf6115e3565b60065f9054906101000a900460ff161561121e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611215906126d7565b60405180910390fd5b600160065f6101000a81548160ff02191690831515021790555042600781905550565b5f8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050905060065f9054906101000a900460ff1615806112d157505f815f0151145b156112df575f915050611443565b606481604001510361130d576113058160200151825f015161172290919063ffffffff16565b915050611443565b5f60075490505f611327824261172290919063ffffffff16565b90505f61134062278d00836117c090919063ffffffff16565b90505f846040015190505f8211801561135c57505f8560600151115b156113f2575f6113a286606001516113946113858960400151606461172290919063ffffffff16565b866117d590919063ffffffff16565b6117c090919063ffffffff16565b905060646113bd82886040015161154890919063ffffffff16565b11156113d757856040015160646113d491906126f5565b90505b6113ee81876040015161154890919063ffffffff16565b9150505b5f61141c606461140e84895f01516117d590919063ffffffff16565b6117c090919063ffffffff16565b90505f61143687602001518361172290919063ffffffff16565b9050809750505050505050505b919050565b5f60065f9054906101000a900460ff16905090565b6008602052805f5260405f205f91509050805f0154908060010154908060020154908060030154905084565b6114916115e3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690612798565b60405180910390fd5b61150881611661565b50565b60065f9054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b5f818361155591906123ed565b905092915050565b6115de8363a9059cbb60e01b848460405160240161157c9291906127b6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117ea565b505050565b6115eb6118af565b73ffffffffffffffffffffffffffffffffffffffff16611609610b27565b73ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690612827565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f818361172f91906126f5565b905092915050565b6117ba846323b872dd60e01b85858560405160240161175893929190612845565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117ea565b50505050565b5f81836117cd91906128a7565b905092915050565b5f81836117e291906128d7565b905092915050565b5f61184b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118b69092919063ffffffff16565b90505f815111156118aa578080602001905181019061186a9190612942565b6118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a0906129dd565b60405180910390fd5b5b505050565b5f33905090565b60606118c484845f856118cd565b90509392505050565b606082471015611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990612a6b565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff16858760405161193a9190612af5565b5f6040518083038185875af1925050503d805f8114611974576040519150601f19603f3d011682016040523d82523d5f602084013e611979565b606091505b509150915061198a87838387611996565b92505050949350505050565b606083156119f7575f8351036119ef576119af85611a0a565b6119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e590612b55565b60405180910390fd5b5b829050611a02565b611a018383611a2c565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f82511115611a3e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a729190612bc5565b60405180910390fd5b5f819050919050565b611a8d81611a7b565b82525050565b5f602082019050611aa65f830184611a84565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ad557611ad4611ab4565b5b8235905067ffffffffffffffff811115611af257611af1611ab8565b5b602083019150836020820283011115611b0e57611b0d611abc565b5b9250929050565b5f8083601f840112611b2a57611b29611ab4565b5b8235905067ffffffffffffffff811115611b4757611b46611ab8565b5b602083019150836020820283011115611b6357611b62611abc565b5b9250929050565b5f805f805f805f806080898b031215611b8657611b85611aac565b5b5f89013567ffffffffffffffff811115611ba357611ba2611ab0565b5b611baf8b828c01611ac0565b9850985050602089013567ffffffffffffffff811115611bd257611bd1611ab0565b5b611bde8b828c01611b15565b9650965050604089013567ffffffffffffffff811115611c0157611c00611ab0565b5b611c0d8b828c01611b15565b9450945050606089013567ffffffffffffffff811115611c3057611c2f611ab0565b5b611c3c8b828c01611b15565b92509250509295985092959890939650565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c7782611c4e565b9050919050565b611c8781611c6d565b82525050565b5f602082019050611ca05f830184611c7e565b92915050565b611caf81611a7b565b8114611cb9575f80fd5b50565b5f81359050611cca81611ca6565b92915050565b5f60208284031215611ce557611ce4611aac565b5b5f611cf284828501611cbc565b91505092915050565b611d0481611c6d565b8114611d0e575f80fd5b50565b5f81359050611d1f81611cfb565b92915050565b5f60208284031215611d3a57611d39611aac565b5b5f611d4784828501611d11565b91505092915050565b5f60c082019050611d635f830189611a84565b611d706020830188611a84565b611d7d6040830187611a84565b611d8a6060830186611a84565b611d976080830185611a84565b611da460a0830184611a84565b979650505050505050565b5f8115159050919050565b611dc381611daf565b82525050565b5f602082019050611ddc5f830184611dba565b92915050565b5f608082019050611df55f830187611a84565b611e026020830186611a84565b611e0f6040830185611a84565b611e1c6060830184611a84565b95945050505050565b5f819050919050565b5f611e48611e43611e3e84611c4e565b611e25565b611c4e565b9050919050565b5f611e5982611e2e565b9050919050565b5f611e6a82611e4f565b9050919050565b611e7a81611e60565b82525050565b5f602082019050611e935f830184611e71565b92915050565b5f82825260208201905092915050565b7f56657374696e67206e6f742073746172746564207965740000000000000000005f82015250565b5f611edd601783611e99565b9150611ee882611ea9565b602082019050919050565b5f6020820190508181035f830152611f0a81611ed1565b9050919050565b7f596f7520617265206e6f742077686974656c69737465640000000000000000005f82015250565b5f611f45601783611e99565b9150611f5082611f11565b602082019050919050565b5f6020820190508181035f830152611f7281611f39565b9050919050565b7f4e6f20746f6b656e7320617661696c61626c6520746f20636c61696d000000005f82015250565b5f611fad601c83611e99565b9150611fb882611f79565b602082019050919050565b5f6020820190508181035f830152611fda81611fa1565b9050919050565b7f4c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f612015600f83611e99565b915061202082611fe1565b602082019050919050565b5f6020820190508181035f83015261204281612009565b9050919050565b7f56657374696e6720616c726561647920737461727465642c2063616e6e6f74205f8201527f75706c6f6164206261746368206e6f7700000000000000000000000000000000602082015250565b5f6120a3603083611e99565b91506120ae82612049565b604082019050919050565b5f6020820190508181035f8301526120d081612097565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f612138600f83611e99565b915061214382612104565b602082019050919050565b5f6020820190508181035f8301526121658161212c565b9050919050565b7f416c6c6f636174696f6e206d7573742062652067726561746572207468616e205f8201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b5f6121c6602483611e99565b91506121d18261216c565b604082019050919050565b5f6020820190508181035f8301526121f3816121ba565b9050919050565b7f5447452025206d757374206265206265747765656e203120616e6420313030005f82015250565b5f61222e601f83611e99565b9150612239826121fa565b602082019050919050565b5f6020820190508181035f83015261225b81612222565b9050919050565b7f496e76616c6964206d6f6e74687320666f7220544745203c3d203839250000005f82015250565b5f612296601d83611e99565b91506122a182612262565b602082019050919050565b5f6020820190508181035f8301526122c38161228a565b9050919050565b7f4f6e6c792033202c36206f722039206d6f6e74687320616c6c6f77656420666f5f8201527f722054474520393020746f203939250000000000000000000000000000000000602082015250565b5f612324602f83611e99565b915061232f826122ca565b604082019050919050565b5f6020820190508181035f83015261235181612318565b9050919050565b7f4e6f2076657374696e67206d6f6e74687320666f7220544745203130302500005f82015250565b5f61238c601e83611e99565b915061239782612358565b602082019050919050565b5f6020820190508181035f8301526123b981612380565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6123f782611a7b565b915061240283611a7b565b925082820190508082111561241a576124196123c0565b5b92915050565b5f8151905061242e81611ca6565b92915050565b5f6020828403121561244957612448611aac565b5b5f61245684828501612420565b91505092915050565b7f546f6b656e206e6f7420736574000000000000000000000000000000000000005f82015250565b5f612493600d83611e99565b915061249e8261245f565b602082019050919050565b5f6020820190508181035f8301526124c081612487565b9050919050565b7f4e6f20756e616c6c6f636174656420746f6b656e7300000000000000000000005f82015250565b5f6124fb601583611e99565b9150612506826124c7565b602082019050919050565b5f6020820190508181035f830152612528816124ef565b9050919050565b7f416d6f756e74206578636565647320756e616c6c6f63617465642062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612589602283611e99565b91506125948261252f565b604082019050919050565b5f6020820190508181035f8301526125b68161257d565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f6125f1601583611e99565b91506125fc826125bd565b602082019050919050565b5f6020820190508181035f83015261261e816125e5565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f612659602083611e99565b915061266482612625565b602082019050919050565b5f6020820190508181035f8301526126868161264d565b9050919050565b7f56657374696e6720616c726561647920737461727465640000000000000000005f82015250565b5f6126c1601783611e99565b91506126cc8261268d565b602082019050919050565b5f6020820190508181035f8301526126ee816126b5565b9050919050565b5f6126ff82611a7b565b915061270a83611a7b565b9250828203905081811115612722576127216123c0565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612782602683611e99565b915061278d82612728565b604082019050919050565b5f6020820190508181035f8301526127af81612776565b9050919050565b5f6040820190506127c95f830185611c7e565b6127d66020830184611a84565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612811602083611e99565b915061281c826127dd565b602082019050919050565b5f6020820190508181035f83015261283e81612805565b9050919050565b5f6060820190506128585f830186611c7e565b6128656020830185611c7e565b6128726040830184611a84565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6128b182611a7b565b91506128bc83611a7b565b9250826128cc576128cb61287a565b5b828204905092915050565b5f6128e182611a7b565b91506128ec83611a7b565b92508282026128fa81611a7b565b91508282048414831517612911576129106123c0565b5b5092915050565b61292181611daf565b811461292b575f80fd5b50565b5f8151905061293c81612918565b92915050565b5f6020828403121561295757612956611aac565b5b5f6129648482850161292e565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f6129c7602a83611e99565b91506129d28261296d565b604082019050919050565b5f6020820190508181035f8301526129f4816129bb565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f612a55602683611e99565b9150612a60826129fb565b604082019050919050565b5f6020820190508181035f830152612a8281612a49565b9050919050565b5f81519050919050565b5f81905092915050565b5f5b83811015612aba578082015181840152602081019050612a9f565b5f8484015250505050565b5f612acf82612a89565b612ad98185612a93565b9350612ae9818560208601612a9d565b80840191505092915050565b5f612b008284612ac5565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f612b3f601d83611e99565b9150612b4a82612b0b565b602082019050919050565b5f6020820190508181035f830152612b6c81612b33565b9050919050565b5f81519050919050565b5f601f19601f8301169050919050565b5f612b9782612b73565b612ba18185611e99565b9350612bb1818560208601612a9d565b612bba81612b7d565b840191505092915050565b5f6020820190508181035f830152612bdd8184612b8d565b90509291505056fea264697066735822122070a8b4ed740001f348f7c95547ce92a30312048aa607f59247a0ef69e9c7eaf764736f6c63430008180033
Deployed Bytecode Sourcemap
23185:7092:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23376:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26134:523;;;:::i;:::-;;23810:2118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2880:103;;;:::i;:::-;;29711:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29604:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29493:103;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2232:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23484:29;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29938:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29814:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27814:663;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;23555:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28793:589;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23414:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30053:221;;;:::i;:::-;;28485:300;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25936:190;;;:::i;:::-;;26665:1141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29390:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23751:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;3138:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23522:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23295:72;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23448:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23376;;;;:::o;26134:523::-;26185:14;;;;;;;;;;;26177:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;26238:24;26265:11;:23;26277:10;26265:23;;;;;;;;;;;;;;;26238:50;;26330:1;26307:4;:20;;;:24;26299:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;26372:17;26392:30;26411:10;26392:18;:30::i;:::-;26372:50;;26453:1;26441:9;:13;26433:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26515:27;26532:9;26515:4;:12;;;:16;;:27;;;;:::i;:::-;26500:4;:12;;:42;;;;26568:27;26585:9;26568:12;;:16;;:27;;;;:::i;:::-;26553:12;:42;;;;26608:41;26627:10;26639:9;26608:5;;;;;;;;;;;:18;;;;:41;;;;;:::i;:::-;26166:491;;26134:523::o;23810:2118::-;2118:13;:11;:13::i;:::-;24066:11:::1;;:18;;24050:5;;:12;;:34;:89;;;;;24121:11;;:18;;24105:5;;:12;;:34;24050:89;:146;;;;;24176:13;;:20;;24160:5;;:12;;:36;24050:146;24028:211;;;;;;;;;;;;:::i;:::-;;;;;;;;;24273:14;;;;;;;;;;;24272:15;24250:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;24381:9;24376:1545;24400:5;;:12;;24396:1;:16;24376:1545;;;24434:12;24449:5;;24455:1;24449:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24434:23;;24472:18;24493:11;;24505:1;24493:14;;;;;;;:::i;:::-;;;;;;;;24472:35;;24522:11;24536;;24548:1;24536:14;;;;;;;:::i;:::-;;;;;;;;24522:28;;24565:14;24582:13;;24596:1;24582:16;;;;;;;:::i;:::-;;;;;;;;24565:33;;24639:1;24623:18;;:4;:18;;::::0;24615:46:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24697:1;24684:10;:14;24676:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;24769:1;24762:3;:8;;:22;;;;;24781:3;24774;:10;;24762:22;24754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24848:2;24841:3;:9;24837:696;;24911:1;24901:6;:11;:51;;;;24951:1;24941:6;:11;24901:51;:91;;;;24991:1;24981:6;:11;24901:91;:132;;;;25031:2;25021:6;:12;24901:132;:173;;;;25072:2;25062:6;:12;24901:173;:214;;;;25113:2;25103:6;:12;24901:214;24871:317;;;;;;;;;;;;:::i;:::-;;;;;;;;;24837:696;;;25221:2;25214:3;:9;25210:323;;25284:1;25274:6;:11;:26;;;;25299:1;25289:6;:11;25274:26;:41;;;;25314:1;25304:6;:11;25274:41;25244:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;25210:323;;;25439:3;25432;:10:::0;25428:105:::1;;25481:1;25471:6;:11;25463:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25428:105;25210:323;24837:696;25590:1;25553:11;:17;25565:4;25553:17;;;;;;;;;;;;;;;:33;;;:38:::0;25549:102:::1;;25612:12;25630:4;25612:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25549:102;25687:177;;;;;;;;25735:10;25687:177;;;;25773:1;25687:177;;;;25805:3;25687:177;;;;25842:6;25687:177;;::::0;25667:11:::1;:17;25679:4;25667:17;;;;;;;;;;;;;;;:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25899:10;25881:14;;:28;;;;;;;:::i;:::-;;;;;;;;24419:1502;;;;24414:3;;;;;;;24376:1545;;;;23810:2118:::0;;;;;;;;:::o;2880:103::-;2118:13;:11;:13::i;:::-;2945:30:::1;2972:1;2945:18;:30::i;:::-;2880:103::o:0;29711:95::-;29759:7;29786:12;;29779:19;;29711:95;:::o;29604:99::-;29654:7;29681:14;;29674:21;;29604:99;:::o;29493:103::-;29545:7;29572:16;;29565:23;;29493:103;:::o;2232:87::-;2278:7;2305:6;;;;;;;;;;;2298:13;;2232:87;:::o;23484:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29938:107::-;29991:7;30018:12;:19;;;;30011:26;;29938:107;:::o;29814:118::-;29867:7;29894:5;;;;;;;;;;;:15;;;29918:4;29894:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29887:37;;29814:118;:::o;27814:663::-;27928:18;27961:15;27991:17;28023:18;28056:21;28092:20;28140:23;28166:11;:17;28178:4;28166:17;;;;;;;;;;;;;;;28140:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28194:17;28214:24;28233:4;28214:18;:24::i;:::-;28194:44;;28271:4;:20;;;28306:4;:12;;;28333:38;28358:4;:12;;;28333:4;:20;;;:24;;:38;;;;:::i;:::-;28386:4;:15;;;28416:4;:18;;;28449:9;28249:220;;;;;;;;;;;;;;27814:663;;;;;;;:::o;23555:31::-;;;;:::o;28793:589::-;2118:13;:11;:13::i;:::-;28902:1:::1;28876:28;;28884:5;;;;;;;;;;;28876:28;;::::0;28868:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28933:15;28951:5;;;;;;;;;;;:15;;;28975:4;28951:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28933:48;;28994:16;29046:12;;29029:14;;:29;29025:105;;;29086:32;29105:12;;29086:14;;:18;;:32;;;;:::i;:::-;29075:43;;29025:105;29160:8;29150:7;:18;29142:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;29205:17;29225:21;29237:8;29225:7;:11;;:21;;;;:::i;:::-;29205:41;;29275:9;29265:6;:19;;29257:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;29336:38;29355:10;29367:6;29336:5;;;;;;;;;;;:18;;;;:38;;;;;:::i;:::-;28857:525;;;28793:589:::0;:::o;23414:27::-;;;;:::o;30053:221::-;2118:13;:11;:13::i;:::-;30112:15:::1;30130:5;;;;;;;;;;;:15;;;30154:4;30130:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30112:48;;30189:1;30179:7;:11;30171:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;30227:39;30246:10;30258:7;30227:5;;;;;;;;;;;:18;;;;:39;;;;;:::i;:::-;30101:173;30053:221::o:0;28485:300::-;2118:13;:11;:13::i;:::-;28588:1:::1;28562:28;;28570:5;;;;;;;;;;;28562:28;;::::0;28554:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28636:1;28627:6;:10;28619:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;28703:6;28685:14;;:24;;;;;;;:::i;:::-;;;;;;;;28720:57;28743:10;28763:4;28770:6;28720:5;;;;;;;;;;;:22;;;;:57;;;;;;:::i;:::-;28485:300:::0;:::o;25936:190::-;2118:13;:11;:13::i;:::-;25999:14:::1;;;;;;;;;;;25998:15;25990:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;26069:4;26052:14;;:21;;;;;;;;;;;;;;;;;;26103:15;26084:16;:34;;;;25936:190::o:0;26665:1141::-;26728:7;26748:23;26774:11;:17;26786:4;26774:17;;;;;;;;;;;;;;;26748:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26807:14;;;;;;;;;;;26806:15;:44;;;;26849:1;26825:4;:20;;;:25;26806:44;26802:58;;;26859:1;26852:8;;;;;26802:58;26896:3;26877:4;:15;;;:22;26873:100;;26923:38;26948:4;:12;;;26923:4;:20;;;:24;;:38;;;;:::i;:::-;26916:45;;;;;26873:100;26985:13;27001:16;;26985:32;;27028:18;27049:26;27069:5;27049:15;:19;;:26;;;;:::i;:::-;27028:47;;27086:20;27109:23;27124:7;27109:10;:14;;:23;;;;:::i;:::-;27086:46;;27145:23;27171:4;:15;;;27145:41;;27218:1;27203:12;:16;:42;;;;;27244:1;27223:4;:18;;;:22;27203:42;27199:392;;;27262:21;27286:111;27378:4;:18;;;27286:69;27321:33;27338:4;:15;;;27329:3;27321:16;;:33;;;;:::i;:::-;27286:12;:34;;:69;;;;:::i;:::-;:91;;:111;;;;:::i;:::-;27262:135;;27453:3;27416:34;27436:13;27416:4;:15;;;:19;;:34;;;;:::i;:::-;:40;27412:100;;;27497:4;:15;;;27491:3;:21;;;;:::i;:::-;27475:37;;27412:100;27545:34;27565:13;27545:4;:15;;;:19;;:34;;;;:::i;:::-;27527:52;;27247:344;27199:392;27603:21;27627:74;27687:3;27627:41;27652:15;27627:4;:20;;;:24;;:41;;;;:::i;:::-;:45;;:74;;;;:::i;:::-;27603:98;;27712:20;27735:31;27753:4;:12;;;27735:13;:17;;:31;;;;:::i;:::-;27712:54;;27786:12;27779:19;;;;;;;;;26665:1141;;;;:::o;29390:95::-;29439:4;29463:14;;;;;;;;;;;29456:21;;29390:95;:::o;23751:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3138:238::-;2118:13;:11;:13::i;:::-;3261:1:::1;3241:22;;:8;:22;;::::0;3219:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3340:28;3359:8;3340:18;:28::i;:::-;3138:238:::0;:::o;23522:26::-;;;;;;;;;;;;;:::o;23295:72::-;;;;;;;;;;;;;:::o;23448:29::-;;;;:::o;19020:98::-;19078:7;19109:1;19105;:5;;;;:::i;:::-;19098:12;;19020:98;;;;:::o;12413:214::-;12496:123;12530:5;12573:23;;;12598:2;12602:5;12550:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12496:19;:123::i;:::-;12413:214;;;:::o;2397:132::-;2472:12;:10;:12::i;:::-;2461:23;;:7;:5;:7::i;:::-;:23;;;2453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2397:132::o;3536:191::-;3610:16;3629:6;;;;;;;;;;;3610:25;;3655:8;3646:6;;:17;;;;;;;;;;;;;;;;;;3710:8;3679:40;;3700:8;3679:40;;;;;;;;;;;;3599:128;3536:191;:::o;19401:98::-;19459:7;19490:1;19486;:5;;;;:::i;:::-;19479:12;;19401:98;;;;:::o;12635:285::-;12779:133;12813:5;12856:27;;;12885:4;12891:2;12895:5;12833:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12779:19;:133::i;:::-;12635:285;;;;:::o;20157:98::-;20215:7;20246:1;20242;:5;;;;:::i;:::-;20235:12;;20157:98;;;;:::o;19758:::-;19816:7;19847:1;19843;:5;;;;:::i;:::-;19836:12;;19758:98;;;;:::o;15233:802::-;15657:23;15683:106;15725:4;15683:106;;;;;;;;;;;;;;;;;15691:5;15683:27;;;;:106;;;;;:::i;:::-;15657:132;;15824:1;15804:10;:17;:21;15800:228;;;15919:10;15908:30;;;;;;;;;;;;:::i;:::-;15882:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;15800:228;15303:732;15233:802;;:::o;783:98::-;836:7;863:10;856:17;;783:98;:::o;7721:229::-;7858:12;7890:52;7912:6;7920:4;7926:1;7929:12;7890:21;:52::i;:::-;7883:59;;7721:229;;;;;:::o;8322:612::-;8492:12;8564:5;8539:21;:30;;8517:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;8647:12;8661:23;8688:6;:11;;8707:5;8728:4;8688:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8646:97;;;;8774:152;8819:6;8844:7;8870:10;8899:12;8774:26;:152::i;:::-;8754:172;;;;8322:612;;;;;;:::o;10438:644::-;10623:12;10652:7;10648:427;;;10701:1;10680:10;:17;:22;10676:290;;10898:18;10909:6;10898:10;:18::i;:::-;10890:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10676:290;10987:10;10980:17;;;;10648:427;11030:33;11038:10;11050:12;11030:7;:33::i;:::-;10438:644;;;;;;;:::o;6672:326::-;6732:4;6989:1;6967:7;:19;;;:23;6960:30;;6672:326;;;:::o;11403:577::-;11609:1;11589:10;:17;:21;11585:388;;;11821:10;11815:17;11878:15;11865:10;11861:2;11857:19;11850:44;11585:388;11948:12;11941:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:77:1;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:117;878:1;875;868:12;892:117;1001:1;998;991:12;1015:117;1124:1;1121;1114:12;1155:568;1228:8;1238:6;1288:3;1281:4;1273:6;1269:17;1265:27;1255:122;;1296:79;;:::i;:::-;1255:122;1409:6;1396:20;1386:30;;1439:18;1431:6;1428:30;1425:117;;;1461:79;;:::i;:::-;1425:117;1575:4;1567:6;1563:17;1551:29;;1629:3;1621:4;1613:6;1609:17;1599:8;1595:32;1592:41;1589:128;;;1636:79;;:::i;:::-;1589:128;1155:568;;;;;:::o;1746:::-;1819:8;1829:6;1879:3;1872:4;1864:6;1860:17;1856:27;1846:122;;1887:79;;:::i;:::-;1846:122;2000:6;1987:20;1977:30;;2030:18;2022:6;2019:30;2016:117;;;2052:79;;:::i;:::-;2016:117;2166:4;2158:6;2154:17;2142:29;;2220:3;2212:4;2204:6;2200:17;2190:8;2186:32;2183:41;2180:128;;;2227:79;;:::i;:::-;2180:128;1746:568;;;;;:::o;2320:1685::-;2514:6;2522;2530;2538;2546;2554;2562;2570;2619:3;2607:9;2598:7;2594:23;2590:33;2587:120;;;2626:79;;:::i;:::-;2587:120;2774:1;2763:9;2759:17;2746:31;2804:18;2796:6;2793:30;2790:117;;;2826:79;;:::i;:::-;2790:117;2939:80;3011:7;3002:6;2991:9;2987:22;2939:80;:::i;:::-;2921:98;;;;2717:312;3096:2;3085:9;3081:18;3068:32;3127:18;3119:6;3116:30;3113:117;;;3149:79;;:::i;:::-;3113:117;3262:80;3334:7;3325:6;3314:9;3310:22;3262:80;:::i;:::-;3244:98;;;;3039:313;3419:2;3408:9;3404:18;3391:32;3450:18;3442:6;3439:30;3436:117;;;3472:79;;:::i;:::-;3436:117;3585:80;3657:7;3648:6;3637:9;3633:22;3585:80;:::i;:::-;3567:98;;;;3362:313;3742:2;3731:9;3727:18;3714:32;3773:18;3765:6;3762:30;3759:117;;;3795:79;;:::i;:::-;3759:117;3908:80;3980:7;3971:6;3960:9;3956:22;3908:80;:::i;:::-;3890:98;;;;3685:313;2320:1685;;;;;;;;;;;:::o;4011:126::-;4048:7;4088:42;4081:5;4077:54;4066:65;;4011:126;;;:::o;4143:96::-;4180:7;4209:24;4227:5;4209:24;:::i;:::-;4198:35;;4143:96;;;:::o;4245:118::-;4332:24;4350:5;4332:24;:::i;:::-;4327:3;4320:37;4245:118;;:::o;4369:222::-;4462:4;4500:2;4489:9;4485:18;4477:26;;4513:71;4581:1;4570:9;4566:17;4557:6;4513:71;:::i;:::-;4369:222;;;;:::o;4597:122::-;4670:24;4688:5;4670:24;:::i;:::-;4663:5;4660:35;4650:63;;4709:1;4706;4699:12;4650:63;4597:122;:::o;4725:139::-;4771:5;4809:6;4796:20;4787:29;;4825:33;4852:5;4825:33;:::i;:::-;4725:139;;;;:::o;4870:329::-;4929:6;4978:2;4966:9;4957:7;4953:23;4949:32;4946:119;;;4984:79;;:::i;:::-;4946:119;5104:1;5129:53;5174:7;5165:6;5154:9;5150:22;5129:53;:::i;:::-;5119:63;;5075:117;4870:329;;;;:::o;5205:122::-;5278:24;5296:5;5278:24;:::i;:::-;5271:5;5268:35;5258:63;;5317:1;5314;5307:12;5258:63;5205:122;:::o;5333:139::-;5379:5;5417:6;5404:20;5395:29;;5433:33;5460:5;5433:33;:::i;:::-;5333:139;;;;:::o;5478:329::-;5537:6;5586:2;5574:9;5565:7;5561:23;5557:32;5554:119;;;5592:79;;:::i;:::-;5554:119;5712:1;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;:::i;:::-;5727:63;;5683:117;5478:329;;;;:::o;5813:775::-;6046:4;6084:3;6073:9;6069:19;6061:27;;6098:71;6166:1;6155:9;6151:17;6142:6;6098:71;:::i;:::-;6179:72;6247:2;6236:9;6232:18;6223:6;6179:72;:::i;:::-;6261;6329:2;6318:9;6314:18;6305:6;6261:72;:::i;:::-;6343;6411:2;6400:9;6396:18;6387:6;6343:72;:::i;:::-;6425:73;6493:3;6482:9;6478:19;6469:6;6425:73;:::i;:::-;6508;6576:3;6565:9;6561:19;6552:6;6508:73;:::i;:::-;5813:775;;;;;;;;;:::o;6594:90::-;6628:7;6671:5;6664:13;6657:21;6646:32;;6594:90;;;:::o;6690:109::-;6771:21;6786:5;6771:21;:::i;:::-;6766:3;6759:34;6690:109;;:::o;6805:210::-;6892:4;6930:2;6919:9;6915:18;6907:26;;6943:65;7005:1;6994:9;6990:17;6981:6;6943:65;:::i;:::-;6805:210;;;;:::o;7021:553::-;7198:4;7236:3;7225:9;7221:19;7213:27;;7250:71;7318:1;7307:9;7303:17;7294:6;7250:71;:::i;:::-;7331:72;7399:2;7388:9;7384:18;7375:6;7331:72;:::i;:::-;7413;7481:2;7470:9;7466:18;7457:6;7413:72;:::i;:::-;7495;7563:2;7552:9;7548:18;7539:6;7495:72;:::i;:::-;7021:553;;;;;;;:::o;7580:60::-;7608:3;7629:5;7622:12;;7580:60;;;:::o;7646:142::-;7696:9;7729:53;7747:34;7756:24;7774:5;7756:24;:::i;:::-;7747:34;:::i;:::-;7729:53;:::i;:::-;7716:66;;7646:142;;;:::o;7794:126::-;7844:9;7877:37;7908:5;7877:37;:::i;:::-;7864:50;;7794:126;;;:::o;7926:140::-;7990:9;8023:37;8054:5;8023:37;:::i;:::-;8010:50;;7926:140;;;:::o;8072:159::-;8173:51;8218:5;8173:51;:::i;:::-;8168:3;8161:64;8072:159;;:::o;8237:250::-;8344:4;8382:2;8371:9;8367:18;8359:26;;8395:85;8477:1;8466:9;8462:17;8453:6;8395:85;:::i;:::-;8237:250;;;;:::o;8493:169::-;8577:11;8611:6;8606:3;8599:19;8651:4;8646:3;8642:14;8627:29;;8493:169;;;;:::o;8668:173::-;8808:25;8804:1;8796:6;8792:14;8785:49;8668:173;:::o;8847:366::-;8989:3;9010:67;9074:2;9069:3;9010:67;:::i;:::-;9003:74;;9086:93;9175:3;9086:93;:::i;:::-;9204:2;9199:3;9195:12;9188:19;;8847:366;;;:::o;9219:419::-;9385:4;9423:2;9412:9;9408:18;9400:26;;9472:9;9466:4;9462:20;9458:1;9447:9;9443:17;9436:47;9500:131;9626:4;9500:131;:::i;:::-;9492:139;;9219:419;;;:::o;9644:173::-;9784:25;9780:1;9772:6;9768:14;9761:49;9644:173;:::o;9823:366::-;9965:3;9986:67;10050:2;10045:3;9986:67;:::i;:::-;9979:74;;10062:93;10151:3;10062:93;:::i;:::-;10180:2;10175:3;10171:12;10164:19;;9823:366;;;:::o;10195:419::-;10361:4;10399:2;10388:9;10384:18;10376:26;;10448:9;10442:4;10438:20;10434:1;10423:9;10419:17;10412:47;10476:131;10602:4;10476:131;:::i;:::-;10468:139;;10195:419;;;:::o;10620:178::-;10760:30;10756:1;10748:6;10744:14;10737:54;10620:178;:::o;10804:366::-;10946:3;10967:67;11031:2;11026:3;10967:67;:::i;:::-;10960:74;;11043:93;11132:3;11043:93;:::i;:::-;11161:2;11156:3;11152:12;11145:19;;10804:366;;;:::o;11176:419::-;11342:4;11380:2;11369:9;11365:18;11357:26;;11429:9;11423:4;11419:20;11415:1;11404:9;11400:17;11393:47;11457:131;11583:4;11457:131;:::i;:::-;11449:139;;11176:419;;;:::o;11601:165::-;11741:17;11737:1;11729:6;11725:14;11718:41;11601:165;:::o;11772:366::-;11914:3;11935:67;11999:2;11994:3;11935:67;:::i;:::-;11928:74;;12011:93;12100:3;12011:93;:::i;:::-;12129:2;12124:3;12120:12;12113:19;;11772:366;;;:::o;12144:419::-;12310:4;12348:2;12337:9;12333:18;12325:26;;12397:9;12391:4;12387:20;12383:1;12372:9;12368:17;12361:47;12425:131;12551:4;12425:131;:::i;:::-;12417:139;;12144:419;;;:::o;12569:235::-;12709:34;12705:1;12697:6;12693:14;12686:58;12778:18;12773:2;12765:6;12761:15;12754:43;12569:235;:::o;12810:366::-;12952:3;12973:67;13037:2;13032:3;12973:67;:::i;:::-;12966:74;;13049:93;13138:3;13049:93;:::i;:::-;13167:2;13162:3;13158:12;13151:19;;12810:366;;;:::o;13182:419::-;13348:4;13386:2;13375:9;13371:18;13363:26;;13435:9;13429:4;13425:20;13421:1;13410:9;13406:17;13399:47;13463:131;13589:4;13463:131;:::i;:::-;13455:139;;13182:419;;;:::o;13607:180::-;13655:77;13652:1;13645:88;13752:4;13749:1;13742:15;13776:4;13773:1;13766:15;13793:165;13933:17;13929:1;13921:6;13917:14;13910:41;13793:165;:::o;13964:366::-;14106:3;14127:67;14191:2;14186:3;14127:67;:::i;:::-;14120:74;;14203:93;14292:3;14203:93;:::i;:::-;14321:2;14316:3;14312:12;14305:19;;13964:366;;;:::o;14336:419::-;14502:4;14540:2;14529:9;14525:18;14517:26;;14589:9;14583:4;14579:20;14575:1;14564:9;14560:17;14553:47;14617:131;14743:4;14617:131;:::i;:::-;14609:139;;14336:419;;;:::o;14761:223::-;14901:34;14897:1;14889:6;14885:14;14878:58;14970:6;14965:2;14957:6;14953:15;14946:31;14761:223;:::o;14990:366::-;15132:3;15153:67;15217:2;15212:3;15153:67;:::i;:::-;15146:74;;15229:93;15318:3;15229:93;:::i;:::-;15347:2;15342:3;15338:12;15331:19;;14990:366;;;:::o;15362:419::-;15528:4;15566:2;15555:9;15551:18;15543:26;;15615:9;15609:4;15605:20;15601:1;15590:9;15586:17;15579:47;15643:131;15769:4;15643:131;:::i;:::-;15635:139;;15362:419;;;:::o;15787:181::-;15927:33;15923:1;15915:6;15911:14;15904:57;15787:181;:::o;15974:366::-;16116:3;16137:67;16201:2;16196:3;16137:67;:::i;:::-;16130:74;;16213:93;16302:3;16213:93;:::i;:::-;16331:2;16326:3;16322:12;16315:19;;15974:366;;;:::o;16346:419::-;16512:4;16550:2;16539:9;16535:18;16527:26;;16599:9;16593:4;16589:20;16585:1;16574:9;16570:17;16563:47;16627:131;16753:4;16627:131;:::i;:::-;16619:139;;16346:419;;;:::o;16771:179::-;16911:31;16907:1;16899:6;16895:14;16888:55;16771:179;:::o;16956:366::-;17098:3;17119:67;17183:2;17178:3;17119:67;:::i;:::-;17112:74;;17195:93;17284:3;17195:93;:::i;:::-;17313:2;17308:3;17304:12;17297:19;;16956:366;;;:::o;17328:419::-;17494:4;17532:2;17521:9;17517:18;17509:26;;17581:9;17575:4;17571:20;17567:1;17556:9;17552:17;17545:47;17609:131;17735:4;17609:131;:::i;:::-;17601:139;;17328:419;;;:::o;17753:234::-;17893:34;17889:1;17881:6;17877:14;17870:58;17962:17;17957:2;17949:6;17945:15;17938:42;17753:234;:::o;17993:366::-;18135:3;18156:67;18220:2;18215:3;18156:67;:::i;:::-;18149:74;;18232:93;18321:3;18232:93;:::i;:::-;18350:2;18345:3;18341:12;18334:19;;17993:366;;;:::o;18365:419::-;18531:4;18569:2;18558:9;18554:18;18546:26;;18618:9;18612:4;18608:20;18604:1;18593:9;18589:17;18582:47;18646:131;18772:4;18646:131;:::i;:::-;18638:139;;18365:419;;;:::o;18790:180::-;18930:32;18926:1;18918:6;18914:14;18907:56;18790:180;:::o;18976:366::-;19118:3;19139:67;19203:2;19198:3;19139:67;:::i;:::-;19132:74;;19215:93;19304:3;19215:93;:::i;:::-;19333:2;19328:3;19324:12;19317:19;;18976:366;;;:::o;19348:419::-;19514:4;19552:2;19541:9;19537:18;19529:26;;19601:9;19595:4;19591:20;19587:1;19576:9;19572:17;19565:47;19629:131;19755:4;19629:131;:::i;:::-;19621:139;;19348:419;;;:::o;19773:180::-;19821:77;19818:1;19811:88;19918:4;19915:1;19908:15;19942:4;19939:1;19932:15;19959:191;19999:3;20018:20;20036:1;20018:20;:::i;:::-;20013:25;;20052:20;20070:1;20052:20;:::i;:::-;20047:25;;20095:1;20092;20088:9;20081:16;;20116:3;20113:1;20110:10;20107:36;;;20123:18;;:::i;:::-;20107:36;19959:191;;;;:::o;20156:143::-;20213:5;20244:6;20238:13;20229:22;;20260:33;20287:5;20260:33;:::i;:::-;20156:143;;;;:::o;20305:351::-;20375:6;20424:2;20412:9;20403:7;20399:23;20395:32;20392:119;;;20430:79;;:::i;:::-;20392:119;20550:1;20575:64;20631:7;20622:6;20611:9;20607:22;20575:64;:::i;:::-;20565:74;;20521:128;20305:351;;;;:::o;20662:163::-;20802:15;20798:1;20790:6;20786:14;20779:39;20662:163;:::o;20831:366::-;20973:3;20994:67;21058:2;21053:3;20994:67;:::i;:::-;20987:74;;21070:93;21159:3;21070:93;:::i;:::-;21188:2;21183:3;21179:12;21172:19;;20831:366;;;:::o;21203:419::-;21369:4;21407:2;21396:9;21392:18;21384:26;;21456:9;21450:4;21446:20;21442:1;21431:9;21427:17;21420:47;21484:131;21610:4;21484:131;:::i;:::-;21476:139;;21203:419;;;:::o;21628:171::-;21768:23;21764:1;21756:6;21752:14;21745:47;21628:171;:::o;21805:366::-;21947:3;21968:67;22032:2;22027:3;21968:67;:::i;:::-;21961:74;;22044:93;22133:3;22044:93;:::i;:::-;22162:2;22157:3;22153:12;22146:19;;21805:366;;;:::o;22177:419::-;22343:4;22381:2;22370:9;22366:18;22358:26;;22430:9;22424:4;22420:20;22416:1;22405:9;22401:17;22394:47;22458:131;22584:4;22458:131;:::i;:::-;22450:139;;22177:419;;;:::o;22602:221::-;22742:34;22738:1;22730:6;22726:14;22719:58;22811:4;22806:2;22798:6;22794:15;22787:29;22602:221;:::o;22829:366::-;22971:3;22992:67;23056:2;23051:3;22992:67;:::i;:::-;22985:74;;23068:93;23157:3;23068:93;:::i;:::-;23186:2;23181:3;23177:12;23170:19;;22829:366;;;:::o;23201:419::-;23367:4;23405:2;23394:9;23390:18;23382:26;;23454:9;23448:4;23444:20;23440:1;23429:9;23425:17;23418:47;23482:131;23608:4;23482:131;:::i;:::-;23474:139;;23201:419;;;:::o;23626:171::-;23766:23;23762:1;23754:6;23750:14;23743:47;23626:171;:::o;23803:366::-;23945:3;23966:67;24030:2;24025:3;23966:67;:::i;:::-;23959:74;;24042:93;24131:3;24042:93;:::i;:::-;24160:2;24155:3;24151:12;24144:19;;23803:366;;;:::o;24175:419::-;24341:4;24379:2;24368:9;24364:18;24356:26;;24428:9;24422:4;24418:20;24414:1;24403:9;24399:17;24392:47;24456:131;24582:4;24456:131;:::i;:::-;24448:139;;24175:419;;;:::o;24600:182::-;24740:34;24736:1;24728:6;24724:14;24717:58;24600:182;:::o;24788:366::-;24930:3;24951:67;25015:2;25010:3;24951:67;:::i;:::-;24944:74;;25027:93;25116:3;25027:93;:::i;:::-;25145:2;25140:3;25136:12;25129:19;;24788:366;;;:::o;25160:419::-;25326:4;25364:2;25353:9;25349:18;25341:26;;25413:9;25407:4;25403:20;25399:1;25388:9;25384:17;25377:47;25441:131;25567:4;25441:131;:::i;:::-;25433:139;;25160:419;;;:::o;25585:173::-;25725:25;25721:1;25713:6;25709:14;25702:49;25585:173;:::o;25764:366::-;25906:3;25927:67;25991:2;25986:3;25927:67;:::i;:::-;25920:74;;26003:93;26092:3;26003:93;:::i;:::-;26121:2;26116:3;26112:12;26105:19;;25764:366;;;:::o;26136:419::-;26302:4;26340:2;26329:9;26325:18;26317:26;;26389:9;26383:4;26379:20;26375:1;26364:9;26360:17;26353:47;26417:131;26543:4;26417:131;:::i;:::-;26409:139;;26136:419;;;:::o;26561:194::-;26601:4;26621:20;26639:1;26621:20;:::i;:::-;26616:25;;26655:20;26673:1;26655:20;:::i;:::-;26650:25;;26699:1;26696;26692:9;26684:17;;26723:1;26717:4;26714:11;26711:37;;;26728:18;;:::i;:::-;26711:37;26561:194;;;;:::o;26761:225::-;26901:34;26897:1;26889:6;26885:14;26878:58;26970:8;26965:2;26957:6;26953:15;26946:33;26761:225;:::o;26992:366::-;27134:3;27155:67;27219:2;27214:3;27155:67;:::i;:::-;27148:74;;27231:93;27320:3;27231:93;:::i;:::-;27349:2;27344:3;27340:12;27333:19;;26992:366;;;:::o;27364:419::-;27530:4;27568:2;27557:9;27553:18;27545:26;;27617:9;27611:4;27607:20;27603:1;27592:9;27588:17;27581:47;27645:131;27771:4;27645:131;:::i;:::-;27637:139;;27364:419;;;:::o;27789:332::-;27910:4;27948:2;27937:9;27933:18;27925:26;;27961:71;28029:1;28018:9;28014:17;28005:6;27961:71;:::i;:::-;28042:72;28110:2;28099:9;28095:18;28086:6;28042:72;:::i;:::-;27789:332;;;;;:::o;28127:182::-;28267:34;28263:1;28255:6;28251:14;28244:58;28127:182;:::o;28315:366::-;28457:3;28478:67;28542:2;28537:3;28478:67;:::i;:::-;28471:74;;28554:93;28643:3;28554:93;:::i;:::-;28672:2;28667:3;28663:12;28656:19;;28315:366;;;:::o;28687:419::-;28853:4;28891:2;28880:9;28876:18;28868:26;;28940:9;28934:4;28930:20;28926:1;28915:9;28911:17;28904:47;28968:131;29094:4;28968:131;:::i;:::-;28960:139;;28687:419;;;:::o;29112:442::-;29261:4;29299:2;29288:9;29284:18;29276:26;;29312:71;29380:1;29369:9;29365:17;29356:6;29312:71;:::i;:::-;29393:72;29461:2;29450:9;29446:18;29437:6;29393:72;:::i;:::-;29475;29543:2;29532:9;29528:18;29519:6;29475:72;:::i;:::-;29112:442;;;;;;:::o;29560:180::-;29608:77;29605:1;29598:88;29705:4;29702:1;29695:15;29729:4;29726:1;29719:15;29746:185;29786:1;29803:20;29821:1;29803:20;:::i;:::-;29798:25;;29837:20;29855:1;29837:20;:::i;:::-;29832:25;;29876:1;29866:35;;29881:18;;:::i;:::-;29866:35;29923:1;29920;29916:9;29911:14;;29746:185;;;;:::o;29937:410::-;29977:7;30000:20;30018:1;30000:20;:::i;:::-;29995:25;;30034:20;30052:1;30034:20;:::i;:::-;30029:25;;30089:1;30086;30082:9;30111:30;30129:11;30111:30;:::i;:::-;30100:41;;30290:1;30281:7;30277:15;30274:1;30271:22;30251:1;30244:9;30224:83;30201:139;;30320:18;;:::i;:::-;30201:139;29985:362;29937:410;;;;:::o;30353:116::-;30423:21;30438:5;30423:21;:::i;:::-;30416:5;30413:32;30403:60;;30459:1;30456;30449:12;30403:60;30353:116;:::o;30475:137::-;30529:5;30560:6;30554:13;30545:22;;30576:30;30600:5;30576:30;:::i;:::-;30475:137;;;;:::o;30618:345::-;30685:6;30734:2;30722:9;30713:7;30709:23;30705:32;30702:119;;;30740:79;;:::i;:::-;30702:119;30860:1;30885:61;30938:7;30929:6;30918:9;30914:22;30885:61;:::i;:::-;30875:71;;30831:125;30618:345;;;;:::o;30969:229::-;31109:34;31105:1;31097:6;31093:14;31086:58;31178:12;31173:2;31165:6;31161:15;31154:37;30969:229;:::o;31204:366::-;31346:3;31367:67;31431:2;31426:3;31367:67;:::i;:::-;31360:74;;31443:93;31532:3;31443:93;:::i;:::-;31561:2;31556:3;31552:12;31545:19;;31204:366;;;:::o;31576:419::-;31742:4;31780:2;31769:9;31765:18;31757:26;;31829:9;31823:4;31819:20;31815:1;31804:9;31800:17;31793:47;31857:131;31983:4;31857:131;:::i;:::-;31849:139;;31576:419;;;:::o;32001:225::-;32141:34;32137:1;32129:6;32125:14;32118:58;32210:8;32205:2;32197:6;32193:15;32186:33;32001:225;:::o;32232:366::-;32374:3;32395:67;32459:2;32454:3;32395:67;:::i;:::-;32388:74;;32471:93;32560:3;32471:93;:::i;:::-;32589:2;32584:3;32580:12;32573:19;;32232:366;;;:::o;32604:419::-;32770:4;32808:2;32797:9;32793:18;32785:26;;32857:9;32851:4;32847:20;32843:1;32832:9;32828:17;32821:47;32885:131;33011:4;32885:131;:::i;:::-;32877:139;;32604:419;;;:::o;33029:98::-;33080:6;33114:5;33108:12;33098:22;;33029:98;;;:::o;33133:147::-;33234:11;33271:3;33256:18;;33133:147;;;;:::o;33286:246::-;33367:1;33377:113;33391:6;33388:1;33385:13;33377:113;;;33476:1;33471:3;33467:11;33461:18;33457:1;33452:3;33448:11;33441:39;33413:2;33410:1;33406:10;33401:15;;33377:113;;;33524:1;33515:6;33510:3;33506:16;33499:27;33348:184;33286:246;;;:::o;33538:386::-;33642:3;33670:38;33702:5;33670:38;:::i;:::-;33724:88;33805:6;33800:3;33724:88;:::i;:::-;33717:95;;33821:65;33879:6;33874:3;33867:4;33860:5;33856:16;33821:65;:::i;:::-;33911:6;33906:3;33902:16;33895:23;;33646:278;33538:386;;;;:::o;33930:271::-;34060:3;34082:93;34171:3;34162:6;34082:93;:::i;:::-;34075:100;;34192:3;34185:10;;33930:271;;;;:::o;34207:179::-;34347:31;34343:1;34335:6;34331:14;34324:55;34207:179;:::o;34392:366::-;34534:3;34555:67;34619:2;34614:3;34555:67;:::i;:::-;34548:74;;34631:93;34720:3;34631:93;:::i;:::-;34749:2;34744:3;34740:12;34733:19;;34392:366;;;:::o;34764:419::-;34930:4;34968:2;34957:9;34953:18;34945:26;;35017:9;35011:4;35007:20;35003:1;34992:9;34988:17;34981:47;35045:131;35171:4;35045:131;:::i;:::-;35037:139;;34764:419;;;:::o;35189:99::-;35241:6;35275:5;35269:12;35259:22;;35189:99;;;:::o;35294:102::-;35335:6;35386:2;35382:7;35377:2;35370:5;35366:14;35362:28;35352:38;;35294:102;;;:::o;35402:377::-;35490:3;35518:39;35551:5;35518:39;:::i;:::-;35573:71;35637:6;35632:3;35573:71;:::i;:::-;35566:78;;35653:65;35711:6;35706:3;35699:4;35692:5;35688:16;35653:65;:::i;:::-;35743:29;35765:6;35743:29;:::i;:::-;35738:3;35734:39;35727:46;;35494:285;35402:377;;;;:::o;35785:313::-;35898:4;35936:2;35925:9;35921:18;35913:26;;35985:9;35979:4;35975:20;35971:1;35960:9;35956:17;35949:47;36013:78;36086:4;36077:6;36013:78;:::i;:::-;36005:86;;35785:313;;;;:::o
Swarm Source
ipfs://70a8b4ed740001f348f7c95547ce92a30312048aa607f59247a0ef69e9c7eaf7
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.