Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 192 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Enable Trading | 22999177 | 211 days ago | IN | 0 ETH | 0.000068 | ||||
| Enable Trading | 22999170 | 211 days ago | IN | 0 ETH | 0.0028137 | ||||
| Enable Trading | 22999156 | 211 days ago | IN | 0 ETH | 0.0030237 | ||||
| Enable Trading | 22999151 | 211 days ago | IN | 0 ETH | 0.00006727 | ||||
| Enable Trading | 22999142 | 211 days ago | IN | 0 ETH | 0.0030237 | ||||
| Exclude From Lim... | 22999104 | 211 days ago | IN | 0 ETH | 0.00033347 | ||||
| Exclude From Fee... | 22999102 | 211 days ago | IN | 0 ETH | 0.00033091 | ||||
| Enable Trading | 22999079 | 211 days ago | IN | 0 ETH | 0.00006825 | ||||
| Enable Trading | 22999064 | 211 days ago | IN | 0 ETH | 0.0030237 | ||||
| Enable Trading | 22993971 | 212 days ago | IN | 0 ETH | 0.00006949 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 | ||||
| Transfer | 22990977 | 212 days ago | IN | 0 ETH | 0.00005436 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
bundTest
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-07-24
*/
/**
*Submitted for verification at Etherscan.io on 2025-05-27
*/
/**
*Submitted for verification at Etherscan.io on 2025-05-26
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
/**
* @dev Returns the 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);
}
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)
/**
* @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);
}
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol)
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
/**
* @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);
}
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* 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 => uint256) private _balances;
mapping(address => mapping(address => 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);
}
}
}
}
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* 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);
}
}
interface IUniswapV2Factory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
}
interface IUniswapV2Router {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
pragma solidity ^0.8.0;
contract bundTest is Ownable, ERC20 {
IUniswapV2Router public immutable swapRouter;
address public constant ZERO_ADDRESS = address(0);
address public constant BURN_ADDRESS = address(0xdEaD);
address public immutable swapPair;
address public taxWallet;
address public devWallet;
bool public limitsEnabled;
bool public cooldownEnabled;
bool public feesEnabled;
bool private inSwapProcess;
bool public isActivated;
uint256 public activationBlock;
uint256 public activationTime;
uint256 private lastSwapBlock;
uint256 public constant MAX_TOTAL_FEE = 35;
uint256 public maxBuyLimit;
uint256 public maxSellLimit;
uint256 public maxWalletLimit;
uint256 public tokensForSwap;
uint256 public buyTax;
uint256 public sellTax;
uint256 public transferTax;
mapping(address => bool) public blacklistedBots;
mapping(address => bool) public excludedFromFees;
mapping(address => bool) public excludedFromLimits;
mapping(address => bool) public marketPairs;
mapping(address => uint256) private _lastTransferBlock;
event Activation(bool status);
event taxWalletUpdated(address newWallet, address oldWallet);
event DevWalletUpdated(address newWallet, address oldWallet);
event LimitsStatusChanged(bool status);
event CooldownStatusChanged(bool status);
event FeesStatusChanged(bool status);
event MaxBuyLimitUpdated(uint256 amount);
event MaxSellLimitUpdated(uint256 amount);
event MaxWalletLimitUpdated(uint256 amount);
event TokensForSwapUpdated(uint256 newValue, uint256 oldValue);
event BuyTaxUpdated(uint256 newValue, uint256 oldValue);
event SellTaxUpdated(uint256 newValue, uint256 oldValue);
event TransferTaxUpdated(uint256 newValue, uint256 oldValue);
event ExcludedFromFees(address account, bool isExcluded);
event ExcludedFromLimits(address account, bool isExcluded);
event BotStatusUpdated(address account, bool isBlacklisted);
event MarketPairStatusUpdated(address pair, bool value);
event StuckTokensWithdrawn(address token, uint256 amount);
error AlreadyActivated();
error InvalidAddress();
error AmountTooSmall();
error AmountTooLarge();
error FeeTooHigh();
error PairAlreadySet();
error NoETHToWithdraw();
error NoTokensToWithdraw();
error ETHWithdrawalFailed();
error BotActivityDetected();
error TransferCooldown();
error ExceedsMaxBuyLimit();
error ExceedsMaxSellLimit();
error ExceedsMaxWalletLimit();
error NotActivated();
modifier lockSwapProcess() {
inSwapProcess = true;
_;
inSwapProcess = false;
}
constructor() Ownable(msg.sender) ERC20("buntest", "BUNTEST") {
address owner = msg.sender;
_mint(owner, 100_000 ether);
uint256 totalSupplyTokens = totalSupply();
taxWallet = 0xEC90AA2453d4CEaa86510155F959BdA57Ad1542a;
devWallet = 0xEC90AA2453d4CEaa86510155F959BdA57Ad1542a;
maxBuyLimit = (totalSupplyTokens * 155) / 10000;
maxSellLimit = (totalSupplyTokens * 155) / 10000;
maxWalletLimit = (totalSupplyTokens * 155) / 10000;
tokensForSwap = (totalSupplyTokens * 5) / 10000;
limitsEnabled = true;
cooldownEnabled = false;
feesEnabled = true;
buyTax = 30;
sellTax = 30;
transferTax = 0;
swapRouter = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(
address(this),
swapRouter.WETH()
);
SetMarketPair(swapPair, true);
_approve(address(this), address(swapRouter), type(uint256).max);
_excludeFromFees(address(this), true);
_excludeFromFees(BURN_ADDRESS, true);
_excludeFromFees(owner, true);
_excludeFromFees(taxWallet, true);
_excludeFromFees(devWallet, true);
ExcludeFromLimits(address(this), true);
ExcludeFromLimits(BURN_ADDRESS, true);
ExcludeFromLimits(owner, true);
ExcludeFromLimits(taxWallet, true);
ExcludeFromLimits(devWallet, true);
}
receive() external payable {}
fallback() external payable {}
function _transferOwnership(address newOwner) internal override {
address oldOwner = owner();
if (oldOwner != ZERO_ADDRESS) {
_excludeFromFees(oldOwner, false);
ExcludeFromLimits(oldOwner, false);
}
_excludeFromFees(newOwner, true);
ExcludeFromLimits(newOwner, true);
super._transferOwnership(newOwner);
}
function enableTrading(bool status) external onlyOwner {
isActivated = status;
if (status) {
activationBlock = block.number;
activationTime = block.timestamp;
}
emit Activation(status);
}
function _updatetaxWallet(address _taxWallet) external onlyOwner {
require(_taxWallet != ZERO_ADDRESS, InvalidAddress());
address oldWallet = taxWallet;
taxWallet = _taxWallet;
emit taxWalletUpdated(taxWallet, oldWallet);
}
function _updateDevWallet(address _devWallet) external onlyOwner {
require(_devWallet != ZERO_ADDRESS, InvalidAddress());
address oldWallet = devWallet;
devWallet = _devWallet;
emit DevWalletUpdated(devWallet, oldWallet);
}
function changeLimitsEnabled(bool value) external onlyOwner {
limitsEnabled = value;
emit LimitsStatusChanged(value);
}
function changeCooldownEnabled(bool value) external onlyOwner {
cooldownEnabled = value;
emit CooldownStatusChanged(value);
}
function setFeesEnabled(bool value) external onlyOwner {
feesEnabled = value;
emit FeesStatusChanged(value);
}
function setMaxBuyLimit(uint256 amount) external onlyOwner {
require(amount >= ((totalSupply() * 2) / 1000), AmountTooSmall());
maxBuyLimit = amount;
emit MaxBuyLimitUpdated(maxBuyLimit);
}
function setMaxSellLimit(uint256 amount) external onlyOwner {
require(amount >= ((totalSupply() * 2) / 1000), AmountTooSmall());
maxSellLimit = amount;
emit MaxSellLimitUpdated(maxSellLimit);
}
function setMaxWalletLimit(uint256 amount) external onlyOwner {
require(amount >= ((totalSupply() * 3) / 1000), AmountTooSmall());
maxWalletLimit = amount;
emit MaxWalletLimitUpdated(maxWalletLimit);
}
function setTokensForSwap(uint256 amount) external onlyOwner {
uint256 totalSupplyTokens = totalSupply();
require(amount >= (totalSupplyTokens * 1) / 1000000, AmountTooSmall());
require(amount <= (totalSupplyTokens * 5) / 1000, AmountTooLarge());
uint256 oldValue = tokensForSwap;
tokensForSwap = amount;
emit TokensForSwapUpdated(amount, oldValue);
}
function setTax(uint256 _buyTax, uint256 _sellTax) external onlyOwner {
require(_buyTax <= MAX_TOTAL_FEE, FeeTooHigh());
require(_sellTax <= MAX_TOTAL_FEE, FeeTooHigh());
buyTax = _buyTax;
sellTax = _sellTax;
}
function changeTransferTax(uint256 _transferTax) external onlyOwner {
require(_transferTax <= MAX_TOTAL_FEE, FeeTooHigh());
uint256 oldValue = transferTax;
transferTax = _transferTax;
emit TransferTaxUpdated(_transferTax, oldValue);
}
function excludeFromFees(
address[] calldata accounts,
bool value
) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
_excludeFromFees(accounts[i], value);
}
}
function excludeFromLimits(
address[] calldata accounts,
bool value
) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
ExcludeFromLimits(accounts[i], value);
}
}
function setBlacklistedBots(
address[] calldata accounts,
bool value
) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
if (
(!marketPairs[accounts[i]]) &&
(accounts[i] != address(swapRouter)) &&
(accounts[i] != address(this)) &&
(accounts[i] != ZERO_ADDRESS) &&
(!excludedFromFees[accounts[i]] &&
!excludedFromLimits[accounts[i]])
) UpdateBotStatus(accounts[i], value);
}
}
function setMarketPair(address pair, bool value) external onlyOwner {
require(!marketPairs[pair], PairAlreadySet());
SetMarketPair(pair, value);
}
function clearStuckTokens(address _token) external onlyOwner {
address owner = msg.sender;
uint256 amount;
if (_token == ZERO_ADDRESS) {
bool success;
amount = address(this).balance;
require(amount > 0, NoETHToWithdraw());
(success, ) = address(owner).call{value: amount}("");
require(success, ETHWithdrawalFailed());
} else {
amount = IERC20(_token).balanceOf(address(this));
require(amount > 0, NoTokensToWithdraw());
IERC20(_token).transfer(msg.sender, amount);
}
emit StuckTokensWithdrawn(_token, amount);
}
function _update(
address from,
address to,
uint256 amount
) internal virtual override {
address sender = msg.sender;
address origin = tx.origin;
require(!blacklistedBots[from], BotActivityDetected());
require(
sender == from || !blacklistedBots[sender],
BotActivityDetected()
);
require(
origin == from || origin == sender || !blacklistedBots[origin],
BotActivityDetected()
);
require(
isActivated || excludedFromLimits[from] || excludedFromLimits[to],
NotActivated()
);
bool applyLimits = limitsEnabled &&
!inSwapProcess &&
!(excludedFromLimits[from] || excludedFromLimits[to]);
if (applyLimits) {
if (
from != owner() &&
to != owner() &&
to != ZERO_ADDRESS &&
to != BURN_ADDRESS
) {
if (cooldownEnabled) {
if (to != address(swapRouter) && to != swapPair) {
require(
_lastTransferBlock[origin] < block.number - 3 &&
_lastTransferBlock[to] < block.number - 3,
TransferCooldown()
);
_lastTransferBlock[origin] = block.number;
_lastTransferBlock[to] = block.number;
}
}
if (marketPairs[from] && !excludedFromLimits[to]) {
require(amount <= maxBuyLimit, ExceedsMaxBuyLimit());
require(
amount + balanceOf(to) <= maxWalletLimit,
ExceedsMaxWalletLimit()
);
} else if (marketPairs[to] && !excludedFromLimits[from]) {
require(amount <= maxSellLimit, ExceedsMaxSellLimit());
} else if (!excludedFromLimits[to]) {
require(
amount + balanceOf(to) <= maxWalletLimit,
ExceedsMaxWalletLimit()
);
}
}
}
bool applyFee = feesEnabled &&
!inSwapProcess &&
!(excludedFromFees[from] || excludedFromFees[to]);
if (applyFee) {
uint256 feeAmount = 0;
if (marketPairs[to] && sellTax > 0) {
feeAmount = (amount * sellTax) / 100;
} else if (marketPairs[from] && buyTax > 0) {
feeAmount = (amount * buyTax) / 100;
} else if (
!marketPairs[to] && !marketPairs[from] && transferTax > 0
) {
feeAmount = (amount * transferTax) / 100;
}
if (feeAmount > 0) {
amount -= feeAmount;
super._update(from, address(this), feeAmount);
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= tokensForSwap;
if (applyFee && !marketPairs[from] && canSwap) {
if (block.number > lastSwapBlock && block.number > activationBlock) {
_swapTokens(contractTokenBalance);
lastSwapBlock = block.number;
}
}
super._update(from, to, amount);
}
function _swapTokens(uint256 tokenAmount) internal virtual lockSwapProcess {
bool success;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = swapRouter.WETH();
uint256 maxSwapAmount = tokensForSwap * 20;
if (tokenAmount > maxSwapAmount) {
tokenAmount = maxSwapAmount;
}
swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
uint256 ethBalance = address(this).balance;
uint256 ethForRevenue = ethBalance / 2;
uint256 ethForDevelopment = ethBalance - ethForRevenue;
(success, ) = address(taxWallet).call{value: ethForRevenue}("");
(success, ) = address(devWallet).call{value: ethForDevelopment}("");
}
function _excludeFromFees(address account, bool value) internal virtual {
excludedFromFees[account] = value;
emit ExcludedFromFees(account, value);
}
function ExcludeFromLimits(address account, bool value) internal virtual {
excludedFromLimits[account] = value;
emit ExcludedFromLimits(account, value);
}
function UpdateBotStatus(address account, bool value) internal virtual {
blacklistedBots[account] = value;
emit BotStatusUpdated(account, value);
}
function SetMarketPair(address pair, bool value) internal virtual {
marketPairs[pair] = value;
emit MarketPairStatusUpdated(pair, value);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyActivated","type":"error"},{"inputs":[],"name":"AmountTooLarge","type":"error"},{"inputs":[],"name":"AmountTooSmall","type":"error"},{"inputs":[],"name":"BotActivityDetected","type":"error"},{"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":"ETHWithdrawalFailed","type":"error"},{"inputs":[],"name":"ExceedsMaxBuyLimit","type":"error"},{"inputs":[],"name":"ExceedsMaxSellLimit","type":"error"},{"inputs":[],"name":"ExceedsMaxWalletLimit","type":"error"},{"inputs":[],"name":"FeeTooHigh","type":"error"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"NoETHToWithdraw","type":"error"},{"inputs":[],"name":"NoTokensToWithdraw","type":"error"},{"inputs":[],"name":"NotActivated","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":"PairAlreadySet","type":"error"},{"inputs":[],"name":"TransferCooldown","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"Activation","type":"event"},{"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":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"BotStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"BuyTaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"CooldownStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"},{"indexed":false,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"FeesStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"LimitsStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"MarketPairStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MaxBuyLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MaxSellLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MaxWalletLimitUpdated","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":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"SellTaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StuckTokensWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"TokensForSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"},{"indexed":false,"internalType":"address","name":"oldWallet","type":"address"}],"name":"taxWalletUpdated","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"BURN_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TOTAL_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"}],"name":"_updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"_updatetaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activationBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"address","name":"","type":"address"}],"name":"blacklistedBots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"changeCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"changeLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferTax","type":"uint256"}],"name":"changeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBlacklistedBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTokensForSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c060405234801561000f575f5ffd5b506040518060400160405280600781526020017f62756e74657374000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f42554e5445535400000000000000000000000000000000000000000000000000815250335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100ed575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100e49190611ef3565b60405180910390fd5b6100fc8161062e60201b60201c565b50816004908161010c9190612149565b50806005908161011c9190612149565b5050505f33905061013d8169152d02c7e14af68000006106c860201b60201c565b5f61014c61074d60201b60201c565b905073ec90aa2453d4ceaa86510155f959bda57ad1542a60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ec90aa2453d4ceaa86510155f959bda57ad1542a60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612710609b826102069190612245565b61021091906122b3565b600b81905550612710609b826102269190612245565b61023091906122b3565b600c81905550612710609b826102469190612245565b61025091906122b3565b600d819055506127106005826102669190612245565b61027091906122b3565b600e819055506001600760146101000a81548160ff0219169083151502179055505f600760156101000a81548160ff0219169083151502179055506001600760166101000a81548160ff021916908315150217905550601e600f81905550601e6010819055505f601181905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610370573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103949190612311565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041f9190612311565b6040518363ffffffff1660e01b815260040161043c92919061233c565b6020604051808303815f875af1158015610458573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047c9190612311565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506104c260a051600161075660201b60201c565b6104f5306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107e760201b60201c565b6105063060016107ff60201b60201c565b61051961dead60016107ff60201b60201c565b61052a8260016107ff60201b60201c565b61055c60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016107ff60201b60201c565b61058e60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016107ff60201b60201c565b61059f30600161089060201b60201c565b6105b261dead600161089060201b60201c565b6105c382600161089060201b60201c565b6105f560065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161089060201b60201c565b61062760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161089060201b60201c565b505061261d565b5f61063d61092160201b60201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461069357610682815f6107ff60201b60201c565b610692815f61089060201b60201c565b5b6106a48260016107ff60201b60201c565b6106b582600161089060201b60201c565b6106c48261094860201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610738575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161072f9190611ef3565b60405180910390fd5b6107495f8383610a0960201b60201c565b5050565b5f600354905090565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f024f6c8d60a57c94822c46d989fd6935057590269281b07fe8327d7e9bc4242182826040516107db92919061237d565b60405180910390a15050565b6107fa838383600161172760201b60201c565b505050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb828260405161088492919061237d565b60405180910390a15050565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e06870828260405161091592919061237d565b60405180910390a15050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f3390505f32905060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610a92576040517fd18781b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610b13575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b610b49576040517fd18781b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610bae57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80610c00575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b610c36576040517fd18781b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600760189054906101000a900460ff1680610c97575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80610ce8575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610d1e576040517f037c597f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600760149054906101000a900460ff168015610d485750600760179054906101000a900460ff16155b8015610dec575060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680610dea575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b9050801561139257610e0261092160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610e765750610e4661092160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610eae57505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610ee8575061dead73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561139157600760159054906101000a900460ff16156110cf5760805173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610f6e575060a05173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156110ce57600343610f8091906123a4565b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541080156110135750600343610fd391906123a4565b60165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b611049576040517f53444d9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4360165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504360165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561116c575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561120757600b548411156111ad576040517f89be121e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546111bf866118f660201b60201c565b856111ca91906123d7565b1115611202576040517f76c7c05200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611390565b60155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156112a4575060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156112ea57600c548411156112e5576040517fa8e28e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61138f565b60145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661138e57600d5461134a866118f660201b60201c565b8561135591906123d7565b111561138d576040517f76c7c05200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5b5b5b5f600760169054906101000a900460ff1680156113bc5750600760179054906101000a900460ff16155b8015611460575060135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061145e575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b9050801561165f575f5f905060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156114c357505f601054115b156114e9576064601054876114d89190612245565b6114e291906122b3565b9050611635565b60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561154057505f600f54115b15611566576064600f54876115559190612245565b61155f91906122b3565b9050611634565b60155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611604575060155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561161157505f601154115b15611633576064601154876116269190612245565b61163091906122b3565b90505b5b5b5f81111561165d57808661164991906123a4565b955061165c88308361193c60201b60201c565b5b505b5f61166f306118f660201b60201c565b90505f600e5482101590508280156116ce575060155f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156116d75750805b1561170b57600a54431180156116ee575060085443115b1561170a5761170282611b5860201b60201c565b43600a819055505b5b61171c89898961193c60201b60201c565b505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611797575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161178e9190611ef3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611807575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016117fe9190611ef3565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156118f0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516118e79190612419565b60405180910390a35b50505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361198c578060035f82825461198091906123d7565b92505081905550611a5c565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611a16578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611a0d93929190612432565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa3578060035f8282540392505081905550611aee565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4b9190612419565b60405180910390a3505050565b6001600760176101000a81548160ff0219169083151502179055505f5f600267ffffffffffffffff811115611b9057611b8f611f16565b5b604051908082528060200260200182016040528015611bbe5781602001602082028036833780820191505090505b50905030815f81518110611bd557611bd4612467565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c7e9190612311565b81600181518110611c9257611c91612467565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f6014600e54611cdc9190612245565b905080841115611cea578093505b60805173ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b8152600401611d2d959493929190612584565b5f604051808303815f87803b158015611d44575f5ffd5b505af1158015611d56573d5f5f3e3d5ffd5b505050505f4790505f600282611d6c91906122b3565b90505f8183611d7b91906123a4565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611dc290612609565b5f6040518083038185875af1925050503d805f8114611dfc576040519150601f19603f3d011682016040523d82523d5f602084013e611e01565b606091505b50508096505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051611e4c90612609565b5f6040518083038185875af1925050503d805f8114611e86576040519150601f19603f3d011682016040523d82523d5f602084013e611e8b565b606091505b5050809650505050505050505f600760176101000a81548160ff02191690831515021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611edd82611eb4565b9050919050565b611eed81611ed3565b82525050565b5f602082019050611f065f830184611ee4565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611f8757607f821691505b602082108103611f9a57611f99611f43565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302611ffc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611fc1565b6120068683611fc1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61204a6120456120408461201e565b612027565b61201e565b9050919050565b5f819050919050565b61206383612030565b61207761206f82612051565b848454611fcd565b825550505050565b5f5f905090565b61208e61207f565b61209981848461205a565b505050565b5b818110156120bc576120b15f82612086565b60018101905061209f565b5050565b601f821115612101576120d281611fa0565b6120db84611fb2565b810160208510156120ea578190505b6120fe6120f685611fb2565b83018261209e565b50505b505050565b5f82821c905092915050565b5f6121215f1984600802612106565b1980831691505092915050565b5f6121398383612112565b9150826002028217905092915050565b61215282611f0c565b67ffffffffffffffff81111561216b5761216a611f16565b5b6121758254611f70565b6121808282856120c0565b5f60209050601f8311600181146121b1575f841561219f578287015190505b6121a9858261212e565b865550612210565b601f1984166121bf86611fa0565b5f5b828110156121e6578489015182556001820191506020850194506020810190506121c1565b8683101561220357848901516121ff601f891682612112565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61224f8261201e565b915061225a8361201e565b92508282026122688161201e565b9150828204841483151761227f5761227e612218565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6122bd8261201e565b91506122c88361201e565b9250826122d8576122d7612286565b5b828204905092915050565b5f5ffd5b6122f081611ed3565b81146122fa575f5ffd5b50565b5f8151905061230b816122e7565b92915050565b5f60208284031215612326576123256122e3565b5b5f612333848285016122fd565b91505092915050565b5f60408201905061234f5f830185611ee4565b61235c6020830184611ee4565b9392505050565b5f8115159050919050565b61237781612363565b82525050565b5f6040820190506123905f830185611ee4565b61239d602083018461236e565b9392505050565b5f6123ae8261201e565b91506123b98361201e565b92508282039050818111156123d1576123d0612218565b5b92915050565b5f6123e18261201e565b91506123ec8361201e565b925082820190508082111561240457612403612218565b5b92915050565b6124138161201e565b82525050565b5f60208201905061242c5f83018461240a565b92915050565b5f6060820190506124455f830186611ee4565b612452602083018561240a565b61245f604083018461240a565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6124b76124b26124ad84612494565b612027565b61201e565b9050919050565b6124c78161249d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6124ff81611ed3565b82525050565b5f61251083836124f6565b60208301905092915050565b5f602082019050919050565b5f612532826124cd565b61253c81856124d7565b9350612547836124e7565b805f5b8381101561257757815161255e8882612505565b97506125698361251c565b92505060018101905061254a565b5085935050505092915050565b5f60a0820190506125975f83018861240a565b6125a460208301876124be565b81810360408301526125b68186612528565b90506125c56060830185611ee4565b6125d2608083018461240a565b9695505050505050565b5f81905092915050565b50565b5f6125f45f836125dc565b91506125ff826125e6565b5f82019050919050565b5f612613826125e9565b9150819050919050565b60805160a0516144576126615f395f8181610da60152612bc801525f8181610e8001528181611d2601528181612b7101528181613742015261383b01526144575ff3fe60806040526004361061031d575f3560e01c80637b812b41116101aa578063abefea03116100f6578063da0103bd11610094578063dd62ed3e1161006e578063dd62ed3e14610b86578063f275f64b14610bc2578063f2fde38b14610bea578063fccc281314610c125761031e565b8063da0103bd14610af8578063da4493f614610b20578063dbe66ca014610b4a5761031e565b8063c16dd4a4116100d0578063c16dd4a414610a54578063c31c9c0714610a7c578063cc1776d314610aa6578063ce657cce14610ad05761031e565b8063abefea03146109c8578063ad29ffde146109f0578063b4b11b9514610a185761031e565b806395d89b4111610163578063a901dd921161013d578063a901dd9214610912578063a9059cbb1461093a578063a91a9eb114610976578063a985ceef1461099e5761031e565b806395d89b4114610896578063a49a910f146108c0578063a64e4f8a146108e85761031e565b80637b812b41146107885780637f635cc0146107c457806380faa3d2146107ee5780638124f7ac146108185780638da5cb5b146108425780638ea5220f1461086c5761031e565b806336884b6e1161026957806366a88d961161022257806370a08231116101fc57806370a08231146106e6578063715018a614610722578063728d41c914610738578063757765f8146107605761031e565b806366a88d961461066a57806368b69b9b146106945780636aa5b37f146106bc5761031e565b806336884b6e146105725780634a8c1fb41461059a5780634f7041a5146105c4578063538ba4f9146105ee578063652e2f0414610618578063667f6526146106425761031e565b8063259827e3116102d65780632f6f30ea116102b05780632f6f30ea146104ce578063313ce567146104f6578063346cc7be146105205780633582ad23146105485761031e565b8063259827e31461043e57806326991cc81461047a5780632dc0562d146104a45761031e565b806306fdde0314610320578063095ea7b31461034a578063106a5a8f1461038657806318160ddd146103ae5780631ecd7d6e146103d857806323b872dd146104025761031e565b5b005b34801561032b575f5ffd5b50610334610c3c565b6040516103419190613a91565b60405180910390f35b348015610355575f5ffd5b50610370600480360381019061036b9190613b46565b610ccc565b60405161037d9190613b9e565b60405180910390f35b348015610391575f5ffd5b506103ac60048036038101906103a79190613c42565b610cee565b005b3480156103b9575f5ffd5b506103c2610d4a565b6040516103cf9190613cae565b60405180910390f35b3480156103e3575f5ffd5b506103ec610d53565b6040516103f99190613cae565b60405180910390f35b34801561040d575f5ffd5b5061042860048036038101906104239190613cc7565b610d59565b6040516104359190613b9e565b60405180910390f35b348015610449575f5ffd5b50610464600480360381019061045f9190613d17565b610d87565b6040516104719190613b9e565b60405180910390f35b348015610485575f5ffd5b5061048e610da4565b60405161049b9190613d51565b60405180910390f35b3480156104af575f5ffd5b506104b8610dc8565b6040516104c59190613d51565b60405180910390f35b3480156104d9575f5ffd5b506104f460048036038101906104ef9190613c42565b610ded565b005b348015610501575f5ffd5b5061050a6110f2565b6040516105179190613d85565b60405180910390f35b34801561052b575f5ffd5b5061054660048036038101906105419190613d17565b6110fa565b005b348015610553575f5ffd5b5061055c61138b565b6040516105699190613b9e565b60405180910390f35b34801561057d575f5ffd5b5061059860048036038101906105939190613d9e565b61139e565b005b3480156105a5575f5ffd5b506105ae611443565b6040516105bb9190613b9e565b60405180910390f35b3480156105cf575f5ffd5b506105d8611456565b6040516105e59190613cae565b60405180910390f35b3480156105f9575f5ffd5b5061060261145c565b60405161060f9190613d51565b60405180910390f35b348015610623575f5ffd5b5061062c611460565b6040516106399190613cae565b60405180910390f35b34801561064d575f5ffd5b5061066860048036038101906106639190613dc9565b611466565b005b348015610675575f5ffd5b5061067e6114f6565b60405161068b9190613cae565b60405180910390f35b34801561069f575f5ffd5b506106ba60048036038101906106b59190613e07565b6114fc565b005b3480156106c7575f5ffd5b506106d0611558565b6040516106dd9190613cae565b60405180910390f35b3480156106f1575f5ffd5b5061070c60048036038101906107079190613d17565b61155e565b6040516107199190613cae565b60405180910390f35b34801561072d575f5ffd5b506107366115a4565b005b348015610743575f5ffd5b5061075e60048036038101906107599190613d9e565b6115b7565b005b34801561076b575f5ffd5b5061078660048036038101906107819190613d9e565b61165c565b005b348015610793575f5ffd5b506107ae60048036038101906107a99190613d17565b611701565b6040516107bb9190613b9e565b60405180910390f35b3480156107cf575f5ffd5b506107d861171e565b6040516107e59190613cae565b60405180910390f35b3480156107f9575f5ffd5b50610802611723565b60405161080f9190613cae565b60405180910390f35b348015610823575f5ffd5b5061082c611729565b6040516108399190613cae565b60405180910390f35b34801561084d575f5ffd5b5061085661172f565b6040516108639190613d51565b60405180910390f35b348015610877575f5ffd5b50610880611756565b60405161088d9190613d51565b60405180910390f35b3480156108a1575f5ffd5b506108aa61177b565b6040516108b79190613a91565b60405180910390f35b3480156108cb575f5ffd5b506108e660048036038101906108e19190613d9e565b61180b565b005b3480156108f3575f5ffd5b506108fc611910565b6040516109099190613b9e565b60405180910390f35b34801561091d575f5ffd5b5061093860048036038101906109339190613e07565b611923565b005b348015610945575f5ffd5b50610960600480360381019061095b9190613b46565b61197f565b60405161096d9190613b9e565b60405180910390f35b348015610981575f5ffd5b5061099c60048036038101906109979190613d17565b6119a1565b005b3480156109a9575f5ffd5b506109b2611ad1565b6040516109bf9190613b9e565b60405180910390f35b3480156109d3575f5ffd5b506109ee60048036038101906109e99190613d17565b611ae4565b005b3480156109fb575f5ffd5b50610a166004803603810190610a119190613c42565b611c14565b005b348015610a23575f5ffd5b50610a3e6004803603810190610a399190613d17565b611c70565b604051610a4b9190613b9e565b60405180910390f35b348015610a5f575f5ffd5b50610a7a6004803603810190610a759190613e32565b611c8d565b005b348015610a87575f5ffd5b50610a90611d24565b604051610a9d9190613ecb565b60405180910390f35b348015610ab1575f5ffd5b50610aba611d48565b604051610ac79190613cae565b60405180910390f35b348015610adb575f5ffd5b50610af66004803603810190610af19190613e07565b611d4e565b005b348015610b03575f5ffd5b50610b1e6004803603810190610b199190613d9e565b611daa565b005b348015610b2b575f5ffd5b50610b34611e37565b604051610b419190613cae565b60405180910390f35b348015610b55575f5ffd5b50610b706004803603810190610b6b9190613d17565b611e3d565b604051610b7d9190613b9e565b60405180910390f35b348015610b91575f5ffd5b50610bac6004803603810190610ba79190613ee4565b611e5a565b604051610bb99190613cae565b60405180910390f35b348015610bcd575f5ffd5b50610be86004803603810190610be39190613e07565b611edc565b005b348015610bf5575f5ffd5b50610c106004803603810190610c0b9190613d17565b611f4d565b005b348015610c1d575f5ffd5b50610c26611fd1565b604051610c339190613d51565b60405180910390f35b606060048054610c4b90613f4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7790613f4f565b8015610cc25780601f10610c9957610100808354040283529160200191610cc2565b820191905f5260205f20905b815481529060010190602001808311610ca557829003601f168201915b5050505050905090565b5f5f610cd6611fd7565b9050610ce3818585611fde565b600191505092915050565b610cf6611ff0565b5f5f90505b83839050811015610d4457610d37848483818110610d1c57610d1b613f7f565b5b9050602002016020810190610d319190613d17565b83612077565b8080600101915050610cfb565b50505050565b5f600354905090565b600e5481565b5f5f610d63611fd7565b9050610d70858285612108565b610d7b85858561219a565b60019150509392505050565b6012602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610df5611ff0565b5f5f90505b838390508110156110ec5760155f858584818110610e1b57610e1a613f7f565b5b9050602002016020810190610e309190613d17565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610ef657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16848483818110610ec857610ec7613f7f565b5b9050602002016020810190610edd9190613d17565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f5557503073ffffffffffffffffffffffffffffffffffffffff16848483818110610f2757610f26613f7f565b5b9050602002016020810190610f3c9190613d17565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610fb457505f73ffffffffffffffffffffffffffffffffffffffff16848483818110610f8657610f85613f7f565b5b9050602002016020810190610f9b9190613d17565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156110a8575060135f858584818110610fd157610fd0613f7f565b5b9050602002016020810190610fe69190613d17565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156110a7575060145f85858481811061104a57611049613f7f565b5b905060200201602081019061105f9190613d17565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b156110df576110de8484838181106110c3576110c2613f7f565b5b90506020020160208101906110d89190613d17565b8361228a565b5b8080600101915050610dfa565b50505050565b5f6012905090565b611102611ff0565b5f3390505f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121d575f4791505f8211611177576040517fcff858f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168260405161119b90613fd9565b5f6040518083038185875af1925050503d805f81146111d5576040519150601f19603f3d011682016040523d82523d5f602084013e6111da565b606091505b50508091505080611217576040517f81102ece00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061134d565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112569190613d51565b602060405180830381865afa158015611271573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112959190614001565b90505f81116112d0576040517ffba5154e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161130b92919061402c565b6020604051808303815f875af1158015611327573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134b9190614067565b505b7f7aba7eca7d870d5f2f93298379a43957082ef15cdcf64db1f7c731c6b3a2fa49838260405161137e92919061402c565b60405180910390a1505050565b600760149054906101000a900460ff1681565b6113a6611ff0565b6103e860026113b3610d4a565b6113bd91906140bf565b6113c7919061412d565b811015611400576040517fc2f5625a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600c819055507f1f41d239159181ddefb13e99853e0e4998e0556aa1f2281281c783e309281062600c546040516114389190613cae565b60405180910390a150565b600760189054906101000a900460ff1681565b600f5481565b5f81565b600c5481565b61146e611ff0565b60238211156114a9576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60238111156114e4576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600f81905550806010819055505050565b600d5481565b611504611ff0565b80600760156101000a81548160ff0219169083151502179055507f6a53d6c83a7a55d7a07bd490493fceb559161cce588908714e497e54044777d98160405161154d9190613b9e565b60405180910390a150565b600b5481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6115ac611ff0565b6115b55f61231b565b565b6115bf611ff0565b6103e860036115cc610d4a565b6115d691906140bf565b6115e0919061412d565b811015611619576040517fc2f5625a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d819055507fe2e6151ed0b472c61401059745339ca42474813911b22d24023385def6377e1c600d546040516116519190613cae565b60405180910390a150565b611664611ff0565b6103e86002611671610d4a565b61167b91906140bf565b611685919061412d565b8110156116be576040517fc2f5625a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b819055507f85668e92bc538f5c140067d68e3375c65b9e4545d2822ec8d807c6782f747d62600b546040516116f69190613cae565b60405180910390a150565b6014602052805f5260405f205f915054906101000a900460ff1681565b602381565b60085481565b60115481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606005805461178a90613f4f565b80601f01602080910402602001604051908101604052809291908181526020018280546117b690613f4f565b80156118015780601f106117d857610100808354040283529160200191611801565b820191905f5260205f20905b8154815290600101906020018083116117e457829003601f168201915b5050505050905090565b611813611ff0565b5f61181c610d4a565b9050620f424060018261182f91906140bf565b611839919061412d565b821015611872576040517fc2f5625a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e860058261188291906140bf565b61188c919061412d565b8211156118c5576040517f0625040100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600e54905082600e819055507f65a8c7442ea496b0a28890f1ef48a9819d1f5d747e9a8df155fe862dfd493c95838260405161190392919061415d565b60405180910390a1505050565b600760169054906101000a900460ff1681565b61192b611ff0565b80600760166101000a81548160ff0219169083151502179055507fa6a3dda702515d3130fef8b72d8e25f9aebd0d02e89d10d63c0c31d80b52f4a0816040516119749190613b9e565b60405180910390a150565b5f5f611989611fd7565b905061199681858561219a565b600191505092915050565b6119a9611ff0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a0e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb3dd4b0ccf73b51db7cb2a59fb88d1082b0fa9389d4ce0e85100fe3b26af78c460065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611ac5929190614184565b60405180910390a15050565b600760159054906101000a900460ff1681565b611aec611ff0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b51576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87160075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611c08929190614184565b60405180910390a15050565b611c1c611ff0565b5f5f90505b83839050811015611c6a57611c5d848483818110611c4257611c41613f7f565b5b9050602002016020810190611c579190613d17565b83612391565b8080600101915050611c21565b50505050565b6015602052805f5260405f205f915054906101000a900460ff1681565b611c95611ff0565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611d16576040517f027106be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d208282612422565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60105481565b611d56611ff0565b80600760146101000a81548160ff0219169083151502179055507f1da197dc3cab4eceaefd5d0c34df2ed3a08f20a207fb1910c0eceb361e2c965c81604051611d9f9190613b9e565b60405180910390a150565b611db2611ff0565b6023811115611ded576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6011549050816011819055507f6a7b998a4adc393cb692c67fcd563e7971e2ea6f3fe7c9b8fb6dd53cf5b627d08282604051611e2b92919061415d565b60405180910390a15050565b60095481565b6013602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ee4611ff0565b80600760186101000a81548160ff0219169083151502179055508015611f135743600881905550426009819055505b7f12df6ee6bd58eba562cf345175d720ee450508d5001d2a8c87721c30f86ca70181604051611f429190613b9e565b60405180910390a150565b611f55611ff0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fc5575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611fbc9190613d51565b60405180910390fd5b611fce8161231b565b50565b61dead81565b5f33905090565b611feb83838360016124b3565b505050565b611ff8611fd7565b73ffffffffffffffffffffffffffffffffffffffff1661201661172f565b73ffffffffffffffffffffffffffffffffffffffff161461207557612039611fd7565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161206c9190613d51565b60405180910390fd5b565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e0687082826040516120fc9291906141ab565b60405180910390a15050565b5f6121138484611e5a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146121945781811015612185578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161217c939291906141d2565b60405180910390fd5b61219384848484035f6124b3565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361220a575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016122019190613d51565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361227a575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016122719190613d51565b60405180910390fd5b612285838383612682565b505050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f066e0c23b9ae0bb92a88e9b0985bb7d85fce062730057312b99a9e243fde5ee1828260405161230f9291906141ab565b60405180910390a15050565b5f61232461172f565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461236e57612363815f612391565b61236d815f612077565b5b612379826001612391565b612384826001612077565b61238d826133ac565b5050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb82826040516124169291906141ab565b60405180910390a15050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f024f6c8d60a57c94822c46d989fd6935057590269281b07fe8327d7e9bc4242182826040516124a79291906141ab565b60405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612523575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161251a9190613d51565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612593575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161258a9190613d51565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561267c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516126739190613cae565b60405180910390a35b50505050565b5f3390505f32905060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561270b576040517fd18781b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061278c575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6127c2576040517fd18781b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061282757508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80612879575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6128af576040517fd18781b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600760189054906101000a900460ff1680612910575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612961575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612997576040517f037c597f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600760149054906101000a900460ff1680156129c15750600760179054906101000a900460ff16155b8015612a65575060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a63575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b9050801561302f57612a7561172f565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015612ae35750612ab361172f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1b57505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b55575061dead73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561302e57600760159054906101000a900460ff1615612d78577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612c1757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612d7757600343612c299190614207565b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054108015612cbc5750600343612c7c9190614207565b60165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b612cf2576040517f53444d9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4360165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504360165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e15575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612eaa57600b54841115612e56576040517f89be121e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d54612e628661155e565b85612e6d919061423a565b1115612ea5576040517f76c7c05200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61302d565b60155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f47575060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f8d57600c54841115612f88576040517fa8e28e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61302c565b60145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661302b57600d54612fe78661155e565b85612ff2919061423a565b111561302a576040517f76c7c05200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5b5b5b5f600760169054906101000a900460ff1680156130595750600760179054906101000a900460ff16155b80156130fd575060135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806130fb575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b905080156132f6575f5f905060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561316057505f601054115b156131865760646010548761317591906140bf565b61317f919061412d565b90506132d2565b60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131dd57505f600f54115b15613203576064600f54876131f291906140bf565b6131fc919061412d565b90506132d1565b60155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156132a1575060155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132ae57505f601154115b156132d0576064601154876132c391906140bf565b6132cd919061412d565b90505b5b5b5f8111156132f45780866132e69190614207565b95506132f388308361346d565b5b505b5f6133003061155e565b90505f600e54821015905082801561335f575060155f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156133685750805b1561339657600a544311801561337f575060085443115b156133955761338d82613689565b43600a819055505b5b6133a189898961346d565b505050505050505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134bd578060035f8282546134b1919061423a565b9250508190555061358d565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613547578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161353e939291906141d2565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135d4578060035f828254039250508190555061361f565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161367c9190613cae565b60405180910390a3505050565b6001600760176101000a81548160ff0219169083151502179055505f5f600267ffffffffffffffff8111156136c1576136c061426d565b5b6040519080825280602002602001820160405280156136ef5781602001602082028036833780820191505090505b50905030815f8151811061370657613705613f7f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137cd91906142ae565b816001815181106137e1576137e0613f7f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f6014600e5461382b91906140bf565b905080841115613839578093505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b815260040161389a9594939291906143c9565b5f604051808303815f87803b1580156138b1575f5ffd5b505af11580156138c3573d5f5f3e3d5ffd5b505050505f4790505f6002826138d9919061412d565b90505f81836138e89190614207565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161392f90613fd9565b5f6040518083038185875af1925050503d805f8114613969576040519150601f19603f3d011682016040523d82523d5f602084013e61396e565b606091505b50508096505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139b990613fd9565b5f6040518083038185875af1925050503d805f81146139f3576040519150601f19603f3d011682016040523d82523d5f602084013e6139f8565b606091505b5050809650505050505050505f600760176101000a81548160ff02191690831515021790555050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613a6382613a21565b613a6d8185613a2b565b9350613a7d818560208601613a3b565b613a8681613a49565b840191505092915050565b5f6020820190508181035f830152613aa98184613a59565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613ae282613ab9565b9050919050565b613af281613ad8565b8114613afc575f5ffd5b50565b5f81359050613b0d81613ae9565b92915050565b5f819050919050565b613b2581613b13565b8114613b2f575f5ffd5b50565b5f81359050613b4081613b1c565b92915050565b5f5f60408385031215613b5c57613b5b613ab1565b5b5f613b6985828601613aff565b9250506020613b7a85828601613b32565b9150509250929050565b5f8115159050919050565b613b9881613b84565b82525050565b5f602082019050613bb15f830184613b8f565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112613bd857613bd7613bb7565b5b8235905067ffffffffffffffff811115613bf557613bf4613bbb565b5b602083019150836020820283011115613c1157613c10613bbf565b5b9250929050565b613c2181613b84565b8114613c2b575f5ffd5b50565b5f81359050613c3c81613c18565b92915050565b5f5f5f60408486031215613c5957613c58613ab1565b5b5f84013567ffffffffffffffff811115613c7657613c75613ab5565b5b613c8286828701613bc3565b93509350506020613c9586828701613c2e565b9150509250925092565b613ca881613b13565b82525050565b5f602082019050613cc15f830184613c9f565b92915050565b5f5f5f60608486031215613cde57613cdd613ab1565b5b5f613ceb86828701613aff565b9350506020613cfc86828701613aff565b9250506040613d0d86828701613b32565b9150509250925092565b5f60208284031215613d2c57613d2b613ab1565b5b5f613d3984828501613aff565b91505092915050565b613d4b81613ad8565b82525050565b5f602082019050613d645f830184613d42565b92915050565b5f60ff82169050919050565b613d7f81613d6a565b82525050565b5f602082019050613d985f830184613d76565b92915050565b5f60208284031215613db357613db2613ab1565b5b5f613dc084828501613b32565b91505092915050565b5f5f60408385031215613ddf57613dde613ab1565b5b5f613dec85828601613b32565b9250506020613dfd85828601613b32565b9150509250929050565b5f60208284031215613e1c57613e1b613ab1565b5b5f613e2984828501613c2e565b91505092915050565b5f5f60408385031215613e4857613e47613ab1565b5b5f613e5585828601613aff565b9250506020613e6685828601613c2e565b9150509250929050565b5f819050919050565b5f613e93613e8e613e8984613ab9565b613e70565b613ab9565b9050919050565b5f613ea482613e79565b9050919050565b5f613eb582613e9a565b9050919050565b613ec581613eab565b82525050565b5f602082019050613ede5f830184613ebc565b92915050565b5f5f60408385031215613efa57613ef9613ab1565b5b5f613f0785828601613aff565b9250506020613f1885828601613aff565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613f6657607f821691505b602082108103613f7957613f78613f22565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b50565b5f613fc45f83613fac565b9150613fcf82613fb6565b5f82019050919050565b5f613fe382613fb9565b9150819050919050565b5f81519050613ffb81613b1c565b92915050565b5f6020828403121561401657614015613ab1565b5b5f61402384828501613fed565b91505092915050565b5f60408201905061403f5f830185613d42565b61404c6020830184613c9f565b9392505050565b5f8151905061406181613c18565b92915050565b5f6020828403121561407c5761407b613ab1565b5b5f61408984828501614053565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6140c982613b13565b91506140d483613b13565b92508282026140e281613b13565b915082820484148315176140f9576140f8614092565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61413782613b13565b915061414283613b13565b92508261415257614151614100565b5b828204905092915050565b5f6040820190506141705f830185613c9f565b61417d6020830184613c9f565b9392505050565b5f6040820190506141975f830185613d42565b6141a46020830184613d42565b9392505050565b5f6040820190506141be5f830185613d42565b6141cb6020830184613b8f565b9392505050565b5f6060820190506141e55f830186613d42565b6141f26020830185613c9f565b6141ff6040830184613c9f565b949350505050565b5f61421182613b13565b915061421c83613b13565b925082820390508181111561423457614233614092565b5b92915050565b5f61424482613b13565b915061424f83613b13565b925082820190508082111561426757614266614092565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506142a881613ae9565b92915050565b5f602082840312156142c3576142c2613ab1565b5b5f6142d08482850161429a565b91505092915050565b5f819050919050565b5f6142fc6142f76142f2846142d9565b613e70565b613b13565b9050919050565b61430c816142e2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61434481613ad8565b82525050565b5f614355838361433b565b60208301905092915050565b5f602082019050919050565b5f61437782614312565b614381818561431c565b935061438c8361432c565b805f5b838110156143bc5781516143a3888261434a565b97506143ae83614361565b92505060018101905061438f565b5085935050505092915050565b5f60a0820190506143dc5f830188613c9f565b6143e96020830187614303565b81810360408301526143fb818661436d565b905061440a6060830185613d42565b6144176080830184613c9f565b969550505050505056fea2646970667358221220a12f5918a62bdc860afc430d9a1291582cb42b10595cb9a293143a7243000d7f64736f6c634300081c0033
Deployed Bytecode
0x60806040526004361061031d575f3560e01c80637b812b41116101aa578063abefea03116100f6578063da0103bd11610094578063dd62ed3e1161006e578063dd62ed3e14610b86578063f275f64b14610bc2578063f2fde38b14610bea578063fccc281314610c125761031e565b8063da0103bd14610af8578063da4493f614610b20578063dbe66ca014610b4a5761031e565b8063c16dd4a4116100d0578063c16dd4a414610a54578063c31c9c0714610a7c578063cc1776d314610aa6578063ce657cce14610ad05761031e565b8063abefea03146109c8578063ad29ffde146109f0578063b4b11b9514610a185761031e565b806395d89b4111610163578063a901dd921161013d578063a901dd9214610912578063a9059cbb1461093a578063a91a9eb114610976578063a985ceef1461099e5761031e565b806395d89b4114610896578063a49a910f146108c0578063a64e4f8a146108e85761031e565b80637b812b41146107885780637f635cc0146107c457806380faa3d2146107ee5780638124f7ac146108185780638da5cb5b146108425780638ea5220f1461086c5761031e565b806336884b6e1161026957806366a88d961161022257806370a08231116101fc57806370a08231146106e6578063715018a614610722578063728d41c914610738578063757765f8146107605761031e565b806366a88d961461066a57806368b69b9b146106945780636aa5b37f146106bc5761031e565b806336884b6e146105725780634a8c1fb41461059a5780634f7041a5146105c4578063538ba4f9146105ee578063652e2f0414610618578063667f6526146106425761031e565b8063259827e3116102d65780632f6f30ea116102b05780632f6f30ea146104ce578063313ce567146104f6578063346cc7be146105205780633582ad23146105485761031e565b8063259827e31461043e57806326991cc81461047a5780632dc0562d146104a45761031e565b806306fdde0314610320578063095ea7b31461034a578063106a5a8f1461038657806318160ddd146103ae5780631ecd7d6e146103d857806323b872dd146104025761031e565b5b005b34801561032b575f5ffd5b50610334610c3c565b6040516103419190613a91565b60405180910390f35b348015610355575f5ffd5b50610370600480360381019061036b9190613b46565b610ccc565b60405161037d9190613b9e565b60405180910390f35b348015610391575f5ffd5b506103ac60048036038101906103a79190613c42565b610cee565b005b3480156103b9575f5ffd5b506103c2610d4a565b6040516103cf9190613cae565b60405180910390f35b3480156103e3575f5ffd5b506103ec610d53565b6040516103f99190613cae565b60405180910390f35b34801561040d575f5ffd5b5061042860048036038101906104239190613cc7565b610d59565b6040516104359190613b9e565b60405180910390f35b348015610449575f5ffd5b50610464600480360381019061045f9190613d17565b610d87565b6040516104719190613b9e565b60405180910390f35b348015610485575f5ffd5b5061048e610da4565b60405161049b9190613d51565b60405180910390f35b3480156104af575f5ffd5b506104b8610dc8565b6040516104c59190613d51565b60405180910390f35b3480156104d9575f5ffd5b506104f460048036038101906104ef9190613c42565b610ded565b005b348015610501575f5ffd5b5061050a6110f2565b6040516105179190613d85565b60405180910390f35b34801561052b575f5ffd5b5061054660048036038101906105419190613d17565b6110fa565b005b348015610553575f5ffd5b5061055c61138b565b6040516105699190613b9e565b60405180910390f35b34801561057d575f5ffd5b5061059860048036038101906105939190613d9e565b61139e565b005b3480156105a5575f5ffd5b506105ae611443565b6040516105bb9190613b9e565b60405180910390f35b3480156105cf575f5ffd5b506105d8611456565b6040516105e59190613cae565b60405180910390f35b3480156105f9575f5ffd5b5061060261145c565b60405161060f9190613d51565b60405180910390f35b348015610623575f5ffd5b5061062c611460565b6040516106399190613cae565b60405180910390f35b34801561064d575f5ffd5b5061066860048036038101906106639190613dc9565b611466565b005b348015610675575f5ffd5b5061067e6114f6565b60405161068b9190613cae565b60405180910390f35b34801561069f575f5ffd5b506106ba60048036038101906106b59190613e07565b6114fc565b005b3480156106c7575f5ffd5b506106d0611558565b6040516106dd9190613cae565b60405180910390f35b3480156106f1575f5ffd5b5061070c60048036038101906107079190613d17565b61155e565b6040516107199190613cae565b60405180910390f35b34801561072d575f5ffd5b506107366115a4565b005b348015610743575f5ffd5b5061075e60048036038101906107599190613d9e565b6115b7565b005b34801561076b575f5ffd5b5061078660048036038101906107819190613d9e565b61165c565b005b348015610793575f5ffd5b506107ae60048036038101906107a99190613d17565b611701565b6040516107bb9190613b9e565b60405180910390f35b3480156107cf575f5ffd5b506107d861171e565b6040516107e59190613cae565b60405180910390f35b3480156107f9575f5ffd5b50610802611723565b60405161080f9190613cae565b60405180910390f35b348015610823575f5ffd5b5061082c611729565b6040516108399190613cae565b60405180910390f35b34801561084d575f5ffd5b5061085661172f565b6040516108639190613d51565b60405180910390f35b348015610877575f5ffd5b50610880611756565b60405161088d9190613d51565b60405180910390f35b3480156108a1575f5ffd5b506108aa61177b565b6040516108b79190613a91565b60405180910390f35b3480156108cb575f5ffd5b506108e660048036038101906108e19190613d9e565b61180b565b005b3480156108f3575f5ffd5b506108fc611910565b6040516109099190613b9e565b60405180910390f35b34801561091d575f5ffd5b5061093860048036038101906109339190613e07565b611923565b005b348015610945575f5ffd5b50610960600480360381019061095b9190613b46565b61197f565b60405161096d9190613b9e565b60405180910390f35b348015610981575f5ffd5b5061099c60048036038101906109979190613d17565b6119a1565b005b3480156109a9575f5ffd5b506109b2611ad1565b6040516109bf9190613b9e565b60405180910390f35b3480156109d3575f5ffd5b506109ee60048036038101906109e99190613d17565b611ae4565b005b3480156109fb575f5ffd5b50610a166004803603810190610a119190613c42565b611c14565b005b348015610a23575f5ffd5b50610a3e6004803603810190610a399190613d17565b611c70565b604051610a4b9190613b9e565b60405180910390f35b348015610a5f575f5ffd5b50610a7a6004803603810190610a759190613e32565b611c8d565b005b348015610a87575f5ffd5b50610a90611d24565b604051610a9d9190613ecb565b60405180910390f35b348015610ab1575f5ffd5b50610aba611d48565b604051610ac79190613cae565b60405180910390f35b348015610adb575f5ffd5b50610af66004803603810190610af19190613e07565b611d4e565b005b348015610b03575f5ffd5b50610b1e6004803603810190610b199190613d9e565b611daa565b005b348015610b2b575f5ffd5b50610b34611e37565b604051610b419190613cae565b60405180910390f35b348015610b55575f5ffd5b50610b706004803603810190610b6b9190613d17565b611e3d565b604051610b7d9190613b9e565b60405180910390f35b348015610b91575f5ffd5b50610bac6004803603810190610ba79190613ee4565b611e5a565b604051610bb99190613cae565b60405180910390f35b348015610bcd575f5ffd5b50610be86004803603810190610be39190613e07565b611edc565b005b348015610bf5575f5ffd5b50610c106004803603810190610c0b9190613d17565b611f4d565b005b348015610c1d575f5ffd5b50610c26611fd1565b604051610c339190613d51565b60405180910390f35b606060048054610c4b90613f4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7790613f4f565b8015610cc25780601f10610c9957610100808354040283529160200191610cc2565b820191905f5260205f20905b815481529060010190602001808311610ca557829003601f168201915b5050505050905090565b5f5f610cd6611fd7565b9050610ce3818585611fde565b600191505092915050565b610cf6611ff0565b5f5f90505b83839050811015610d4457610d37848483818110610d1c57610d1b613f7f565b5b9050602002016020810190610d319190613d17565b83612077565b8080600101915050610cfb565b50505050565b5f600354905090565b600e5481565b5f5f610d63611fd7565b9050610d70858285612108565b610d7b85858561219a565b60019150509392505050565b6012602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000f240640a0bc685e926286e7927562a1a487cfa9181565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610df5611ff0565b5f5f90505b838390508110156110ec5760155f858584818110610e1b57610e1a613f7f565b5b9050602002016020810190610e309190613d17565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610ef657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16848483818110610ec857610ec7613f7f565b5b9050602002016020810190610edd9190613d17565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f5557503073ffffffffffffffffffffffffffffffffffffffff16848483818110610f2757610f26613f7f565b5b9050602002016020810190610f3c9190613d17565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610fb457505f73ffffffffffffffffffffffffffffffffffffffff16848483818110610f8657610f85613f7f565b5b9050602002016020810190610f9b9190613d17565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156110a8575060135f858584818110610fd157610fd0613f7f565b5b9050602002016020810190610fe69190613d17565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156110a7575060145f85858481811061104a57611049613f7f565b5b905060200201602081019061105f9190613d17565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b156110df576110de8484838181106110c3576110c2613f7f565b5b90506020020160208101906110d89190613d17565b8361228a565b5b8080600101915050610dfa565b50505050565b5f6012905090565b611102611ff0565b5f3390505f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121d575f4791505f8211611177576040517fcff858f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168260405161119b90613fd9565b5f6040518083038185875af1925050503d805f81146111d5576040519150601f19603f3d011682016040523d82523d5f602084013e6111da565b606091505b50508091505080611217576040517f81102ece00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061134d565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112569190613d51565b602060405180830381865afa158015611271573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112959190614001565b90505f81116112d0576040517ffba5154e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161130b92919061402c565b6020604051808303815f875af1158015611327573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134b9190614067565b505b7f7aba7eca7d870d5f2f93298379a43957082ef15cdcf64db1f7c731c6b3a2fa49838260405161137e92919061402c565b60405180910390a1505050565b600760149054906101000a900460ff1681565b6113a6611ff0565b6103e860026113b3610d4a565b6113bd91906140bf565b6113c7919061412d565b811015611400576040517fc2f5625a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600c819055507f1f41d239159181ddefb13e99853e0e4998e0556aa1f2281281c783e309281062600c546040516114389190613cae565b60405180910390a150565b600760189054906101000a900460ff1681565b600f5481565b5f81565b600c5481565b61146e611ff0565b60238211156114a9576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60238111156114e4576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600f81905550806010819055505050565b600d5481565b611504611ff0565b80600760156101000a81548160ff0219169083151502179055507f6a53d6c83a7a55d7a07bd490493fceb559161cce588908714e497e54044777d98160405161154d9190613b9e565b60405180910390a150565b600b5481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6115ac611ff0565b6115b55f61231b565b565b6115bf611ff0565b6103e860036115cc610d4a565b6115d691906140bf565b6115e0919061412d565b811015611619576040517fc2f5625a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d819055507fe2e6151ed0b472c61401059745339ca42474813911b22d24023385def6377e1c600d546040516116519190613cae565b60405180910390a150565b611664611ff0565b6103e86002611671610d4a565b61167b91906140bf565b611685919061412d565b8110156116be576040517fc2f5625a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b819055507f85668e92bc538f5c140067d68e3375c65b9e4545d2822ec8d807c6782f747d62600b546040516116f69190613cae565b60405180910390a150565b6014602052805f5260405f205f915054906101000a900460ff1681565b602381565b60085481565b60115481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606005805461178a90613f4f565b80601f01602080910402602001604051908101604052809291908181526020018280546117b690613f4f565b80156118015780601f106117d857610100808354040283529160200191611801565b820191905f5260205f20905b8154815290600101906020018083116117e457829003601f168201915b5050505050905090565b611813611ff0565b5f61181c610d4a565b9050620f424060018261182f91906140bf565b611839919061412d565b821015611872576040517fc2f5625a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e860058261188291906140bf565b61188c919061412d565b8211156118c5576040517f0625040100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600e54905082600e819055507f65a8c7442ea496b0a28890f1ef48a9819d1f5d747e9a8df155fe862dfd493c95838260405161190392919061415d565b60405180910390a1505050565b600760169054906101000a900460ff1681565b61192b611ff0565b80600760166101000a81548160ff0219169083151502179055507fa6a3dda702515d3130fef8b72d8e25f9aebd0d02e89d10d63c0c31d80b52f4a0816040516119749190613b9e565b60405180910390a150565b5f5f611989611fd7565b905061199681858561219a565b600191505092915050565b6119a9611ff0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a0e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb3dd4b0ccf73b51db7cb2a59fb88d1082b0fa9389d4ce0e85100fe3b26af78c460065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611ac5929190614184565b60405180910390a15050565b600760159054906101000a900460ff1681565b611aec611ff0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b51576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87160075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611c08929190614184565b60405180910390a15050565b611c1c611ff0565b5f5f90505b83839050811015611c6a57611c5d848483818110611c4257611c41613f7f565b5b9050602002016020810190611c579190613d17565b83612391565b8080600101915050611c21565b50505050565b6015602052805f5260405f205f915054906101000a900460ff1681565b611c95611ff0565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611d16576040517f027106be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d208282612422565b5050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60105481565b611d56611ff0565b80600760146101000a81548160ff0219169083151502179055507f1da197dc3cab4eceaefd5d0c34df2ed3a08f20a207fb1910c0eceb361e2c965c81604051611d9f9190613b9e565b60405180910390a150565b611db2611ff0565b6023811115611ded576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6011549050816011819055507f6a7b998a4adc393cb692c67fcd563e7971e2ea6f3fe7c9b8fb6dd53cf5b627d08282604051611e2b92919061415d565b60405180910390a15050565b60095481565b6013602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ee4611ff0565b80600760186101000a81548160ff0219169083151502179055508015611f135743600881905550426009819055505b7f12df6ee6bd58eba562cf345175d720ee450508d5001d2a8c87721c30f86ca70181604051611f429190613b9e565b60405180910390a150565b611f55611ff0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fc5575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611fbc9190613d51565b60405180910390fd5b611fce8161231b565b50565b61dead81565b5f33905090565b611feb83838360016124b3565b505050565b611ff8611fd7565b73ffffffffffffffffffffffffffffffffffffffff1661201661172f565b73ffffffffffffffffffffffffffffffffffffffff161461207557612039611fd7565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161206c9190613d51565b60405180910390fd5b565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e0687082826040516120fc9291906141ab565b60405180910390a15050565b5f6121138484611e5a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146121945781811015612185578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161217c939291906141d2565b60405180910390fd5b61219384848484035f6124b3565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361220a575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016122019190613d51565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361227a575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016122719190613d51565b60405180910390fd5b612285838383612682565b505050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f066e0c23b9ae0bb92a88e9b0985bb7d85fce062730057312b99a9e243fde5ee1828260405161230f9291906141ab565b60405180910390a15050565b5f61232461172f565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461236e57612363815f612391565b61236d815f612077565b5b612379826001612391565b612384826001612077565b61238d826133ac565b5050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb82826040516124169291906141ab565b60405180910390a15050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f024f6c8d60a57c94822c46d989fd6935057590269281b07fe8327d7e9bc4242182826040516124a79291906141ab565b60405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612523575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161251a9190613d51565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612593575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161258a9190613d51565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561267c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516126739190613cae565b60405180910390a35b50505050565b5f3390505f32905060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561270b576040517fd18781b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061278c575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6127c2576040517fd18781b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061282757508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80612879575060125f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6128af576040517fd18781b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600760189054906101000a900460ff1680612910575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612961575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612997576040517f037c597f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600760149054906101000a900460ff1680156129c15750600760179054906101000a900460ff16155b8015612a65575060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a63575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b9050801561302f57612a7561172f565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015612ae35750612ab361172f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1b57505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b55575061dead73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561302e57600760159054906101000a900460ff1615612d78577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612c1757507f000000000000000000000000f240640a0bc685e926286e7927562a1a487cfa9173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612d7757600343612c299190614207565b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054108015612cbc5750600343612c7c9190614207565b60165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054105b612cf2576040517f53444d9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4360165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504360165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e15575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612eaa57600b54841115612e56576040517f89be121e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d54612e628661155e565b85612e6d919061423a565b1115612ea5576040517f76c7c05200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61302d565b60155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f47575060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f8d57600c54841115612f88576040517fa8e28e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61302c565b60145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661302b57600d54612fe78661155e565b85612ff2919061423a565b111561302a576040517f76c7c05200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5b5b5b5f600760169054906101000a900460ff1680156130595750600760179054906101000a900460ff16155b80156130fd575060135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806130fb575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b905080156132f6575f5f905060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561316057505f601054115b156131865760646010548761317591906140bf565b61317f919061412d565b90506132d2565b60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131dd57505f600f54115b15613203576064600f54876131f291906140bf565b6131fc919061412d565b90506132d1565b60155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156132a1575060155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132ae57505f601154115b156132d0576064601154876132c391906140bf565b6132cd919061412d565b90505b5b5b5f8111156132f45780866132e69190614207565b95506132f388308361346d565b5b505b5f6133003061155e565b90505f600e54821015905082801561335f575060155f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156133685750805b1561339657600a544311801561337f575060085443115b156133955761338d82613689565b43600a819055505b5b6133a189898961346d565b505050505050505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134bd578060035f8282546134b1919061423a565b9250508190555061358d565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613547578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161353e939291906141d2565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135d4578060035f828254039250508190555061361f565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161367c9190613cae565b60405180910390a3505050565b6001600760176101000a81548160ff0219169083151502179055505f5f600267ffffffffffffffff8111156136c1576136c061426d565b5b6040519080825280602002602001820160405280156136ef5781602001602082028036833780820191505090505b50905030815f8151811061370657613705613f7f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137cd91906142ae565b816001815181106137e1576137e0613f7f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f6014600e5461382b91906140bf565b905080841115613839578093505b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b815260040161389a9594939291906143c9565b5f604051808303815f87803b1580156138b1575f5ffd5b505af11580156138c3573d5f5f3e3d5ffd5b505050505f4790505f6002826138d9919061412d565b90505f81836138e89190614207565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161392f90613fd9565b5f6040518083038185875af1925050503d805f8114613969576040519150601f19603f3d011682016040523d82523d5f602084013e61396e565b606091505b50508096505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139b990613fd9565b5f6040518083038185875af1925050503d805f81146139f3576040519150601f19603f3d011682016040523d82523d5f602084013e6139f8565b606091505b5050809650505050505050505f600760176101000a81548160ff02191690831515021790555050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613a6382613a21565b613a6d8185613a2b565b9350613a7d818560208601613a3b565b613a8681613a49565b840191505092915050565b5f6020820190508181035f830152613aa98184613a59565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613ae282613ab9565b9050919050565b613af281613ad8565b8114613afc575f5ffd5b50565b5f81359050613b0d81613ae9565b92915050565b5f819050919050565b613b2581613b13565b8114613b2f575f5ffd5b50565b5f81359050613b4081613b1c565b92915050565b5f5f60408385031215613b5c57613b5b613ab1565b5b5f613b6985828601613aff565b9250506020613b7a85828601613b32565b9150509250929050565b5f8115159050919050565b613b9881613b84565b82525050565b5f602082019050613bb15f830184613b8f565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112613bd857613bd7613bb7565b5b8235905067ffffffffffffffff811115613bf557613bf4613bbb565b5b602083019150836020820283011115613c1157613c10613bbf565b5b9250929050565b613c2181613b84565b8114613c2b575f5ffd5b50565b5f81359050613c3c81613c18565b92915050565b5f5f5f60408486031215613c5957613c58613ab1565b5b5f84013567ffffffffffffffff811115613c7657613c75613ab5565b5b613c8286828701613bc3565b93509350506020613c9586828701613c2e565b9150509250925092565b613ca881613b13565b82525050565b5f602082019050613cc15f830184613c9f565b92915050565b5f5f5f60608486031215613cde57613cdd613ab1565b5b5f613ceb86828701613aff565b9350506020613cfc86828701613aff565b9250506040613d0d86828701613b32565b9150509250925092565b5f60208284031215613d2c57613d2b613ab1565b5b5f613d3984828501613aff565b91505092915050565b613d4b81613ad8565b82525050565b5f602082019050613d645f830184613d42565b92915050565b5f60ff82169050919050565b613d7f81613d6a565b82525050565b5f602082019050613d985f830184613d76565b92915050565b5f60208284031215613db357613db2613ab1565b5b5f613dc084828501613b32565b91505092915050565b5f5f60408385031215613ddf57613dde613ab1565b5b5f613dec85828601613b32565b9250506020613dfd85828601613b32565b9150509250929050565b5f60208284031215613e1c57613e1b613ab1565b5b5f613e2984828501613c2e565b91505092915050565b5f5f60408385031215613e4857613e47613ab1565b5b5f613e5585828601613aff565b9250506020613e6685828601613c2e565b9150509250929050565b5f819050919050565b5f613e93613e8e613e8984613ab9565b613e70565b613ab9565b9050919050565b5f613ea482613e79565b9050919050565b5f613eb582613e9a565b9050919050565b613ec581613eab565b82525050565b5f602082019050613ede5f830184613ebc565b92915050565b5f5f60408385031215613efa57613ef9613ab1565b5b5f613f0785828601613aff565b9250506020613f1885828601613aff565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613f6657607f821691505b602082108103613f7957613f78613f22565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b50565b5f613fc45f83613fac565b9150613fcf82613fb6565b5f82019050919050565b5f613fe382613fb9565b9150819050919050565b5f81519050613ffb81613b1c565b92915050565b5f6020828403121561401657614015613ab1565b5b5f61402384828501613fed565b91505092915050565b5f60408201905061403f5f830185613d42565b61404c6020830184613c9f565b9392505050565b5f8151905061406181613c18565b92915050565b5f6020828403121561407c5761407b613ab1565b5b5f61408984828501614053565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6140c982613b13565b91506140d483613b13565b92508282026140e281613b13565b915082820484148315176140f9576140f8614092565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61413782613b13565b915061414283613b13565b92508261415257614151614100565b5b828204905092915050565b5f6040820190506141705f830185613c9f565b61417d6020830184613c9f565b9392505050565b5f6040820190506141975f830185613d42565b6141a46020830184613d42565b9392505050565b5f6040820190506141be5f830185613d42565b6141cb6020830184613b8f565b9392505050565b5f6060820190506141e55f830186613d42565b6141f26020830185613c9f565b6141ff6040830184613c9f565b949350505050565b5f61421182613b13565b915061421c83613b13565b925082820390508181111561423457614233614092565b5b92915050565b5f61424482613b13565b915061424f83613b13565b925082820190508082111561426757614266614092565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506142a881613ae9565b92915050565b5f602082840312156142c3576142c2613ab1565b5b5f6142d08482850161429a565b91505092915050565b5f819050919050565b5f6142fc6142f76142f2846142d9565b613e70565b613b13565b9050919050565b61430c816142e2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61434481613ad8565b82525050565b5f614355838361433b565b60208301905092915050565b5f602082019050919050565b5f61437782614312565b614381818561431c565b935061438c8361432c565b805f5b838110156143bc5781516143a3888261434a565b97506143ae83614361565b92505060018101905061438f565b5085935050505092915050565b5f60a0820190506143dc5f830188613c9f565b6143e96020830187614303565b81810360408301526143fb818661436d565b905061440a6060830185613d42565b6144176080830184613c9f565b969550505050505056fea2646970667358221220a12f5918a62bdc860afc430d9a1291582cb42b10595cb9a293143a7243000d7f64736f6c634300081c0033
Deployed Bytecode Sourcemap
26343:14806:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13101:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15419:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34295:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14203:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27092:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16212:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27219:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26558:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26598:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34543:572;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14054:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35300:674;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26662:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32614:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26791:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27127:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26439:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27020:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33506:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27054:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32088:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26987:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14365:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24957:103;;;;;;;;;;;;;:::i;:::-;;32847:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32385:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27328:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26936:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26823:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27184:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24282:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26629:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13311:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33088:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26728:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32244:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14688:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31394:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26694:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31666:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34050:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27385:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35123:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26386:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27155:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31938:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33767:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26860:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27273:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14933:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31128:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25215:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26495:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13101:91;13146:13;13179:5;13172:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13101:91;:::o;15419:215::-;15517:4;15534:13;15550:12;:10;:12::i;:::-;15534:28;;15573:31;15582:5;15589:7;15598:5;15573:8;:31::i;:::-;15622:4;15615:11;;;15419:215;;;;:::o;34295:240::-;24168:13;:11;:13::i;:::-;34423:9:::1;34435:1;34423:13;;34418:110;34442:8;;:15;;34438:1;:19;34418:110;;;34479:37;34497:8;;34506:1;34497:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;34510:5;34479:17;:37::i;:::-;34459:3;;;;;;;34418:110;;;;34295:240:::0;;;:::o;14203:99::-;14255:7;14282:12;;14275:19;;14203:99;:::o;27092:28::-;;;;:::o;16212:283::-;16333:4;16350:15;16368:12;:10;:12::i;:::-;16350:30;;16391:37;16407:4;16413:7;16422:5;16391:15;:37::i;:::-;16439:26;16449:4;16455:2;16459:5;16439:9;:26::i;:::-;16483:4;16476:11;;;16212:283;;;;;:::o;27219:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;26558:33::-;;;:::o;26598:24::-;;;;;;;;;;;;;:::o;34543:572::-;24168:13;:11;:13::i;:::-;34672:9:::1;34684:1;34672:13;;34667:441;34691:8;;:15;;34687:1;:19;34667:441;;;34752:11;:24;34764:8;;34773:1;34764:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;34752:24;;;;;;;;;;;;;;;;;;;;;;;;;34751:25;34750:84;;;;;34822:10;34799:34;;:8;;34808:1;34799:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:34;;;;34750:84;:135;;;;;34879:4;34856:28;;:8;;34865:1;34856:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:28;;;;34750:135;:185;;;;;26486:1;34907:27;;:8;;34916:1;34907:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:27;;;;34750:185;:295;;;;;34958:16;:29;34975:8;;34984:1;34975:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;34958:29;;;;;;;;;;;;;;;;;;;;;;;;;34957:30;:87;;;;;35013:18;:31;35032:8;;35041:1;35032:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;35013:31;;;;;;;;;;;;;;;;;;;;;;;;;35012:32;34957:87;34750:295;34728:368;;;35061:35;35077:8;;35086:1;35077:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;35090:5;35061:15;:35::i;:::-;34728:368;34708:3;;;;;;;34667:441;;;;34543:572:::0;;;:::o;14054:84::-;14103:5;14128:2;14121:9;;14054:84;:::o;35300:674::-;24168:13;:11;:13::i;:::-;35372::::1;35388:10;35372:26;;35409:14;26486:1;35438:22;;:6;:22;;::::0;35434:481:::1;;35477:12;35513:21;35504:30;;35566:1;35557:6;:10;35549:38;;;;;;;;;;;;;;;;;35624:5;35616:19;;35643:6;35616:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35602:52;;;;;35677:7;35669:39;;;;;;;;;;;;;;;;;35462:258;35434:481;;;35757:6;35750:24;;;35783:4;35750:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35741:48;;35821:1;35812:6;:10;35804:41;;;;;;;;;;;;;;;;;35867:6;35860:23;;;35884:10;35896:6;35860:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35434:481;35930:36;35951:6;35959;35930:36;;;;;;;:::i;:::-;;;;;;;;35361:613;;35300:674:::0;:::o;26662:25::-;;;;;;;;;;;;;:::o;32614:225::-;24168:13;:11;:13::i;:::-;32726:4:::1;32721:1;32705:13;:11;:13::i;:::-;:17;;;;:::i;:::-;32704:26;;;;:::i;:::-;32693:6;:38;;32685:65;;;;;;;;;;;;;;;;;32776:6;32761:12;:21;;;;32798:33;32818:12;;32798:33;;;;;;:::i;:::-;;;;;;;;32614:225:::0;:::o;26791:23::-;;;;;;;;;;;;;:::o;27127:21::-;;;;:::o;26439:49::-;26486:1;26439:49;:::o;27020:27::-;;;;:::o;33506:253::-;24168:13;:11;:13::i;:::-;26976:2:::1;33595:7;:24;;33587:47;;;;;;;;;;;;;;;;;26976:2;33653:8;:25;;33645:48;;;;;;;;;;;;;;;;;33715:7;33706:6;:16;;;;33743:8;33733:7;:18;;;;33506:253:::0;;:::o;27054:29::-;;;;:::o;32088:148::-;24168:13;:11;:13::i;:::-;32179:5:::1;32161:15;;:23;;;;;;;;;;;;;;;;;;32200:28;32222:5;32200:28;;;;;;:::i;:::-;;;;;;;;32088:148:::0;:::o;26987:26::-;;;;:::o;14365:118::-;14430:7;14457:9;:18;14467:7;14457:18;;;;;;;;;;;;;;;;14450:25;;14365:118;;;:::o;24957:103::-;24168:13;:11;:13::i;:::-;25022:30:::1;25049:1;25022:18;:30::i;:::-;24957:103::o:0;32847:233::-;24168:13;:11;:13::i;:::-;32961:4:::1;32956:1;32940:13;:11;:13::i;:::-;:17;;;;:::i;:::-;32939:26;;;;:::i;:::-;32928:6;:38;;32920:65;;;;;;;;;;;;;;;;;33013:6;32996:14;:23;;;;33035:37;33057:14;;33035:37;;;;;;:::i;:::-;;;;;;;;32847:233:::0;:::o;32385:221::-;24168:13;:11;:13::i;:::-;32496:4:::1;32491:1;32475:13;:11;:13::i;:::-;:17;;;;:::i;:::-;32474:26;;;;:::i;:::-;32463:6;:38;;32455:65;;;;;;;;;;;;;;;;;32545:6;32531:11;:20;;;;32567:31;32586:11;;32567:31;;;;;;:::i;:::-;;;;;;;;32385:221:::0;:::o;27328:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;26936:42::-;26976:2;26936:42;:::o;26823:30::-;;;;:::o;27184:26::-;;;;:::o;24282:87::-;24328:7;24355:6;;;;;;;;;;;24348:13;;24282:87;:::o;26629:24::-;;;;;;;;;;;;;:::o;13311:95::-;13358:13;13391:7;13384:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13311:95;:::o;33088:410::-;24168:13;:11;:13::i;:::-;33160:25:::1;33188:13;:11;:13::i;:::-;33160:41;;33256:7;33251:1;33231:17;:21;;;;:::i;:::-;33230:33;;;;:::i;:::-;33220:6;:43;;33212:70;;;;;;;;;;;;;;;;;33337:4;33332:1;33312:17;:21;;;;:::i;:::-;33311:30;;;;:::i;:::-;33301:6;:40;;33293:67;;;;;;;;;;;;;;;;;33371:16;33390:13;;33371:32;;33430:6;33414:13;:22;;;;33452:38;33473:6;33481:8;33452:38;;;;;;;:::i;:::-;;;;;;;;33149:349;;33088:410:::0;:::o;26728:23::-;;;;;;;;;;;;;:::o;32244:133::-;24168:13;:11;:13::i;:::-;32324:5:::1;32310:11;;:19;;;;;;;;;;;;;;;;;;32345:24;32363:5;32345:24;;;;;;:::i;:::-;;;;;;;;32244:133:::0;:::o;14688:182::-;14757:4;14774:13;14790:12;:10;:12::i;:::-;14774:28;;14813:27;14823:5;14830:2;14834:5;14813:9;:27::i;:::-;14858:4;14851:11;;;14688:182;;;;:::o;31394:264::-;24168:13;:11;:13::i;:::-;26486:1:::1;31478:26;;:10;:26;;::::0;31470:53:::1;;;;;;;;;;;;;;;;;31534:17;31554:9;;;;;;;;;;;31534:29;;31586:10;31574:9;;:22;;;;;;;;;;;;;;;;;;31612:38;31629:9;;;;;;;;;;;31640;31612:38;;;;;;;:::i;:::-;;;;;;;;31459:199;31394:264:::0;:::o;26694:27::-;;;;;;;;;;;;;:::o;31666:264::-;24168:13;:11;:13::i;:::-;26486:1:::1;31750:26;;:10;:26;;::::0;31742:53:::1;;;;;;;;;;;;;;;;;31806:17;31826:9;;;;;;;;;;;31806:29;;31858:10;31846:9;;:22;;;;;;;;;;;;;;;;;;31884:38;31901:9;;;;;;;;;;;31912;31884:38;;;;;;;:::i;:::-;;;;;;;;31731:199;31666:264:::0;:::o;34050:237::-;24168:13;:11;:13::i;:::-;34176:9:::1;34188:1;34176:13;;34171:109;34195:8;;:15;;34191:1;:19;34171:109;;;34232:36;34249:8;;34258:1;34249:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;34262:5;34232:16;:36::i;:::-;34212:3;;;;;;;34171:109;;;;34050:237:::0;;;:::o;27385:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;35123:169::-;24168:13;:11;:13::i;:::-;35211:11:::1;:17;35223:4;35211:17;;;;;;;;;;;;;;;;;;;;;;;;;35210:18;35202:45;;;;;;;;;;;;;;;;;35258:26;35272:4;35278:5;35258:13;:26::i;:::-;35123:169:::0;;:::o;26386:44::-;;;:::o;27155:22::-;;;;:::o;31938:142::-;24168:13;:11;:13::i;:::-;32025:5:::1;32009:13;;:21;;;;;;;;;;;;;;;;;;32046:26;32066:5;32046:26;;;;;;:::i;:::-;;;;;;;;31938:142:::0;:::o;33767:275::-;24168:13;:11;:13::i;:::-;26976:2:::1;33854:12;:29;;33846:52;;;;;;;;;;;;;;;;;33909:16;33928:11;;33909:30;;33964:12;33950:11;:26;;;;33992:42;34011:12;34025:8;33992:42;;;;;;;:::i;:::-;;;;;;;;33835:207;33767:275:::0;:::o;26860:29::-;;;;:::o;27273:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;14933:167::-;15038:7;15065:11;:18;15077:5;15065:18;;;;;;;;;;;;;;;:27;15084:7;15065:27;;;;;;;;;;;;;;;;15058:34;;14933:167;;;;:::o;31128:258::-;24168:13;:11;:13::i;:::-;31208:6:::1;31194:11;;:20;;;;;;;;;;;;;;;;;;31231:6;31227:116;;;31272:12;31254:15;:30;;;;31316:15;31299:14;:32;;;;31227:116;31360:18;31371:6;31360:18;;;;;;:::i;:::-;;;;;;;;31128:258:::0;:::o;25215:220::-;24168:13;:11;:13::i;:::-;25320:1:::1;25300:22;;:8;:22;;::::0;25296:93:::1;;25374:1;25346:31;;;;;;;;;;;:::i;:::-;;;;;;;;25296:93;25399:28;25418:8;25399:18;:28::i;:::-;25215:220:::0;:::o;26495:54::-;26542:6;26495:54;:::o;4316:98::-;4369:7;4396:10;4389:17;;4316:98;:::o;20305:130::-;20390:37;20399:5;20406:7;20415:5;20422:4;20390:8;:37::i;:::-;20305:130;;;:::o;24447:166::-;24518:12;:10;:12::i;:::-;24507:23;;:7;:5;:7::i;:::-;:23;;;24503:103;;24581:12;:10;:12::i;:::-;24554:40;;;;;;;;;;;:::i;:::-;;;;;;;;24503:103;24447:166::o;40621:177::-;40735:5;40705:18;:27;40724:7;40705:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;40756:34;40775:7;40784:5;40756:34;;;;;;;:::i;:::-;;;;;;;;40621:177;;:::o;22064:603::-;22198:24;22225:25;22235:5;22242:7;22225:9;:25::i;:::-;22198:52;;22285:17;22265:16;:37;22261:399;;22342:5;22323:16;:24;22319:214;;;22424:7;22454:16;22493:5;22375:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;22319:214;22576:57;22585:5;22592:7;22620:5;22601:16;:24;22627:5;22576:8;:57::i;:::-;22261:399;22187:480;22064:603;;;:::o;16880:308::-;16980:1;16964:18;;:4;:18;;;16960:88;;17033:1;17006:30;;;;;;;;;;;:::i;:::-;;;;;;;;16960:88;17076:1;17062:16;;:2;:16;;;17058:88;;17131:1;17102:32;;;;;;;;;;;:::i;:::-;;;;;;;;17058:88;17156:24;17164:4;17170:2;17174:5;17156:7;:24::i;:::-;16880:308;;;:::o;40806:170::-;40915:5;40888:15;:24;40904:7;40888:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;40936;40953:7;40962:5;40936:32;;;;;;;:::i;:::-;;;;;;;;40806:170;;:::o;30730:390::-;30805:16;30824:7;:5;:7::i;:::-;30805:26;;26486:1;30846:24;;:8;:24;;;30842:139;;30887:33;30904:8;30914:5;30887:16;:33::i;:::-;30935:34;30953:8;30963:5;30935:17;:34::i;:::-;30842:139;30991:32;31008:8;31018:4;30991:16;:32::i;:::-;31034:33;31052:8;31062:4;31034:17;:33::i;:::-;31078:34;31103:8;31078:24;:34::i;:::-;30794:326;30730:390;:::o;40441:172::-;40552:5;40524:16;:25;40541:7;40524:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;40573:32;40590:7;40599:5;40573:32;;;;;;;:::i;:::-;;;;;;;;40441:172;;:::o;40984:162::-;41081:5;41061:11;:17;41073:4;41061:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;41102:36;41126:4;41132:5;41102:36;;;;;;;:::i;:::-;;;;;;;;40984:162;;:::o;21286:486::-;21459:1;21442:19;;:5;:19;;;21438:91;;21514:1;21485:32;;;;;;;;;;;:::i;:::-;;;;;;;;21438:91;21562:1;21543:21;;:7;:21;;;21539:92;;21616:1;21588:31;;;;;;;;;;;:::i;:::-;;;;;;;;21539:92;21671:5;21641:11;:18;21653:5;21641:18;;;;;;;;;;;;;;;:27;21660:7;21641:27;;;;;;;;;;;;;;;:35;;;;21691:9;21687:78;;;21738:7;21722:31;;21731:5;21722:31;;;21747:5;21722:31;;;;;;:::i;:::-;;;;;;;;21687:78;21286:486;;;;:::o;35982:3531::-;36112:14;36129:10;36112:27;;36150:14;36167:9;36150:26;;36198:15;:21;36214:4;36198:21;;;;;;;;;;;;;;;;;;;;;;;;;36197:22;36189:54;;;;;;;;;;;;;;;;;36286:4;36276:14;;:6;:14;;;:42;;;;36295:15;:23;36311:6;36295:23;;;;;;;;;;;;;;;;;;;;;;;;;36294:24;36276:42;36254:111;;;;;;;;;;;;;;;;;36408:4;36398:14;;:6;:14;;;:34;;;;36426:6;36416:16;;:6;:16;;;36398:34;:62;;;;36437:15;:23;36453:6;36437:23;;;;;;;;;;;;;;;;;;;;;;;;;36436:24;36398:62;36376:131;;;;;;;;;;;;;;;;;36542:11;;;;;;;;;;;:39;;;;36557:18;:24;36576:4;36557:24;;;;;;;;;;;;;;;;;;;;;;;;;36542:39;:65;;;;36585:18;:22;36604:2;36585:22;;;;;;;;;;;;;;;;;;;;;;;;;36542:65;36520:127;;;;;;;;;;;;;;;;;36660:16;36679:13;;;;;;;;;;;:44;;;;;36710:13;;;;;;;;;;;36709:14;36679:44;:114;;;;;36742:18;:24;36761:4;36742:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;36770:18;:22;36789:2;36770:22;;;;;;;;;;;;;;;;;;;;;;;;;36742:50;36740:53;36679:114;36660:133;;36808:11;36804:1487;;;36866:7;:5;:7::i;:::-;36858:15;;:4;:15;;;;:49;;;;;36900:7;:5;:7::i;:::-;36894:13;;:2;:13;;;;36858:49;:88;;;;;26486:1;36928:18;;:2;:18;;;;36858:88;:127;;;;;26542:6;36967:18;;:2;:18;;;;36858:127;36836:1444;;;37024:15;;;;;;;;;;;37020:532;;;37082:10;37068:25;;:2;:25;;;;:43;;;;;37103:8;37097:14;;:2;:14;;;;37068:43;37064:469;;;37222:1;37207:12;:16;;;;:::i;:::-;37178:18;:26;37197:6;37178:26;;;;;;;;;;;;;;;;:45;:123;;;;;37300:1;37285:12;:16;;;;:::i;:::-;37260:18;:22;37279:2;37260:22;;;;;;;;;;;;;;;;:41;37178:123;37140:237;;;;;;;;;;;;;;;;;37433:12;37404:18;:26;37423:6;37404:26;;;;;;;;;;;;;;;:41;;;;37497:12;37472:18;:22;37491:2;37472:22;;;;;;;;;;;;;;;:37;;;;37064:469;37020:532;37576:11;:17;37588:4;37576:17;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;37598:18;:22;37617:2;37598:22;;;;;;;;;;;;;;;;;;;;;;;;;37597:23;37576:44;37572:693;;;37663:11;;37653:6;:21;;37645:52;;;;;;;;;;;;;;;;;37780:14;;37763:13;37773:2;37763:9;:13::i;:::-;37754:6;:22;;;;:::i;:::-;:40;;37720:147;;;;;;;;;;;;;;;;;37572:693;;;37897:11;:15;37909:2;37897:15;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;37917:18;:24;37936:4;37917:24;;;;;;;;;;;;;;;;;;;;;;;;;37916:25;37897:44;37893:372;;;37984:12;;37974:6;:22;;37966:54;;;;;;;;;;;;;;;;;37893:372;;;38051:18;:22;38070:2;38051:22;;;;;;;;;;;;;;;;;;;;;;;;;38046:219;;38158:14;;38141:13;38151:2;38141:9;:13::i;:::-;38132:6;:22;;;;:::i;:::-;:40;;38098:147;;;;;;;;;;;;;;;;;38046:219;37893:372;37572:693;36836:1444;36804:1487;38303:13;38319:11;;;;;;;;;;;:42;;;;;38348:13;;;;;;;;;;;38347:14;38319:42;:108;;;;;38380:16;:22;38397:4;38380:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;38406:16;:20;38423:2;38406:20;;;;;;;;;;;;;;;;;;;;;;;;;38380:46;38378:49;38319:108;38303:124;;38444:8;38440:625;;;38469:17;38489:1;38469:21;;38509:11;:15;38521:2;38509:15;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;;38538:1;38528:7;;:11;38509:30;38505:396;;;38593:3;38582:7;;38573:6;:16;;;;:::i;:::-;38572:24;;;;:::i;:::-;38560:36;;38505:396;;;38622:11;:17;38634:4;38622:17;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;;38652:1;38643:6;;:10;38622:31;38618:283;;;38706:3;38696:6;;38687;:15;;;;:::i;:::-;38686:23;;;;:::i;:::-;38674:35;;38618:283;;;38754:11;:15;38766:2;38754:15;;;;;;;;;;;;;;;;;;;;;;;;;38753:16;:38;;;;;38774:11;:17;38786:4;38774:17;;;;;;;;;;;;;;;;;;;;;;;;;38773:18;38753:38;:57;;;;;38809:1;38795:11;;:15;38753:57;38731:170;;;38882:3;38867:11;;38858:6;:20;;;;:::i;:::-;38857:28;;;;:::i;:::-;38845:40;;38731:170;38618:283;38505:396;38933:1;38921:9;:13;38917:137;;;38965:9;38955:19;;;;;:::i;:::-;;;38993:45;39007:4;39021;39028:9;38993:13;:45::i;:::-;38917:137;38454:611;38440:625;39077:28;39108:24;39126:4;39108:9;:24::i;:::-;39077:55;;39143:12;39182:13;;39158:20;:37;;39143:52;;39210:8;:30;;;;;39223:11;:17;39235:4;39223:17;;;;;;;;;;;;;;;;;;;;;;;;;39222:18;39210:30;:41;;;;;39244:7;39210:41;39206:256;;;39287:13;;39272:12;:28;:62;;;;;39319:15;;39304:12;:30;39272:62;39268:183;;;39355:33;39367:20;39355:11;:33::i;:::-;39423:12;39407:13;:28;;;;39268:183;39206:256;39474:31;39488:4;39494:2;39498:6;39474:13;:31::i;:::-;36101:3412;;;;;;35982:3531;;;:::o;25595:191::-;25669:16;25688:6;;;;;;;;;;;25669:25;;25714:8;25705:6;;:17;;;;;;;;;;;;;;;;;;25769:8;25738:40;;25759:8;25738:40;;;;;;;;;;;;25658:128;25595:191;:::o;17512:1135::-;17618:1;17602:18;;:4;:18;;;17598:552;;17756:5;17740:12;;:21;;;;;;;:::i;:::-;;;;;;;;17598:552;;;17794:19;17816:9;:15;17826:4;17816:15;;;;;;;;;;;;;;;;17794:37;;17864:5;17850:11;:19;17846:117;;;17922:4;17928:11;17941:5;17897:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;17846:117;18118:5;18104:11;:19;18086:9;:15;18096:4;18086:15;;;;;;;;;;;;;;;:37;;;;17779:371;17598:552;18180:1;18166:16;;:2;:16;;;18162:435;;18348:5;18332:12;;:21;;;;;;;;;;;18162:435;;;18565:5;18548:9;:13;18558:2;18548:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;18162:435;18629:2;18614:25;;18623:4;18614:25;;;18633:5;18614:25;;;;;;:::i;:::-;;;;;;;;17512:1135;;;:::o;39521:912::-;29051:4;29035:13;;:20;;;;;;;;;;;;;;;;;;39607:12:::1;39630:21;39668:1;39654:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39630:40;;39699:4;39681;39686:1;39681:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;39725:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39715:4;39720:1;39715:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;39755:21;39795:2;39779:13;;:18;;;;:::i;:::-;39755:42;;39828:13;39814:11;:27;39810:87;;;39872:13;39858:27;;39810:87;39909:10;:61;;;39985:11;40011:1;40027:4;40054;40074:15;39909:191;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40113:18;40134:21;40113:42;;40168:21;40205:1;40192:10;:14;;;;:::i;:::-;40168:38;;40217:25;40258:13;40245:10;:26;;;;:::i;:::-;40217:54;;40306:9;;;;;;;;;;;40298:23;;40329:13;40298:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40284:63;;;;;40380:9;;;;;;;;;;;40372:23;;40403:17;40372:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40358:67;;;;;39596:837;;;;;;29094:5:::0;29078:13;;:21;;;;;;;;;;;;;;;;;;39521:912;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:117::-;3448:1;3445;3438:12;3462:117;3571:1;3568;3561:12;3585:117;3694:1;3691;3684:12;3725:568;3798:8;3808:6;3858:3;3851:4;3843:6;3839:17;3835:27;3825:122;;3866:79;;:::i;:::-;3825:122;3979:6;3966:20;3956:30;;4009:18;4001:6;3998:30;3995:117;;;4031:79;;:::i;:::-;3995:117;4145:4;4137:6;4133:17;4121:29;;4199:3;4191:4;4183:6;4179:17;4169:8;4165:32;4162:41;4159:128;;;4206:79;;:::i;:::-;4159:128;3725:568;;;;;:::o;4299:116::-;4369:21;4384:5;4369:21;:::i;:::-;4362:5;4359:32;4349:60;;4405:1;4402;4395:12;4349:60;4299:116;:::o;4421:133::-;4464:5;4502:6;4489:20;4480:29;;4518:30;4542:5;4518:30;:::i;:::-;4421:133;;;;:::o;4560:698::-;4652:6;4660;4668;4717:2;4705:9;4696:7;4692:23;4688:32;4685:119;;;4723:79;;:::i;:::-;4685:119;4871:1;4860:9;4856:17;4843:31;4901:18;4893:6;4890:30;4887:117;;;4923:79;;:::i;:::-;4887:117;5036:80;5108:7;5099:6;5088:9;5084:22;5036:80;:::i;:::-;5018:98;;;;4814:312;5165:2;5191:50;5233:7;5224:6;5213:9;5209:22;5191:50;:::i;:::-;5181:60;;5136:115;4560:698;;;;;:::o;5264:118::-;5351:24;5369:5;5351:24;:::i;:::-;5346:3;5339:37;5264:118;;:::o;5388:222::-;5481:4;5519:2;5508:9;5504:18;5496:26;;5532:71;5600:1;5589:9;5585:17;5576:6;5532:71;:::i;:::-;5388:222;;;;:::o;5616:619::-;5693:6;5701;5709;5758:2;5746:9;5737:7;5733:23;5729:32;5726:119;;;5764:79;;:::i;:::-;5726:119;5884:1;5909:53;5954:7;5945:6;5934:9;5930:22;5909:53;:::i;:::-;5899:63;;5855:117;6011:2;6037:53;6082:7;6073:6;6062:9;6058:22;6037:53;:::i;:::-;6027:63;;5982:118;6139:2;6165:53;6210:7;6201:6;6190:9;6186:22;6165:53;:::i;:::-;6155:63;;6110:118;5616:619;;;;;:::o;6241:329::-;6300:6;6349:2;6337:9;6328:7;6324:23;6320:32;6317:119;;;6355:79;;:::i;:::-;6317:119;6475:1;6500:53;6545:7;6536:6;6525:9;6521:22;6500:53;:::i;:::-;6490:63;;6446:117;6241:329;;;;:::o;6576:118::-;6663:24;6681:5;6663:24;:::i;:::-;6658:3;6651:37;6576:118;;:::o;6700:222::-;6793:4;6831:2;6820:9;6816:18;6808:26;;6844:71;6912:1;6901:9;6897:17;6888:6;6844:71;:::i;:::-;6700:222;;;;:::o;6928:86::-;6963:7;7003:4;6996:5;6992:16;6981:27;;6928:86;;;:::o;7020:112::-;7103:22;7119:5;7103:22;:::i;:::-;7098:3;7091:35;7020:112;;:::o;7138:214::-;7227:4;7265:2;7254:9;7250:18;7242:26;;7278:67;7342:1;7331:9;7327:17;7318:6;7278:67;:::i;:::-;7138:214;;;;:::o;7358:329::-;7417:6;7466:2;7454:9;7445:7;7441:23;7437:32;7434:119;;;7472:79;;:::i;:::-;7434:119;7592:1;7617:53;7662:7;7653:6;7642:9;7638:22;7617:53;:::i;:::-;7607:63;;7563:117;7358:329;;;;:::o;7693:474::-;7761:6;7769;7818:2;7806:9;7797:7;7793:23;7789:32;7786:119;;;7824:79;;:::i;:::-;7786:119;7944:1;7969:53;8014:7;8005:6;7994:9;7990:22;7969:53;:::i;:::-;7959:63;;7915:117;8071:2;8097:53;8142:7;8133:6;8122:9;8118:22;8097:53;:::i;:::-;8087:63;;8042:118;7693:474;;;;;:::o;8173:323::-;8229:6;8278:2;8266:9;8257:7;8253:23;8249:32;8246:119;;;8284:79;;:::i;:::-;8246:119;8404:1;8429:50;8471:7;8462:6;8451:9;8447:22;8429:50;:::i;:::-;8419:60;;8375:114;8173:323;;;;:::o;8502:468::-;8567:6;8575;8624:2;8612:9;8603:7;8599:23;8595:32;8592:119;;;8630:79;;:::i;:::-;8592:119;8750:1;8775:53;8820:7;8811:6;8800:9;8796:22;8775:53;:::i;:::-;8765:63;;8721:117;8877:2;8903:50;8945:7;8936:6;8925:9;8921:22;8903:50;:::i;:::-;8893:60;;8848:115;8502:468;;;;;:::o;8976:60::-;9004:3;9025:5;9018:12;;8976:60;;;:::o;9042:142::-;9092:9;9125:53;9143:34;9152:24;9170:5;9152:24;:::i;:::-;9143:34;:::i;:::-;9125:53;:::i;:::-;9112:66;;9042:142;;;:::o;9190:126::-;9240:9;9273:37;9304:5;9273:37;:::i;:::-;9260:50;;9190:126;;;:::o;9322:150::-;9396:9;9429:37;9460:5;9429:37;:::i;:::-;9416:50;;9322:150;;;:::o;9478:179::-;9589:61;9644:5;9589:61;:::i;:::-;9584:3;9577:74;9478:179;;:::o;9663:270::-;9780:4;9818:2;9807:9;9803:18;9795:26;;9831:95;9923:1;9912:9;9908:17;9899:6;9831:95;:::i;:::-;9663:270;;;;:::o;9939:474::-;10007:6;10015;10064:2;10052:9;10043:7;10039:23;10035:32;10032:119;;;10070:79;;:::i;:::-;10032:119;10190:1;10215:53;10260:7;10251:6;10240:9;10236:22;10215:53;:::i;:::-;10205:63;;10161:117;10317:2;10343:53;10388:7;10379:6;10368:9;10364:22;10343:53;:::i;:::-;10333:63;;10288:118;9939:474;;;;;:::o;10419:180::-;10467:77;10464:1;10457:88;10564:4;10561:1;10554:15;10588:4;10585:1;10578:15;10605:320;10649:6;10686:1;10680:4;10676:12;10666:22;;10733:1;10727:4;10723:12;10754:18;10744:81;;10810:4;10802:6;10798:17;10788:27;;10744:81;10872:2;10864:6;10861:14;10841:18;10838:38;10835:84;;10891:18;;:::i;:::-;10835:84;10656:269;10605:320;;;:::o;10931:180::-;10979:77;10976:1;10969:88;11076:4;11073:1;11066:15;11100:4;11097:1;11090:15;11117:147;11218:11;11255:3;11240:18;;11117:147;;;;:::o;11270:114::-;;:::o;11390:398::-;11549:3;11570:83;11651:1;11646:3;11570:83;:::i;:::-;11563:90;;11662:93;11751:3;11662:93;:::i;:::-;11780:1;11775:3;11771:11;11764:18;;11390:398;;;:::o;11794:379::-;11978:3;12000:147;12143:3;12000:147;:::i;:::-;11993:154;;12164:3;12157:10;;11794:379;;;:::o;12179:143::-;12236:5;12267:6;12261:13;12252:22;;12283:33;12310:5;12283:33;:::i;:::-;12179:143;;;;:::o;12328:351::-;12398:6;12447:2;12435:9;12426:7;12422:23;12418:32;12415:119;;;12453:79;;:::i;:::-;12415:119;12573:1;12598:64;12654:7;12645:6;12634:9;12630:22;12598:64;:::i;:::-;12588:74;;12544:128;12328:351;;;;:::o;12685:332::-;12806:4;12844:2;12833:9;12829:18;12821:26;;12857:71;12925:1;12914:9;12910:17;12901:6;12857:71;:::i;:::-;12938:72;13006:2;12995:9;12991:18;12982:6;12938:72;:::i;:::-;12685:332;;;;;:::o;13023:137::-;13077:5;13108:6;13102:13;13093:22;;13124:30;13148:5;13124:30;:::i;:::-;13023:137;;;;:::o;13166:345::-;13233:6;13282:2;13270:9;13261:7;13257:23;13253:32;13250:119;;;13288:79;;:::i;:::-;13250:119;13408:1;13433:61;13486:7;13477:6;13466:9;13462:22;13433:61;:::i;:::-;13423:71;;13379:125;13166:345;;;;:::o;13517:180::-;13565:77;13562:1;13555:88;13662:4;13659:1;13652:15;13686:4;13683:1;13676:15;13703:410;13743:7;13766:20;13784:1;13766:20;:::i;:::-;13761:25;;13800:20;13818:1;13800:20;:::i;:::-;13795:25;;13855:1;13852;13848:9;13877:30;13895:11;13877:30;:::i;:::-;13866:41;;14056:1;14047:7;14043:15;14040:1;14037:22;14017:1;14010:9;13990:83;13967:139;;14086:18;;:::i;:::-;13967:139;13751:362;13703:410;;;;:::o;14119:180::-;14167:77;14164:1;14157:88;14264:4;14261:1;14254:15;14288:4;14285:1;14278:15;14305:185;14345:1;14362:20;14380:1;14362:20;:::i;:::-;14357:25;;14396:20;14414:1;14396:20;:::i;:::-;14391:25;;14435:1;14425:35;;14440:18;;:::i;:::-;14425:35;14482:1;14479;14475:9;14470:14;;14305:185;;;;:::o;14496:332::-;14617:4;14655:2;14644:9;14640:18;14632:26;;14668:71;14736:1;14725:9;14721:17;14712:6;14668:71;:::i;:::-;14749:72;14817:2;14806:9;14802:18;14793:6;14749:72;:::i;:::-;14496:332;;;;;:::o;14834:::-;14955:4;14993:2;14982:9;14978:18;14970:26;;15006:71;15074:1;15063:9;15059:17;15050:6;15006:71;:::i;:::-;15087:72;15155:2;15144:9;15140:18;15131:6;15087:72;:::i;:::-;14834:332;;;;;:::o;15172:320::-;15287:4;15325:2;15314:9;15310:18;15302:26;;15338:71;15406:1;15395:9;15391:17;15382:6;15338:71;:::i;:::-;15419:66;15481:2;15470:9;15466:18;15457:6;15419:66;:::i;:::-;15172:320;;;;;:::o;15498:442::-;15647:4;15685:2;15674:9;15670:18;15662:26;;15698:71;15766:1;15755:9;15751:17;15742:6;15698:71;:::i;:::-;15779:72;15847:2;15836:9;15832:18;15823:6;15779:72;:::i;:::-;15861;15929:2;15918:9;15914:18;15905:6;15861:72;:::i;:::-;15498:442;;;;;;:::o;15946:194::-;15986:4;16006:20;16024:1;16006:20;:::i;:::-;16001:25;;16040:20;16058:1;16040:20;:::i;:::-;16035:25;;16084:1;16081;16077:9;16069:17;;16108:1;16102:4;16099:11;16096:37;;;16113:18;;:::i;:::-;16096:37;15946:194;;;;:::o;16146:191::-;16186:3;16205:20;16223:1;16205:20;:::i;:::-;16200:25;;16239:20;16257:1;16239:20;:::i;:::-;16234:25;;16282:1;16279;16275:9;16268:16;;16303:3;16300:1;16297:10;16294:36;;;16310:18;;:::i;:::-;16294:36;16146:191;;;;:::o;16343:180::-;16391:77;16388:1;16381:88;16488:4;16485:1;16478:15;16512:4;16509:1;16502:15;16529:143;16586:5;16617:6;16611:13;16602:22;;16633:33;16660:5;16633:33;:::i;:::-;16529:143;;;;:::o;16678:351::-;16748:6;16797:2;16785:9;16776:7;16772:23;16768:32;16765:119;;;16803:79;;:::i;:::-;16765:119;16923:1;16948:64;17004:7;16995:6;16984:9;16980:22;16948:64;:::i;:::-;16938:74;;16894:128;16678:351;;;;:::o;17035:85::-;17080:7;17109:5;17098:16;;17035:85;;;:::o;17126:158::-;17184:9;17217:61;17235:42;17244:32;17270:5;17244:32;:::i;:::-;17235:42;:::i;:::-;17217:61;:::i;:::-;17204:74;;17126:158;;;:::o;17290:147::-;17385:45;17424:5;17385:45;:::i;:::-;17380:3;17373:58;17290:147;;:::o;17443:114::-;17510:6;17544:5;17538:12;17528:22;;17443:114;;;:::o;17563:184::-;17662:11;17696:6;17691:3;17684:19;17736:4;17731:3;17727:14;17712:29;;17563:184;;;;:::o;17753:132::-;17820:4;17843:3;17835:11;;17873:4;17868:3;17864:14;17856:22;;17753:132;;;:::o;17891:108::-;17968:24;17986:5;17968:24;:::i;:::-;17963:3;17956:37;17891:108;;:::o;18005:179::-;18074:10;18095:46;18137:3;18129:6;18095:46;:::i;:::-;18173:4;18168:3;18164:14;18150:28;;18005:179;;;;:::o;18190:113::-;18260:4;18292;18287:3;18283:14;18275:22;;18190:113;;;:::o;18339:732::-;18458:3;18487:54;18535:5;18487:54;:::i;:::-;18557:86;18636:6;18631:3;18557:86;:::i;:::-;18550:93;;18667:56;18717:5;18667:56;:::i;:::-;18746:7;18777:1;18762:284;18787:6;18784:1;18781:13;18762:284;;;18863:6;18857:13;18890:63;18949:3;18934:13;18890:63;:::i;:::-;18883:70;;18976:60;19029:6;18976:60;:::i;:::-;18966:70;;18822:224;18809:1;18806;18802:9;18797:14;;18762:284;;;18766:14;19062:3;19055:10;;18463:608;;;18339:732;;;;:::o;19077:831::-;19340:4;19378:3;19367:9;19363:19;19355:27;;19392:71;19460:1;19449:9;19445:17;19436:6;19392:71;:::i;:::-;19473:80;19549:2;19538:9;19534:18;19525:6;19473:80;:::i;:::-;19600:9;19594:4;19590:20;19585:2;19574:9;19570:18;19563:48;19628:108;19731:4;19722:6;19628:108;:::i;:::-;19620:116;;19746:72;19814:2;19803:9;19799:18;19790:6;19746:72;:::i;:::-;19828:73;19896:3;19885:9;19881:19;19872:6;19828:73;:::i;:::-;19077:831;;;;;;;;:::o
Swarm Source
ipfs://a12f5918a62bdc860afc430d9a1291582cb42b10595cb9a293143a7243000d7f
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.