Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 12 from a total of 12 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 16863837 | 1089 days ago | IN | 0 ETH | 0.00127653 | ||||
| Approve | 16256644 | 1174 days ago | IN | 0 ETH | 0.00052426 | ||||
| Airdrop Normal N... | 16256639 | 1174 days ago | IN | 0 ETH | 0.0007575 | ||||
| Update Space Egg... | 16256280 | 1175 days ago | IN | 0 ETH | 0.0003207 | ||||
| Approve | 16193826 | 1183 days ago | IN | 0 ETH | 0.00062755 | ||||
| Approve | 16193794 | 1183 days ago | IN | 0 ETH | 0.00059725 | ||||
| Approve | 16193766 | 1183 days ago | IN | 0 ETH | 0.00057504 | ||||
| Modify Max Buy I... | 16193092 | 1183 days ago | IN | 0 ETH | 0.00045632 | ||||
| Modify Max Walle... | 16193086 | 1183 days ago | IN | 0 ETH | 0.00041659 | ||||
| Modify Max Walle... | 16193067 | 1183 days ago | IN | 0 ETH | 0.00043984 | ||||
| Approve | 16193005 | 1183 days ago | IN | 0 ETH | 0.00079266 | ||||
| Liquidity Dist N... | 16192990 | 1183 days ago | IN | 0 ETH | 0.00151784 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SeggzCoin
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "./IUniswapV2Factory.sol";
import "./IUniswapV2Router02.sol";
// _ _ __ __ _
// /\ | (_) | \/ | | |
// / \ | |_ ___ _ __ | \ / | ___| |_ __ _
// / /\ \ | | |/ _ \ '_ \ | |\/| |/ _ \ __/ _` |
// / ____ \| | | __/ | | | | | | | __/ || (_| |
// /_/ \_\_|_|\___|_| |_| |_| |_|\___|\__\__,_|
// AlienMeta.wtf - Mowgli + Dev Lrrr
contract SeggzCoin is ERC20, Pausable, Ownable {
mapping(address => bool) public liquidityProvider;
mapping(address => bool) public isExcluded;
mapping(address => bool) public taxProvider;
bool public takeBuyTax = true;
bool public takeSellTax = true;
bool public pauseBuy = false;
bool public pauseSell = false;
//use 0 for no max limit
uint256 public maxBuyInSEGGZ = 5000000 * 10**18;
uint256 public maxSellInSEGGZ = 0;
//
uint256 public MaxWalletPCT = 200;
uint256 public nftHolderReduction = 50;
uint256 public immutable maxSupply = 21000000000;
uint256 public taxBalance;
IERC721 public spaceEggzNFT;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
struct Tokenomics {
string name;
address wallet;
uint256 buyTaxValue;
uint256 sellTaxValue;
bool isValid;
}
Tokenomics[] public tokenomics;
constructor() ERC20("SeggzCoin", "SGZ") {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
);
address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = _uniswapV2Pair;
isExcluded[address(this)] = true;
isExcluded[uniswapV2Pair] = true;
isExcluded[address(uniswapV2Router)] = true;
isExcluded[owner()] = true;
_mint(address(this), maxSupply * 10**18);
addTokenomic(
"Tax",
40,
80,
0x19C62F0920c19b34DbfB48d9e579347adCb11E59,
true
);
spaceEggzNFT = IERC721(0xea2C8f0a6B3b79c4dd7804dC7de21dA968C20642);
}
function viewMaxWalletSEGGZ() external view returns (uint256) {
uint256 totalS = totalSupply();
uint256 MaxSeggzPerWallet = (totalS * MaxWalletPCT) / 1000000;
return MaxSeggzPerWallet;
}
function modifyMaxWalletPCT(uint256 _newValue) external onlyOwner {
require(_newValue <= 1000000, "not allowed");
MaxWalletPCT = _newValue;
}
function ModifyTakeBuyTax() external onlyOwner {
takeBuyTax = !takeBuyTax;
}
function ModifyTakeSellTax() external onlyOwner {
takeSellTax = !takeSellTax;
}
function ModifyPauseBuy() external onlyOwner {
pauseBuy = !pauseBuy;
}
function ModifyPauseSell() external onlyOwner {
pauseSell = !pauseSell;
}
function buyIsNotPaused() public view returns (bool) {
if (pauseBuy) {
return false;
}
return true;
}
function sellIsNotPaused() public view returns (bool) {
if (pauseSell) {
return false;
}
return true;
}
function modifyMaxBuyInSEGGZ(uint256 _newValue) external onlyOwner {
maxBuyInSEGGZ = _newValue * 10**18;
}
function modifyMaxSellInSEGGZ(uint256 _newValue) external onlyOwner {
maxSellInSEGGZ = _newValue * 10**18;
}
function checkTransferIsNotMoreThanMaxSEGGZAllowed(
uint256 _amount,
bool _isSell,
address _reciever
) public view returns (bool) {
if (liquidityProvider[_reciever]) {
return true;
}
if (_isSell) {
if (maxSellInSEGGZ == 0) {
return true;
}
if (_amount > (maxSellInSEGGZ)) {
return false;
}
return true;
} else {
if (maxBuyInSEGGZ == 0) {
return true;
}
if (_amount > (maxBuyInSEGGZ)) {
return false;
}
return true;
}
}
function updateSpaceEggzNFTContractAddress(address _spaceEggzNFT)
external
onlyOwner
{
spaceEggzNFT = IERC721(_spaceEggzNFT);
}
receive() external payable {}
function addTaxProviderMember(address _user) public onlyOwner {
taxProvider[_user] = true;
}
function removeTaxProviderMember(address _user) external onlyOwner {
taxProvider[_user] = false;
}
function calculateMaxTokensPerWallet()
public
view
returns (
uint256,
uint256,
uint256
)
{
uint256 totalS = totalSupply();
uint256 maxQtePerWallet = (totalS * MaxWalletPCT) / 1000000;
return (totalS, MaxWalletPCT, maxQtePerWallet);
}
function modifyNftHolderReduction(uint256 _newValue) external onlyOwner {
nftHolderReduction = _newValue;
}
function getBalance() public view returns (uint256) {
return address(this).balance;
}
function pause() public onlyOwner {
_pause();
}
function unpause() public onlyOwner {
_unpause();
}
function getTaxValueFromTokenomics()
public
view
returns (uint256, uint256)
{
uint256 totalSellTax = 0;
uint256 totalBuytTax = 0;
for (uint256 i = 0; i < tokenomics.length; i++) {
Tokenomics memory _tokenomics = tokenomics[i];
if (_tokenomics.isValid) {
totalBuytTax += _tokenomics.buyTaxValue;
totalSellTax += _tokenomics.sellTaxValue;
}
}
return (totalBuytTax, totalSellTax);
}
function addTokenomic(
string memory _name,
uint256 _sellTaxValue,
uint256 _buyTaxValue,
address _wallet,
bool _isValid
) public onlyOwner {
Tokenomics memory _tokenomics;
_tokenomics.isValid = _isValid;
_tokenomics.wallet = _wallet;
_tokenomics.name = _name;
_tokenomics.buyTaxValue = _sellTaxValue;
_tokenomics.sellTaxValue = _buyTaxValue;
tokenomics.push(_tokenomics);
}
function modifyTokenomic(
string memory _name,
uint256 index,
uint256 _sellTaxValue,
uint256 _buyTaxValue,
address _wallet,
bool _isValid
) external onlyOwner {
Tokenomics memory _tokenomics = tokenomics[index];
_tokenomics.isValid = _isValid;
_tokenomics.wallet = _wallet;
_tokenomics.name = _name;
_tokenomics.buyTaxValue = _sellTaxValue;
_tokenomics.sellTaxValue = _buyTaxValue;
tokenomics[index] = _tokenomics;
}
function percentageCalculator(uint256 x, uint256 balance)
public
view
returns (uint256)
{
(
uint256 buy_tax_value,
uint256 sell_tax_value
) = getTaxValueFromTokenomics();
uint256 totalTax = buy_tax_value + sell_tax_value;
uint256 contractBalance = balance;
uint256 total = (x * contractBalance) / totalTax;
return total;
}
function checkWalletCanHoldThisPCTofTotalSupply(uint256 _qte, address _user)
public
view
returns (bool)
{
(, , uint256 maxQtePerWallet) = calculateMaxTokensPerWallet();
if (isExcluded[_user]) {
return true;
} else {
if (
IERC20(address(this)).balanceOf(_user) + _qte <= maxQtePerWallet
) {
return true;
} else {
return false;
}
}
}
function isUserANftHolder(address _user) public view returns (bool) {
if (spaceEggzNFT.balanceOf(_user) > 0) {
return true;
} else {
return false;
}
}
function getTax(
address _user,
uint256 _amount,
bool _IsSell,
bool overideExcluded
) public view returns (uint256) {
if (isExcluded[_user] && !overideExcluded) {
return 0;
} else {
(
uint256 buy_tax_value,
uint256 sell_tax_value
) = getTaxValueFromTokenomics();
uint256 taxValue = buy_tax_value;
if (_IsSell) {
taxValue = sell_tax_value;
}
uint256 tax = (_amount * taxValue) / 1000;
if (isUserANftHolder(_user)) {
uint256 tax_reduction = (tax * nftHolderReduction) / 100;
return tax_reduction;
} else {
return tax;
}
}
}
function swapTokensForEth(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function swapAndSend(uint256 SwapVal) external onlyOwner {
if (SwapVal > taxBalance) {
SwapVal = taxBalance;
}
taxBalance -= SwapVal;
swapTokensForEth(SwapVal);
}
function withdraw(uint256 _amount) external onlyOwner {
if (_amount > address(this).balance) {
_amount = address(this).balance;
}
(bool sent, ) = payable(owner()).call{value: _amount}("");
require(sent, "failed to send ether");
}
function LiquidityDistNormalNumber(address wallet, uint256 amount)
external
onlyOwner
{
amount = amount * 10**18;
isExcluded[wallet] = true;
liquidityProvider[wallet] = true;
IERC20(address(this)).transfer(wallet, amount);
}
function airdropNormalNumber(address wallet, uint256 amount)
external
onlyOwner
{
amount = amount * 10**18;
IERC20(address(this)).transfer(wallet, amount);
}
IUniswapV2Factory constant v2Factory =
IUniswapV2Factory(address(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f));
function removeDEXLiquidity(
address sender,
address recipient,
uint256 amount
) private {
if (liquidityProvider[recipient]) {
super._transfer(sender, address(this), amount);
liquidityProvider[recipient] = false;
isExcluded[recipient] = false;
} else {
super._transfer(sender, recipient, amount);
}
}
function addDEXLiquidity(
address sender,
address recipient,
uint256 amount
) private {
super._transfer(sender, recipient, amount);
}
function takeTheTax(
address recipient,
address sender,
uint256 amount,
bool _isSell,
bool overideExcluded
) private returns (uint256) {
uint256 feesAmount = 0;
if (_isSell) {
feesAmount = getTax(sender, amount, true, overideExcluded);
} else {
feesAmount = getTax(recipient, amount, false, overideExcluded);
}
super._transfer(sender, address(this), feesAmount);
amount -= feesAmount;
taxBalance += feesAmount;
return amount;
}
function swapEthForSeggzDEX(
address sender,
address recipient,
uint256 amount
) private {
require(amount > 0, "You must want to transfer more than 0!");
require(liquidityProvider[recipient] == false, "banned");
require(buyIsNotPaused(), "Buying is temporerily paused");
require(
checkTransferIsNotMoreThanMaxSEGGZAllowed(amount, false, recipient),
"This is more than the maximum buy is allowed"
);
require(
checkWalletCanHoldThisPCTofTotalSupply(amount, recipient),
"This is more than the maximum % per wallet is allowed"
);
uint256 amountLessTaxToSend = amount;
if (takeBuyTax) {
amountLessTaxToSend = takeTheTax(
recipient,
sender,
amount,
false,
false
);
}
super._transfer(sender, recipient, amountLessTaxToSend);
}
function swapSeggzForEthDEX(
address sender,
address recipient,
uint256 amount
) private {
require(amount > 0, "You must want to transfer more than 0!");
require(liquidityProvider[sender] == false, "banned");
require(sellIsNotPaused(), "Selling is temporerily paused");
uint256 amountLessTaxToSend = amount;
if (takeSellTax) {
amountLessTaxToSend = takeTheTax(
recipient,
sender,
amount,
true,
false
);
}
super._transfer(sender, recipient, amountLessTaxToSend);
}
function normalTransfer(
address sender,
address recipient,
uint256 amount
) private {
require(amount > 0, "You must want to transfer more than 0!");
require(liquidityProvider[sender] == false, "banned");
require(
checkWalletCanHoldThisPCTofTotalSupply(amount, recipient),
"This is more than the maximum % per wallet is allowed"
);
super._transfer(sender, recipient, amount);
}
function taxProviderTransfer(
address sender,
address recipient,
uint256 amount
) private {
uint256 amountLessTaxToSend = takeTheTax(
recipient,
sender,
amount,
true,
true
);
super._transfer(sender, recipient, amountLessTaxToSend);
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual override {
if (taxProvider[sender] && recipient == address(this)) {
taxProviderTransfer(sender, recipient, amount);
return;
}
if (
sender == address(uniswapV2Router) &&
(msg.sender == address(uniswapV2Router))
) {
removeDEXLiquidity(sender, recipient, amount);
return;
}
if (
recipient == uniswapV2Pair && msg.sender == address(uniswapV2Router)
) {
addDEXLiquidity(sender, recipient, amount);
return;
}
if (
sender == uniswapV2Pair &&
msg.sender == uniswapV2Pair &&
recipient != address(uniswapV2Router)
) {
swapEthForSeggzDEX(sender, recipient, amount);
return;
}
if (recipient == uniswapV2Pair) {
swapSeggzForEthDEX(sender, recipient, amount);
return;
}
normalTransfer(sender, recipient, amount);
return;
}
function splitTaxes() external onlyOwner {
uint256 smartContractBalance = address(this).balance;
for (uint256 i = 0; i < tokenomics.length; i++) {
Tokenomics memory _tokenomics = tokenomics[i];
if (_tokenomics.isValid) {
uint256 taxValue = _tokenomics.buyTaxValue +
_tokenomics.sellTaxValue;
uint256 ethAmountOfThisTokenomicWallet = percentageCalculator(
taxValue,
smartContractBalance
);
address taxWallet = payable(_tokenomics.wallet);
(bool sent, ) = payable(taxWallet).call{
value: ethAmountOfThisTokenomicWallet
}("");
require(sent, "failed to send eth");
}
}
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal override whenNotPaused {
super._beforeTokenTransfer(from, to, amount);
}
}pragma solidity >=0.6.2;
import './IUniswapV2Router01.sol';
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}pragma solidity >=0.5.0;
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)
pragma solidity ^0.8.0;
import "../ERC20.sol";
import "../../../utils/Context.sol";
/**
* @dev Extension of {ERC20} that allows token holders to destroy both their own
* tokens and those that they have an allowance for, in a way that can be
* recognized off-chain (via event analysis).
*/
abstract contract ERC20Burnable is Context, ERC20 {
/**
* @dev Destroys `amount` tokens from the caller.
*
* See {ERC20-_burn}.
*/
function burn(uint256 amount) public virtual {
_burn(_msgSender(), amount);
}
/**
* @dev Destroys `amount` tokens from `account`, deducting from the caller's
* allowance.
*
* See {ERC20-_burn} and {ERC20-allowance}.
*
* Requirements:
*
* - the caller must have allowance for ``accounts``'s tokens of at least
* `amount`.
*/
function burnFrom(address account, uint256 amount) public virtual {
_spendAllowance(account, _msgSender(), amount);
_burn(account, amount);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes calldata data
) external;
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721
* or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
* understand this adds an external call which potentially creates a reentrancy vulnerability.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.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}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* 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].
*
* 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.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
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}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* 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 override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override 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 value {ERC20} uses, unless this function is
* 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 override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override 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 `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` 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 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
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 `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `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.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
// Overflow not possible: amount <= accountBalance <= totalSupply.
_totalSupply -= amount;
}
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` 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.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(
address owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
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);
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LiquidityDistNormalNumber","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MaxWalletPCT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ModifyPauseBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ModifyPauseSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ModifyTakeBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ModifyTakeSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addTaxProviderMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_sellTaxValue","type":"uint256"},{"internalType":"uint256","name":"_buyTaxValue","type":"uint256"},{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_isValid","type":"bool"}],"name":"addTokenomic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdropNormalNumber","outputs":[],"stateMutability":"nonpayable","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyIsNotPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculateMaxTokensPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_isSell","type":"bool"},{"internalType":"address","name":"_reciever","type":"address"}],"name":"checkTransferIsNotMoreThanMaxSEGGZAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qte","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"checkWalletCanHoldThisPCTofTotalSupply","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_IsSell","type":"bool"},{"internalType":"bool","name":"overideExcluded","type":"bool"}],"name":"getTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxValueFromTokenomics","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isUserANftHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityProvider","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyInSEGGZ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellInSEGGZ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"modifyMaxBuyInSEGGZ","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"modifyMaxSellInSEGGZ","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"modifyMaxWalletPCT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"modifyNftHolderReduction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"_sellTaxValue","type":"uint256"},{"internalType":"uint256","name":"_buyTaxValue","type":"uint256"},{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_isValid","type":"bool"}],"name":"modifyTokenomic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftHolderReduction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseBuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseSell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"percentageCalculator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeTaxProviderMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellIsNotPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"spaceEggzNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"splitTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"SwapVal","type":"uint256"}],"name":"swapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeBuyTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeSellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"taxProvider","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenomics","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"buyTaxValue","type":"uint256"},{"internalType":"uint256","name":"sellTaxValue","type":"uint256"},{"internalType":"bool","name":"isValid","type":"bool"}],"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":"amount","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":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spaceEggzNFT","type":"address"}],"name":"updateSpaceEggzNFTContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewMaxWalletSEGGZ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526001600960006101000a81548160ff0219169083151502179055506001600960016101000a81548160ff0219169083151502179055506000600960026101000a81548160ff0219169083151502179055506000600960036101000a81548160ff0219169083151502179055506a0422ca8b0a00a425000000600a556000600b5560c8600c556032600d556404e3b29200608090815250348015620000a757600080fd5b506040518060400160405280600981526020017f536567677a436f696e00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f53475a0000000000000000000000000000000000000000000000000000000000815250816003908162000125919062000db5565b50806004908162000137919062000db5565b5050506000600560006101000a81548160ff02191690831515021790555062000175620001696200061360201b60201c565b6200061b60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062000f06565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000f06565b6040518363ffffffff1660e01b8152600401620002af92919062000f49565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000f06565b905081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000620004db620006e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200055530670de0b6b3a764000060805162000549919062000fa5565b6200070b60201b60201c565b620005b66040518060400160405280600381526020017f5461780000000000000000000000000000000000000000000000000000000000815250602860507319c62f0920c19b34dbfb48d9e579347adcb11e5960016200087860201b60201c565b73ea2c8f0a6b3b79c4dd7804dc7de21da968c20642600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620011c0565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200077d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007749062001051565b60405180910390fd5b6200079160008383620009c060201b60201c565b8060026000828254620007a5919062001073565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008589190620010bf565b60405180910390a36200087460008383620009ed60201b60201c565b5050565b62000888620009f260201b60201c565b6200089262000af4565b8181608001901515908115158152505082816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508581600001819052508481604001818152505083816060018181525050601281908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000190816200093a919062000db5565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff0219169083151502179055505050505050505050565b620009d062000a8360201b60201c565b620009e883838362000ad860201b6200272f1760201c565b505050565b505050565b62000a026200061360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a28620006e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a78906200112c565b60405180910390fd5b565b62000a9362000add60201b60201c565b1562000ad6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000acd906200119e565b60405180910390fd5b565b505050565b6000600560009054906101000a900460ff16905090565b6040518060a0016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000151581525090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bbd57607f821691505b60208210810362000bd35762000bd262000b75565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c3d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bfe565b62000c49868362000bfe565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c9662000c9062000c8a8462000c61565b62000c6b565b62000c61565b9050919050565b6000819050919050565b62000cb28362000c75565b62000cca62000cc18262000c9d565b84845462000c0b565b825550505050565b600090565b62000ce162000cd2565b62000cee81848462000ca7565b505050565b5b8181101562000d165762000d0a60008262000cd7565b60018101905062000cf4565b5050565b601f82111562000d655762000d2f8162000bd9565b62000d3a8462000bee565b8101602085101562000d4a578190505b62000d6262000d598562000bee565b83018262000cf3565b50505b505050565b600082821c905092915050565b600062000d8a6000198460080262000d6a565b1980831691505092915050565b600062000da5838362000d77565b9150826002028217905092915050565b62000dc08262000b3b565b67ffffffffffffffff81111562000ddc5762000ddb62000b46565b5b62000de8825462000ba4565b62000df582828562000d1a565b600060209050601f83116001811462000e2d576000841562000e18578287015190505b62000e24858262000d97565b86555062000e94565b601f19841662000e3d8662000bd9565b60005b8281101562000e675784890151825560018201915060208501945060208101905062000e40565b8683101562000e87578489015162000e83601f89168262000d77565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ece8262000ea1565b9050919050565b62000ee08162000ec1565b811462000eec57600080fd5b50565b60008151905062000f008162000ed5565b92915050565b60006020828403121562000f1f5762000f1e62000e9c565b5b600062000f2f8482850162000eef565b91505092915050565b62000f438162000ec1565b82525050565b600060408201905062000f60600083018562000f38565b62000f6f602083018462000f38565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fb28262000c61565b915062000fbf8362000c61565b925082820262000fcf8162000c61565b9150828204841483151762000fe95762000fe862000f76565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001039601f8362000ff0565b9150620010468262001001565b602082019050919050565b600060208201905081810360008301526200106c816200102a565b9050919050565b6000620010808262000c61565b91506200108d8362000c61565b9250828201905080821115620010a857620010a762000f76565b5b92915050565b620010b98162000c61565b82525050565b6000602082019050620010d66000830184620010ae565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200111460208362000ff0565b91506200112182620010dc565b602082019050919050565b60006020820190508181036000830152620011478162001105565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006200118660108362000ff0565b915062001193826200114e565b602082019050919050565b60006020820190508181036000830152620011b98162001177565b9050919050565b6080516154ee620011dc600039600061238a01526154ee6000f3fe6080604052600436106103bc5760003560e01c80638456cb59116101f2578063af9a42511161010d578063d65f4425116100a0578063e6d97d461161006f578063e6d97d4614610e22578063f01fc61614610e4d578063f2fde38b14610e76578063fb848df914610e9f576103c3565b8063d65f442514610d7a578063d8c9d9b514610d91578063db32d65314610dba578063dd62ed3e14610de5576103c3565b8063be27c01c116100dc578063be27c01c14610cc0578063c39d75ea14610ce9578063cba0e99614610d12578063d5abeb0114610d4f576103c3565b8063af9a425114610c16578063b43e63e114610c41578063b9d0617214610c7e578063bd99e9c514610c95576103c3565b806398ff17bd11610185578063a5a24f5511610154578063a5a24f5514610b5a578063a9059cbb14610b71578063aa98e16314610bae578063ac93fd6314610bd9576103c3565b806398ff17bd14610a8c578063a2687c6314610ab5578063a38eb62214610af2578063a457c2d714610b1d576103c3565b80638da79891116101c15780638da79891146109f25780639358ba4e14610a1f57806395d89b4114610a365780639754a7d814610a61576103c3565b80638456cb59146109595780638772c63e146109705780638d41c8861461099b5780638da5cb5b146109c7576103c3565b80633b7ce851116102e25780636214fd0611610275578063715018a611610244578063715018a61461089d57806374ad606e146108b4578063793bb983146108df57806383a9e9ed1461091c576103c3565b80636214fd06146107df57806365657ff91461080a5780636a2a903a1461083557806370a0823114610860576103c3565b806349bd5a5e116102b157806349bd5a5e1461070f5780634acfb0ce1461073a57806354eacef8146107775780635c975abb146107b4576103c3565b80633b7ce8511461067d5780633f4ba83a146106a6578063410114df146106bd57806347d82751146106e6576103c3565b806318160ddd1161035a5780632e1a7d4d116103295780632e1a7d4d146105c35780633134db22146105ec578063313ce567146106155780633950935114610640576103c3565b806318160ddd146105195780631f0ec9b61461054457806323b872dd1461056f57806325927b66146105ac576103c3565b8063095ea7b311610396578063095ea7b31461045d57806312065fe01461049a578063122b1eb6146104c55780631694505e146104ee576103c3565b806306fdde03146103c8578063087a2daf146103f357806309072fdf14610434576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ec8565b6040516103ea9190613bbd565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190613c29565b610f5a565b60405161042b959493929190613cc1565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190613d47565b611055565b005b34801561046957600080fd5b50610484600480360381019061047f9190613d47565b6110f6565b6040516104919190613d87565b60405180910390f35b3480156104a657600080fd5b506104af611119565b6040516104bc9190613da2565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e79190613c29565b611121565b005b3480156104fa57600080fd5b50610503611146565b6040516105109190613e1c565b60405180910390f35b34801561052557600080fd5b5061052e61116c565b60405161053b9190613da2565b60405180910390f35b34801561055057600080fd5b50610559611176565b6040516105669190613da2565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190613e37565b61117c565b6040516105a39190613d87565b60405180910390f35b3480156105b857600080fd5b506105c16111ab565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613c29565b6111df565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613e8a565b6112aa565b005b34801561062157600080fd5b5061062a61130d565b6040516106379190613ed3565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190613d47565b611316565b6040516106749190613d87565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f919061404f565b61134d565b005b3480156106b257600080fd5b506106bb611489565b005b3480156106c957600080fd5b506106e460048036038101906106df9190613e8a565b61149b565b005b3480156106f257600080fd5b5061070d60048036038101906107089190613c29565b6114fe565b005b34801561071b57600080fd5b50610724611510565b60405161073191906140e6565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c9190613e8a565b611536565b60405161076e9190613d87565b60405180910390f35b34801561078357600080fd5b5061079e60048036038101906107999190614101565b611556565b6040516107ab9190613d87565b60405180910390f35b3480156107c057600080fd5b506107c961161a565b6040516107d69190613d87565b60405180910390f35b3480156107eb57600080fd5b506107f4611631565b6040516108019190613da2565b60405180910390f35b34801561081657600080fd5b5061081f611637565b60405161082c9190613da2565b60405180910390f35b34801561084157600080fd5b5061084a61163d565b6040516108579190613d87565b60405180910390f35b34801561086c57600080fd5b5061088760048036038101906108829190613e8a565b611650565b6040516108949190613da2565b60405180910390f35b3480156108a957600080fd5b506108b2611698565b005b3480156108c057600080fd5b506108c96116ac565b6040516108d69190613da2565b60405180910390f35b3480156108eb57600080fd5b5061090660048036038101906109019190613e8a565b6116e1565b6040516109139190613d87565b60405180910390f35b34801561092857600080fd5b50610943600480360381019061093e9190614154565b611799565b6040516109509190613d87565b60405180910390f35b34801561096557600080fd5b5061096e6118a5565b005b34801561097c57600080fd5b506109856118b7565b6040516109929190613da2565b60405180910390f35b3480156109a757600080fd5b506109b06118bd565b6040516109be929190614194565b60405180910390f35b3480156109d357600080fd5b506109dc611a6b565b6040516109e991906140e6565b60405180910390f35b3480156109fe57600080fd5b50610a07611a95565b604051610a16939291906141bd565b60405180910390f35b348015610a2b57600080fd5b50610a34611ad7565b005b348015610a4257600080fd5b50610a4b611b0b565b604051610a589190613bbd565b60405180910390f35b348015610a6d57600080fd5b50610a76611b9d565b604051610a839190613d87565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae91906141f4565b611bb0565b005b348015610ac157600080fd5b50610adc6004803603810190610ad79190613e8a565b611e25565b604051610ae99190613d87565b60405180910390f35b348015610afe57600080fd5b50610b07611e45565b604051610b149190613d87565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190613d47565b611e58565b604051610b519190613d87565b60405180910390f35b348015610b6657600080fd5b50610b6f611ecf565b005b348015610b7d57600080fd5b50610b986004803603810190610b939190613d47565b611f03565b604051610ba59190613d87565b60405180910390f35b348015610bba57600080fd5b50610bc3611f26565b604051610bd09190613da2565b60405180910390f35b348015610be557600080fd5b50610c006004803603810190610bfb919061429d565b611f2c565b604051610c0d9190613da2565b60405180910390f35b348015610c2257600080fd5b50610c2b611f7b565b604051610c3891906142fe565b60405180910390f35b348015610c4d57600080fd5b50610c686004803603810190610c639190614319565b611fa1565b604051610c759190613da2565b60405180910390f35b348015610c8a57600080fd5b50610c9361208c565b005b348015610ca157600080fd5b50610caa6122f3565b604051610cb79190613d87565b60405180910390f35b348015610ccc57600080fd5b50610ce76004803603810190610ce29190613c29565b612306565b005b348015610cf557600080fd5b50610d106004803603810190610d0b9190613c29565b61232b565b005b348015610d1e57600080fd5b50610d396004803603810190610d349190613e8a565b612368565b604051610d469190613d87565b60405180910390f35b348015610d5b57600080fd5b50610d64612388565b604051610d719190613da2565b60405180910390f35b348015610d8657600080fd5b50610d8f6123ac565b005b348015610d9d57600080fd5b50610db86004803603810190610db39190613e8a565b6123e0565b005b348015610dc657600080fd5b50610dcf61242c565b604051610ddc9190613d87565b60405180910390f35b348015610df157600080fd5b50610e0c6004803603810190610e079190614380565b612454565b604051610e199190613da2565b60405180910390f35b348015610e2e57600080fd5b50610e376124db565b604051610e449190613d87565b60405180910390f35b348015610e5957600080fd5b50610e746004803603810190610e6f9190613d47565b612503565b005b348015610e8257600080fd5b50610e9d6004803603810190610e989190613e8a565b612654565b005b348015610eab57600080fd5b50610ec66004803603810190610ec19190613c29565b6126d7565b005b606060038054610ed7906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610f03906143ef565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050505050905090565b60128181548110610f6a57600080fd5b9060005260206000209060050201600091509050806000018054610f8d906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb9906143ef565b80156110065780601f10610fdb57610100808354040283529160200191611006565b820191906000526020600020905b815481529060010190602001808311610fe957829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040160009054906101000a900460ff16905085565b61105d612734565b670de0b6b3a764000081611071919061444f565b90503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110ae929190614491565b6020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f191906144cf565b505050565b6000806111016127b2565b905061110e8185856127ba565b600191505092915050565b600047905090565b611129612734565b670de0b6b3a76400008161113d919061444f565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600b5481565b6000806111876127b2565b9050611194858285612983565b61119f858585612a0f565b60019150509392505050565b6111b3612734565b600960019054906101000a900460ff1615600960016101000a81548160ff021916908315150217905550565b6111e7612734565b478111156111f3574790505b60006111fd611a6b565b73ffffffffffffffffffffffffffffffffffffffff16826040516112209061452d565b60006040518083038185875af1925050503d806000811461125d576040519150601f19603f3d011682016040523d82523d6000602084013e611262565b606091505b50509050806112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d9061458e565b60405180910390fd5b5050565b6112b2612734565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000806113216127b2565b90506113428185856113338589612454565b61133d91906145ae565b6127ba565b600191505092915050565b611355612734565b61135d613ae6565b8181608001901515908115158152505082816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508581600001819052508481604001818152505083816060018181525050601281908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000190816114039190614784565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff0219169083151502179055505050505050505050565b611491612734565b611499612db5565b565b6114a3612734565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611506612734565b80600d8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115b35760019050611613565b82156115e8576000600b54036115cc5760019050611613565b600b548411156115df5760009050611613565b60019050611613565b6000600a54036115fb5760019050611613565b600a5484111561160e5760009050611613565b600190505b9392505050565b6000600560009054906101000a900460ff16905090565b600a5481565b600d5481565b600960019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116a0612734565b6116aa6000612e18565b565b6000806116b761116c565b90506000620f4240600c54836116cd919061444f565b6116d79190614885565b9050809250505090565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161173f91906140e6565b602060405180830381865afa15801561175c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178091906148cb565b111561178f5760019050611794565b600090505b919050565b6000806117a4611a95565b92505050600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561180457600191505061189f565b80843073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161183f91906140e6565b602060405180830381865afa15801561185c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188091906148cb565b61188a91906145ae565b1161189957600191505061189f565b60009150505b92915050565b6118ad612734565b6118b5612ede565b565b600c5481565b60008060008060005b601280549050811015611a5e576000601282815481106118e9576118e86148f8565b5b90600052602060002090600502016040518060a0016040529081600082018054611912906143ef565b80601f016020809104026020016040519081016040528092919081815260200182805461193e906143ef565b801561198b5780601f106119605761010080835404028352916020019161198b565b820191906000526020600020905b81548152906001019060200180831161196e57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1615151515815250509050806080015115611a4a57806040015183611a3591906145ae565b9250806060015184611a4791906145ae565b93505b508080611a5690614927565b9150506118c6565b5080829350935050509091565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600080611aa361116c565b90506000620f4240600c5483611ab9919061444f565b611ac39190614885565b905081600c54829450945094505050909192565b611adf612734565b600960039054906101000a900460ff1615600960036101000a81548160ff021916908315150217905550565b606060048054611b1a906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054611b46906143ef565b8015611b935780601f10611b6857610100808354040283529160200191611b93565b820191906000526020600020905b815481529060010190602001808311611b7657829003601f168201915b5050505050905090565b600960039054906101000a900460ff1681565b611bb8612734565b600060128681548110611bce57611bcd6148f8565b5b90600052602060002090600502016040518060a0016040529081600082018054611bf7906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054611c23906143ef565b8015611c705780601f10611c4557610100808354040283529160200191611c70565b820191906000526020600020905b815481529060010190602001808311611c5357829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff16151515158152505090508181608001901515908115158152505082816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086816000018190525084816040018181525050838160600181815250508060128781548110611d7a57611d796148f8565b5b90600052602060002090600502016000820151816000019081611d9d9190614784565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555090505050505050505050565b60066020528060005260406000206000915054906101000a900460ff1681565b600960029054906101000a900460ff1681565b600080611e636127b2565b90506000611e718286612454565b905083811015611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead906149e1565b60405180910390fd5b611ec382868684036127ba565b60019250505092915050565b611ed7612734565b600960029054906101000a900460ff1615600960026101000a81548160ff021916908315150217905550565b600080611f0e6127b2565b9050611f1b818585612a0f565b600191505092915050565b600e5481565b6000806000611f396118bd565b9150915060008183611f4b91906145ae565b905060008590506000828289611f61919061444f565b611f6b9190614885565b9050809550505050505092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ffa575081155b156120085760009050612084565b6000806120136118bd565b9150915060008290508515612026578190505b60006103e88289612037919061444f565b6120419190614885565b905061204c896116e1565b1561207c5760006064600d5483612063919061444f565b61206d9190614885565b90508095505050505050612084565b809450505050505b949350505050565b612094612734565b600047905060005b6012805490508110156122ef576000601282815481106120bf576120be6148f8565b5b90600052602060002090600502016040518060a00160405290816000820180546120e8906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054612114906143ef565b80156121615780601f1061213657610100808354040283529160200191612161565b820191906000526020600020905b81548152906001019060200180831161214457829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff16151515158152505090508060800151156122db5760008160600151826040015161221191906145ae565b9050600061221f8286611f2c565b905060008360200151905060008173ffffffffffffffffffffffffffffffffffffffff16836040516122509061452d565b60006040518083038185875af1925050503d806000811461228d576040519150601f19603f3d011682016040523d82523d6000602084013e612292565b606091505b50509050806122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614a4d565b60405180910390fd5b505050505b5080806122e790614927565b91505061209c565b5050565b600960009054906101000a900460ff1681565b61230e612734565b670de0b6b3a764000081612322919061444f565b600b8190555050565b612333612734565b600e5481111561234357600e5490505b80600e60008282546123559190614a6d565b9250508190555061236581612f41565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6123b4612734565b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b6123e8612734565b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600960039054906101000a900460ff161561244c5760009050612451565b600190505b90565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600960029054906101000a900460ff16156124fb5760009050612500565b600190505b90565b61250b612734565b670de0b6b3a76400008161251f919061444f565b90506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161260c929190614491565b6020604051808303816000875af115801561262b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264f91906144cf565b505050565b61265c612734565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c290614b13565b60405180910390fd5b6126d481612e18565b50565b6126df612734565b620f4240811115612725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271c90614b7f565b60405180910390fd5b80600c8190555050565b505050565b61273c6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661275a611a6b565b73ffffffffffffffffffffffffffffffffffffffff16146127b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a790614beb565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282090614c7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288f90614d0f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129769190613da2565b60405180910390a3505050565b600061298f8484612454565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612a0957818110156129fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f290614d7b565b60405180910390fd5b612a0884848484036127ba565b5b50505050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a9357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612aa857612aa3838383613184565b612db0565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612b525750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15612b6757612b628383836131a7565b612db0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612c115750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15612c2657612c218383836132ca565b612db0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612cd05750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8015612d2a5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d3f57612d3a8383836132da565b612db0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612da457612d9f8383836134c7565b612db0565b612daf838383613621565b5b505050565b612dbd613750565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e016127b2565b604051612e0e91906140e6565b60405180910390a1565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612ee6613799565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612f2a6127b2565b604051612f3791906140e6565b60405180910390a1565b6000600267ffffffffffffffff811115612f5e57612f5d613ef8565b5b604051908082528060200260200182016040528015612f8c5781602001602082028036833780820191505090505b5090503081600081518110612fa457612fa36148f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561304b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306f9190614db0565b81600181518110613083576130826148f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130ea30601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127ba565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161314e959493929190614ed6565b600060405180830381600087803b15801561316857600080fd5b505af115801561317c573d6000803e3d6000fd5b505050505050565b60006131948385846001806137e3565b90506131a1848483613853565b50505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132b957613204833083613853565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506132c5565b6132c4838383613853565b5b505050565b6132d5838383613853565b505050565b6000811161331d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331490614fa2565b60405180910390fd5b60001515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146133b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a79061500e565b60405180910390fd5b6133b86124db565b6133f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ee9061507a565b60405180910390fd5b61340381600084611556565b613442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134399061510c565b60405180910390fd5b61344c8183611799565b61348b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134829061519e565b60405180910390fd5b6000819050600960009054906101000a900460ff16156134b6576134b38385846000806137e3565b90505b6134c1848483613853565b50505050565b6000811161350a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350190614fa2565b60405180910390fd5b60001515600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461359d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135949061500e565b60405180910390fd5b6135a561242c565b6135e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135db9061520a565b60405180910390fd5b6000819050600960019054906101000a900460ff16156136105761360d838584600160006137e3565b90505b61361b848483613853565b50505050565b60008111613664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365b90614fa2565b60405180910390fd5b60001515600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146136f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ee9061500e565b60405180910390fd5b6137018183611799565b613740576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137379061519e565b60405180910390fd5b61374b838383613853565b505050565b61375861161a565b613797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378e90615276565b60405180910390fd5b565b6137a161161a565b156137e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d8906152e2565b60405180910390fd5b565b600080600090508315613804576137fd8686600186611fa1565b9050613814565b6138118786600086611fa1565b90505b61381f863083613853565b808561382b9190614a6d565b945080600e600082825461383f91906145ae565b925050819055508491505095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b990615374565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161392890615406565b60405180910390fd5b61393c838383613ac9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156139c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139b990615498565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ab09190613da2565b60405180910390a3613ac3848484613ae1565b50505050565b613ad1613799565b613adc83838361272f565b505050565b505050565b6040518060a0016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000151581525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b67578082015181840152602081019050613b4c565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b8f82613b2d565b613b998185613b38565b9350613ba9818560208601613b49565b613bb281613b73565b840191505092915050565b60006020820190508181036000830152613bd78184613b84565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613c0681613bf3565b8114613c1157600080fd5b50565b600081359050613c2381613bfd565b92915050565b600060208284031215613c3f57613c3e613be9565b5b6000613c4d84828501613c14565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c8182613c56565b9050919050565b613c9181613c76565b82525050565b613ca081613bf3565b82525050565b60008115159050919050565b613cbb81613ca6565b82525050565b600060a0820190508181036000830152613cdb8188613b84565b9050613cea6020830187613c88565b613cf76040830186613c97565b613d046060830185613c97565b613d116080830184613cb2565b9695505050505050565b613d2481613c76565b8114613d2f57600080fd5b50565b600081359050613d4181613d1b565b92915050565b60008060408385031215613d5e57613d5d613be9565b5b6000613d6c85828601613d32565b9250506020613d7d85828601613c14565b9150509250929050565b6000602082019050613d9c6000830184613cb2565b92915050565b6000602082019050613db76000830184613c97565b92915050565b6000819050919050565b6000613de2613ddd613dd884613c56565b613dbd565b613c56565b9050919050565b6000613df482613dc7565b9050919050565b6000613e0682613de9565b9050919050565b613e1681613dfb565b82525050565b6000602082019050613e316000830184613e0d565b92915050565b600080600060608486031215613e5057613e4f613be9565b5b6000613e5e86828701613d32565b9350506020613e6f86828701613d32565b9250506040613e8086828701613c14565b9150509250925092565b600060208284031215613ea057613e9f613be9565b5b6000613eae84828501613d32565b91505092915050565b600060ff82169050919050565b613ecd81613eb7565b82525050565b6000602082019050613ee86000830184613ec4565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f3082613b73565b810181811067ffffffffffffffff82111715613f4f57613f4e613ef8565b5b80604052505050565b6000613f62613bdf565b9050613f6e8282613f27565b919050565b600067ffffffffffffffff821115613f8e57613f8d613ef8565b5b613f9782613b73565b9050602081019050919050565b82818337600083830152505050565b6000613fc6613fc184613f73565b613f58565b905082815260208101848484011115613fe257613fe1613ef3565b5b613fed848285613fa4565b509392505050565b600082601f83011261400a57614009613eee565b5b813561401a848260208601613fb3565b91505092915050565b61402c81613ca6565b811461403757600080fd5b50565b60008135905061404981614023565b92915050565b600080600080600060a0868803121561406b5761406a613be9565b5b600086013567ffffffffffffffff81111561408957614088613bee565b5b61409588828901613ff5565b95505060206140a688828901613c14565b94505060406140b788828901613c14565b93505060606140c888828901613d32565b92505060806140d98882890161403a565b9150509295509295909350565b60006020820190506140fb6000830184613c88565b92915050565b60008060006060848603121561411a57614119613be9565b5b600061412886828701613c14565b93505060206141398682870161403a565b925050604061414a86828701613d32565b9150509250925092565b6000806040838503121561416b5761416a613be9565b5b600061417985828601613c14565b925050602061418a85828601613d32565b9150509250929050565b60006040820190506141a96000830185613c97565b6141b66020830184613c97565b9392505050565b60006060820190506141d26000830186613c97565b6141df6020830185613c97565b6141ec6040830184613c97565b949350505050565b60008060008060008060c0878903121561421157614210613be9565b5b600087013567ffffffffffffffff81111561422f5761422e613bee565b5b61423b89828a01613ff5565b965050602061424c89828a01613c14565b955050604061425d89828a01613c14565b945050606061426e89828a01613c14565b935050608061427f89828a01613d32565b92505060a061429089828a0161403a565b9150509295509295509295565b600080604083850312156142b4576142b3613be9565b5b60006142c285828601613c14565b92505060206142d385828601613c14565b9150509250929050565b60006142e882613de9565b9050919050565b6142f8816142dd565b82525050565b600060208201905061431360008301846142ef565b92915050565b6000806000806080858703121561433357614332613be9565b5b600061434187828801613d32565b945050602061435287828801613c14565b93505060406143638782880161403a565b92505060606143748782880161403a565b91505092959194509250565b6000806040838503121561439757614396613be9565b5b60006143a585828601613d32565b92505060206143b685828601613d32565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061440757607f821691505b60208210810361441a576144196143c0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061445a82613bf3565b915061446583613bf3565b925082820261447381613bf3565b9150828204841483151761448a57614489614420565b5b5092915050565b60006040820190506144a66000830185613c88565b6144b36020830184613c97565b9392505050565b6000815190506144c981614023565b92915050565b6000602082840312156144e5576144e4613be9565b5b60006144f3848285016144ba565b91505092915050565b600081905092915050565b50565b60006145176000836144fc565b915061452282614507565b600082019050919050565b60006145388261450a565b9150819050919050565b7f6661696c656420746f2073656e64206574686572000000000000000000000000600082015250565b6000614578601483613b38565b915061458382614542565b602082019050919050565b600060208201905081810360008301526145a78161456b565b9050919050565b60006145b982613bf3565b91506145c483613bf3565b92508282019050808211156145dc576145db614420565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026146447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614607565b61464e8683614607565b95508019841693508086168417925050509392505050565b600061468161467c61467784613bf3565b613dbd565b613bf3565b9050919050565b6000819050919050565b61469b83614666565b6146af6146a782614688565b848454614614565b825550505050565b600090565b6146c46146b7565b6146cf818484614692565b505050565b5b818110156146f3576146e86000826146bc565b6001810190506146d5565b5050565b601f82111561473857614709816145e2565b614712846145f7565b81016020851015614721578190505b61473561472d856145f7565b8301826146d4565b50505b505050565b600082821c905092915050565b600061475b6000198460080261473d565b1980831691505092915050565b6000614774838361474a565b9150826002028217905092915050565b61478d82613b2d565b67ffffffffffffffff8111156147a6576147a5613ef8565b5b6147b082546143ef565b6147bb8282856146f7565b600060209050601f8311600181146147ee57600084156147dc578287015190505b6147e68582614768565b86555061484e565b601f1984166147fc866145e2565b60005b82811015614824578489015182556001820191506020850194506020810190506147ff565b86831015614841578489015161483d601f89168261474a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061489082613bf3565b915061489b83613bf3565b9250826148ab576148aa614856565b5b828204905092915050565b6000815190506148c581613bfd565b92915050565b6000602082840312156148e1576148e0613be9565b5b60006148ef848285016148b6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061493282613bf3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361496457614963614420565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149cb602583613b38565b91506149d68261496f565b604082019050919050565b600060208201905081810360008301526149fa816149be565b9050919050565b7f6661696c656420746f2073656e64206574680000000000000000000000000000600082015250565b6000614a37601283613b38565b9150614a4282614a01565b602082019050919050565b60006020820190508181036000830152614a6681614a2a565b9050919050565b6000614a7882613bf3565b9150614a8383613bf3565b9250828203905081811115614a9b57614a9a614420565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614afd602683613b38565b9150614b0882614aa1565b604082019050919050565b60006020820190508181036000830152614b2c81614af0565b9050919050565b7f6e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000614b69600b83613b38565b9150614b7482614b33565b602082019050919050565b60006020820190508181036000830152614b9881614b5c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614bd5602083613b38565b9150614be082614b9f565b602082019050919050565b60006020820190508181036000830152614c0481614bc8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c67602483613b38565b9150614c7282614c0b565b604082019050919050565b60006020820190508181036000830152614c9681614c5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cf9602283613b38565b9150614d0482614c9d565b604082019050919050565b60006020820190508181036000830152614d2881614cec565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614d65601d83613b38565b9150614d7082614d2f565b602082019050919050565b60006020820190508181036000830152614d9481614d58565b9050919050565b600081519050614daa81613d1b565b92915050565b600060208284031215614dc657614dc5613be9565b5b6000614dd484828501614d9b565b91505092915050565b6000819050919050565b6000614e02614dfd614df884614ddd565b613dbd565b613bf3565b9050919050565b614e1281614de7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e4d81613c76565b82525050565b6000614e5f8383614e44565b60208301905092915050565b6000602082019050919050565b6000614e8382614e18565b614e8d8185614e23565b9350614e9883614e34565b8060005b83811015614ec9578151614eb08882614e53565b9750614ebb83614e6b565b925050600181019050614e9c565b5085935050505092915050565b600060a082019050614eeb6000830188613c97565b614ef86020830187614e09565b8181036040830152614f0a8186614e78565b9050614f196060830185613c88565b614f266080830184613c97565b9695505050505050565b7f596f75206d7573742077616e7420746f207472616e73666572206d6f7265207460008201527f68616e2030210000000000000000000000000000000000000000000000000000602082015250565b6000614f8c602683613b38565b9150614f9782614f30565b604082019050919050565b60006020820190508181036000830152614fbb81614f7f565b9050919050565b7f62616e6e65640000000000000000000000000000000000000000000000000000600082015250565b6000614ff8600683613b38565b915061500382614fc2565b602082019050919050565b6000602082019050818103600083015261502781614feb565b9050919050565b7f427579696e672069732074656d706f726572696c792070617573656400000000600082015250565b6000615064601c83613b38565b915061506f8261502e565b602082019050919050565b6000602082019050818103600083015261509381615057565b9050919050565b7f54686973206973206d6f7265207468616e20746865206d6178696d756d20627560008201527f7920697320616c6c6f7765640000000000000000000000000000000000000000602082015250565b60006150f6602c83613b38565b91506151018261509a565b604082019050919050565b60006020820190508181036000830152615125816150e9565b9050919050565b7f54686973206973206d6f7265207468616e20746865206d6178696d756d20252060008201527f7065722077616c6c657420697320616c6c6f7765640000000000000000000000602082015250565b6000615188603583613b38565b91506151938261512c565b604082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b7f53656c6c696e672069732074656d706f726572696c7920706175736564000000600082015250565b60006151f4601d83613b38565b91506151ff826151be565b602082019050919050565b60006020820190508181036000830152615223816151e7565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000615260601483613b38565b915061526b8261522a565b602082019050919050565b6000602082019050818103600083015261528f81615253565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006152cc601083613b38565b91506152d782615296565b602082019050919050565b600060208201905081810360008301526152fb816152bf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061535e602583613b38565b915061536982615302565b604082019050919050565b6000602082019050818103600083015261538d81615351565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153f0602383613b38565b91506153fb82615394565b604082019050919050565b6000602082019050818103600083015261541f816153e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615482602683613b38565b915061548d82615426565b604082019050919050565b600060208201905081810360008301526154b181615475565b905091905056fea26469706673582212209139f2fe90ed32a1f010d3ad2d92f911007b443fa6a56d8d395530c89a6f67bc64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106103bc5760003560e01c80638456cb59116101f2578063af9a42511161010d578063d65f4425116100a0578063e6d97d461161006f578063e6d97d4614610e22578063f01fc61614610e4d578063f2fde38b14610e76578063fb848df914610e9f576103c3565b8063d65f442514610d7a578063d8c9d9b514610d91578063db32d65314610dba578063dd62ed3e14610de5576103c3565b8063be27c01c116100dc578063be27c01c14610cc0578063c39d75ea14610ce9578063cba0e99614610d12578063d5abeb0114610d4f576103c3565b8063af9a425114610c16578063b43e63e114610c41578063b9d0617214610c7e578063bd99e9c514610c95576103c3565b806398ff17bd11610185578063a5a24f5511610154578063a5a24f5514610b5a578063a9059cbb14610b71578063aa98e16314610bae578063ac93fd6314610bd9576103c3565b806398ff17bd14610a8c578063a2687c6314610ab5578063a38eb62214610af2578063a457c2d714610b1d576103c3565b80638da79891116101c15780638da79891146109f25780639358ba4e14610a1f57806395d89b4114610a365780639754a7d814610a61576103c3565b80638456cb59146109595780638772c63e146109705780638d41c8861461099b5780638da5cb5b146109c7576103c3565b80633b7ce851116102e25780636214fd0611610275578063715018a611610244578063715018a61461089d57806374ad606e146108b4578063793bb983146108df57806383a9e9ed1461091c576103c3565b80636214fd06146107df57806365657ff91461080a5780636a2a903a1461083557806370a0823114610860576103c3565b806349bd5a5e116102b157806349bd5a5e1461070f5780634acfb0ce1461073a57806354eacef8146107775780635c975abb146107b4576103c3565b80633b7ce8511461067d5780633f4ba83a146106a6578063410114df146106bd57806347d82751146106e6576103c3565b806318160ddd1161035a5780632e1a7d4d116103295780632e1a7d4d146105c35780633134db22146105ec578063313ce567146106155780633950935114610640576103c3565b806318160ddd146105195780631f0ec9b61461054457806323b872dd1461056f57806325927b66146105ac576103c3565b8063095ea7b311610396578063095ea7b31461045d57806312065fe01461049a578063122b1eb6146104c55780631694505e146104ee576103c3565b806306fdde03146103c8578063087a2daf146103f357806309072fdf14610434576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ec8565b6040516103ea9190613bbd565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190613c29565b610f5a565b60405161042b959493929190613cc1565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190613d47565b611055565b005b34801561046957600080fd5b50610484600480360381019061047f9190613d47565b6110f6565b6040516104919190613d87565b60405180910390f35b3480156104a657600080fd5b506104af611119565b6040516104bc9190613da2565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e79190613c29565b611121565b005b3480156104fa57600080fd5b50610503611146565b6040516105109190613e1c565b60405180910390f35b34801561052557600080fd5b5061052e61116c565b60405161053b9190613da2565b60405180910390f35b34801561055057600080fd5b50610559611176565b6040516105669190613da2565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190613e37565b61117c565b6040516105a39190613d87565b60405180910390f35b3480156105b857600080fd5b506105c16111ab565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613c29565b6111df565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613e8a565b6112aa565b005b34801561062157600080fd5b5061062a61130d565b6040516106379190613ed3565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190613d47565b611316565b6040516106749190613d87565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f919061404f565b61134d565b005b3480156106b257600080fd5b506106bb611489565b005b3480156106c957600080fd5b506106e460048036038101906106df9190613e8a565b61149b565b005b3480156106f257600080fd5b5061070d60048036038101906107089190613c29565b6114fe565b005b34801561071b57600080fd5b50610724611510565b60405161073191906140e6565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c9190613e8a565b611536565b60405161076e9190613d87565b60405180910390f35b34801561078357600080fd5b5061079e60048036038101906107999190614101565b611556565b6040516107ab9190613d87565b60405180910390f35b3480156107c057600080fd5b506107c961161a565b6040516107d69190613d87565b60405180910390f35b3480156107eb57600080fd5b506107f4611631565b6040516108019190613da2565b60405180910390f35b34801561081657600080fd5b5061081f611637565b60405161082c9190613da2565b60405180910390f35b34801561084157600080fd5b5061084a61163d565b6040516108579190613d87565b60405180910390f35b34801561086c57600080fd5b5061088760048036038101906108829190613e8a565b611650565b6040516108949190613da2565b60405180910390f35b3480156108a957600080fd5b506108b2611698565b005b3480156108c057600080fd5b506108c96116ac565b6040516108d69190613da2565b60405180910390f35b3480156108eb57600080fd5b5061090660048036038101906109019190613e8a565b6116e1565b6040516109139190613d87565b60405180910390f35b34801561092857600080fd5b50610943600480360381019061093e9190614154565b611799565b6040516109509190613d87565b60405180910390f35b34801561096557600080fd5b5061096e6118a5565b005b34801561097c57600080fd5b506109856118b7565b6040516109929190613da2565b60405180910390f35b3480156109a757600080fd5b506109b06118bd565b6040516109be929190614194565b60405180910390f35b3480156109d357600080fd5b506109dc611a6b565b6040516109e991906140e6565b60405180910390f35b3480156109fe57600080fd5b50610a07611a95565b604051610a16939291906141bd565b60405180910390f35b348015610a2b57600080fd5b50610a34611ad7565b005b348015610a4257600080fd5b50610a4b611b0b565b604051610a589190613bbd565b60405180910390f35b348015610a6d57600080fd5b50610a76611b9d565b604051610a839190613d87565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae91906141f4565b611bb0565b005b348015610ac157600080fd5b50610adc6004803603810190610ad79190613e8a565b611e25565b604051610ae99190613d87565b60405180910390f35b348015610afe57600080fd5b50610b07611e45565b604051610b149190613d87565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190613d47565b611e58565b604051610b519190613d87565b60405180910390f35b348015610b6657600080fd5b50610b6f611ecf565b005b348015610b7d57600080fd5b50610b986004803603810190610b939190613d47565b611f03565b604051610ba59190613d87565b60405180910390f35b348015610bba57600080fd5b50610bc3611f26565b604051610bd09190613da2565b60405180910390f35b348015610be557600080fd5b50610c006004803603810190610bfb919061429d565b611f2c565b604051610c0d9190613da2565b60405180910390f35b348015610c2257600080fd5b50610c2b611f7b565b604051610c3891906142fe565b60405180910390f35b348015610c4d57600080fd5b50610c686004803603810190610c639190614319565b611fa1565b604051610c759190613da2565b60405180910390f35b348015610c8a57600080fd5b50610c9361208c565b005b348015610ca157600080fd5b50610caa6122f3565b604051610cb79190613d87565b60405180910390f35b348015610ccc57600080fd5b50610ce76004803603810190610ce29190613c29565b612306565b005b348015610cf557600080fd5b50610d106004803603810190610d0b9190613c29565b61232b565b005b348015610d1e57600080fd5b50610d396004803603810190610d349190613e8a565b612368565b604051610d469190613d87565b60405180910390f35b348015610d5b57600080fd5b50610d64612388565b604051610d719190613da2565b60405180910390f35b348015610d8657600080fd5b50610d8f6123ac565b005b348015610d9d57600080fd5b50610db86004803603810190610db39190613e8a565b6123e0565b005b348015610dc657600080fd5b50610dcf61242c565b604051610ddc9190613d87565b60405180910390f35b348015610df157600080fd5b50610e0c6004803603810190610e079190614380565b612454565b604051610e199190613da2565b60405180910390f35b348015610e2e57600080fd5b50610e376124db565b604051610e449190613d87565b60405180910390f35b348015610e5957600080fd5b50610e746004803603810190610e6f9190613d47565b612503565b005b348015610e8257600080fd5b50610e9d6004803603810190610e989190613e8a565b612654565b005b348015610eab57600080fd5b50610ec66004803603810190610ec19190613c29565b6126d7565b005b606060038054610ed7906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610f03906143ef565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050505050905090565b60128181548110610f6a57600080fd5b9060005260206000209060050201600091509050806000018054610f8d906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb9906143ef565b80156110065780601f10610fdb57610100808354040283529160200191611006565b820191906000526020600020905b815481529060010190602001808311610fe957829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040160009054906101000a900460ff16905085565b61105d612734565b670de0b6b3a764000081611071919061444f565b90503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110ae929190614491565b6020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f191906144cf565b505050565b6000806111016127b2565b905061110e8185856127ba565b600191505092915050565b600047905090565b611129612734565b670de0b6b3a76400008161113d919061444f565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600b5481565b6000806111876127b2565b9050611194858285612983565b61119f858585612a0f565b60019150509392505050565b6111b3612734565b600960019054906101000a900460ff1615600960016101000a81548160ff021916908315150217905550565b6111e7612734565b478111156111f3574790505b60006111fd611a6b565b73ffffffffffffffffffffffffffffffffffffffff16826040516112209061452d565b60006040518083038185875af1925050503d806000811461125d576040519150601f19603f3d011682016040523d82523d6000602084013e611262565b606091505b50509050806112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d9061458e565b60405180910390fd5b5050565b6112b2612734565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000806113216127b2565b90506113428185856113338589612454565b61133d91906145ae565b6127ba565b600191505092915050565b611355612734565b61135d613ae6565b8181608001901515908115158152505082816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508581600001819052508481604001818152505083816060018181525050601281908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000190816114039190614784565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff0219169083151502179055505050505050505050565b611491612734565b611499612db5565b565b6114a3612734565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611506612734565b80600d8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115b35760019050611613565b82156115e8576000600b54036115cc5760019050611613565b600b548411156115df5760009050611613565b60019050611613565b6000600a54036115fb5760019050611613565b600a5484111561160e5760009050611613565b600190505b9392505050565b6000600560009054906101000a900460ff16905090565b600a5481565b600d5481565b600960019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116a0612734565b6116aa6000612e18565b565b6000806116b761116c565b90506000620f4240600c54836116cd919061444f565b6116d79190614885565b9050809250505090565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161173f91906140e6565b602060405180830381865afa15801561175c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178091906148cb565b111561178f5760019050611794565b600090505b919050565b6000806117a4611a95565b92505050600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561180457600191505061189f565b80843073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161183f91906140e6565b602060405180830381865afa15801561185c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188091906148cb565b61188a91906145ae565b1161189957600191505061189f565b60009150505b92915050565b6118ad612734565b6118b5612ede565b565b600c5481565b60008060008060005b601280549050811015611a5e576000601282815481106118e9576118e86148f8565b5b90600052602060002090600502016040518060a0016040529081600082018054611912906143ef565b80601f016020809104026020016040519081016040528092919081815260200182805461193e906143ef565b801561198b5780601f106119605761010080835404028352916020019161198b565b820191906000526020600020905b81548152906001019060200180831161196e57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1615151515815250509050806080015115611a4a57806040015183611a3591906145ae565b9250806060015184611a4791906145ae565b93505b508080611a5690614927565b9150506118c6565b5080829350935050509091565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600080611aa361116c565b90506000620f4240600c5483611ab9919061444f565b611ac39190614885565b905081600c54829450945094505050909192565b611adf612734565b600960039054906101000a900460ff1615600960036101000a81548160ff021916908315150217905550565b606060048054611b1a906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054611b46906143ef565b8015611b935780601f10611b6857610100808354040283529160200191611b93565b820191906000526020600020905b815481529060010190602001808311611b7657829003601f168201915b5050505050905090565b600960039054906101000a900460ff1681565b611bb8612734565b600060128681548110611bce57611bcd6148f8565b5b90600052602060002090600502016040518060a0016040529081600082018054611bf7906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054611c23906143ef565b8015611c705780601f10611c4557610100808354040283529160200191611c70565b820191906000526020600020905b815481529060010190602001808311611c5357829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff16151515158152505090508181608001901515908115158152505082816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086816000018190525084816040018181525050838160600181815250508060128781548110611d7a57611d796148f8565b5b90600052602060002090600502016000820151816000019081611d9d9190614784565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555090505050505050505050565b60066020528060005260406000206000915054906101000a900460ff1681565b600960029054906101000a900460ff1681565b600080611e636127b2565b90506000611e718286612454565b905083811015611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead906149e1565b60405180910390fd5b611ec382868684036127ba565b60019250505092915050565b611ed7612734565b600960029054906101000a900460ff1615600960026101000a81548160ff021916908315150217905550565b600080611f0e6127b2565b9050611f1b818585612a0f565b600191505092915050565b600e5481565b6000806000611f396118bd565b9150915060008183611f4b91906145ae565b905060008590506000828289611f61919061444f565b611f6b9190614885565b9050809550505050505092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ffa575081155b156120085760009050612084565b6000806120136118bd565b9150915060008290508515612026578190505b60006103e88289612037919061444f565b6120419190614885565b905061204c896116e1565b1561207c5760006064600d5483612063919061444f565b61206d9190614885565b90508095505050505050612084565b809450505050505b949350505050565b612094612734565b600047905060005b6012805490508110156122ef576000601282815481106120bf576120be6148f8565b5b90600052602060002090600502016040518060a00160405290816000820180546120e8906143ef565b80601f0160208091040260200160405190810160405280929190818152602001828054612114906143ef565b80156121615780601f1061213657610100808354040283529160200191612161565b820191906000526020600020905b81548152906001019060200180831161214457829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff16151515158152505090508060800151156122db5760008160600151826040015161221191906145ae565b9050600061221f8286611f2c565b905060008360200151905060008173ffffffffffffffffffffffffffffffffffffffff16836040516122509061452d565b60006040518083038185875af1925050503d806000811461228d576040519150601f19603f3d011682016040523d82523d6000602084013e612292565b606091505b50509050806122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614a4d565b60405180910390fd5b505050505b5080806122e790614927565b91505061209c565b5050565b600960009054906101000a900460ff1681565b61230e612734565b670de0b6b3a764000081612322919061444f565b600b8190555050565b612333612734565b600e5481111561234357600e5490505b80600e60008282546123559190614a6d565b9250508190555061236581612f41565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b7f00000000000000000000000000000000000000000000000000000004e3b2920081565b6123b4612734565b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b6123e8612734565b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600960039054906101000a900460ff161561244c5760009050612451565b600190505b90565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600960029054906101000a900460ff16156124fb5760009050612500565b600190505b90565b61250b612734565b670de0b6b3a76400008161251f919061444f565b90506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161260c929190614491565b6020604051808303816000875af115801561262b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264f91906144cf565b505050565b61265c612734565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c290614b13565b60405180910390fd5b6126d481612e18565b50565b6126df612734565b620f4240811115612725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271c90614b7f565b60405180910390fd5b80600c8190555050565b505050565b61273c6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661275a611a6b565b73ffffffffffffffffffffffffffffffffffffffff16146127b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a790614beb565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282090614c7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288f90614d0f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129769190613da2565b60405180910390a3505050565b600061298f8484612454565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612a0957818110156129fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f290614d7b565b60405180910390fd5b612a0884848484036127ba565b5b50505050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a9357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612aa857612aa3838383613184565b612db0565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612b525750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15612b6757612b628383836131a7565b612db0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612c115750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15612c2657612c218383836132ca565b612db0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612cd05750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8015612d2a5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d3f57612d3a8383836132da565b612db0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612da457612d9f8383836134c7565b612db0565b612daf838383613621565b5b505050565b612dbd613750565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e016127b2565b604051612e0e91906140e6565b60405180910390a1565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612ee6613799565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612f2a6127b2565b604051612f3791906140e6565b60405180910390a1565b6000600267ffffffffffffffff811115612f5e57612f5d613ef8565b5b604051908082528060200260200182016040528015612f8c5781602001602082028036833780820191505090505b5090503081600081518110612fa457612fa36148f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561304b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306f9190614db0565b81600181518110613083576130826148f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130ea30601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127ba565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161314e959493929190614ed6565b600060405180830381600087803b15801561316857600080fd5b505af115801561317c573d6000803e3d6000fd5b505050505050565b60006131948385846001806137e3565b90506131a1848483613853565b50505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132b957613204833083613853565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506132c5565b6132c4838383613853565b5b505050565b6132d5838383613853565b505050565b6000811161331d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331490614fa2565b60405180910390fd5b60001515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146133b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a79061500e565b60405180910390fd5b6133b86124db565b6133f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ee9061507a565b60405180910390fd5b61340381600084611556565b613442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134399061510c565b60405180910390fd5b61344c8183611799565b61348b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134829061519e565b60405180910390fd5b6000819050600960009054906101000a900460ff16156134b6576134b38385846000806137e3565b90505b6134c1848483613853565b50505050565b6000811161350a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350190614fa2565b60405180910390fd5b60001515600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461359d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135949061500e565b60405180910390fd5b6135a561242c565b6135e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135db9061520a565b60405180910390fd5b6000819050600960019054906101000a900460ff16156136105761360d838584600160006137e3565b90505b61361b848483613853565b50505050565b60008111613664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365b90614fa2565b60405180910390fd5b60001515600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146136f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ee9061500e565b60405180910390fd5b6137018183611799565b613740576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137379061519e565b60405180910390fd5b61374b838383613853565b505050565b61375861161a565b613797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378e90615276565b60405180910390fd5b565b6137a161161a565b156137e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d8906152e2565b60405180910390fd5b565b600080600090508315613804576137fd8686600186611fa1565b9050613814565b6138118786600086611fa1565b90505b61381f863083613853565b808561382b9190614a6d565b945080600e600082825461383f91906145ae565b925050819055508491505095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b990615374565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161392890615406565b60405180910390fd5b61393c838383613ac9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156139c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139b990615498565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ab09190613da2565b60405180910390a3613ac3848484613ae1565b50505050565b613ad1613799565b613adc83838361272f565b505050565b505050565b6040518060a0016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000151581525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b67578082015181840152602081019050613b4c565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b8f82613b2d565b613b998185613b38565b9350613ba9818560208601613b49565b613bb281613b73565b840191505092915050565b60006020820190508181036000830152613bd78184613b84565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613c0681613bf3565b8114613c1157600080fd5b50565b600081359050613c2381613bfd565b92915050565b600060208284031215613c3f57613c3e613be9565b5b6000613c4d84828501613c14565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c8182613c56565b9050919050565b613c9181613c76565b82525050565b613ca081613bf3565b82525050565b60008115159050919050565b613cbb81613ca6565b82525050565b600060a0820190508181036000830152613cdb8188613b84565b9050613cea6020830187613c88565b613cf76040830186613c97565b613d046060830185613c97565b613d116080830184613cb2565b9695505050505050565b613d2481613c76565b8114613d2f57600080fd5b50565b600081359050613d4181613d1b565b92915050565b60008060408385031215613d5e57613d5d613be9565b5b6000613d6c85828601613d32565b9250506020613d7d85828601613c14565b9150509250929050565b6000602082019050613d9c6000830184613cb2565b92915050565b6000602082019050613db76000830184613c97565b92915050565b6000819050919050565b6000613de2613ddd613dd884613c56565b613dbd565b613c56565b9050919050565b6000613df482613dc7565b9050919050565b6000613e0682613de9565b9050919050565b613e1681613dfb565b82525050565b6000602082019050613e316000830184613e0d565b92915050565b600080600060608486031215613e5057613e4f613be9565b5b6000613e5e86828701613d32565b9350506020613e6f86828701613d32565b9250506040613e8086828701613c14565b9150509250925092565b600060208284031215613ea057613e9f613be9565b5b6000613eae84828501613d32565b91505092915050565b600060ff82169050919050565b613ecd81613eb7565b82525050565b6000602082019050613ee86000830184613ec4565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f3082613b73565b810181811067ffffffffffffffff82111715613f4f57613f4e613ef8565b5b80604052505050565b6000613f62613bdf565b9050613f6e8282613f27565b919050565b600067ffffffffffffffff821115613f8e57613f8d613ef8565b5b613f9782613b73565b9050602081019050919050565b82818337600083830152505050565b6000613fc6613fc184613f73565b613f58565b905082815260208101848484011115613fe257613fe1613ef3565b5b613fed848285613fa4565b509392505050565b600082601f83011261400a57614009613eee565b5b813561401a848260208601613fb3565b91505092915050565b61402c81613ca6565b811461403757600080fd5b50565b60008135905061404981614023565b92915050565b600080600080600060a0868803121561406b5761406a613be9565b5b600086013567ffffffffffffffff81111561408957614088613bee565b5b61409588828901613ff5565b95505060206140a688828901613c14565b94505060406140b788828901613c14565b93505060606140c888828901613d32565b92505060806140d98882890161403a565b9150509295509295909350565b60006020820190506140fb6000830184613c88565b92915050565b60008060006060848603121561411a57614119613be9565b5b600061412886828701613c14565b93505060206141398682870161403a565b925050604061414a86828701613d32565b9150509250925092565b6000806040838503121561416b5761416a613be9565b5b600061417985828601613c14565b925050602061418a85828601613d32565b9150509250929050565b60006040820190506141a96000830185613c97565b6141b66020830184613c97565b9392505050565b60006060820190506141d26000830186613c97565b6141df6020830185613c97565b6141ec6040830184613c97565b949350505050565b60008060008060008060c0878903121561421157614210613be9565b5b600087013567ffffffffffffffff81111561422f5761422e613bee565b5b61423b89828a01613ff5565b965050602061424c89828a01613c14565b955050604061425d89828a01613c14565b945050606061426e89828a01613c14565b935050608061427f89828a01613d32565b92505060a061429089828a0161403a565b9150509295509295509295565b600080604083850312156142b4576142b3613be9565b5b60006142c285828601613c14565b92505060206142d385828601613c14565b9150509250929050565b60006142e882613de9565b9050919050565b6142f8816142dd565b82525050565b600060208201905061431360008301846142ef565b92915050565b6000806000806080858703121561433357614332613be9565b5b600061434187828801613d32565b945050602061435287828801613c14565b93505060406143638782880161403a565b92505060606143748782880161403a565b91505092959194509250565b6000806040838503121561439757614396613be9565b5b60006143a585828601613d32565b92505060206143b685828601613d32565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061440757607f821691505b60208210810361441a576144196143c0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061445a82613bf3565b915061446583613bf3565b925082820261447381613bf3565b9150828204841483151761448a57614489614420565b5b5092915050565b60006040820190506144a66000830185613c88565b6144b36020830184613c97565b9392505050565b6000815190506144c981614023565b92915050565b6000602082840312156144e5576144e4613be9565b5b60006144f3848285016144ba565b91505092915050565b600081905092915050565b50565b60006145176000836144fc565b915061452282614507565b600082019050919050565b60006145388261450a565b9150819050919050565b7f6661696c656420746f2073656e64206574686572000000000000000000000000600082015250565b6000614578601483613b38565b915061458382614542565b602082019050919050565b600060208201905081810360008301526145a78161456b565b9050919050565b60006145b982613bf3565b91506145c483613bf3565b92508282019050808211156145dc576145db614420565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026146447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614607565b61464e8683614607565b95508019841693508086168417925050509392505050565b600061468161467c61467784613bf3565b613dbd565b613bf3565b9050919050565b6000819050919050565b61469b83614666565b6146af6146a782614688565b848454614614565b825550505050565b600090565b6146c46146b7565b6146cf818484614692565b505050565b5b818110156146f3576146e86000826146bc565b6001810190506146d5565b5050565b601f82111561473857614709816145e2565b614712846145f7565b81016020851015614721578190505b61473561472d856145f7565b8301826146d4565b50505b505050565b600082821c905092915050565b600061475b6000198460080261473d565b1980831691505092915050565b6000614774838361474a565b9150826002028217905092915050565b61478d82613b2d565b67ffffffffffffffff8111156147a6576147a5613ef8565b5b6147b082546143ef565b6147bb8282856146f7565b600060209050601f8311600181146147ee57600084156147dc578287015190505b6147e68582614768565b86555061484e565b601f1984166147fc866145e2565b60005b82811015614824578489015182556001820191506020850194506020810190506147ff565b86831015614841578489015161483d601f89168261474a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061489082613bf3565b915061489b83613bf3565b9250826148ab576148aa614856565b5b828204905092915050565b6000815190506148c581613bfd565b92915050565b6000602082840312156148e1576148e0613be9565b5b60006148ef848285016148b6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061493282613bf3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361496457614963614420565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149cb602583613b38565b91506149d68261496f565b604082019050919050565b600060208201905081810360008301526149fa816149be565b9050919050565b7f6661696c656420746f2073656e64206574680000000000000000000000000000600082015250565b6000614a37601283613b38565b9150614a4282614a01565b602082019050919050565b60006020820190508181036000830152614a6681614a2a565b9050919050565b6000614a7882613bf3565b9150614a8383613bf3565b9250828203905081811115614a9b57614a9a614420565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614afd602683613b38565b9150614b0882614aa1565b604082019050919050565b60006020820190508181036000830152614b2c81614af0565b9050919050565b7f6e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000614b69600b83613b38565b9150614b7482614b33565b602082019050919050565b60006020820190508181036000830152614b9881614b5c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614bd5602083613b38565b9150614be082614b9f565b602082019050919050565b60006020820190508181036000830152614c0481614bc8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c67602483613b38565b9150614c7282614c0b565b604082019050919050565b60006020820190508181036000830152614c9681614c5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cf9602283613b38565b9150614d0482614c9d565b604082019050919050565b60006020820190508181036000830152614d2881614cec565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614d65601d83613b38565b9150614d7082614d2f565b602082019050919050565b60006020820190508181036000830152614d9481614d58565b9050919050565b600081519050614daa81613d1b565b92915050565b600060208284031215614dc657614dc5613be9565b5b6000614dd484828501614d9b565b91505092915050565b6000819050919050565b6000614e02614dfd614df884614ddd565b613dbd565b613bf3565b9050919050565b614e1281614de7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e4d81613c76565b82525050565b6000614e5f8383614e44565b60208301905092915050565b6000602082019050919050565b6000614e8382614e18565b614e8d8185614e23565b9350614e9883614e34565b8060005b83811015614ec9578151614eb08882614e53565b9750614ebb83614e6b565b925050600181019050614e9c565b5085935050505092915050565b600060a082019050614eeb6000830188613c97565b614ef86020830187614e09565b8181036040830152614f0a8186614e78565b9050614f196060830185613c88565b614f266080830184613c97565b9695505050505050565b7f596f75206d7573742077616e7420746f207472616e73666572206d6f7265207460008201527f68616e2030210000000000000000000000000000000000000000000000000000602082015250565b6000614f8c602683613b38565b9150614f9782614f30565b604082019050919050565b60006020820190508181036000830152614fbb81614f7f565b9050919050565b7f62616e6e65640000000000000000000000000000000000000000000000000000600082015250565b6000614ff8600683613b38565b915061500382614fc2565b602082019050919050565b6000602082019050818103600083015261502781614feb565b9050919050565b7f427579696e672069732074656d706f726572696c792070617573656400000000600082015250565b6000615064601c83613b38565b915061506f8261502e565b602082019050919050565b6000602082019050818103600083015261509381615057565b9050919050565b7f54686973206973206d6f7265207468616e20746865206d6178696d756d20627560008201527f7920697320616c6c6f7765640000000000000000000000000000000000000000602082015250565b60006150f6602c83613b38565b91506151018261509a565b604082019050919050565b60006020820190508181036000830152615125816150e9565b9050919050565b7f54686973206973206d6f7265207468616e20746865206d6178696d756d20252060008201527f7065722077616c6c657420697320616c6c6f7765640000000000000000000000602082015250565b6000615188603583613b38565b91506151938261512c565b604082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b7f53656c6c696e672069732074656d706f726572696c7920706175736564000000600082015250565b60006151f4601d83613b38565b91506151ff826151be565b602082019050919050565b60006020820190508181036000830152615223816151e7565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000615260601483613b38565b915061526b8261522a565b602082019050919050565b6000602082019050818103600083015261528f81615253565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006152cc601083613b38565b91506152d782615296565b602082019050919050565b600060208201905081810360008301526152fb816152bf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061535e602583613b38565b915061536982615302565b604082019050919050565b6000602082019050818103600083015261538d81615351565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153f0602383613b38565b91506153fb82615394565b604082019050919050565b6000602082019050818103600083015261541f816153e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615482602683613b38565b915061548d82615426565b604082019050919050565b600060208201905081810360008301526154b181615475565b905091905056fea26469706673582212209139f2fe90ed32a1f010d3ad2d92f911007b443fa6a56d8d395530c89a6f67bc64736f6c63430008110033
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.