Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 93 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19734455 | 360 days ago | IN | 0 ETH | 0.00025506 | ||||
Approve | 19727870 | 361 days ago | IN | 0 ETH | 0.000401 | ||||
Cancel | 19727863 | 361 days ago | IN | 0 ETH | 0.00037407 | ||||
Approve | 19727850 | 361 days ago | IN | 0 ETH | 0.00065294 | ||||
Approve | 19727845 | 361 days ago | IN | 0 ETH | 0.00065298 | ||||
Approve | 19727841 | 361 days ago | IN | 0 ETH | 0.00066926 | ||||
Approve | 19727829 | 361 days ago | IN | 0 ETH | 0.00069221 | ||||
Approve | 19727829 | 361 days ago | IN | 0 ETH | 0.00069221 | ||||
Approve | 19727829 | 361 days ago | IN | 0 ETH | 0.00069221 | ||||
Approve | 19727829 | 361 days ago | IN | 0 ETH | 0.00069221 | ||||
Approve | 19727829 | 361 days ago | IN | 0 ETH | 0.00069221 | ||||
Approve | 19727829 | 361 days ago | IN | 0 ETH | 0.00069221 | ||||
Approve | 19727827 | 361 days ago | IN | 0 ETH | 0.00067443 | ||||
Approve | 19727827 | 361 days ago | IN | 0 ETH | 0.00067443 | ||||
Approve | 19727825 | 361 days ago | IN | 0 ETH | 0.00081926 | ||||
Approve | 19727825 | 361 days ago | IN | 0 ETH | 0.00081926 | ||||
Approve | 19727825 | 361 days ago | IN | 0 ETH | 0.00081926 | ||||
Approve | 19727825 | 361 days ago | IN | 0 ETH | 0.00081926 | ||||
Approve | 19727825 | 361 days ago | IN | 0 ETH | 0.00081926 | ||||
Approve | 19727823 | 361 days ago | IN | 0 ETH | 0.0006509 | ||||
Approve | 19727822 | 361 days ago | IN | 0 ETH | 0.00065006 | ||||
Approve | 19727822 | 361 days ago | IN | 0 ETH | 0.00065006 | ||||
Approve | 19727817 | 361 days ago | IN | 0 ETH | 0.00050631 | ||||
Approve | 19727817 | 361 days ago | IN | 0 ETH | 0.00050631 | ||||
Approve | 19727815 | 361 days ago | IN | 0 ETH | 0.00062439 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 19727863 | 361 days ago | 3.5 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ProofStandardStealth
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-04-24 */ /// This token was incubated and launched by PROOF: https://proofplatform.io/projects. The smart contract is audited by SourceHat: https://sourcehat.com/ // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity ^0.8.20; /** * @dev Standard ERC20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @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 { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _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/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; /** * @dev Interface for the optional metadata functions from the ERC20 standard. */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `value`. */ function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `value`. * - the caller must have allowance for ``from``'s tokens of at least * `value`. */ function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } /** * @dev Moves a `value` amount of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 value) internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } /** * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding * this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } /** * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } /** * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply. * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } /** * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. * * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. */ function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } /** * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event. * * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any * `Approval` event during `transferFrom` operations. * * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to * true using the following override: * ``` * function _approve(address owner, address spender, uint256 value, bool) internal virtual override { * super._approve(owner, spender, value, true); * } * ``` * * Requirements are the same as {_approve}. */ function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } /** * @dev Updates `owner` s allowance for `spender` based on spent `value`. * * Does not update the allowance value in case of infinite allowance. * Revert if not enough allowance is available. * * Does not emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } // File: ProofStandardStealthv1.2.sol pragma solidity ^0.8.24; interface ITeamFinanceLocker { function lockToken( address _tokenAddress, address _withdrawalAddress, uint256 _amount, uint256 _unlockTime, bool _mintNFT, address referrer ) external payable returns (uint256 _id); } interface IProof { struct UserInfo { bool isFeeExempt; bool isTxLimitExempt; uint256 lastTxBlock; } struct FeeInfo { uint256 liquidity; uint256 main; uint256 proof; uint256 dev; uint256 total; } struct ProofInfo { address locker; address router; address proofWallet; address proofStaking; } } error ExceedsMaxTxAmount(); error ExceedsMaxWalletAmount(); error InvalidConfiguration(); error TradingNotEnabled(); error TransferDelayEnabled(uint256 currentBlock, uint256 delayedUntil); /// This token was incubated and launched by PROOF: https://proofplatform.io/projects. The smart contract is audited by SourceHat: https://sourcehat.com/ contract ProofStandardStealth is IProof, ERC20, Ownable { IUniswapV2Router02 public immutable uniswapV2Router; address public immutable pair; address payable public mainWallet; address payable public devWallet; address payable public proofWallet; address payable public proofStaking; uint256 public swapping = 1; bool public swapEnabled = true; bool public isTradingEnabled; bool public restrictWhales = true; bool public isAntiSnipeActive; uint256 public antiSnipeEndBlock; uint256 public launchedAt; bool public proofFeeReduced; bool public proofFeeRemoved; bool public maxWalletChanged; mapping (address => UserInfo) public userInfo; FeeInfo public buyFees; FeeInfo public sellFees; FeeInfo public feeTokens; uint256 public maxTxAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public lockID; uint256 public lpLockDuration; address public lockerAddress; event SwapEnabledUpdated(bool enabled); event FeesEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensAutoLiq, uint256 ethAutoLiq); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); constructor( string memory _name, string memory _symbol, uint256 _totalSupply, FeeInfo memory _buyFees, FeeInfo memory _sellFees, uint256 _percentToLP, uint256 _lpLockDuration, address _mainWallet, address _devWallet, ProofInfo memory _addresses ) ERC20(_name, _symbol) Ownable(msg.sender) payable { if (_lpLockDuration < 30 days || msg.value < 1 ether || _percentToLP < 70) { revert InvalidConfiguration(); } // set addresses lockerAddress = _addresses.locker; proofWallet = payable(_addresses.proofWallet); proofStaking = payable(_addresses.proofStaking); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_addresses.router); uniswapV2Router = _uniswapV2Router; pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uint256 amountToPair = _totalSupply * _percentToLP / 100; super._update(address(0), address(this), amountToPair); // mint to contract for liquidity // set basic data lpLockDuration = _lpLockDuration; maxTxAmount = _totalSupply * 5 / 1000; swapTokensAtAmount = _totalSupply * 5 / 4000; maxWallet = _totalSupply * 5 / 1000; _changeFees(_buyFees, _sellFees); mainWallet = payable(_mainWallet); devWallet = payable(_devWallet); userInfo[address(this)] = UserInfo(true, true, 0); userInfo[pair].isTxLimitExempt = true; super._update(address(0), owner(), _totalSupply - amountToPair); // mint to owner } function launch() external payable onlyOwner lockTheSwap { if (launchedAt != 0) { revert InvalidConfiguration(); } // enable trading antiSnipeEndBlock = block.number + 10; isAntiSnipeActive = true; launchedAt = block.timestamp; isTradingEnabled = true; // add liquidity _approve(address(this), address(uniswapV2Router), type(uint256).max); addLiquidity(balanceOf(address(this)), address(this).balance - msg.value, address(this)); // lock liquidity uint256 lpBalance = IERC20(pair).balanceOf(address(this)); IERC20(pair).approve(lockerAddress, lpBalance); lockID = ITeamFinanceLocker(lockerAddress).lockToken{value: msg.value}(pair, msg.sender, lpBalance, block.timestamp + lpLockDuration, false, address(0)); } function cancel() external onlyOwner { if (launchedAt != 0) { revert InvalidConfiguration(); } // send the tokens and eth back to the owner super._update(address(this), owner(), balanceOf(address(this))); address(owner()).call{value: address(this).balance}(""); } function _update( address from, address to, uint256 amount ) internal override { if (!isTradingEnabled) { revert TradingNotEnabled(); } UserInfo storage sender = userInfo[from]; UserInfo storage recipient = userInfo[to]; if (swapping == 2 || from == owner() || to == owner() || amount == 0) { super._update(from, to, amount); return; } // 1 purchase per block for the first 10 blocks if (isAntiSnipeActive) { if (block.number < antiSnipeEndBlock) { UserInfo storage user = userInfo[tx.origin]; uint256 delayedUntil = user.lastTxBlock + 1; if (delayedUntil > block.number) { revert TransferDelayEnabled(block.number, delayedUntil); } user.lastTxBlock = block.number; } else { isAntiSnipeActive = false; } } if (!maxWalletChanged && block.timestamp > (launchedAt + 600)) { //1% after 10 minutes if we haven't manually updated maxWallet = totalSupply() / 100; maxWalletChanged = true; } if (restrictWhales) { if (to == pair && !sender.isTxLimitExempt && amount > maxTxAmount) { revert ExceedsMaxTxAmount(); } if (!recipient.isTxLimitExempt && amount + balanceOf(to) > maxWallet) { revert ExceedsMaxWalletAmount(); } } uint256 total = feeTokens.total; bool canSwap = total >= swapTokensAtAmount; if ( canSwap && swapEnabled && from != pair ) { processFees(total, swapTokensAtAmount); } if (!sender.isFeeExempt && !recipient.isFeeExempt) { FeeInfo storage _buyFees = buyFees; FeeInfo storage _sellFees = sellFees; if (!proofFeeRemoved) { uint256 daysPassed = block.timestamp - launchedAt; if (!proofFeeReduced && daysPassed > 1 days) { uint256 totalBuy = _buyFees.total - _buyFees.proof; if (totalBuy == 0) { _buyFees.total = 0; _buyFees.proof = 0; } else { _buyFees.total = totalBuy + 1; _buyFees.proof = 1; } uint256 totalSell = _sellFees.total - _sellFees.proof; if (totalSell == 0) { _sellFees.total = 0; _sellFees.proof = 0; } else { _sellFees.total = totalSell + 1; _sellFees.proof = 1; } proofFeeReduced = true; } else if (daysPassed > 31 days) { _buyFees.total -= _buyFees.proof; _sellFees.total -= _sellFees.proof; _buyFees.proof = 0; _sellFees.proof = 0; proofFeeRemoved = true; } } uint256 fees; if (to == pair) { //sell fees = _calculateFees(_sellFees, amount); } else if (from == pair) { //buy fees = _calculateFees(_buyFees, amount); } if (fees > 0) { amount -= fees; super._update(from, address(this), fees); } } super._update(from, to, amount); } function _calculateFees(FeeInfo memory feeRate, uint256 amount) internal returns (uint256 fees) { if (feeRate.total != 0) { fees = amount * feeRate.total / 100; FeeInfo storage _feeTokens = feeTokens; _feeTokens.liquidity += fees * feeRate.liquidity / feeRate.total; _feeTokens.main += fees * feeRate.main / feeRate.total; _feeTokens.proof += fees * feeRate.proof / feeRate.total; _feeTokens.dev += fees * feeRate.dev / feeRate.total; _feeTokens.total += fees; } } function processFees(uint256 total, uint256 amountToSwap) internal lockTheSwap { FeeInfo storage _feeTokens = feeTokens; FeeInfo memory swapTokens = FeeInfo({ liquidity: amountToSwap * _feeTokens.liquidity / total, main: amountToSwap * _feeTokens.main / total, proof: amountToSwap * _feeTokens.proof / total, dev: amountToSwap * _feeTokens.dev / total, total: amountToSwap }); uint256 liqToSwap = swapTokens.liquidity / 2; uint256 amountToPair = swapTokens.liquidity - liqToSwap; uint256 totalToSwap = amountToSwap - amountToPair; uint256 ethBalance = swapTokensForETH(totalToSwap); FeeInfo memory ethSplit = FeeInfo({ liquidity: 0, main: ethBalance * swapTokens.main / totalToSwap, proof: ethBalance * swapTokens.proof / totalToSwap, dev: ethBalance * swapTokens.dev / totalToSwap, total: 0 }); if (ethSplit.main > 0) { address(mainWallet).call{value: ethSplit.main}(""); } if (ethSplit.dev > 0) { address(devWallet).call{value: ethSplit.dev}(""); } if (ethSplit.proof > 0) { uint256 revenueSplit = ethSplit.proof / 2; address(proofStaking).call{value: revenueSplit}(""); address(proofWallet).call{value: ethSplit.proof - revenueSplit}(""); } ethSplit.liquidity = address(this).balance; uint256 amountPaired; if (amountToPair > 0 && ethSplit.liquidity > 0) { amountPaired = addLiquidity(amountToPair, ethSplit.liquidity, address(0xdead)); emit SwapAndLiquify(amountToPair, ethSplit.liquidity); } _feeTokens.liquidity -= swapTokens.liquidity - (amountToPair - amountPaired); _feeTokens.main -= swapTokens.main; _feeTokens.proof -= swapTokens.proof; _feeTokens.dev -= swapTokens.dev; _feeTokens.total -= swapTokens.total; } function swapTokensForETH(uint256 tokenAmount) internal returns (uint256 ethBalance) { uint256 ethBalBefore = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); ethBalance = address(this).balance - ethBalBefore; } function addLiquidity(uint256 tokenAmount, uint256 ethAmount, address recipient) private returns (uint256) { (uint256 amountA,,) = uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable recipient, block.timestamp ); return amountA; } function changeFees( uint256 liquidityBuy, uint256 mainBuy, uint256 devBuy, uint256 liquiditySell, uint256 mainSell, uint256 devSell ) external onlyOwner { FeeInfo memory buyFees; buyFees.liquidity = liquidityBuy; buyFees.main = mainBuy; buyFees.dev = devBuy; FeeInfo memory sellFees; sellFees.liquidity = liquiditySell; sellFees.main = mainSell; sellFees.dev = devSell; (buyFees.proof, sellFees.proof) = launchedAt != 0 ? _calculateProofFee() : (2,2); _changeFees(buyFees, sellFees); } function _calculateProofFee() internal returns (uint256, uint256) { uint256 daysPassed = block.timestamp - launchedAt; if (daysPassed > 31 days) { proofFeeRemoved = true; return (0,0); } else if (daysPassed > 1 days) { proofFeeReduced = true; return (1,1); } else { return (2,2); } } function _changeFees(FeeInfo memory _buyFees, FeeInfo memory _sellFees) internal { _buyFees.total = _buyFees.liquidity + _buyFees.main + _buyFees.dev; if (_buyFees.total == 0) { _buyFees.proof = 0; } else { _buyFees.total += _buyFees.proof; } _sellFees.total = _sellFees.liquidity + _sellFees.main + _sellFees.dev; if (_sellFees.total == 0) { _sellFees.proof = 0; } else { _sellFees.total += _sellFees.proof; } if (_buyFees.total > 12 || _sellFees.total > 17) { revert InvalidConfiguration(); } buyFees = _buyFees; sellFees = _sellFees; } function setMaxTxAmount(uint256 _maxTxAmt) external onlyOwner() { if (launchedAt == 0 || _maxTxAmt < (totalSupply() * 5) / 1000 || _maxTxAmt > (totalSupply() * 3) / 100 ) { revert InvalidConfiguration(); } maxTxAmount = _maxTxAmt; } function setMaxWalletSize(uint256 _maxWalletSize) external onlyOwner() { if (launchedAt == 0 || _maxWalletSize < (totalSupply() * 5) / 1000 || _maxWalletSize > (totalSupply() * 3) / 100 ) { revert InvalidConfiguration(); } maxWallet = _maxWalletSize; maxWalletChanged = true; } function setRestrictWhalesEnabled(bool _enabled) external onlyOwner{ restrictWhales = _enabled; } function setFeeExempt(address account, bool value) public onlyOwner { userInfo[account].isFeeExempt = value; } function setFeeExempt(address[] memory accounts) public onlyOwner { uint256 len = accounts.length; for (uint256 i = 0; i < len; i++) { userInfo[accounts[i]].isFeeExempt = true; } } function setTxLimitExempt(address account, bool value) public onlyOwner { userInfo[account].isTxLimitExempt = value; } function setTxLimitExempt(address[] memory accounts) public onlyOwner { uint256 len = accounts.length; for (uint256 i = 0; i < len; i++) { userInfo[accounts[i]].isTxLimitExempt = true; } } function setDevWallet(address newWallet) external onlyOwner { devWallet = payable(newWallet); } function setMainWallet(address newWallet) external onlyOwner { mainWallet = payable(newWallet); } function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner { swapEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAtAmount(uint256 amount) external onlyOwner { swapTokensAtAmount = amount; } function withdrawStuckTokens() external onlyOwner { super._update(address(this), _msgSender(), balanceOf(address(this)) - feeTokens.total); } function getCirculatingSupply() external view returns (uint256) { return totalSupply() - balanceOf(address(0xdead)); } function decimals() public view virtual override returns (uint8) { return 9; } modifier lockTheSwap() { swapping = 2; _; swapping = 1; } receive() external payable {} function version() public view returns (uint8) { return 1; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"components":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"main","type":"uint256"},{"internalType":"uint256","name":"proof","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"internalType":"struct IProof.FeeInfo","name":"_buyFees","type":"tuple"},{"components":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"main","type":"uint256"},{"internalType":"uint256","name":"proof","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"internalType":"struct IProof.FeeInfo","name":"_sellFees","type":"tuple"},{"internalType":"uint256","name":"_percentToLP","type":"uint256"},{"internalType":"uint256","name":"_lpLockDuration","type":"uint256"},{"internalType":"address","name":"_mainWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"},{"components":[{"internalType":"address","name":"locker","type":"address"},{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"proofWallet","type":"address"},{"internalType":"address","name":"proofStaking","type":"address"}],"internalType":"struct IProof.ProofInfo","name":"_addresses","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ExceedsMaxTxAmount","type":"error"},{"inputs":[],"name":"ExceedsMaxWalletAmount","type":"error"},{"inputs":[],"name":"InvalidConfiguration","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"TradingNotEnabled","type":"error"},{"inputs":[{"internalType":"uint256","name":"currentBlock","type":"uint256"},{"internalType":"uint256","name":"delayedUntil","type":"uint256"}],"name":"TransferDelayEnabled","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"FeesEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensAutoLiq","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAutoLiq","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSnipeEndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"main","type":"uint256"},{"internalType":"uint256","name":"proof","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"mainBuy","type":"uint256"},{"internalType":"uint256","name":"devBuy","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"},{"internalType":"uint256","name":"mainSell","type":"uint256"},{"internalType":"uint256","name":"devSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTokens","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"main","type":"uint256"},{"internalType":"uint256","name":"proof","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAntiSnipeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpLockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletChanged","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofFeeReduced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofFeeRemoved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofStaking","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"main","type":"uint256"},{"internalType":"uint256","name":"proof","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMainWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmt","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setRestrictWhalesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"setTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"bool","name":"isFeeExempt","type":"bool"},{"internalType":"bool","name":"isTxLimitExempt","type":"bool"},{"internalType":"uint256","name":"lastTxBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600a556001600b5f6101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055506040516155bd3803806155bd833981810160405281019061005f9190610dad565b338a8a816003908161007191906110c6565b50806004908161008191906110c6565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100f4575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100eb91906111a4565b60405180910390fd5b6101038161064960201b60201c565b5062278d0084108061011c5750670de0b6b3a764000034105b806101275750604685105b1561015e576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160245f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806040015160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806060015160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f816020015190508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d291906111bd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610337573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035b91906111bd565b6040518363ffffffff1660e01b81526004016103789291906111e8565b6020604051808303815f875af1158015610394573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b891906111bd565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505f6064878b6103fa919061123c565b61040491906112aa565b90506104175f308361070c60201b60201c565b856023819055506103e860058b61042e919061123c565b61043891906112aa565b601f81905550610fa060058b61044e919061123c565b61045891906112aa565b6020819055506103e860058b61046e919061123c565b61047891906112aa565b60218190555061048e898961092560201b60201c565b8460065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180606001604052806001151581526020016001151581526020015f815250600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151815f0160016101000a81548160ff021916908315150217905550604082015181600101559050506001600f5f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160016101000a81548160ff0219169083151502179055506106385f610621610aa960201b60201c565b838d61062d91906112da565b61070c60201b60201c565b50505050505050505050505061139d565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361075c578060025f828254610750919061130d565b9250508190555061082a565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156107e5578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016107dc9392919061134f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610871578060025f82825403925050819055506108bb565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109189190611384565b60405180910390a3505050565b81606001518260200151835f015161093d919061130d565b610947919061130d565b8260800181815250505f82608001510361096a575f826040018181525050610988565b816040015182608001818151610980919061130d565b915081815250505b80606001518160200151825f01516109a0919061130d565b6109aa919061130d565b8160800181815250505f8160800151036109cd575f8160400181815250506109eb565b8060400151816080018181516109e3919061130d565b915081815250505b600c82608001511180610a02575060118160800151115b15610a39576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160105f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508060155f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b3082610aea565b810181811067ffffffffffffffff82111715610b4f57610b4e610afa565b5b80604052505050565b5f610b61610ad1565b9050610b6d8282610b27565b919050565b5f67ffffffffffffffff821115610b8c57610b8b610afa565b5b610b9582610aea565b9050602081019050919050565b8281835e5f83830152505050565b5f610bc2610bbd84610b72565b610b58565b905082815260208101848484011115610bde57610bdd610ae6565b5b610be9848285610ba2565b509392505050565b5f82601f830112610c0557610c04610ae2565b5b8151610c15848260208601610bb0565b91505092915050565b5f819050919050565b610c3081610c1e565b8114610c3a575f80fd5b50565b5f81519050610c4b81610c27565b92915050565b5f80fd5b5f60a08284031215610c6a57610c69610c51565b5b610c7460a0610b58565b90505f610c8384828501610c3d565b5f830152506020610c9684828501610c3d565b6020830152506040610caa84828501610c3d565b6040830152506060610cbe84828501610c3d565b6060830152506080610cd284828501610c3d565b60808301525092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d0782610cde565b9050919050565b610d1781610cfd565b8114610d21575f80fd5b50565b5f81519050610d3281610d0e565b92915050565b5f60808284031215610d4d57610d4c610c51565b5b610d576080610b58565b90505f610d6684828501610d24565b5f830152506020610d7984828501610d24565b6020830152506040610d8d84828501610d24565b6040830152506060610da184828501610d24565b60608301525092915050565b5f805f805f805f805f806102a08b8d031215610dcc57610dcb610ada565b5b5f8b015167ffffffffffffffff811115610de957610de8610ade565b5b610df58d828e01610bf1565b9a505060208b015167ffffffffffffffff811115610e1657610e15610ade565b5b610e228d828e01610bf1565b9950506040610e338d828e01610c3d565b9850506060610e448d828e01610c55565b975050610100610e568d828e01610c55565b9650506101a0610e688d828e01610c3d565b9550506101c0610e7a8d828e01610c3d565b9450506101e0610e8c8d828e01610d24565b935050610200610e9e8d828e01610d24565b925050610220610eb08d828e01610d38565b9150509295989b9194979a5092959850565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f1057607f821691505b602082108103610f2357610f22610ecc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610f857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610f4a565b610f8f8683610f4a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f610fca610fc5610fc084610c1e565b610fa7565b610c1e565b9050919050565b5f819050919050565b610fe383610fb0565b610ff7610fef82610fd1565b848454610f56565b825550505050565b5f90565b61100b610fff565b611016818484610fda565b505050565b5b818110156110395761102e5f82611003565b60018101905061101c565b5050565b601f82111561107e5761104f81610f29565b61105884610f3b565b81016020851015611067578190505b61107b61107385610f3b565b83018261101b565b50505b505050565b5f82821c905092915050565b5f61109e5f1984600802611083565b1980831691505092915050565b5f6110b6838361108f565b9150826002028217905092915050565b6110cf82610ec2565b67ffffffffffffffff8111156110e8576110e7610afa565b5b6110f28254610ef9565b6110fd82828561103d565b5f60209050601f83116001811461112e575f841561111c578287015190505b61112685826110ab565b86555061118d565b601f19841661113c86610f29565b5f5b828110156111635784890151825560018201915060208501945060208101905061113e565b86831015611180578489015161117c601f89168261108f565b8355505b6001600288020188555050505b505050505050565b61119e81610cfd565b82525050565b5f6020820190506111b75f830184611195565b92915050565b5f602082840312156111d2576111d1610ada565b5b5f6111df84828501610d24565b91505092915050565b5f6040820190506111fb5f830185611195565b6112086020830184611195565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61124682610c1e565b915061125183610c1e565b925082820261125f81610c1e565b915082820484148315176112765761127561120f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6112b482610c1e565b91506112bf83610c1e565b9250826112cf576112ce61127d565b5b828204905092915050565b5f6112e482610c1e565b91506112ef83610c1e565b92508282039050818111156113075761130661120f565b5b92915050565b5f61131782610c1e565b915061132283610c1e565b925082820190508082111561133a5761133961120f565b5b92915050565b61134981610c1e565b82525050565b5f6060820190506113625f830186611195565b61136f6020830185611340565b61137c6040830184611340565b949350505050565b5f6020820190506113975f830184611340565b92915050565b60805160a0516141b261140b5f395f8181610d7001528181610e0a01528181610f0501528181611572015281816127be0152818161290601528181612b2e0152612bce01525f8181610d090152818161107001528181611c0601528181613367015261344201526141b25ff3fe608060405260043610610353575f3560e01c806388cda873116101c5578063cb29813c116100f6578063ea1644d511610094578063f2fde38b1161006e578063f2fde38b14610bc4578063f8b45b0514610bec578063f8f9892814610c16578063f954662114610c3e5761035a565b8063ea1644d514610b5e578063ea8a1af014610b86578063ec28438a14610b9c5761035a565b8063de35eb24116100d0578063de35eb2414610aae578063e0f3ccf514610ad8578063e2f4560514610b06578063e4748b9e14610b305761035a565b8063cb29813c14610a22578063d0a5eb4e14610a4a578063dd62ed3e14610a725761035a565b8063a8aa1b3111610163578063baae06661161013d578063baae06661461097a578063bee0d6ad146109a2578063bf56b371146109d0578063c49b9a80146109fa5761035a565b8063a8aa1b31146108ea578063a9059cbb14610914578063acb52a98146109505761035a565b80638da5cb5b1161019f5780638da5cb5b146108445780638ea5220f1461086e5780638ebfc7961461089857806395d89b41146108c05761035a565b806388cda873146107c85780638c0b5e22146107f25780638d7a8ba71461081c5761035a565b80633675f29b1161029f57806367dd01791161023d578063715018a611610217578063715018a6146107485780638183b3c81461075e578063838420131461077457806387f86db71461079e5761035a565b806367dd0179146106b85780636ddd1713146106e257806370a082311461070c5761035a565b806354fd4d501161027957806354fd4d50146106145780635ace11221461063e5780636101f1f8146106665780636402511e146106905761035a565b80633675f29b1461059657806344de2e4c146105c05780634a829e79146105ea5761035a565b806318160ddd1161030c57806323b62b75116102e657806323b62b75146104dc57806323b872dd146105065780632b112e4914610542578063313ce5671461056c5761035a565b806318160ddd1461044c5780631959a002146104765780631f53ac02146104b45761035a565b806301339c211461035e578063064a59d01461036857806306fdde0314610392578063095ea7b3146103bc5780631694505e146103f85780631732cded146104225761035a565b3661035a57005b5f80fd5b610366610c68565b005b348015610373575f80fd5b5061037c610fa9565b6040516103899190613527565b60405180910390f35b34801561039d575f80fd5b506103a6610fbc565b6040516103b391906135b0565b60405180910390f35b3480156103c7575f80fd5b506103e260048036038101906103dd919061366e565b61104c565b6040516103ef9190613527565b60405180910390f35b348015610403575f80fd5b5061040c61106e565b6040516104199190613707565b60405180910390f35b34801561042d575f80fd5b50610436611092565b604051610443919061372f565b60405180910390f35b348015610457575f80fd5b50610460611098565b60405161046d919061372f565b60405180910390f35b348015610481575f80fd5b5061049c60048036038101906104979190613748565b6110a1565b6040516104ab93929190613773565b60405180910390f35b3480156104bf575f80fd5b506104da60048036038101906104d59190613748565b6110df565b005b3480156104e7575f80fd5b506104f061112a565b6040516104fd91906137c8565b60405180910390f35b348015610511575f80fd5b5061052c600480360381019061052791906137e1565b61114f565b6040516105399190613527565b60405180910390f35b34801561054d575f80fd5b5061055661117d565b604051610563919061372f565b60405180910390f35b348015610577575f80fd5b506105806111a0565b60405161058d919061384c565b60405180910390f35b3480156105a1575f80fd5b506105aa6111a8565b6040516105b79190613874565b60405180910390f35b3480156105cb575f80fd5b506105d46111cd565b6040516105e19190613527565b60405180910390f35b3480156105f5575f80fd5b506105fe6111e0565b60405161060b9190613527565b60405180910390f35b34801561061f575f80fd5b506106286111f3565b604051610635919061384c565b60405180910390f35b348015610649575f80fd5b50610664600480360381019061065f91906139cd565b6111fb565b005b348015610671575f80fd5b5061067a611296565b60405161068791906137c8565b60405180910390f35b34801561069b575f80fd5b506106b660048036038101906106b19190613a14565b6112bb565b005b3480156106c3575f80fd5b506106cc6112cd565b6040516106d991906137c8565b60405180910390f35b3480156106ed575f80fd5b506106f66112f2565b6040516107039190613527565b60405180910390f35b348015610717575f80fd5b50610732600480360381019061072d9190613748565b611304565b60405161073f919061372f565b60405180910390f35b348015610753575f80fd5b5061075c611349565b005b348015610769575f80fd5b5061077261135c565b005b34801561077f575f80fd5b50610788611390565b6040516107959190613527565b60405180910390f35b3480156107a9575f80fd5b506107b26113a3565b6040516107bf9190613527565b60405180910390f35b3480156107d3575f80fd5b506107dc6113b6565b6040516107e99190613527565b60405180910390f35b3480156107fd575f80fd5b506108066113c8565b604051610813919061372f565b60405180910390f35b348015610827575f80fd5b50610842600480360381019061083d9190613a69565b6113ce565b005b34801561084f575f80fd5b50610858611431565b6040516108659190613874565b60405180910390f35b348015610879575f80fd5b50610882611459565b60405161088f91906137c8565b60405180910390f35b3480156108a3575f80fd5b506108be60048036038101906108b99190613a69565b61147e565b005b3480156108cb575f80fd5b506108d46114e0565b6040516108e191906135b0565b60405180910390f35b3480156108f5575f80fd5b506108fe611570565b60405161090b9190613874565b60405180910390f35b34801561091f575f80fd5b5061093a6004803603810190610935919061366e565b611594565b6040516109479190613527565b60405180910390f35b34801561095b575f80fd5b506109646115b6565b604051610971919061372f565b60405180910390f35b348015610985575f80fd5b506109a0600480360381019061099b9190613aa7565b6115bc565b005b3480156109ad575f80fd5b506109b66115e1565b6040516109c7959493929190613ad2565b60405180910390f35b3480156109db575f80fd5b506109e4611604565b6040516109f1919061372f565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613aa7565b61160a565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613b23565b611665565b005b348015610a55575f80fd5b50610a706004803603810190610a6b9190613748565b6116f7565b005b348015610a7d575f80fd5b50610a986004803603810190610a939190613bac565b611742565b604051610aa5919061372f565b60405180910390f35b348015610ab9575f80fd5b50610ac26117c4565b604051610acf919061372f565b60405180910390f35b348015610ae3575f80fd5b50610aec6117ca565b604051610afd959493929190613ad2565b60405180910390f35b348015610b11575f80fd5b50610b1a6117ed565b604051610b27919061372f565b60405180910390f35b348015610b3b575f80fd5b50610b446117f3565b604051610b55959493929190613ad2565b60405180910390f35b348015610b69575f80fd5b50610b846004803603810190610b7f9190613a14565b611816565b005b348015610b91575f80fd5b50610b9a6118d2565b005b348015610ba7575f80fd5b50610bc26004803603810190610bbd9190613a14565b61199e565b005b348015610bcf575f80fd5b50610bea6004803603810190610be59190613748565b611a3f565b005b348015610bf7575f80fd5b50610c00611ac3565b604051610c0d919061372f565b60405180910390f35b348015610c21575f80fd5b50610c3c6004803603810190610c3791906139cd565b611ac9565b005b348015610c49575f80fd5b50610c52611b63565b604051610c5f919061372f565b60405180910390f35b610c70611b69565b6002600a819055505f600d5414610cb3576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a43610cc09190613c17565b600c819055506001600b60036101000a81548160ff02191690831515021790555042600d819055506001600b60016101000a81548160ff021916908315150217905550610d4e307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611bf0565b610d6c610d5a30611304565b3447610d669190613c4a565b30611c02565b505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dc79190613874565b602060405180830381865afa158015610de2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e069190613c91565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e84929190613cbc565b6020604051808303815f875af1158015610ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec49190613cf7565b5060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635af06fed347f0000000000000000000000000000000000000000000000000000000000000000338560235442610f349190613c17565b5f806040518863ffffffff1660e01b8152600401610f5796959493929190613d22565b60206040518083038185885af1158015610f73573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f989190613c91565b602281905550506001600a81905550565b600b60019054906101000a900460ff1681565b606060038054610fcb90613dae565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff790613dae565b80156110425780601f1061101957610100808354040283529160200191611042565b820191905f5260205f20905b81548152906001019060200180831161102557829003601f168201915b5050505050905090565b5f80611056611cb8565b9050611063818585611bf0565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5481565b5f600254905090565b600f602052805f5260405f205f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff16908060010154905083565b6110e7611b69565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80611159611cb8565b9050611166858285611cbf565b611171858585611d51565b60019150509392505050565b5f61118961dead611304565b611191611098565b61119b9190613c4a565b905090565b5f6009905090565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60029054906101000a900460ff1681565b600e60029054906101000a900460ff1681565b5f6001905090565b611203611b69565b5f815190505f5b81811015611291576001600f5f85848151811061122a57611229613dde565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160016101000a81548160ff021916908315150217905550808060010191505061120a565b505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112c3611b69565b8060208190555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611351611b69565b61135a5f611e41565b565b611364611b69565b61138e30611370611cb8565b601a6004015461137f30611304565b6113899190613c4a565b611f04565b565b600e60019054906101000a900460ff1681565b600b60039054906101000a900460ff1681565b600e5f9054906101000a900460ff1681565b601f5481565b6113d6611b69565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160016101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611486611b69565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff0219169083151502179055505050565b6060600480546114ef90613dae565b80601f016020809104026020016040519081016040528092919081815260200182805461151b90613dae565b80156115665780601f1061153d57610100808354040283529160200191611566565b820191905f5260205f20905b81548152906001019060200180831161154957829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8061159e611cb8565b90506115ab818585611d51565b600191505092915050565b600c5481565b6115c4611b69565b80600b60026101000a81548160ff02191690831515021790555050565b601a805f0154908060010154908060020154908060030154908060040154905085565b600d5481565b611612611b69565b80600b5f6101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161165a9190613527565b60405180910390a150565b61166d611b69565b6116756134e3565b86815f018181525050858160200181815250508481606001818152505061169a6134e3565b84815f01818152505083816020018181525050828160600181815250505f600d54036116c8576002806116d1565b6116d061211d565b5b8360400183604001828152508281525050506116ed82826121a1565b5050505050505050565b6116ff611b69565b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60235481565b6015805f0154908060010154908060020154908060030154908060040154905085565b60205481565b6010805f0154908060010154908060020154908060030154908060040154905085565b61181e611b69565b5f600d54148061184d57506103e86005611836611098565b6118409190613e0b565b61184a9190613e79565b81105b8061187657506064600361185f611098565b6118699190613e0b565b6118739190613e79565b81115b156118ad576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806021819055506001600e60026101000a81548160ff02191690831515021790555050565b6118da611b69565b5f600d5414611915576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61192f30611921611431565b61192a30611304565b611f04565b611937611431565b73ffffffffffffffffffffffffffffffffffffffff164760405161195a90613ed6565b5f6040518083038185875af1925050503d805f8114611994576040519150601f19603f3d011682016040523d82523d5f602084013e611999565b606091505b505050565b6119a6611b69565b5f600d5414806119d557506103e860056119be611098565b6119c89190613e0b565b6119d29190613e79565b81105b806119fe5750606460036119e7611098565b6119f19190613e0b565b6119fb9190613e79565b81115b15611a35576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80601f8190555050565b611a47611b69565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ab7575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611aae9190613874565b60405180910390fd5b611ac081611e41565b50565b60215481565b611ad1611b69565b5f815190505f5b81811015611b5e576001600f5f858481518110611af857611af7613dde565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff0219169083151502179055508080600101915050611ad8565b505050565b60225481565b611b71611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611b8f611431565b73ffffffffffffffffffffffffffffffffffffffff1614611bee57611bb2611cb8565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611be59190613874565b60405180910390fd5b565b611bfd8383836001612325565b505050565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198530885f8089426040518863ffffffff1660e01b8152600401611c6896959493929190613f23565b60606040518083038185885af1158015611c84573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ca99190613f82565b50509050809150509392505050565b5f33905090565b5f611cca8484611742565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d4b5781811015611d3c578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611d3393929190613fd2565b60405180910390fd5b611d4a84848484035f612325565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dc1575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611db89190613874565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e31575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611e289190613874565b60405180910390fd5b611e3c8383836124f4565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f54578060025f828254611f489190613c17565b92505081905550612022565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611fdd578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611fd493929190613fd2565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612069578060025f82825403925050819055506120b3565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612110919061372f565b60405180910390a3505050565b5f805f600d544261212e9190613c4a565b90506228de80811115612162576001600e60016101000a81548160ff0219169083151502179055505f80925092505061219d565b62015180811115612194576001600e5f6101000a81548160ff021916908315150217905550600180925092505061219d565b60028092509250505b9091565b81606001518260200151835f01516121b99190613c17565b6121c39190613c17565b8260800181815250505f8260800151036121e6575f826040018181525050612204565b8160400151826080018181516121fc9190613c17565b915081815250505b80606001518160200151825f015161221c9190613c17565b6122269190613c17565b8160800181815250505f816080015103612249575f816040018181525050612267565b80604001518160800181815161225f9190613c17565b915081815250505b600c8260800151118061227e575060118160800151115b156122b5576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160105f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508060155f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612395575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161238c9190613874565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612405575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016123fc9190613874565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156124ee578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516124e5919061372f565b60405180910390a35b50505050565b600b60019054906101000a900460ff1661253a576040517f12f1f92300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090506002600a5414806125fd57506125ce611431565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8061263a575061260b611431565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8061264457505f83145b1561265b57612654858585611f04565b5050612c9f565b600b60039054906101000a900460ff161561274157600c54431015612725575f600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f600182600101546126cc9190613c17565b9050438111156127155743816040517f4a24f3d200000000000000000000000000000000000000000000000000000000815260040161270c929190614007565b60405180910390fd5b4382600101819055505050612740565b5f600b60036101000a81548160ff0219169083151502179055505b5b600e60029054906101000a900460ff1615801561276c5750610258600d546127699190613c17565b42115b156127a757606461277b611098565b6127859190613e79565b6021819055506001600e60026101000a81548160ff0219169083151502179055505b600b60029054906101000a900460ff16156128d3577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156128255750815f0160019054906101000a900460ff16155b80156128325750601f5483115b15612869576040517fa504b6d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f0160019054906101000a900460ff1615801561289b575060215461288e85611304565b846128999190613c17565b115b156128d2576040517ffd42866100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f601a6004015490505f60205482101590508080156128fd5750600b5f9054906101000a900460ff165b801561295557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156129675761296682602054612ca4565b5b835f015f9054906101000a900460ff161580156129915750825f015f9054906101000a900460ff16155b15612c8f575f601090505f60159050600e60019054906101000a900460ff16612b2b575f600d54426129c39190613c4a565b9050600e5f9054906101000a900460ff161580156129e357506201518081115b15612ab3575f836002015484600401546129fd9190613c4a565b90505f8103612a1d575f84600401819055505f8460020181905550612a3d565b600181612a2a9190613c17565b8460040181905550600184600201819055505b5f83600201548460040154612a529190613c4a565b90505f8103612a72575f84600401819055505f8460020181905550612a92565b600181612a7f9190613c17565b8460040181905550600184600201819055505b6001600e5f6101000a81548160ff0219169083151502179055505050612b29565b6228de80811115612b28578260020154836004015f828254612ad59190613c4a565b925050819055508160020154826004015f828254612af39190613c4a565b925050819055505f83600201819055505f82600201819055506001600e60016101000a81548160ff0219169083151502179055505b5b505b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603612bcc57612bc5826040518060a00160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505089613196565b9050612c69565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1603612c6857612c65836040518060a00160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505089613196565b90505b5b5f811115612c8b578088612c7d9190613c4a565b9750612c8a8a3083611f04565b5b5050505b612c9a878787611f04565b505050505b505050565b6002600a819055505f601a90505f6040518060a0016040528085845f015486612ccd9190613e0b565b612cd79190613e79565b815260200185846001015486612ced9190613e0b565b612cf79190613e79565b815260200185846002015486612d0d9190613e0b565b612d179190613e79565b815260200185846003015486612d2d9190613e0b565b612d379190613e79565b81526020018481525090505f6002825f0151612d539190613e79565b90505f81835f0151612d659190613c4a565b90505f8186612d749190613c4a565b90505f612d80826132c5565b90505f6040518060a001604052805f815260200184886020015185612da59190613e0b565b612daf9190613e79565b815260200184886040015185612dc59190613e0b565b612dcf9190613e79565b815260200184886060015185612de59190613e0b565b612def9190613e79565b81526020015f81525090505f81602001511115612e925760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160200151604051612e4f90613ed6565b5f6040518083038185875af1925050503d805f8114612e89576040519150601f19603f3d011682016040523d82523d5f602084013e612e8e565b606091505b5050505b5f81606001511115612f2a5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160600151604051612ee790613ed6565b5f6040518083038185875af1925050503d805f8114612f21576040519150601f19603f3d011682016040523d82523d5f602084013e612f26565b606091505b5050505b5f81604001511115613069575f60028260400151612f489190613e79565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612f8f90613ed6565b5f6040518083038185875af1925050503d805f8114612fc9576040519150601f19603f3d011682016040523d82523d5f602084013e612fce565b606091505b50505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168183604001516130199190613c4a565b60405161302590613ed6565b5f6040518083038185875af1925050503d805f811461305f576040519150601f19603f3d011682016040523d82523d5f602084013e613064565b606091505b505050505b47815f0181815250505f808511801561308457505f825f0151115b156130d85761309985835f015161dead611c02565b90507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f838148685835f01516040516130cf929190614007565b60405180910390a15b80856130e49190613c4a565b875f01516130f29190613c4a565b885f015f8282546131039190613c4a565b925050819055508660200151886001015f8282546131219190613c4a565b925050819055508660400151886002015f82825461313f9190613c4a565b925050819055508660600151886003015f82825461315d9190613c4a565b925050819055508660800151886004015f82825461317b9190613c4a565b9250508190555050505050505050506001600a819055505050565b5f808360800151146132bf5760648360800151836131b49190613e0b565b6131be9190613e79565b90505f601a90508360800151845f0151836131d99190613e0b565b6131e39190613e79565b815f015f8282546131f49190613c17565b9250508190555083608001518460200151836132109190613e0b565b61321a9190613e79565b816001015f82825461322c9190613c17565b9250508190555083608001518460400151836132489190613e0b565b6132529190613e79565b816002015f8282546132649190613c17565b9250508190555083608001518460600151836132809190613e0b565b61328a9190613e79565b816003015f82825461329c9190613c17565b9250508190555081816004015f8282546132b69190613c17565b92505081905550505b92915050565b5f804790505f600267ffffffffffffffff8111156132e6576132e5613891565b5b6040519080825280602002602001820160405280156133145781602001602082028036833780820191505090505b50905030815f8151811061332b5761332a613dde565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133f29190614042565b8160018151811061340657613405613dde565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8430426040518663ffffffff1660e01b81526004016134a1959493929190614124565b5f604051808303815f87803b1580156134b8575f80fd5b505af11580156134ca573d5f803e3d5ffd5b5050505081476134da9190613c4a565b92505050919050565b6040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b5f8115159050919050565b6135218161350d565b82525050565b5f60208201905061353a5f830184613518565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61358282613540565b61358c818561354a565b935061359c81856020860161355a565b6135a581613568565b840191505092915050565b5f6020820190508181035f8301526135c88184613578565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61360a826135e1565b9050919050565b61361a81613600565b8114613624575f80fd5b50565b5f8135905061363581613611565b92915050565b5f819050919050565b61364d8161363b565b8114613657575f80fd5b50565b5f8135905061366881613644565b92915050565b5f8060408385031215613684576136836135d9565b5b5f61369185828601613627565b92505060206136a28582860161365a565b9150509250929050565b5f819050919050565b5f6136cf6136ca6136c5846135e1565b6136ac565b6135e1565b9050919050565b5f6136e0826136b5565b9050919050565b5f6136f1826136d6565b9050919050565b613701816136e7565b82525050565b5f60208201905061371a5f8301846136f8565b92915050565b6137298161363b565b82525050565b5f6020820190506137425f830184613720565b92915050565b5f6020828403121561375d5761375c6135d9565b5b5f61376a84828501613627565b91505092915050565b5f6060820190506137865f830186613518565b6137936020830185613518565b6137a06040830184613720565b949350505050565b5f6137b2826135e1565b9050919050565b6137c2816137a8565b82525050565b5f6020820190506137db5f8301846137b9565b92915050565b5f805f606084860312156137f8576137f76135d9565b5b5f61380586828701613627565b935050602061381686828701613627565b92505060406138278682870161365a565b9150509250925092565b5f60ff82169050919050565b61384681613831565b82525050565b5f60208201905061385f5f83018461383d565b92915050565b61386e81613600565b82525050565b5f6020820190506138875f830184613865565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6138c782613568565b810181811067ffffffffffffffff821117156138e6576138e5613891565b5b80604052505050565b5f6138f86135d0565b905061390482826138be565b919050565b5f67ffffffffffffffff82111561392357613922613891565b5b602082029050602081019050919050565b5f80fd5b5f61394a61394584613909565b6138ef565b9050808382526020820190506020840283018581111561396d5761396c613934565b5b835b8181101561399657806139828882613627565b84526020840193505060208101905061396f565b5050509392505050565b5f82601f8301126139b4576139b361388d565b5b81356139c4848260208601613938565b91505092915050565b5f602082840312156139e2576139e16135d9565b5b5f82013567ffffffffffffffff8111156139ff576139fe6135dd565b5b613a0b848285016139a0565b91505092915050565b5f60208284031215613a2957613a286135d9565b5b5f613a368482850161365a565b91505092915050565b613a488161350d565b8114613a52575f80fd5b50565b5f81359050613a6381613a3f565b92915050565b5f8060408385031215613a7f57613a7e6135d9565b5b5f613a8c85828601613627565b9250506020613a9d85828601613a55565b9150509250929050565b5f60208284031215613abc57613abb6135d9565b5b5f613ac984828501613a55565b91505092915050565b5f60a082019050613ae55f830188613720565b613af26020830187613720565b613aff6040830186613720565b613b0c6060830185613720565b613b196080830184613720565b9695505050505050565b5f805f805f8060c08789031215613b3d57613b3c6135d9565b5b5f613b4a89828a0161365a565b9650506020613b5b89828a0161365a565b9550506040613b6c89828a0161365a565b9450506060613b7d89828a0161365a565b9350506080613b8e89828a0161365a565b92505060a0613b9f89828a0161365a565b9150509295509295509295565b5f8060408385031215613bc257613bc16135d9565b5b5f613bcf85828601613627565b9250506020613be085828601613627565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c218261363b565b9150613c2c8361363b565b9250828201905080821115613c4457613c43613bea565b5b92915050565b5f613c548261363b565b9150613c5f8361363b565b9250828203905081811115613c7757613c76613bea565b5b92915050565b5f81519050613c8b81613644565b92915050565b5f60208284031215613ca657613ca56135d9565b5b5f613cb384828501613c7d565b91505092915050565b5f604082019050613ccf5f830185613865565b613cdc6020830184613720565b9392505050565b5f81519050613cf181613a3f565b92915050565b5f60208284031215613d0c57613d0b6135d9565b5b5f613d1984828501613ce3565b91505092915050565b5f60c082019050613d355f830189613865565b613d426020830188613865565b613d4f6040830187613720565b613d5c6060830186613720565b613d696080830185613518565b613d7660a0830184613865565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613dc557607f821691505b602082108103613dd857613dd7613d81565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613e158261363b565b9150613e208361363b565b9250828202613e2e8161363b565b91508282048414831517613e4557613e44613bea565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e838261363b565b9150613e8e8361363b565b925082613e9e57613e9d613e4c565b5b828204905092915050565b5f81905092915050565b50565b5f613ec15f83613ea9565b9150613ecc82613eb3565b5f82019050919050565b5f613ee082613eb6565b9150819050919050565b5f819050919050565b5f613f0d613f08613f0384613eea565b6136ac565b61363b565b9050919050565b613f1d81613ef3565b82525050565b5f60c082019050613f365f830189613865565b613f436020830188613720565b613f506040830187613f14565b613f5d6060830186613f14565b613f6a6080830185613865565b613f7760a0830184613720565b979650505050505050565b5f805f60608486031215613f9957613f986135d9565b5b5f613fa686828701613c7d565b9350506020613fb786828701613c7d565b9250506040613fc886828701613c7d565b9150509250925092565b5f606082019050613fe55f830186613865565b613ff26020830185613720565b613fff6040830184613720565b949350505050565b5f60408201905061401a5f830185613720565b6140276020830184613720565b9392505050565b5f8151905061403c81613611565b92915050565b5f60208284031215614057576140566135d9565b5b5f6140648482850161402e565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61409f81613600565b82525050565b5f6140b08383614096565b60208301905092915050565b5f602082019050919050565b5f6140d28261406d565b6140dc8185614077565b93506140e783614087565b805f5b838110156141175781516140fe88826140a5565b9750614109836140bc565b9250506001810190506140ea565b5085935050505092915050565b5f60a0820190506141375f830188613720565b6141446020830187613f14565b818103604083015261415681866140c8565b90506141656060830185613865565b6141726080830184613720565b969550505050505056fea26469706673582212208748928aaeba31f4d2fc3f91d47950f7401630ee6d55c2fc2eb6aff9e4fa35dd64736f6c6343000819003300000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000001e1338000000000000000000000000074ac42396096719091dbb2f5d8bced341363f9c2000000000000000000000000983514ad777f8a9cbeaf5f0fce04bbe6f80932a4000000000000000000000000e2fe530c047f2d85298b07d9333c05737f1435fb0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000e9b4d32f829951a3ce145d2caa84cf66af56ca5e000000000000000000000000377e168af6a06075423aede50856de177efaac3e0000000000000000000000000000000000000000000000000000000000000008536d6172742041490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005534d415254000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610610353575f3560e01c806388cda873116101c5578063cb29813c116100f6578063ea1644d511610094578063f2fde38b1161006e578063f2fde38b14610bc4578063f8b45b0514610bec578063f8f9892814610c16578063f954662114610c3e5761035a565b8063ea1644d514610b5e578063ea8a1af014610b86578063ec28438a14610b9c5761035a565b8063de35eb24116100d0578063de35eb2414610aae578063e0f3ccf514610ad8578063e2f4560514610b06578063e4748b9e14610b305761035a565b8063cb29813c14610a22578063d0a5eb4e14610a4a578063dd62ed3e14610a725761035a565b8063a8aa1b3111610163578063baae06661161013d578063baae06661461097a578063bee0d6ad146109a2578063bf56b371146109d0578063c49b9a80146109fa5761035a565b8063a8aa1b31146108ea578063a9059cbb14610914578063acb52a98146109505761035a565b80638da5cb5b1161019f5780638da5cb5b146108445780638ea5220f1461086e5780638ebfc7961461089857806395d89b41146108c05761035a565b806388cda873146107c85780638c0b5e22146107f25780638d7a8ba71461081c5761035a565b80633675f29b1161029f57806367dd01791161023d578063715018a611610217578063715018a6146107485780638183b3c81461075e578063838420131461077457806387f86db71461079e5761035a565b806367dd0179146106b85780636ddd1713146106e257806370a082311461070c5761035a565b806354fd4d501161027957806354fd4d50146106145780635ace11221461063e5780636101f1f8146106665780636402511e146106905761035a565b80633675f29b1461059657806344de2e4c146105c05780634a829e79146105ea5761035a565b806318160ddd1161030c57806323b62b75116102e657806323b62b75146104dc57806323b872dd146105065780632b112e4914610542578063313ce5671461056c5761035a565b806318160ddd1461044c5780631959a002146104765780631f53ac02146104b45761035a565b806301339c211461035e578063064a59d01461036857806306fdde0314610392578063095ea7b3146103bc5780631694505e146103f85780631732cded146104225761035a565b3661035a57005b5f80fd5b610366610c68565b005b348015610373575f80fd5b5061037c610fa9565b6040516103899190613527565b60405180910390f35b34801561039d575f80fd5b506103a6610fbc565b6040516103b391906135b0565b60405180910390f35b3480156103c7575f80fd5b506103e260048036038101906103dd919061366e565b61104c565b6040516103ef9190613527565b60405180910390f35b348015610403575f80fd5b5061040c61106e565b6040516104199190613707565b60405180910390f35b34801561042d575f80fd5b50610436611092565b604051610443919061372f565b60405180910390f35b348015610457575f80fd5b50610460611098565b60405161046d919061372f565b60405180910390f35b348015610481575f80fd5b5061049c60048036038101906104979190613748565b6110a1565b6040516104ab93929190613773565b60405180910390f35b3480156104bf575f80fd5b506104da60048036038101906104d59190613748565b6110df565b005b3480156104e7575f80fd5b506104f061112a565b6040516104fd91906137c8565b60405180910390f35b348015610511575f80fd5b5061052c600480360381019061052791906137e1565b61114f565b6040516105399190613527565b60405180910390f35b34801561054d575f80fd5b5061055661117d565b604051610563919061372f565b60405180910390f35b348015610577575f80fd5b506105806111a0565b60405161058d919061384c565b60405180910390f35b3480156105a1575f80fd5b506105aa6111a8565b6040516105b79190613874565b60405180910390f35b3480156105cb575f80fd5b506105d46111cd565b6040516105e19190613527565b60405180910390f35b3480156105f5575f80fd5b506105fe6111e0565b60405161060b9190613527565b60405180910390f35b34801561061f575f80fd5b506106286111f3565b604051610635919061384c565b60405180910390f35b348015610649575f80fd5b50610664600480360381019061065f91906139cd565b6111fb565b005b348015610671575f80fd5b5061067a611296565b60405161068791906137c8565b60405180910390f35b34801561069b575f80fd5b506106b660048036038101906106b19190613a14565b6112bb565b005b3480156106c3575f80fd5b506106cc6112cd565b6040516106d991906137c8565b60405180910390f35b3480156106ed575f80fd5b506106f66112f2565b6040516107039190613527565b60405180910390f35b348015610717575f80fd5b50610732600480360381019061072d9190613748565b611304565b60405161073f919061372f565b60405180910390f35b348015610753575f80fd5b5061075c611349565b005b348015610769575f80fd5b5061077261135c565b005b34801561077f575f80fd5b50610788611390565b6040516107959190613527565b60405180910390f35b3480156107a9575f80fd5b506107b26113a3565b6040516107bf9190613527565b60405180910390f35b3480156107d3575f80fd5b506107dc6113b6565b6040516107e99190613527565b60405180910390f35b3480156107fd575f80fd5b506108066113c8565b604051610813919061372f565b60405180910390f35b348015610827575f80fd5b50610842600480360381019061083d9190613a69565b6113ce565b005b34801561084f575f80fd5b50610858611431565b6040516108659190613874565b60405180910390f35b348015610879575f80fd5b50610882611459565b60405161088f91906137c8565b60405180910390f35b3480156108a3575f80fd5b506108be60048036038101906108b99190613a69565b61147e565b005b3480156108cb575f80fd5b506108d46114e0565b6040516108e191906135b0565b60405180910390f35b3480156108f5575f80fd5b506108fe611570565b60405161090b9190613874565b60405180910390f35b34801561091f575f80fd5b5061093a6004803603810190610935919061366e565b611594565b6040516109479190613527565b60405180910390f35b34801561095b575f80fd5b506109646115b6565b604051610971919061372f565b60405180910390f35b348015610985575f80fd5b506109a0600480360381019061099b9190613aa7565b6115bc565b005b3480156109ad575f80fd5b506109b66115e1565b6040516109c7959493929190613ad2565b60405180910390f35b3480156109db575f80fd5b506109e4611604565b6040516109f1919061372f565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613aa7565b61160a565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613b23565b611665565b005b348015610a55575f80fd5b50610a706004803603810190610a6b9190613748565b6116f7565b005b348015610a7d575f80fd5b50610a986004803603810190610a939190613bac565b611742565b604051610aa5919061372f565b60405180910390f35b348015610ab9575f80fd5b50610ac26117c4565b604051610acf919061372f565b60405180910390f35b348015610ae3575f80fd5b50610aec6117ca565b604051610afd959493929190613ad2565b60405180910390f35b348015610b11575f80fd5b50610b1a6117ed565b604051610b27919061372f565b60405180910390f35b348015610b3b575f80fd5b50610b446117f3565b604051610b55959493929190613ad2565b60405180910390f35b348015610b69575f80fd5b50610b846004803603810190610b7f9190613a14565b611816565b005b348015610b91575f80fd5b50610b9a6118d2565b005b348015610ba7575f80fd5b50610bc26004803603810190610bbd9190613a14565b61199e565b005b348015610bcf575f80fd5b50610bea6004803603810190610be59190613748565b611a3f565b005b348015610bf7575f80fd5b50610c00611ac3565b604051610c0d919061372f565b60405180910390f35b348015610c21575f80fd5b50610c3c6004803603810190610c3791906139cd565b611ac9565b005b348015610c49575f80fd5b50610c52611b63565b604051610c5f919061372f565b60405180910390f35b610c70611b69565b6002600a819055505f600d5414610cb3576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a43610cc09190613c17565b600c819055506001600b60036101000a81548160ff02191690831515021790555042600d819055506001600b60016101000a81548160ff021916908315150217905550610d4e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611bf0565b610d6c610d5a30611304565b3447610d669190613c4a565b30611c02565b505f7f00000000000000000000000039014425c527f4aa6fea6335db37be2d7b9cccf873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dc79190613874565b602060405180830381865afa158015610de2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e069190613c91565b90507f00000000000000000000000039014425c527f4aa6fea6335db37be2d7b9cccf873ffffffffffffffffffffffffffffffffffffffff1663095ea7b360245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e84929190613cbc565b6020604051808303815f875af1158015610ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec49190613cf7565b5060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635af06fed347f00000000000000000000000039014425c527f4aa6fea6335db37be2d7b9cccf8338560235442610f349190613c17565b5f806040518863ffffffff1660e01b8152600401610f5796959493929190613d22565b60206040518083038185885af1158015610f73573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f989190613c91565b602281905550506001600a81905550565b600b60019054906101000a900460ff1681565b606060038054610fcb90613dae565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff790613dae565b80156110425780601f1061101957610100808354040283529160200191611042565b820191905f5260205f20905b81548152906001019060200180831161102557829003601f168201915b5050505050905090565b5f80611056611cb8565b9050611063818585611bf0565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600a5481565b5f600254905090565b600f602052805f5260405f205f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff16908060010154905083565b6110e7611b69565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80611159611cb8565b9050611166858285611cbf565b611171858585611d51565b60019150509392505050565b5f61118961dead611304565b611191611098565b61119b9190613c4a565b905090565b5f6009905090565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60029054906101000a900460ff1681565b600e60029054906101000a900460ff1681565b5f6001905090565b611203611b69565b5f815190505f5b81811015611291576001600f5f85848151811061122a57611229613dde565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160016101000a81548160ff021916908315150217905550808060010191505061120a565b505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112c3611b69565b8060208190555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611351611b69565b61135a5f611e41565b565b611364611b69565b61138e30611370611cb8565b601a6004015461137f30611304565b6113899190613c4a565b611f04565b565b600e60019054906101000a900460ff1681565b600b60039054906101000a900460ff1681565b600e5f9054906101000a900460ff1681565b601f5481565b6113d6611b69565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160016101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611486611b69565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff0219169083151502179055505050565b6060600480546114ef90613dae565b80601f016020809104026020016040519081016040528092919081815260200182805461151b90613dae565b80156115665780601f1061153d57610100808354040283529160200191611566565b820191905f5260205f20905b81548152906001019060200180831161154957829003601f168201915b5050505050905090565b7f00000000000000000000000039014425c527f4aa6fea6335db37be2d7b9cccf881565b5f8061159e611cb8565b90506115ab818585611d51565b600191505092915050565b600c5481565b6115c4611b69565b80600b60026101000a81548160ff02191690831515021790555050565b601a805f0154908060010154908060020154908060030154908060040154905085565b600d5481565b611612611b69565b80600b5f6101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161165a9190613527565b60405180910390a150565b61166d611b69565b6116756134e3565b86815f018181525050858160200181815250508481606001818152505061169a6134e3565b84815f01818152505083816020018181525050828160600181815250505f600d54036116c8576002806116d1565b6116d061211d565b5b8360400183604001828152508281525050506116ed82826121a1565b5050505050505050565b6116ff611b69565b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60235481565b6015805f0154908060010154908060020154908060030154908060040154905085565b60205481565b6010805f0154908060010154908060020154908060030154908060040154905085565b61181e611b69565b5f600d54148061184d57506103e86005611836611098565b6118409190613e0b565b61184a9190613e79565b81105b8061187657506064600361185f611098565b6118699190613e0b565b6118739190613e79565b81115b156118ad576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806021819055506001600e60026101000a81548160ff02191690831515021790555050565b6118da611b69565b5f600d5414611915576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61192f30611921611431565b61192a30611304565b611f04565b611937611431565b73ffffffffffffffffffffffffffffffffffffffff164760405161195a90613ed6565b5f6040518083038185875af1925050503d805f8114611994576040519150601f19603f3d011682016040523d82523d5f602084013e611999565b606091505b505050565b6119a6611b69565b5f600d5414806119d557506103e860056119be611098565b6119c89190613e0b565b6119d29190613e79565b81105b806119fe5750606460036119e7611098565b6119f19190613e0b565b6119fb9190613e79565b81115b15611a35576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80601f8190555050565b611a47611b69565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ab7575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611aae9190613874565b60405180910390fd5b611ac081611e41565b50565b60215481565b611ad1611b69565b5f815190505f5b81811015611b5e576001600f5f858481518110611af857611af7613dde565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff0219169083151502179055508080600101915050611ad8565b505050565b60225481565b611b71611cb8565b73ffffffffffffffffffffffffffffffffffffffff16611b8f611431565b73ffffffffffffffffffffffffffffffffffffffff1614611bee57611bb2611cb8565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611be59190613874565b60405180910390fd5b565b611bfd8383836001612325565b505050565b5f807f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198530885f8089426040518863ffffffff1660e01b8152600401611c6896959493929190613f23565b60606040518083038185885af1158015611c84573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ca99190613f82565b50509050809150509392505050565b5f33905090565b5f611cca8484611742565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d4b5781811015611d3c578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611d3393929190613fd2565b60405180910390fd5b611d4a84848484035f612325565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dc1575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611db89190613874565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e31575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611e289190613874565b60405180910390fd5b611e3c8383836124f4565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f54578060025f828254611f489190613c17565b92505081905550612022565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611fdd578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611fd493929190613fd2565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612069578060025f82825403925050819055506120b3565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612110919061372f565b60405180910390a3505050565b5f805f600d544261212e9190613c4a565b90506228de80811115612162576001600e60016101000a81548160ff0219169083151502179055505f80925092505061219d565b62015180811115612194576001600e5f6101000a81548160ff021916908315150217905550600180925092505061219d565b60028092509250505b9091565b81606001518260200151835f01516121b99190613c17565b6121c39190613c17565b8260800181815250505f8260800151036121e6575f826040018181525050612204565b8160400151826080018181516121fc9190613c17565b915081815250505b80606001518160200151825f015161221c9190613c17565b6122269190613c17565b8160800181815250505f816080015103612249575f816040018181525050612267565b80604001518160800181815161225f9190613c17565b915081815250505b600c8260800151118061227e575060118160800151115b156122b5576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160105f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508060155f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612395575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161238c9190613874565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612405575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016123fc9190613874565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156124ee578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516124e5919061372f565b60405180910390a35b50505050565b600b60019054906101000a900460ff1661253a576040517f12f1f92300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090506002600a5414806125fd57506125ce611431565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8061263a575061260b611431565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8061264457505f83145b1561265b57612654858585611f04565b5050612c9f565b600b60039054906101000a900460ff161561274157600c54431015612725575f600f5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f600182600101546126cc9190613c17565b9050438111156127155743816040517f4a24f3d200000000000000000000000000000000000000000000000000000000815260040161270c929190614007565b60405180910390fd5b4382600101819055505050612740565b5f600b60036101000a81548160ff0219169083151502179055505b5b600e60029054906101000a900460ff1615801561276c5750610258600d546127699190613c17565b42115b156127a757606461277b611098565b6127859190613e79565b6021819055506001600e60026101000a81548160ff0219169083151502179055505b600b60029054906101000a900460ff16156128d3577f00000000000000000000000039014425c527f4aa6fea6335db37be2d7b9cccf873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156128255750815f0160019054906101000a900460ff16155b80156128325750601f5483115b15612869576040517fa504b6d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f0160019054906101000a900460ff1615801561289b575060215461288e85611304565b846128999190613c17565b115b156128d2576040517ffd42866100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f601a6004015490505f60205482101590508080156128fd5750600b5f9054906101000a900460ff165b801561295557507f00000000000000000000000039014425c527f4aa6fea6335db37be2d7b9cccf873ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156129675761296682602054612ca4565b5b835f015f9054906101000a900460ff161580156129915750825f015f9054906101000a900460ff16155b15612c8f575f601090505f60159050600e60019054906101000a900460ff16612b2b575f600d54426129c39190613c4a565b9050600e5f9054906101000a900460ff161580156129e357506201518081115b15612ab3575f836002015484600401546129fd9190613c4a565b90505f8103612a1d575f84600401819055505f8460020181905550612a3d565b600181612a2a9190613c17565b8460040181905550600184600201819055505b5f83600201548460040154612a529190613c4a565b90505f8103612a72575f84600401819055505f8460020181905550612a92565b600181612a7f9190613c17565b8460040181905550600184600201819055505b6001600e5f6101000a81548160ff0219169083151502179055505050612b29565b6228de80811115612b28578260020154836004015f828254612ad59190613c4a565b925050819055508160020154826004015f828254612af39190613c4a565b925050819055505f83600201819055505f82600201819055506001600e60016101000a81548160ff0219169083151502179055505b5b505b5f7f00000000000000000000000039014425c527f4aa6fea6335db37be2d7b9cccf873ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603612bcc57612bc5826040518060a00160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505089613196565b9050612c69565b7f00000000000000000000000039014425c527f4aa6fea6335db37be2d7b9cccf873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1603612c6857612c65836040518060a00160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505089613196565b90505b5b5f811115612c8b578088612c7d9190613c4a565b9750612c8a8a3083611f04565b5b5050505b612c9a878787611f04565b505050505b505050565b6002600a819055505f601a90505f6040518060a0016040528085845f015486612ccd9190613e0b565b612cd79190613e79565b815260200185846001015486612ced9190613e0b565b612cf79190613e79565b815260200185846002015486612d0d9190613e0b565b612d179190613e79565b815260200185846003015486612d2d9190613e0b565b612d379190613e79565b81526020018481525090505f6002825f0151612d539190613e79565b90505f81835f0151612d659190613c4a565b90505f8186612d749190613c4a565b90505f612d80826132c5565b90505f6040518060a001604052805f815260200184886020015185612da59190613e0b565b612daf9190613e79565b815260200184886040015185612dc59190613e0b565b612dcf9190613e79565b815260200184886060015185612de59190613e0b565b612def9190613e79565b81526020015f81525090505f81602001511115612e925760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160200151604051612e4f90613ed6565b5f6040518083038185875af1925050503d805f8114612e89576040519150601f19603f3d011682016040523d82523d5f602084013e612e8e565b606091505b5050505b5f81606001511115612f2a5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160600151604051612ee790613ed6565b5f6040518083038185875af1925050503d805f8114612f21576040519150601f19603f3d011682016040523d82523d5f602084013e612f26565b606091505b5050505b5f81604001511115613069575f60028260400151612f489190613e79565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612f8f90613ed6565b5f6040518083038185875af1925050503d805f8114612fc9576040519150601f19603f3d011682016040523d82523d5f602084013e612fce565b606091505b50505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168183604001516130199190613c4a565b60405161302590613ed6565b5f6040518083038185875af1925050503d805f811461305f576040519150601f19603f3d011682016040523d82523d5f602084013e613064565b606091505b505050505b47815f0181815250505f808511801561308457505f825f0151115b156130d85761309985835f015161dead611c02565b90507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f838148685835f01516040516130cf929190614007565b60405180910390a15b80856130e49190613c4a565b875f01516130f29190613c4a565b885f015f8282546131039190613c4a565b925050819055508660200151886001015f8282546131219190613c4a565b925050819055508660400151886002015f82825461313f9190613c4a565b925050819055508660600151886003015f82825461315d9190613c4a565b925050819055508660800151886004015f82825461317b9190613c4a565b9250508190555050505050505050506001600a819055505050565b5f808360800151146132bf5760648360800151836131b49190613e0b565b6131be9190613e79565b90505f601a90508360800151845f0151836131d99190613e0b565b6131e39190613e79565b815f015f8282546131f49190613c17565b9250508190555083608001518460200151836132109190613e0b565b61321a9190613e79565b816001015f82825461322c9190613c17565b9250508190555083608001518460400151836132489190613e0b565b6132529190613e79565b816002015f8282546132649190613c17565b9250508190555083608001518460600151836132809190613e0b565b61328a9190613e79565b816003015f82825461329c9190613c17565b9250508190555081816004015f8282546132b69190613c17565b92505081905550505b92915050565b5f804790505f600267ffffffffffffffff8111156132e6576132e5613891565b5b6040519080825280602002602001820160405280156133145781602001602082028036833780820191505090505b50905030815f8151811061332b5761332a613dde565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133f29190614042565b8160018151811061340657613405613dde565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8430426040518663ffffffff1660e01b81526004016134a1959493929190614124565b5f604051808303815f87803b1580156134b8575f80fd5b505af11580156134ca573d5f803e3d5ffd5b5050505081476134da9190613c4a565b92505050919050565b6040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b5f8115159050919050565b6135218161350d565b82525050565b5f60208201905061353a5f830184613518565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61358282613540565b61358c818561354a565b935061359c81856020860161355a565b6135a581613568565b840191505092915050565b5f6020820190508181035f8301526135c88184613578565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61360a826135e1565b9050919050565b61361a81613600565b8114613624575f80fd5b50565b5f8135905061363581613611565b92915050565b5f819050919050565b61364d8161363b565b8114613657575f80fd5b50565b5f8135905061366881613644565b92915050565b5f8060408385031215613684576136836135d9565b5b5f61369185828601613627565b92505060206136a28582860161365a565b9150509250929050565b5f819050919050565b5f6136cf6136ca6136c5846135e1565b6136ac565b6135e1565b9050919050565b5f6136e0826136b5565b9050919050565b5f6136f1826136d6565b9050919050565b613701816136e7565b82525050565b5f60208201905061371a5f8301846136f8565b92915050565b6137298161363b565b82525050565b5f6020820190506137425f830184613720565b92915050565b5f6020828403121561375d5761375c6135d9565b5b5f61376a84828501613627565b91505092915050565b5f6060820190506137865f830186613518565b6137936020830185613518565b6137a06040830184613720565b949350505050565b5f6137b2826135e1565b9050919050565b6137c2816137a8565b82525050565b5f6020820190506137db5f8301846137b9565b92915050565b5f805f606084860312156137f8576137f76135d9565b5b5f61380586828701613627565b935050602061381686828701613627565b92505060406138278682870161365a565b9150509250925092565b5f60ff82169050919050565b61384681613831565b82525050565b5f60208201905061385f5f83018461383d565b92915050565b61386e81613600565b82525050565b5f6020820190506138875f830184613865565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6138c782613568565b810181811067ffffffffffffffff821117156138e6576138e5613891565b5b80604052505050565b5f6138f86135d0565b905061390482826138be565b919050565b5f67ffffffffffffffff82111561392357613922613891565b5b602082029050602081019050919050565b5f80fd5b5f61394a61394584613909565b6138ef565b9050808382526020820190506020840283018581111561396d5761396c613934565b5b835b8181101561399657806139828882613627565b84526020840193505060208101905061396f565b5050509392505050565b5f82601f8301126139b4576139b361388d565b5b81356139c4848260208601613938565b91505092915050565b5f602082840312156139e2576139e16135d9565b5b5f82013567ffffffffffffffff8111156139ff576139fe6135dd565b5b613a0b848285016139a0565b91505092915050565b5f60208284031215613a2957613a286135d9565b5b5f613a368482850161365a565b91505092915050565b613a488161350d565b8114613a52575f80fd5b50565b5f81359050613a6381613a3f565b92915050565b5f8060408385031215613a7f57613a7e6135d9565b5b5f613a8c85828601613627565b9250506020613a9d85828601613a55565b9150509250929050565b5f60208284031215613abc57613abb6135d9565b5b5f613ac984828501613a55565b91505092915050565b5f60a082019050613ae55f830188613720565b613af26020830187613720565b613aff6040830186613720565b613b0c6060830185613720565b613b196080830184613720565b9695505050505050565b5f805f805f8060c08789031215613b3d57613b3c6135d9565b5b5f613b4a89828a0161365a565b9650506020613b5b89828a0161365a565b9550506040613b6c89828a0161365a565b9450506060613b7d89828a0161365a565b9350506080613b8e89828a0161365a565b92505060a0613b9f89828a0161365a565b9150509295509295509295565b5f8060408385031215613bc257613bc16135d9565b5b5f613bcf85828601613627565b9250506020613be085828601613627565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c218261363b565b9150613c2c8361363b565b9250828201905080821115613c4457613c43613bea565b5b92915050565b5f613c548261363b565b9150613c5f8361363b565b9250828203905081811115613c7757613c76613bea565b5b92915050565b5f81519050613c8b81613644565b92915050565b5f60208284031215613ca657613ca56135d9565b5b5f613cb384828501613c7d565b91505092915050565b5f604082019050613ccf5f830185613865565b613cdc6020830184613720565b9392505050565b5f81519050613cf181613a3f565b92915050565b5f60208284031215613d0c57613d0b6135d9565b5b5f613d1984828501613ce3565b91505092915050565b5f60c082019050613d355f830189613865565b613d426020830188613865565b613d4f6040830187613720565b613d5c6060830186613720565b613d696080830185613518565b613d7660a0830184613865565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613dc557607f821691505b602082108103613dd857613dd7613d81565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613e158261363b565b9150613e208361363b565b9250828202613e2e8161363b565b91508282048414831517613e4557613e44613bea565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e838261363b565b9150613e8e8361363b565b925082613e9e57613e9d613e4c565b5b828204905092915050565b5f81905092915050565b50565b5f613ec15f83613ea9565b9150613ecc82613eb3565b5f82019050919050565b5f613ee082613eb6565b9150819050919050565b5f819050919050565b5f613f0d613f08613f0384613eea565b6136ac565b61363b565b9050919050565b613f1d81613ef3565b82525050565b5f60c082019050613f365f830189613865565b613f436020830188613720565b613f506040830187613f14565b613f5d6060830186613f14565b613f6a6080830185613865565b613f7760a0830184613720565b979650505050505050565b5f805f60608486031215613f9957613f986135d9565b5b5f613fa686828701613c7d565b9350506020613fb786828701613c7d565b9250506040613fc886828701613c7d565b9150509250925092565b5f606082019050613fe55f830186613865565b613ff26020830185613720565b613fff6040830184613720565b949350505050565b5f60408201905061401a5f830185613720565b6140276020830184613720565b9392505050565b5f8151905061403c81613611565b92915050565b5f60208284031215614057576140566135d9565b5b5f6140648482850161402e565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61409f81613600565b82525050565b5f6140b08383614096565b60208301905092915050565b5f602082019050919050565b5f6140d28261406d565b6140dc8185614077565b93506140e783614087565b805f5b838110156141175781516140fe88826140a5565b9750614109836140bc565b9250506001810190506140ea565b5085935050505092915050565b5f60a0820190506141375f830188613720565b6141446020830187613f14565b818103604083015261415681866140c8565b90506141656060830185613865565b6141726080830184613720565b969550505050505056fea26469706673582212208748928aaeba31f4d2fc3f91d47950f7401630ee6d55c2fc2eb6aff9e4fa35dd64736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000001e1338000000000000000000000000074ac42396096719091dbb2f5d8bced341363f9c2000000000000000000000000983514ad777f8a9cbeaf5f0fce04bbe6f80932a4000000000000000000000000e2fe530c047f2d85298b07d9333c05737f1435fb0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000e9b4d32f829951a3ce145d2caa84cf66af56ca5e000000000000000000000000377e168af6a06075423aede50856de177efaac3e0000000000000000000000000000000000000000000000000000000000000008536d6172742041490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005534d415254000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Smart AI
Arg [1] : _symbol (string): SMART
Arg [2] : _totalSupply (uint256): 1000000000000000
Arg [3] : _buyFees (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [4] : _sellFees (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [5] : _percentToLP (uint256): 80
Arg [6] : _lpLockDuration (uint256): 31536000
Arg [7] : _mainWallet (address): 0x74Ac42396096719091dbB2f5d8Bced341363f9c2
Arg [8] : _devWallet (address): 0x983514Ad777f8A9cbeAF5F0fCe04bBE6F80932a4
Arg [9] : _addresses (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
25 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000002a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000002e0
Arg [2] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [11] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000050
Arg [14] : 0000000000000000000000000000000000000000000000000000000001e13380
Arg [15] : 00000000000000000000000074ac42396096719091dbb2f5d8bced341363f9c2
Arg [16] : 000000000000000000000000983514ad777f8a9cbeaf5f0fce04bbe6f80932a4
Arg [17] : 000000000000000000000000e2fe530c047f2d85298b07d9333c05737f1435fb
Arg [18] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [19] : 000000000000000000000000e9b4d32f829951a3ce145d2caa84cf66af56ca5e
Arg [20] : 000000000000000000000000377e168af6a06075423aede50856de177efaac3e
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [22] : 536d617274204149000000000000000000000000000000000000000000000000
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [24] : 534d415254000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
32952:16283:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36017:870;;;:::i;:::-;;33350:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22462:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24755:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33017:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33279:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23564:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33647:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;48097:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33113:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25523:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48781:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48921:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33965:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33385:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33610:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49155:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47856:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33194:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48504:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33235:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33313:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23726:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16075:103;;;;;;;;;;;;;:::i;:::-;;48618:155;;;;;;;;;;;;;:::i;:::-;;33574:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33431:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33540:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33795:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47716:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15400:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33153:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47351:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22672:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33075:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24049:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33467:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47232:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33762:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;33506:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48333:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44743:644;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48214:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24294:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33929:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33730:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;33828:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33701:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;46855:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36895:328;;;;;;;;;;;;;:::i;:::-;;46532:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16333:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33868:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47483:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33901:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36017:870;15286:13;:11;:13::i;:::-;49066:1:::1;49055:8;:12;;;;36103:1:::2;36089:10;;:15;36085:77;;36128:22;;;;;;;;;;;;;;36085:77;36236:2;36221:12;:17;;;;:::i;:::-;36201;:37;;;;36269:4;36249:17;;:24;;;;;;;;;;;;;;;;;;36297:15;36284:10;:28;;;;36342:4;36323:16;;:23;;;;;;;;;;;;;;;;;;36385:68;36402:4;36417:15;36435:17;36385:8;:68::i;:::-;36464:88;36477:24;36495:4;36477:9;:24::i;:::-;36527:9;36503:21;:33;;;;:::i;:::-;36546:4;36464:12;:88::i;:::-;;36592:17;36619:4;36612:22;;;36643:4;36612:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36592:57;;36667:4;36660:20;;;36681:13;;;;;;;;;;;36696:9;36660:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36755:13;;;;;;;;;;;36736:43;;;36787:9;36798:4;36804:10;36816:9;36845:14;;36827:15;:32;;;;:::i;:::-;36861:5;36876:1:::0;36736:143:::2;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36727:6;:152;;;;36074:813;49101:1:::1;49090:8;:12;;;;36017:870::o:0;33350:28::-;;;;;;;;;;;;;:::o;22462:91::-;22507:13;22540:5;22533:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22462:91;:::o;24755:190::-;24828:4;24845:13;24861:12;:10;:12::i;:::-;24845:28;;24884:31;24893:5;24900:7;24909:5;24884:8;:31::i;:::-;24933:4;24926:11;;;24755:190;;;;:::o;33017:51::-;;;:::o;33279:27::-;;;;:::o;23564:99::-;23616:7;23643:12;;23636:19;;23564:99;:::o;33647:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;48097:109::-;15286:13;:11;:13::i;:::-;48188:9:::1;48168;;:30;;;;;;;;;;;;;;;;;;48097:109:::0;:::o;33113:33::-;;;;;;;;;;;;;:::o;25523:249::-;25610:4;25627:15;25645:12;:10;:12::i;:::-;25627:30;;25668:37;25684:4;25690:7;25699:5;25668:15;:37::i;:::-;25716:26;25726:4;25732:2;25736:5;25716:9;:26::i;:::-;25760:4;25753:11;;;25523:249;;;;;:::o;48781:132::-;48836:7;48879:26;48897:6;48879:9;:26::i;:::-;48863:13;:11;:13::i;:::-;:42;;;;:::i;:::-;48856:49;;48781:132;:::o;48921:92::-;48979:5;49004:1;48997:8;;48921:92;:::o;33965:28::-;;;;;;;;;;;;;:::o;33385:33::-;;;;;;;;;;;;;:::o;33610:28::-;;;;;;;;;;;;;:::o;49155:74::-;49195:5;49220:1;49213:8;;49155:74;:::o;47856:233::-;15286:13;:11;:13::i;:::-;47937:11:::1;47951:8;:15;47937:29;;47982:9;47977:105;48001:3;47997:1;:7;47977:105;;;48066:4;48026:8;:21;48035:8;48044:1;48035:11;;;;;;;;:::i;:::-;;;;;;;;48026:21;;;;;;;;;;;;;;;:37;;;:44;;;;;;;;;;;;;;;;;;48006:3;;;;;;;47977:105;;;;47926:163;47856:233:::0;:::o;33194:34::-;;;;;;;;;;;;;:::o;48504:106::-;15286:13;:11;:13::i;:::-;48596:6:::1;48575:18;:27;;;;48504:106:::0;:::o;33235:35::-;;;;;;;;;;;;;:::o;33313:30::-;;;;;;;;;;;;;:::o;23726:118::-;23791:7;23818:9;:18;23828:7;23818:18;;;;;;;;;;;;;;;;23811:25;;23726:118;;;:::o;16075:103::-;15286:13;:11;:13::i;:::-;16140:30:::1;16167:1;16140:18;:30::i;:::-;16075:103::o:0;48618:155::-;15286:13;:11;:13::i;:::-;48679:86:::1;48701:4;48708:12;:10;:12::i;:::-;48749:9;:15;;;48722:24;48740:4;48722:9;:24::i;:::-;:42;;;;:::i;:::-;48679:13;:86::i;:::-;48618:155::o:0;33574:27::-;;;;;;;;;;;;;:::o;33431:29::-;;;;;;;;;;;;;:::o;33540:27::-;;;;;;;;;;;;;:::o;33795:26::-;;;;:::o;47716:132::-;15286:13;:11;:13::i;:::-;47835:5:::1;47799:8;:17;47808:7;47799:17;;;;;;;;;;;;;;;:33;;;:41;;;;;;;;;;;;;;;;;;47716:132:::0;;:::o;15400:87::-;15446:7;15473:6;;;;;;;;;;;15466:13;;15400:87;:::o;33153:32::-;;;;;;;;;;;;;:::o;47351:124::-;15286:13;:11;:13::i;:::-;47462:5:::1;47430:8;:17;47439:7;47430:17;;;;;;;;;;;;;;;:29;;;:37;;;;;;;;;;;;;;;;;;47351:124:::0;;:::o;22672:95::-;22719:13;22752:7;22745:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22672:95;:::o;33075:29::-;;;:::o;24049:182::-;24118:4;24135:13;24151:12;:10;:12::i;:::-;24135:28;;24174:27;24184:5;24191:2;24195:5;24174:9;:27::i;:::-;24219:4;24212:11;;;24049:182;;;;:::o;33467:32::-;;;;:::o;47232:111::-;15286:13;:11;:13::i;:::-;47327:8:::1;47310:14;;:25;;;;;;;;;;;;;;;;;;47232:111:::0;:::o;33762:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;33506:25::-;;;;:::o;48333:163::-;15286:13;:11;:13::i;:::-;48426:8:::1;48412:11;;:22;;;;;;;;;;;;;;;;;;48450:38;48479:8;48450:38;;;;;;:::i;:::-;;;;;;;;48333:163:::0;:::o;44743:644::-;15286:13;:11;:13::i;:::-;44967:22:::1;;:::i;:::-;45020:12;45000:7;:17;;:32;;;::::0;::::1;45058:7;45043;:12;;:22;;;::::0;::::1;45090:6;45076:7;:11;;:20;;;::::0;::::1;45109:23;;:::i;:::-;45164:13;45143:8;:18;;:34;;;::::0;::::1;45204:8;45188;:13;;:24;;;::::0;::::1;45238:7;45223:8;:12;;:22;;;::::0;::::1;45306:1;45292:10;;:15:::0;:46:::1;;45334:1;45336::::0;45292:46:::1;;;45310:20;:18;:20::i;:::-;45292:46;45259:7;:13;;45274:8;:14;;45258:80;;;::::0;::::1;;;::::0;::::1;;45349:30;45361:7;45370:8;45349:11;:30::i;:::-;44956:431;;44743:644:::0;;;;;;:::o;48214:111::-;15286:13;:11;:13::i;:::-;48307:9:::1;48286:10;;:31;;;;;;;;;;;;;;;;;;48214:111:::0;:::o;24294:142::-;24374:7;24401:11;:18;24413:5;24401:18;;;;;;;;;;;;;;;:27;24420:7;24401:27;;;;;;;;;;;;;;;;24394:34;;24294:142;;;;:::o;33929:29::-;;;;:::o;33730:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;33828:33::-;;;;:::o;33701:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;46855:369::-;15286:13;:11;:13::i;:::-;46955:1:::1;46941:10;;:15;:75;;;;47012:4;47007:1;46991:13;:11;:13::i;:::-;:17;;;;:::i;:::-;46990:26;;;;:::i;:::-;46973:14;:43;46941:75;:134;;;;47072:3;47067:1;47051:13;:11;:13::i;:::-;:17;;;;:::i;:::-;47050:25;;;;:::i;:::-;47033:14;:42;46941:134;46937:209;;;47112:22;;;;;;;;;;;;;;46937:209;47168:14;47156:9;:26;;;;47212:4;47193:16;;:23;;;;;;;;;;;;;;;;;;46855:369:::0;:::o;36895:328::-;15286:13;:11;:13::i;:::-;36961:1:::1;36947:10;;:15;36943:77;;36986:22;;;;;;;;;;;;;;36943:77;37086:63;37108:4;37115:7;:5;:7::i;:::-;37124:24;37142:4;37124:9;:24::i;:::-;37086:13;:63::i;:::-;37168:7;:5;:7::i;:::-;37160:21;;37189;37160:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36895:328::o:0;46532:315::-;15286:13;:11;:13::i;:::-;46625:1:::1;46611:10;;:15;:70;;;;46677:4;46672:1;46656:13;:11;:13::i;:::-;:17;;;;:::i;:::-;46655:26;;;;:::i;:::-;46643:9;:38;46611:70;:124;;;;46732:3;46727:1;46711:13;:11;:13::i;:::-;:17;;;;:::i;:::-;46710:25;;;;:::i;:::-;46698:9;:37;46611:124;46607:199;;;46772:22;;;;;;;;;;;;;;46607:199;46830:9;46816:11;:23;;;;46532:315:::0;:::o;16333:220::-;15286:13;:11;:13::i;:::-;16438:1:::1;16418:22;;:8;:22;;::::0;16414:93:::1;;16492:1;16464:31;;;;;;;;;;;:::i;:::-;;;;;;;;16414:93;16517:28;16536:8;16517:18;:28::i;:::-;16333:220:::0;:::o;33868:24::-;;;;:::o;47483:225::-;15286:13;:11;:13::i;:::-;47560:11:::1;47574:8;:15;47560:29;;47605:9;47600:101;47624:3;47620:1;:7;47600:101;;;47685:4;47649:8;:21;47658:8;47667:1;47658:11;;;;;;;;:::i;:::-;;;;;;;;47649:21;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;47629:3;;;;;;;47600:101;;;;47549:159;47483:225:::0;:::o;33901:21::-;;;;:::o;15565:166::-;15636:12;:10;:12::i;:::-;15625:23;;:7;:5;:7::i;:::-;:23;;;15621:103;;15699:12;:10;:12::i;:::-;15672:40;;;;;;;;;;;:::i;:::-;;;;;;;;15621:103;15565:166::o;29582:130::-;29667:37;29676:5;29683:7;29692:5;29699:4;29667:8;:37::i;:::-;29582:130;;;:::o;44308:427::-;44406:7;44427:15;44448;:31;;;44487:9;44520:4;44540:11;44566:1;44609;44652:9;44676:15;44448:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44426:276;;;;44720:7;44713:14;;;44308:427;;;;;:::o;13409:98::-;13462:7;13489:10;13482:17;;13409:98;:::o;31298:487::-;31398:24;31425:25;31435:5;31442:7;31425:9;:25::i;:::-;31398:52;;31485:17;31465:16;:37;31461:317;;31542:5;31523:16;:24;31519:132;;;31602:7;31611:16;31629:5;31575:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;31519:132;31694:57;31703:5;31710:7;31738:5;31719:16;:24;31745:5;31694:8;:57::i;:::-;31461:317;31387:398;31298:487;;;:::o;26157:308::-;26257:1;26241:18;;:4;:18;;;26237:88;;26310:1;26283:30;;;;;;;;;;;:::i;:::-;;;;;;;;26237:88;26353:1;26339:16;;:2;:16;;;26335:88;;26408:1;26379:32;;;;;;;;;;;:::i;:::-;;;;;;;;26335:88;26433:24;26441:4;26447:2;26451:5;26433:7;:24::i;:::-;26157:308;;;:::o;16713:191::-;16787:16;16806:6;;;;;;;;;;;16787:25;;16832:8;16823:6;;:17;;;;;;;;;;;;;;;;;;16887:8;16856:40;;16877:8;16856:40;;;;;;;;;;;;16776:128;16713:191;:::o;26789:1135::-;26895:1;26879:18;;:4;:18;;;26875:552;;27033:5;27017:12;;:21;;;;;;;:::i;:::-;;;;;;;;26875:552;;;27071:19;27093:9;:15;27103:4;27093:15;;;;;;;;;;;;;;;;27071:37;;27141:5;27127:11;:19;27123:117;;;27199:4;27205:11;27218:5;27174:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;27123:117;27395:5;27381:11;:19;27363:9;:15;27373:4;27363:15;;;;;;;;;;;;;;;:37;;;;27056:371;26875:552;27457:1;27443:16;;:2;:16;;;27439:435;;27625:5;27609:12;;:21;;;;;;;;;;;27439:435;;;27842:5;27825:9;:13;27835:2;27825:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;27439:435;27906:2;27891:25;;27900:4;27891:25;;;27910:5;27891:25;;;;;;:::i;:::-;;;;;;;;26789:1135;;;:::o;45395:398::-;45443:7;45452;45472:18;45511:10;;45493:15;:28;;;;:::i;:::-;45472:49;;45549:7;45536:10;:20;45532:254;;;45591:4;45573:15;;:22;;;;;;;;;;;;;;;;;;45618:1;45620;45610:12;;;;;;;45532:254;45657:6;45644:10;:19;45640:146;;;45698:4;45680:15;;:22;;;;;;;;;;;;;;;;;;45725:1;45727;45717:12;;;;;;;45640:146;45770:1;45772;45762:12;;;;;45395:398;;;:::o;45801:723::-;45947:8;:12;;;45931:8;:13;;;45910:8;:18;;;:34;;;;:::i;:::-;:49;;;;:::i;:::-;45893:8;:14;;:66;;;;;45992:1;45974:8;:14;;;:19;45970:136;;46027:1;46010:8;:14;;:18;;;;;45970:136;;;46080:8;:14;;;46062:8;:14;;:32;;;;;;;:::i;:::-;;;;;;;;45970:136;46175:9;:13;;;46158:9;:14;;;46136:9;:19;;;:36;;;;:::i;:::-;:52;;;;:::i;:::-;46118:9;:15;;:70;;;;;46222:1;46203:9;:15;;;:20;46199:139;;46258:1;46240:9;:15;;:19;;;;;46199:139;;;46311:9;:15;;;46292:9;:15;;:34;;;;;;;:::i;:::-;;;;;;;;46199:139;46371:2;46354:8;:14;;;:19;:43;;;;46395:2;46377:9;:15;;;:20;46354:43;46350:105;;;46421:22;;;;;;;;;;;;;;46350:105;46477:8;46467:7;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46507:9;46496:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45801:723;;:::o;30563:443::-;30693:1;30676:19;;:5;:19;;;30672:91;;30748:1;30719:32;;;;;;;;;;;:::i;:::-;;;;;;;;30672:91;30796:1;30777:21;;:7;:21;;;30773:92;;30850:1;30822:31;;;;;;;;;;;:::i;:::-;;;;;;;;30773:92;30905:5;30875:11;:18;30887:5;30875:18;;;;;;;;;;;;;;;:27;30894:7;30875:27;;;;;;;;;;;;;;;:35;;;;30925:9;30921:78;;;30972:7;30956:31;;30965:5;30956:31;;;30981:5;30956:31;;;;;;:::i;:::-;;;;;;;;30921:78;30563:443;;;;:::o;37231:3777::-;37358:16;;;;;;;;;;;37353:76;;37398:19;;;;;;;;;;;;;;37353:76;37441:23;37467:8;:14;37476:4;37467:14;;;;;;;;;;;;;;;37441:40;;37492:26;37521:8;:12;37530:2;37521:12;;;;;;;;;;;;;;;37492:41;;37562:1;37550:8;;:13;:32;;;;37575:7;:5;:7::i;:::-;37567:15;;:4;:15;;;37550:32;:49;;;;37592:7;:5;:7::i;:::-;37586:13;;:2;:13;;;37550:49;:64;;;;37613:1;37603:6;:11;37550:64;37546:149;;;37631:31;37645:4;37651:2;37655:6;37631:13;:31::i;:::-;37677:7;;;;37546:149;37768:17;;;;;;;;;;;37764:512;;;37821:17;;37806:12;:32;37802:463;;;37859:21;37883:8;:19;37892:9;37883:19;;;;;;;;;;;;;;;37859:43;;37939:20;37981:1;37962:4;:16;;;:20;;;;:::i;:::-;37939:43;;38020:12;38005;:27;38001:131;;;38085:12;38099;38064:48;;;;;;;;;;;;:::i;:::-;;;;;;;;38001:131;38169:12;38150:4;:16;;:31;;;;37840:359;;37802:463;;;38244:5;38224:17;;:25;;;;;;;;;;;;;;;;;;37802:463;37764:512;38293:16;;;;;;;;;;;38292:17;:57;;;;;38345:3;38332:10;;:16;;;;:::i;:::-;38313:15;:36;38292:57;38288:225;;;38460:3;38444:13;:11;:13::i;:::-;:19;;;;:::i;:::-;38432:9;:31;;;;38497:4;38478:16;;:23;;;;;;;;;;;;;;;;;;38288:225;38529:14;;;;;;;;;;;38525:327;;;38570:4;38564:10;;:2;:10;;;:37;;;;;38579:6;:22;;;;;;;;;;;;38578:23;38564:37;:61;;;;;38614:11;;38605:6;:20;38564:61;38560:129;;;38653:20;;;;;;;;;;;;;;38560:129;38710:9;:25;;;;;;;;;;;;38709:26;:64;;;;;38764:9;;38748:13;38758:2;38748:9;:13::i;:::-;38739:6;:22;;;;:::i;:::-;:34;38709:64;38705:136;;;38801:24;;;;;;;;;;;;;;38705:136;38525:327;38864:13;38880:9;:15;;;38864:31;;38906:12;38930:18;;38921:5;:27;;38906:42;;38979:7;:35;;;;;39003:11;;;;;;;;;;;38979:35;:64;;;;;39039:4;39031:12;;:4;:12;;;;38979:64;38961:159;;;39070:38;39082:5;39089:18;;39070:11;:38::i;:::-;38961:159;39145:6;:18;;;;;;;;;;;;39144:19;:45;;;;;39168:9;:21;;;;;;;;;;;;39167:22;39144:45;39140:1815;;;39208:24;39235:7;39208:34;;39257:25;39285:8;39257:36;;39315:15;;;;;;;;;;;39310:1253;;39351:18;39390:10;;39372:15;:28;;;;:::i;:::-;39351:49;;39424:15;;;;;;;;;;;39423:16;:39;;;;;39456:6;39443:10;:19;39423:39;39419:1129;;;39487:16;39523:8;:14;;;39506:8;:14;;;:31;;;;:::i;:::-;39487:50;;39576:1;39564:8;:13;39560:264;;39623:1;39606:8;:14;;:18;;;;39668:1;39651:8;:14;;:18;;;;39560:264;;;39754:1;39743:8;:12;;;;:::i;:::-;39726:8;:14;;:29;;;;39799:1;39782:8;:14;;:18;;;;39560:264;39846:17;39884:9;:15;;;39866:9;:15;;;:33;;;;:::i;:::-;39846:53;;39939:1;39926:9;:14;39922:270;;39987:1;39969:9;:15;;:19;;;;40033:1;40015:9;:15;;:19;;;;39922:270;;;40121:1;40109:9;:13;;;;:::i;:::-;40091:9;:15;;:31;;;;40167:1;40149:9;:15;;:19;;;;39922:270;40232:4;40214:15;;:22;;;;;;;;;;;;;;;;;;39464:792;;39419:1129;;;40279:7;40266:10;:20;40262:286;;;40329:8;:14;;;40311:8;:14;;;:32;;;;;;;:::i;:::-;;;;;;;;40385:9;:15;;;40366:9;:15;;;:34;;;;;;;:::i;:::-;;;;;;;;40440:1;40423:8;:14;;:18;;;;40482:1;40464:9;:15;;:19;;;;40524:4;40506:15;;:22;;;;;;;;;;;;;;;;;;40262:286;39419:1129;39332:1231;39310:1253;40579:12;40616:4;40610:10;;:2;:10;;;40606:202;;40655:33;40670:9;40655:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40681:6;40655:14;:33::i;:::-;40648:40;;40606:202;;;40722:4;40714:12;;:4;:12;;;40710:98;;40760:32;40775:8;40760:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40785:6;40760:14;:32::i;:::-;40753:39;;40710:98;40606:202;40833:1;40826:4;:8;40822:122;;;40865:4;40855:14;;;;;:::i;:::-;;;40888:40;40902:4;40916;40923;40888:13;:40::i;:::-;40822:122;39191:1764;;;39140:1815;40967:31;40981:4;40987:2;40991:6;40967:13;:31::i;:::-;37342:3666;;;;37231:3777;;;;:::o;41616:2099::-;49066:1;49055:8;:12;;;;41706:26:::1;41735:9;41706:38;;41757:25;41785:300;;;;;;;;41857:5;41834:10;:20;;;41819:12;:35;;;;:::i;:::-;:43;;;;:::i;:::-;41785:300;;;;41916:5;41898:10;:15;;;41883:12;:30;;;;:::i;:::-;:38;;;;:::i;:::-;41785:300;;;;41977:5;41958:10;:16;;;41943:12;:31;;;;:::i;:::-;:39;;;;:::i;:::-;41785:300;;;;42034:5;42017:10;:14;;;42002:12;:29;;;;:::i;:::-;:37;;;;:::i;:::-;41785:300;;;;42061:12;41785:300;;::::0;41757:328:::1;;42098:17;42141:1;42118:10;:20;;;:24;;;;:::i;:::-;42098:44;;42153:20;42199:9;42176:10;:20;;;:32;;;;:::i;:::-;42153:55;;42221:19;42258:12;42243;:27;;;;:::i;:::-;42221:49;;42283:18;42304:29;42321:11;42304:16;:29::i;:::-;42283:50;;42346:23;42372:259;;;;;;;;42406:1;42372:259;;;;42459:11;42441:10;:15;;;42428:10;:28;;;;:::i;:::-;:42;;;;:::i;:::-;42372:259;;;;42524:11;42505:10;:16;;;42492:10;:29;;;;:::i;:::-;:43;;;;:::i;:::-;42372:259;;;;42585:11;42568:10;:14;;;42555:10;:27;;;;:::i;:::-;:41;;;;:::i;:::-;42372:259;;;;42618:1;42372:259;;::::0;42346:285:::1;;42672:1;42656:8;:13;;;:17;42652:99;;;42697:10;;;;;;;;;;;42689:24;;42721:8;:13;;;42689:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42652:99;42782:1;42767:8;:12;;;:16;42763:97;;;42808:9;;;;;;;;;;;42800:23;;42831:8;:12;;;42800:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42763:97;42901:1;42884:8;:14;;;:18;42880:240;;;42919:20;42959:1;42942:8;:14;;;:18;;;;:::i;:::-;42919:41;;42983:12;;;;;;;;;;;42975:26;;43009:12;42975:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43049:11;;;;;;;;;;;43041:25;;43091:12;43074:8;:14;;;:29;;;;:::i;:::-;43041:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42904:216;42880:240;43151:21;43130:8;:18;;:42;;;::::0;::::1;43185:20;43235:1:::0;43220:12:::1;:16;:42;;;;;43261:1;43240:8;:18;;;:22;43220:42;43216:221;;;43294:63;43307:12;43321:8;:18;;;43349:6;43294:12;:63::i;:::-;43279:78;;43377:48;43392:12;43406:8;:18;;;43377:48;;;;;;;:::i;:::-;;;;;;;;43216:221;43512:12;43497;:27;;;;:::i;:::-;43473:10;:20;;;:52;;;;:::i;:::-;43449:10;:20;;;:76;;;;;;;:::i;:::-;;;;;;;;43555:10;:15;;;43536:10;:15;;;:34;;;;;;;:::i;:::-;;;;;;;;43601:10;:16;;;43581:10;:16;;;:36;;;;;;;:::i;:::-;;;;;;;;43646:10;:14;;;43628:10;:14;;;:32;;;;;;;:::i;:::-;;;;;;;;43691:10;:16;;;43671:10;:16;;;:36;;;;;;;:::i;:::-;;;;;;;;41695:2020;;;;;;;;49101:1:::0;49090:8;:12;;;;41616:2099;;:::o;41016:592::-;41098:12;41144:1;41127:7;:13;;;:18;41123:478;;41194:3;41178:7;:13;;;41169:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;41162:35;;41226:26;41255:9;41226:38;;41330:7;:13;;;41310:7;:17;;;41303:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;41279:10;:20;;;:64;;;;;;;:::i;:::-;;;;;;;;41399:7;:13;;;41384:7;:12;;;41377:4;:19;;;;:::i;:::-;:35;;;;:::i;:::-;41358:10;:15;;;:54;;;;;;;:::i;:::-;;;;;;;;41470:7;:13;;;41454:7;:13;;;41447:4;:20;;;;:::i;:::-;:36;;;;:::i;:::-;41427:10;:16;;;:56;;;;;;;:::i;:::-;;;;;;;;41537:7;:13;;;41523:7;:11;;;41516:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;41498:10;:14;;;:52;;;;;;;:::i;:::-;;;;;;;;41585:4;41565:10;:16;;;:24;;;;;;;:::i;:::-;;;;;;;;41147:454;41123:478;41016:592;;;;:::o;43723:577::-;43788:18;43819:20;43842:21;43819:44;;43876:21;43914:1;43900:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43876:40;;43945:4;43927;43932:1;43927:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;43971:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43961:4;43966:1;43961:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;44006:15;:66;;;44087:11;44113:1;44157:4;44184;44204:15;44006:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44280:12;44256:21;:36;;;;:::i;:::-;44243:49;;43808:492;;43723:577;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:90:1:-;41:7;84:5;77:13;70:21;59:32;;7:90;;;:::o;103:109::-;184:21;199:5;184:21;:::i;:::-;179:3;172:34;103:109;;:::o;218:210::-;305:4;343:2;332:9;328:18;320:26;;356:65;418:1;407:9;403:17;394:6;356:65;:::i;:::-;218:210;;;;:::o;434:99::-;486:6;520:5;514:12;504:22;;434:99;;;:::o;539:169::-;623:11;657:6;652:3;645:19;697:4;692:3;688:14;673:29;;539:169;;;;:::o;714:139::-;803:6;798:3;793;787:23;844:1;835:6;830:3;826:16;819:27;714:139;;;:::o;859:102::-;900:6;951:2;947:7;942:2;935:5;931:14;927:28;917:38;;859:102;;;:::o;967:377::-;1055:3;1083:39;1116:5;1083:39;:::i;:::-;1138:71;1202:6;1197:3;1138:71;:::i;:::-;1131:78;;1218:65;1276:6;1271:3;1264:4;1257:5;1253:16;1218:65;:::i;:::-;1308:29;1330:6;1308:29;:::i;:::-;1303:3;1299:39;1292:46;;1059:285;967:377;;;;:::o;1350:313::-;1463:4;1501:2;1490:9;1486:18;1478:26;;1550:9;1544:4;1540:20;1536:1;1525:9;1521:17;1514:47;1578:78;1651:4;1642:6;1578:78;:::i;:::-;1570:86;;1350:313;;;;:::o;1669:75::-;1702:6;1735:2;1729:9;1719:19;;1669:75;:::o;1750:117::-;1859:1;1856;1849:12;1873:117;1982:1;1979;1972:12;1996:126;2033:7;2073:42;2066:5;2062:54;2051:65;;1996:126;;;:::o;2128:96::-;2165:7;2194:24;2212:5;2194:24;:::i;:::-;2183:35;;2128:96;;;:::o;2230:122::-;2303:24;2321:5;2303:24;:::i;:::-;2296:5;2293:35;2283:63;;2342:1;2339;2332:12;2283:63;2230:122;:::o;2358:139::-;2404:5;2442:6;2429:20;2420:29;;2458:33;2485:5;2458:33;:::i;:::-;2358:139;;;;:::o;2503:77::-;2540:7;2569:5;2558:16;;2503:77;;;:::o;2586:122::-;2659:24;2677:5;2659:24;:::i;:::-;2652:5;2649:35;2639:63;;2698:1;2695;2688:12;2639:63;2586:122;:::o;2714:139::-;2760:5;2798:6;2785:20;2776:29;;2814:33;2841:5;2814:33;:::i;:::-;2714:139;;;;:::o;2859:474::-;2927:6;2935;2984:2;2972:9;2963:7;2959:23;2955:32;2952:119;;;2990:79;;:::i;:::-;2952:119;3110:1;3135:53;3180:7;3171:6;3160:9;3156:22;3135:53;:::i;:::-;3125:63;;3081:117;3237:2;3263:53;3308:7;3299:6;3288:9;3284:22;3263:53;:::i;:::-;3253:63;;3208:118;2859:474;;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:152::-;3761:9;3794:37;3825:5;3794:37;:::i;:::-;3781:50;;3685:152;;;:::o;3843:183::-;3956:63;4013:5;3956:63;:::i;:::-;3951:3;3944:76;3843:183;;:::o;4032:274::-;4151:4;4189:2;4178:9;4174:18;4166:26;;4202:97;4296:1;4285:9;4281:17;4272:6;4202:97;:::i;:::-;4032:274;;;;:::o;4312:118::-;4399:24;4417:5;4399:24;:::i;:::-;4394:3;4387:37;4312:118;;:::o;4436:222::-;4529:4;4567:2;4556:9;4552:18;4544:26;;4580:71;4648:1;4637:9;4633:17;4624:6;4580:71;:::i;:::-;4436:222;;;;:::o;4664:329::-;4723:6;4772:2;4760:9;4751:7;4747:23;4743:32;4740:119;;;4778:79;;:::i;:::-;4740:119;4898:1;4923:53;4968:7;4959:6;4948:9;4944:22;4923:53;:::i;:::-;4913:63;;4869:117;4664:329;;;;:::o;4999:418::-;5136:4;5174:2;5163:9;5159:18;5151:26;;5187:65;5249:1;5238:9;5234:17;5225:6;5187:65;:::i;:::-;5262:66;5324:2;5313:9;5309:18;5300:6;5262:66;:::i;:::-;5338:72;5406:2;5395:9;5391:18;5382:6;5338:72;:::i;:::-;4999:418;;;;;;:::o;5423:104::-;5468:7;5497:24;5515:5;5497:24;:::i;:::-;5486:35;;5423:104;;;:::o;5533:142::-;5636:32;5662:5;5636:32;:::i;:::-;5631:3;5624:45;5533:142;;:::o;5681:254::-;5790:4;5828:2;5817:9;5813:18;5805:26;;5841:87;5925:1;5914:9;5910:17;5901:6;5841:87;:::i;:::-;5681:254;;;;:::o;5941:619::-;6018:6;6026;6034;6083:2;6071:9;6062:7;6058:23;6054:32;6051:119;;;6089:79;;:::i;:::-;6051:119;6209:1;6234:53;6279:7;6270:6;6259:9;6255:22;6234:53;:::i;:::-;6224:63;;6180:117;6336:2;6362:53;6407:7;6398:6;6387:9;6383:22;6362:53;:::i;:::-;6352:63;;6307:118;6464:2;6490:53;6535:7;6526:6;6515:9;6511:22;6490:53;:::i;:::-;6480:63;;6435:118;5941:619;;;;;:::o;6566:86::-;6601:7;6641:4;6634:5;6630:16;6619:27;;6566:86;;;:::o;6658:112::-;6741:22;6757:5;6741:22;:::i;:::-;6736:3;6729:35;6658:112;;:::o;6776:214::-;6865:4;6903:2;6892:9;6888:18;6880:26;;6916:67;6980:1;6969:9;6965:17;6956:6;6916:67;:::i;:::-;6776:214;;;;:::o;6996:118::-;7083:24;7101:5;7083:24;:::i;:::-;7078:3;7071:37;6996:118;;:::o;7120:222::-;7213:4;7251:2;7240:9;7236:18;7228:26;;7264:71;7332:1;7321:9;7317:17;7308:6;7264:71;:::i;:::-;7120:222;;;;:::o;7348:117::-;7457:1;7454;7447:12;7471:180;7519:77;7516:1;7509:88;7616:4;7613:1;7606:15;7640:4;7637:1;7630:15;7657:281;7740:27;7762:4;7740:27;:::i;:::-;7732:6;7728:40;7870:6;7858:10;7855:22;7834:18;7822:10;7819:34;7816:62;7813:88;;;7881:18;;:::i;:::-;7813:88;7921:10;7917:2;7910:22;7700:238;7657:281;;:::o;7944:129::-;7978:6;8005:20;;:::i;:::-;7995:30;;8034:33;8062:4;8054:6;8034:33;:::i;:::-;7944:129;;;:::o;8079:311::-;8156:4;8246:18;8238:6;8235:30;8232:56;;;8268:18;;:::i;:::-;8232:56;8318:4;8310:6;8306:17;8298:25;;8378:4;8372;8368:15;8360:23;;8079:311;;;:::o;8396:117::-;8505:1;8502;8495:12;8536:710;8632:5;8657:81;8673:64;8730:6;8673:64;:::i;:::-;8657:81;:::i;:::-;8648:90;;8758:5;8787:6;8780:5;8773:21;8821:4;8814:5;8810:16;8803:23;;8874:4;8866:6;8862:17;8854:6;8850:30;8903:3;8895:6;8892:15;8889:122;;;8922:79;;:::i;:::-;8889:122;9037:6;9020:220;9054:6;9049:3;9046:15;9020:220;;;9129:3;9158:37;9191:3;9179:10;9158:37;:::i;:::-;9153:3;9146:50;9225:4;9220:3;9216:14;9209:21;;9096:144;9080:4;9075:3;9071:14;9064:21;;9020:220;;;9024:21;8638:608;;8536:710;;;;;:::o;9269:370::-;9340:5;9389:3;9382:4;9374:6;9370:17;9366:27;9356:122;;9397:79;;:::i;:::-;9356:122;9514:6;9501:20;9539:94;9629:3;9621:6;9614:4;9606:6;9602:17;9539:94;:::i;:::-;9530:103;;9346:293;9269:370;;;;:::o;9645:539::-;9729:6;9778:2;9766:9;9757:7;9753:23;9749:32;9746:119;;;9784:79;;:::i;:::-;9746:119;9932:1;9921:9;9917:17;9904:31;9962:18;9954:6;9951:30;9948:117;;;9984:79;;:::i;:::-;9948:117;10089:78;10159:7;10150:6;10139:9;10135:22;10089:78;:::i;:::-;10079:88;;9875:302;9645:539;;;;:::o;10190:329::-;10249:6;10298:2;10286:9;10277:7;10273:23;10269:32;10266:119;;;10304:79;;:::i;:::-;10266:119;10424:1;10449:53;10494:7;10485:6;10474:9;10470:22;10449:53;:::i;:::-;10439:63;;10395:117;10190:329;;;;:::o;10525:116::-;10595:21;10610:5;10595:21;:::i;:::-;10588:5;10585:32;10575:60;;10631:1;10628;10621:12;10575:60;10525:116;:::o;10647:133::-;10690:5;10728:6;10715:20;10706:29;;10744:30;10768:5;10744:30;:::i;:::-;10647:133;;;;:::o;10786:468::-;10851:6;10859;10908:2;10896:9;10887:7;10883:23;10879:32;10876:119;;;10914:79;;:::i;:::-;10876:119;11034:1;11059:53;11104:7;11095:6;11084:9;11080:22;11059:53;:::i;:::-;11049:63;;11005:117;11161:2;11187:50;11229:7;11220:6;11209:9;11205:22;11187:50;:::i;:::-;11177:60;;11132:115;10786:468;;;;;:::o;11260:323::-;11316:6;11365:2;11353:9;11344:7;11340:23;11336:32;11333:119;;;11371:79;;:::i;:::-;11333:119;11491:1;11516:50;11558:7;11549:6;11538:9;11534:22;11516:50;:::i;:::-;11506:60;;11462:114;11260:323;;;;:::o;11589:664::-;11794:4;11832:3;11821:9;11817:19;11809:27;;11846:71;11914:1;11903:9;11899:17;11890:6;11846:71;:::i;:::-;11927:72;11995:2;11984:9;11980:18;11971:6;11927:72;:::i;:::-;12009;12077:2;12066:9;12062:18;12053:6;12009:72;:::i;:::-;12091;12159:2;12148:9;12144:18;12135:6;12091:72;:::i;:::-;12173:73;12241:3;12230:9;12226:19;12217:6;12173:73;:::i;:::-;11589:664;;;;;;;;:::o;12259:1057::-;12363:6;12371;12379;12387;12395;12403;12452:3;12440:9;12431:7;12427:23;12423:33;12420:120;;;12459:79;;:::i;:::-;12420:120;12579:1;12604:53;12649:7;12640:6;12629:9;12625:22;12604:53;:::i;:::-;12594:63;;12550:117;12706:2;12732:53;12777:7;12768:6;12757:9;12753:22;12732:53;:::i;:::-;12722:63;;12677:118;12834:2;12860:53;12905:7;12896:6;12885:9;12881:22;12860:53;:::i;:::-;12850:63;;12805:118;12962:2;12988:53;13033:7;13024:6;13013:9;13009:22;12988:53;:::i;:::-;12978:63;;12933:118;13090:3;13117:53;13162:7;13153:6;13142:9;13138:22;13117:53;:::i;:::-;13107:63;;13061:119;13219:3;13246:53;13291:7;13282:6;13271:9;13267:22;13246:53;:::i;:::-;13236:63;;13190:119;12259:1057;;;;;;;;:::o;13322:474::-;13390:6;13398;13447:2;13435:9;13426:7;13422:23;13418:32;13415:119;;;13453:79;;:::i;:::-;13415:119;13573:1;13598:53;13643:7;13634:6;13623:9;13619:22;13598:53;:::i;:::-;13588:63;;13544:117;13700:2;13726:53;13771:7;13762:6;13751:9;13747:22;13726:53;:::i;:::-;13716:63;;13671:118;13322:474;;;;;:::o;13802:180::-;13850:77;13847:1;13840:88;13947:4;13944:1;13937:15;13971:4;13968:1;13961:15;13988:191;14028:3;14047:20;14065:1;14047:20;:::i;:::-;14042:25;;14081:20;14099:1;14081:20;:::i;:::-;14076:25;;14124:1;14121;14117:9;14110:16;;14145:3;14142:1;14139:10;14136:36;;;14152:18;;:::i;:::-;14136:36;13988:191;;;;:::o;14185:194::-;14225:4;14245:20;14263:1;14245:20;:::i;:::-;14240:25;;14279:20;14297:1;14279:20;:::i;:::-;14274:25;;14323:1;14320;14316:9;14308:17;;14347:1;14341:4;14338:11;14335:37;;;14352:18;;:::i;:::-;14335:37;14185:194;;;;:::o;14385:143::-;14442:5;14473:6;14467:13;14458:22;;14489:33;14516:5;14489:33;:::i;:::-;14385:143;;;;:::o;14534:351::-;14604:6;14653:2;14641:9;14632:7;14628:23;14624:32;14621:119;;;14659:79;;:::i;:::-;14621:119;14779:1;14804:64;14860:7;14851:6;14840:9;14836:22;14804:64;:::i;:::-;14794:74;;14750:128;14534:351;;;;:::o;14891:332::-;15012:4;15050:2;15039:9;15035:18;15027:26;;15063:71;15131:1;15120:9;15116:17;15107:6;15063:71;:::i;:::-;15144:72;15212:2;15201:9;15197:18;15188:6;15144:72;:::i;:::-;14891:332;;;;;:::o;15229:137::-;15283:5;15314:6;15308:13;15299:22;;15330:30;15354:5;15330:30;:::i;:::-;15229:137;;;;:::o;15372:345::-;15439:6;15488:2;15476:9;15467:7;15463:23;15459:32;15456:119;;;15494:79;;:::i;:::-;15456:119;15614:1;15639:61;15692:7;15683:6;15672:9;15668:22;15639:61;:::i;:::-;15629:71;;15585:125;15372:345;;;;:::o;15723:763::-;15950:4;15988:3;15977:9;15973:19;15965:27;;16002:71;16070:1;16059:9;16055:17;16046:6;16002:71;:::i;:::-;16083:72;16151:2;16140:9;16136:18;16127:6;16083:72;:::i;:::-;16165;16233:2;16222:9;16218:18;16209:6;16165:72;:::i;:::-;16247;16315:2;16304:9;16300:18;16291:6;16247:72;:::i;:::-;16329:67;16391:3;16380:9;16376:19;16367:6;16329:67;:::i;:::-;16406:73;16474:3;16463:9;16459:19;16450:6;16406:73;:::i;:::-;15723:763;;;;;;;;;:::o;16492:180::-;16540:77;16537:1;16530:88;16637:4;16634:1;16627:15;16661:4;16658:1;16651:15;16678:320;16722:6;16759:1;16753:4;16749:12;16739:22;;16806:1;16800:4;16796:12;16827:18;16817:81;;16883:4;16875:6;16871:17;16861:27;;16817:81;16945:2;16937:6;16934:14;16914:18;16911:38;16908:84;;16964:18;;:::i;:::-;16908:84;16729:269;16678:320;;;:::o;17004:180::-;17052:77;17049:1;17042:88;17149:4;17146:1;17139:15;17173:4;17170:1;17163:15;17190:410;17230:7;17253:20;17271:1;17253:20;:::i;:::-;17248:25;;17287:20;17305:1;17287:20;:::i;:::-;17282:25;;17342:1;17339;17335:9;17364:30;17382:11;17364:30;:::i;:::-;17353:41;;17543:1;17534:7;17530:15;17527:1;17524:22;17504:1;17497:9;17477:83;17454:139;;17573:18;;:::i;:::-;17454:139;17238:362;17190:410;;;;:::o;17606:180::-;17654:77;17651:1;17644:88;17751:4;17748:1;17741:15;17775:4;17772:1;17765:15;17792:185;17832:1;17849:20;17867:1;17849:20;:::i;:::-;17844:25;;17883:20;17901:1;17883:20;:::i;:::-;17878:25;;17922:1;17912:35;;17927:18;;:::i;:::-;17912:35;17969:1;17966;17962:9;17957:14;;17792:185;;;;:::o;17983:147::-;18084:11;18121:3;18106:18;;17983:147;;;;:::o;18136:114::-;;:::o;18256:398::-;18415:3;18436:83;18517:1;18512:3;18436:83;:::i;:::-;18429:90;;18528:93;18617:3;18528:93;:::i;:::-;18646:1;18641:3;18637:11;18630:18;;18256:398;;;:::o;18660:379::-;18844:3;18866:147;19009:3;18866:147;:::i;:::-;18859:154;;19030:3;19023:10;;18660:379;;;:::o;19045:85::-;19090:7;19119:5;19108:16;;19045:85;;;:::o;19136:158::-;19194:9;19227:61;19245:42;19254:32;19280:5;19254:32;:::i;:::-;19245:42;:::i;:::-;19227:61;:::i;:::-;19214:74;;19136:158;;;:::o;19300:147::-;19395:45;19434:5;19395:45;:::i;:::-;19390:3;19383:58;19300:147;;:::o;19453:807::-;19702:4;19740:3;19729:9;19725:19;19717:27;;19754:71;19822:1;19811:9;19807:17;19798:6;19754:71;:::i;:::-;19835:72;19903:2;19892:9;19888:18;19879:6;19835:72;:::i;:::-;19917:80;19993:2;19982:9;19978:18;19969:6;19917:80;:::i;:::-;20007;20083:2;20072:9;20068:18;20059:6;20007:80;:::i;:::-;20097:73;20165:3;20154:9;20150:19;20141:6;20097:73;:::i;:::-;20180;20248:3;20237:9;20233:19;20224:6;20180:73;:::i;:::-;19453:807;;;;;;;;;:::o;20266:663::-;20354:6;20362;20370;20419:2;20407:9;20398:7;20394:23;20390:32;20387:119;;;20425:79;;:::i;:::-;20387:119;20545:1;20570:64;20626:7;20617:6;20606:9;20602:22;20570:64;:::i;:::-;20560:74;;20516:128;20683:2;20709:64;20765:7;20756:6;20745:9;20741:22;20709:64;:::i;:::-;20699:74;;20654:129;20822:2;20848:64;20904:7;20895:6;20884:9;20880:22;20848:64;:::i;:::-;20838:74;;20793:129;20266:663;;;;;:::o;20935:442::-;21084:4;21122:2;21111:9;21107:18;21099:26;;21135:71;21203:1;21192:9;21188:17;21179:6;21135:71;:::i;:::-;21216:72;21284:2;21273:9;21269:18;21260:6;21216:72;:::i;:::-;21298;21366:2;21355:9;21351:18;21342:6;21298:72;:::i;:::-;20935:442;;;;;;:::o;21383:332::-;21504:4;21542:2;21531:9;21527:18;21519:26;;21555:71;21623:1;21612:9;21608:17;21599:6;21555:71;:::i;:::-;21636:72;21704:2;21693:9;21689:18;21680:6;21636:72;:::i;:::-;21383:332;;;;;:::o;21721:143::-;21778:5;21809:6;21803:13;21794:22;;21825:33;21852:5;21825:33;:::i;:::-;21721:143;;;;:::o;21870:351::-;21940:6;21989:2;21977:9;21968:7;21964:23;21960:32;21957:119;;;21995:79;;:::i;:::-;21957:119;22115:1;22140:64;22196:7;22187:6;22176:9;22172:22;22140:64;:::i;:::-;22130:74;;22086:128;21870:351;;;;:::o;22227:114::-;22294:6;22328:5;22322:12;22312:22;;22227:114;;;:::o;22347:184::-;22446:11;22480:6;22475:3;22468:19;22520:4;22515:3;22511:14;22496:29;;22347:184;;;;:::o;22537:132::-;22604:4;22627:3;22619:11;;22657:4;22652:3;22648:14;22640:22;;22537:132;;;:::o;22675:108::-;22752:24;22770:5;22752:24;:::i;:::-;22747:3;22740:37;22675:108;;:::o;22789:179::-;22858:10;22879:46;22921:3;22913:6;22879:46;:::i;:::-;22957:4;22952:3;22948:14;22934:28;;22789:179;;;;:::o;22974:113::-;23044:4;23076;23071:3;23067:14;23059:22;;22974:113;;;:::o;23123:732::-;23242:3;23271:54;23319:5;23271:54;:::i;:::-;23341:86;23420:6;23415:3;23341:86;:::i;:::-;23334:93;;23451:56;23501:5;23451:56;:::i;:::-;23530:7;23561:1;23546:284;23571:6;23568:1;23565:13;23546:284;;;23647:6;23641:13;23674:63;23733:3;23718:13;23674:63;:::i;:::-;23667:70;;23760:60;23813:6;23760:60;:::i;:::-;23750:70;;23606:224;23593:1;23590;23586:9;23581:14;;23546:284;;;23550:14;23846:3;23839:10;;23247:608;;;23123:732;;;;:::o;23861:831::-;24124:4;24162:3;24151:9;24147:19;24139:27;;24176:71;24244:1;24233:9;24229:17;24220:6;24176:71;:::i;:::-;24257:80;24333:2;24322:9;24318:18;24309:6;24257:80;:::i;:::-;24384:9;24378:4;24374:20;24369:2;24358:9;24354:18;24347:48;24412:108;24515:4;24506:6;24412:108;:::i;:::-;24404:116;;24530:72;24598:2;24587:9;24583:18;24574:6;24530:72;:::i;:::-;24612:73;24680:3;24669:9;24665:19;24656:6;24612:73;:::i;:::-;23861:831;;;;;;;;:::o
Swarm Source
ipfs://8748928aaeba31f4d2fc3f91d47950f7401630ee6d55c2fc2eb6aff9e4fa35dd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.