Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
420,690,000,000,000 RHCP
Holders
158
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
RHCP
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// https://t.me/RedHotChiliPEPEPortal // SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); /** * @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 ); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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); } 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; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } 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); } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership(bool confirmRenounce) external virtual onlyOwner { require(confirmRenounce, "Please confirm renounce!"); emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface ILpPair { function sync() external; } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract RHCP is ERC20, Ownable { IDexRouter public dexRouter; address public lpPair; address public newOwner; bool private swapping; uint256 public swapTokensAtAmount; address public communityAddress; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; mapping(address => bool) public flaggedAsBot; address[] public botBuyers; uint256 public sellTotalFees; uint256 public sellCommunityFee; uint256 public sellLiquidityFee; uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWallet; uint256 public tradingActiveBlock = 0; uint256 public blockForPenaltyEnd; uint256 public botsCaught; uint256 public tokensForCommunity; uint256 public tokensForLiquidity; uint256 public buyTotalFees; uint256 public buyCommunityFee; uint256 public buyLiquidityFee; uint256 private defaultCommunityFee; uint256 private defaultLiquidityFee; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event TradingEnabled(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedCommunityAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event OwnerForcedSwapBack(uint256 timestamp); event CaughtEarlyBuyer(address sniper); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TransferForeignToken(address token, uint256 amount); constructor() payable ERC20("Red Hot Chili Pepe", "RHCP") { newOwner = msg.sender; address _dexRouter; _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // initialize router dexRouter = IDexRouter(_dexRouter); // create pair lpPair = IDexFactory(dexRouter.factory()).createPair( address(this), dexRouter.WETH() ); _excludeFromMaxTransaction(address(lpPair), true); _setAutomatedMarketMakerPair(address(lpPair), true); uint256 totalSupply = 420690000000000 * 1e18; maxBuyAmount = (totalSupply * 2) / 100; maxSellAmount = (totalSupply * 2) / 100; maxWallet = (totalSupply * 2) / 100; swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 % buyCommunityFee = 1; buyLiquidityFee = 1; buyTotalFees = buyCommunityFee + buyLiquidityFee; defaultCommunityFee = 0; defaultLiquidityFee = 0; sellCommunityFee = 1; sellLiquidityFee = 1; sellTotalFees = sellCommunityFee + sellLiquidityFee; communityAddress = address(0x5C0DF29cbEa5ddB0a3A3bD4129A9d54C6d987F71); _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); _excludeFromMaxTransaction(address(communityAddress), true); _excludeFromMaxTransaction(address(dexRouter), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(communityAddress), true); excludeFromFees(address(dexRouter), true); _createInitialSupply(address(newOwner), totalSupply); transferOwnership(newOwner); } receive() external payable {} function getBotBuyers() external view returns (address[] memory) { return botBuyers; } function unflagBot(address wallet) external onlyOwner { require(flaggedAsBot[wallet], "Wallet is already not flagged."); flaggedAsBot[wallet] = false; } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function flagBot(address wallet) external onlyOwner { require(!flaggedAsBot[wallet], "Wallet is already flagged."); flaggedAsBot[wallet] = true; } function updateBuyFees(uint256 _communityFee, uint256 _liquidityFee) external onlyOwner { buyCommunityFee = _communityFee; buyLiquidityFee = _liquidityFee; buyTotalFees = buyCommunityFee + buyLiquidityFee; } function _excludeFromMaxTransaction(address updAds, bool isExcluded) private { _isExcludedMaxTransactionAmount[updAds] = isExcluded; emit MaxTransactionExclusion(updAds, isExcluded); } function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner { if (!isEx) { require( updAds != lpPair, "Cannot remove uniswap pair from max txn" ); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require( pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateSellFees(uint256 _communityFee, uint256 _liquidityFee) external onlyOwner { sellCommunityFee = _communityFee; sellLiquidityFee = _liquidityFee; sellTotalFees = sellCommunityFee + sellLiquidityFee; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } 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(amount > 0, "amount must be greater than 0"); if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (!earlyBuyPenaltyInEffect() && tradingActive) { require( !flaggedAsBot[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address." ); } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { if (transferDelayEnabled) { if (to != address(dexRouter) && to != address(lpPair)) { require( _holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled. Try again later." ); _holderLastTransferTimestamp[tx.origin] = block.number; _holderLastTransferTimestamp[to] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy." ); require( amount + balanceOf(to) <= maxWallet, "Max Wallet Exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxSellAmount, "Sell transfer amount exceeds the max sell." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max Wallet Exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // bot/sniper penalty. if ( (earlyBuyPenaltyInEffect() || (amount >= maxBuyAmount - .9 ether && blockForPenaltyEnd + 8 >= block.number)) && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && !_isExcludedFromFees[to] && buyTotalFees > 0 ) { if (!earlyBuyPenaltyInEffect()) { // reduce by 1 wei per max buy over what Uniswap will allow to revert bots as best as possible to limit erroneously blacklisted wallets. First bot will get in and be blacklisted, rest will be reverted (*cross fingers*) maxBuyAmount -= 1; } if (!flaggedAsBot[to]) { flaggedAsBot[to] = true; botsCaught += 1; botBuyers.push(to); emit CaughtEarlyBuyer(to); } fees = (amount * 99) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForCommunity += (fees * buyCommunityFee) / buyTotalFees; } // on sell else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 100; tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForCommunity += (fees * sellCommunityFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForCommunity += (fees * buyCommunityFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function earlyBuyPenaltyInEffect() public view returns (bool) { return block.number < blockForPenaltyEnd; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(dexRouter), tokenAmount); // add the liquidity dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(newOwner), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForCommunity; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 10) { contractBalance = swapTokensAtAmount * 10; } bool success; // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForCommunity = (ethBalance * tokensForCommunity) / (totalTokensToSwap - (tokensForLiquidity / 2)); ethForLiquidity -= ethForCommunity; tokensForLiquidity = 0; tokensForCommunity = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); } (success, ) = address(communityAddress).call{ value: address(this).balance }(""); } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } // withdraw ETH if stuck or someone sends to the address function withdrawStuckETH() external onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}( "" ); } function enableTrading(uint256 blocksForPenalty) external onlyOwner { require(!tradingActive, "Cannot reenable trading"); require( blocksForPenalty <= 10, "Cannot make penalty blocks more than 10" ); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; blockForPenaltyEnd = tradingActiveBlock + blocksForPenalty; emit TradingEnabled(); } function addLP(bool confirmAddLp) external onlyOwner { require(confirmAddLp, "Please confirm adding of the LP"); require(!tradingActive, "Trading is already active, cannot relaunch."); // add the liquidity require( address(this).balance > 0, "Must have ETH on contract to launch" ); require( balanceOf(address(this)) > 0, "Must have Tokens on contract to launch" ); _approve(address(this), address(dexRouter), balanceOf(address(this))); dexRouter.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, // slippage is unavoidable 0, // slippage is unavoidable address(newOwner), block.timestamp ); } function resetTaxes() external onlyOwner { buyCommunityFee = defaultCommunityFee; buyLiquidityFee = defaultLiquidityFee; buyTotalFees = buyCommunityFee + buyLiquidityFee; sellCommunityFee = defaultCommunityFee; sellLiquidityFee = defaultLiquidityFee; sellTotalFees = sellCommunityFee + sellLiquidityFee; } function setMaxes(uint256 _buyAmount, uint256 _sellAmount, uint256 _maxWallet) external onlyOwner { maxSellAmount = _sellAmount; maxBuyAmount = _buyAmount; maxWallet = _maxWallet; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","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":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedCommunityAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmAddLp","type":"bool"}],"name":"addLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"botBuyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCommunityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocksForPenalty","type":"uint256"}],"name":"enableTrading","outputs":[],"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":"wallet","type":"address"}],"name":"flagBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"flaggedAsBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBotBuyers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","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":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmRenounce","type":"bool"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellCommunityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":"_buyAmount","type":"uint256"},{"internalType":"uint256","name":"_sellAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setMaxes","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":"tokensForCommunity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"unflagBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_communityFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_communityFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506000600a60166101000a81548160ff0219169083151502179055506001600c60006101000a81548160ff02191690831515021790555060006015556040518060400160405280601281526020017f52656420486f74204368696c69205065706500000000000000000000000000008152506040518060400160405280600481526020017f52484350000000000000000000000000000000000000000000000000000000008152508160039081620000f2919062001034565b50806004908162000104919062001034565b505050600062000119620007f860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e7919062001185565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000397919062001185565b6040518363ffffffff1660e01b8152600401620003b6929190620011c8565b6020604051808303816000875af1158015620003d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fc919062001185565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000471600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200080060201b60201c565b620004a6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200089660201b60201c565b60006d14bddab3e51a57cff87a5000000090506064600282620004ca919062001224565b620004d691906200129e565b6012819055506064600282620004ed919062001224565b620004f991906200129e565b601381905550606460028262000510919062001224565b6200051c91906200129e565b60148190555061271060058262000534919062001224565b6200054091906200129e565b6009819055506001601b819055506001601c81905550601c54601b54620005689190620012d6565b601a819055506000601d819055506000601e8190555060016010819055506001601181905550601154601054620005a09190620012d6565b600f81905550735c0df29cbea5ddb0a3a3bd4129a9d54c6d987f71600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200080060201b60201c565b620006433060016200080060201b60201c565b6200065861dead60016200080060201b60201c565b6200068d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200080060201b60201c565b620006c2600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200080060201b60201c565b620006f7600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200094960201b60201c565b6200070a3060016200094960201b60201c565b6200071f61dead60016200094960201b60201c565b62000754600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200094960201b60201c565b62000789600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200094960201b60201c565b620007bd600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168262000a9660201b60201c565b620007f0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000be660201b60201c565b505062001533565b600033905090565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200088a9291906200132e565b60405180910390a15050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008ff82826200080060201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000959620007f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e290620013bc565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a8a9190620013de565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aff906200144b565b60405180910390fd5b806002600082825462000b1c9190620012d6565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b739190620012d6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bda91906200147e565b60405180910390a35050565b62000bf6620007f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c7f90620013bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cf19062001511565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e3c57607f821691505b60208210810362000e525762000e5162000df4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ebc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e7d565b62000ec8868362000e7d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f1562000f0f62000f098462000ee0565b62000eea565b62000ee0565b9050919050565b6000819050919050565b62000f318362000ef4565b62000f4962000f408262000f1c565b84845462000e8a565b825550505050565b600090565b62000f6062000f51565b62000f6d81848462000f26565b505050565b5b8181101562000f955762000f8960008262000f56565b60018101905062000f73565b5050565b601f82111562000fe45762000fae8162000e58565b62000fb98462000e6d565b8101602085101562000fc9578190505b62000fe162000fd88562000e6d565b83018262000f72565b50505b505050565b600082821c905092915050565b6000620010096000198460080262000fe9565b1980831691505092915050565b600062001024838362000ff6565b9150826002028217905092915050565b6200103f8262000dba565b67ffffffffffffffff8111156200105b576200105a62000dc5565b5b62001067825462000e23565b6200107482828562000f99565b600060209050601f831160018114620010ac576000841562001097578287015190505b620010a3858262001016565b86555062001113565b601f198416620010bc8662000e58565b60005b82811015620010e657848901518255600182019150602085019450602081019050620010bf565b8683101562001106578489015162001102601f89168262000ff6565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200114d8262001120565b9050919050565b6200115f8162001140565b81146200116b57600080fd5b50565b6000815190506200117f8162001154565b92915050565b6000602082840312156200119e576200119d6200111b565b5b6000620011ae848285016200116e565b91505092915050565b620011c28162001140565b82525050565b6000604082019050620011df6000830185620011b7565b620011ee6020830184620011b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620012318262000ee0565b91506200123e8362000ee0565b92508282026200124e8162000ee0565b91508282048414831517620012685762001267620011f5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620012ab8262000ee0565b9150620012b88362000ee0565b925082620012cb57620012ca6200126f565b5b828204905092915050565b6000620012e38262000ee0565b9150620012f08362000ee0565b92508282019050808211156200130b576200130a620011f5565b5b92915050565b60008115159050919050565b620013288162001311565b82525050565b6000604082019050620013456000830185620011b7565b6200135460208301846200131d565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013a46020836200135b565b9150620013b1826200136c565b602082019050919050565b60006020820190508181036000830152620013d78162001395565b9050919050565b6000602082019050620013f560008301846200131d565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001433601f836200135b565b91506200144082620013fb565b602082019050919050565b60006020820190508181036000830152620014668162001424565b9050919050565b620014788162000ee0565b82525050565b60006020820190506200149560008301846200146d565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620014f96026836200135b565b915062001506826200149b565b604082019050919050565b600060208201905081810360008301526200152c81620014ea565b9050919050565b615edb80620015436000396000f3fe60806040526004361061036f5760003560e01c806388e765ff116101c6578063c876d0b9116100f7578063ee40166e11610095578063f5648a4f1161006f578063f5648a4f14610ce5578063f637434214610cfc578063f8b45b0514610d27578063fed20c7814610d5257610376565b8063ee40166e14610c66578063f11a24d314610c91578063f2fde38b14610cbc57610376565b8063d85ba063116100d1578063d85ba06314610bbc578063dd62ed3e14610be7578063e2f4560514610c24578063e7b71ce214610c4f57610376565b8063c876d0b914610b29578063d4ee1d9014610b54578063d5fb5b1714610b7f57610376565b8063b53aee9711610164578063b98755391161013e578063b987553914610a81578063bbc0c74214610aaa578063bf6146cd14610ad5578063c024666814610b0057610376565b8063b53aee97146109ee578063b62496f514610a19578063b8fad14714610a5657610376565b80639a7a23d6116101a05780639a7a23d614610920578063a457c2d714610949578063a62068ce14610986578063a9059cbb146109b157610376565b806388e765ff1461089f5780638da5cb5b146108ca57806395d89b41146108f557610376565b80634bf56d68116102a05780636ddd17131161023e5780637e926b4b116102185780637e926b4b146107e557806382aa7c681461080e5780638366e79a1461083757806386e476dd1461087457610376565b80636ddd17131461075457806370a082311461077f5780637571336a146107bc57610376565b806366d602ae1161027a57806366d602ae146106a85780636a11afc6146106d35780636a486a8e146106fe5780636b0a894c1461072957610376565b80634bf56d681461062b57806358a6d5311461065457806366ca9b831461067f57610376565b80631a8145bb1161030d578063313ce567116102e7578063313ce5671461056d5780633950935114610598578063452ed4f1146105d55780634a62bb651461060057610376565b80631a8145bb146104dc57806323b872dd14610507578063243c20f71461054457610376565b80630758d924116103495780630758d9241461040c578063095ea7b31461043757806310d5de531461047457806318160ddd146104b157610376565b8063017e01921461037b57806302dbd8f8146103b857806306fdde03146103e157610376565b3661037657005b600080fd5b34801561038757600080fd5b506103a2600480360381019061039d9190614609565b610d7b565b6040516103af9190614651565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da91906146a2565b610d9b565b005b3480156103ed57600080fd5b506103f6610e5a565b6040516104039190614772565b60405180910390f35b34801561041857600080fd5b50610421610eec565b60405161042e91906147f3565b60405180910390f35b34801561044357600080fd5b5061045e6004803603810190610459919061480e565b610f12565b60405161046b9190614651565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190614609565b610f30565b6040516104a89190614651565b60405180910390f35b3480156104bd57600080fd5b506104c6610f4f565b6040516104d3919061485d565b60405180910390f35b3480156104e857600080fd5b506104f1610f59565b6040516104fe919061485d565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190614878565b610f5f565b60405161053b9190614651565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190614609565b611057565b005b34801561057957600080fd5b506105826111d6565b60405161058f91906148e7565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba919061480e565b6111df565b6040516105cc9190614651565b60405180910390f35b3480156105e157600080fd5b506105ea61128b565b6040516105f79190614911565b60405180910390f35b34801561060c57600080fd5b506106156112b1565b6040516106229190614651565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d919061492c565b6112c4565b005b34801561066057600080fd5b50610669611375565b6040516106769190614651565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a191906146a2565b611381565b005b3480156106b457600080fd5b506106bd611440565b6040516106ca919061485d565b60405180910390f35b3480156106df57600080fd5b506106e8611446565b6040516106f59190614a3d565b60405180910390f35b34801561070a57600080fd5b506107136114d4565b604051610720919061485d565b60405180910390f35b34801561073557600080fd5b5061073e6114da565b60405161074b919061485d565b60405180910390f35b34801561076057600080fd5b506107696114e0565b6040516107769190614651565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190614609565b6114f3565b6040516107b3919061485d565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190614a8b565b61153b565b005b3480156107f157600080fd5b5061080c60048036038101906108079190614acb565b6116c3565b005b34801561081a57600080fd5b5061083560048036038101906108309190614af8565b61185c565b005b34801561084357600080fd5b5061085e60048036038101906108599190614b25565b611a07565b60405161086b9190614651565b60405180910390f35b34801561088057600080fd5b50610889611c4d565b6040516108969190614911565b60405180910390f35b3480156108ab57600080fd5b506108b4611c73565b6040516108c1919061485d565b60405180910390f35b3480156108d657600080fd5b506108df611c79565b6040516108ec9190614911565b60405180910390f35b34801561090157600080fd5b5061090a611ca3565b6040516109179190614772565b60405180910390f35b34801561092c57600080fd5b5061094760048036038101906109429190614a8b565b611d35565b005b34801561095557600080fd5b50610970600480360381019061096b919061480e565b611eb0565b60405161097d9190614651565b60405180910390f35b34801561099257600080fd5b5061099b611f9b565b6040516109a8919061485d565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d3919061480e565b611fa1565b6040516109e59190614651565b60405180910390f35b3480156109fa57600080fd5b50610a03611fbf565b604051610a10919061485d565b60405180910390f35b348015610a2557600080fd5b50610a406004803603810190610a3b9190614609565b611fc5565b604051610a4d9190614651565b60405180910390f35b348015610a6257600080fd5b50610a6b611fe5565b604051610a78919061485d565b60405180910390f35b348015610a8d57600080fd5b50610aa86004803603810190610aa39190614acb565b611feb565b005b348015610ab657600080fd5b50610abf6122af565b604051610acc9190614651565b60405180910390f35b348015610ae157600080fd5b50610aea6122c2565b604051610af7919061485d565b60405180910390f35b348015610b0c57600080fd5b50610b276004803603810190610b229190614a8b565b6122c8565b005b348015610b3557600080fd5b50610b3e612408565b604051610b4b9190614651565b60405180910390f35b348015610b6057600080fd5b50610b6961241b565b604051610b769190614911565b60405180910390f35b348015610b8b57600080fd5b50610ba66004803603810190610ba19190614af8565b612441565b604051610bb39190614911565b60405180910390f35b348015610bc857600080fd5b50610bd1612480565b604051610bde919061485d565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190614b25565b612486565b604051610c1b919061485d565b60405180910390f35b348015610c3057600080fd5b50610c3961250d565b604051610c46919061485d565b60405180910390f35b348015610c5b57600080fd5b50610c64612513565b005b348015610c7257600080fd5b50610c7b6125fc565b604051610c88919061485d565b60405180910390f35b348015610c9d57600080fd5b50610ca6612602565b604051610cb3919061485d565b60405180910390f35b348015610cc857600080fd5b50610ce36004803603810190610cde9190614609565b612608565b005b348015610cf157600080fd5b50610cfa6127ce565b005b348015610d0857600080fd5b50610d116128d6565b604051610d1e919061485d565b60405180910390f35b348015610d3357600080fd5b50610d3c6128dc565b604051610d49919061485d565b60405180910390f35b348015610d5e57600080fd5b50610d796004803603810190610d749190614609565b6128e2565b005b600d6020528060005260406000206000915054906101000a900460ff1681565b610da3612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614bb1565b60405180910390fd5b8160108190555080601181905550601154601054610e509190614c00565b600f819055505050565b606060038054610e6990614c63565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9590614c63565b8015610ee25780601f10610eb757610100808354040283529160200191610ee2565b820191906000526020600020905b815481529060010190602001808311610ec557829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f26610f1f612a60565b8484612a68565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60195481565b6000610f6c848484612c31565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fb7612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90614d06565b60405180910390fd5b61104b85611043612a60565b858403612a68565b60019150509392505050565b61105f612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590614bb1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290614d72565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b60006112816111ec612a60565b8484600160006111fa612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127c9190614c00565b612a68565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b6112cc612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135290614bb1565b60405180910390fd5b816013819055508260128190555080601481905550505050565b60006016544310905090565b611389612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90614bb1565b60405180910390fd5b81601b8190555080601c81905550601c54601b546114369190614c00565b601a819055505050565b60135481565b6060600e8054806020026020016040519081016040528092919081815260200182805480156114ca57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611480575b5050505050905090565b600f5481565b60175481565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611543612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c990614bb1565b60405180910390fd5b8061166857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90614e04565b60405180910390fd5b5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6116cb612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175190614bb1565b60405180910390fd5b8061179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190614e70565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611864612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90614bb1565b60405180910390fd5b600a60159054906101000a900460ff1615611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90614edc565b60405180910390fd5b600a811115611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90614f6e565b60405180910390fd5b6001600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff02191690831515021790555043601581905550806015546119d29190614c00565b6016819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a150565b6000611a11612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790614bb1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614fda565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b4a9190614911565b602060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b919061500f565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611bc892919061503c565b6020604051808303816000875af1158015611be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0b919061507a565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c3e92919061503c565b60405180910390a15092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611cb290614c63565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90614c63565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b611d3d612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390614bb1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390615119565b60405180910390fd5b611e668282613d03565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611ebf612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f73906151ab565b60405180910390fd5b611f90611f87612a60565b85858403612a68565b600191505092915050565b60165481565b6000611fb5611fae612a60565b8484612c31565b6001905092915050565b60105481565b60216020528060005260406000206000915054906101000a900460ff1681565b601b5481565b611ff3612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990614bb1565b60405180910390fd5b806120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990615217565b60405180910390fd5b600a60159054906101000a900460ff1615612112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612109906152a9565b60405180910390fd5b60004711612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c9061533b565b60405180910390fd5b6000612160306114f3565b116121a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612197906153cd565b60405180910390fd5b6121d530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166121d0306114f3565b612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061221e306114f3565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161226696959493929190615428565b60606040518083038185885af1158015612284573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122a99190615489565b50505050565b600a60159054906101000a900460ff1681565b60185481565b6122d0612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235690614bb1565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123fc9190614651565b60405180910390a25050565b600c60009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e818154811061245157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b61251b612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a190614bb1565b60405180910390fd5b601d54601b81905550601e54601c81905550601c54601b546125cc9190614c00565b601a81905550601d54601081905550601e546011819055506011546010546125f49190614c00565b600f81905550565b60155481565b601c5481565b612610612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269690614bb1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361270e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127059061554e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127d6612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285c90614bb1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161288b9061559f565b60006040518083038185875af1925050503d80600081146128c8576040519150601f19603f3d011682016040523d82523d6000602084013e6128cd565b606091505b50508091505050565b60115481565b60145481565b6128ea612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297090614bb1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fc90615600565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ace90615692565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3d90615724565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c24919061485d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c97906157b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690615848565b60405180910390fd5b60008111612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d49906158b4565b60405180910390fd5b600a60159054906101000a900460ff16612e4757601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e075750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3d90615920565b60405180910390fd5b5b612e4f611375565b158015612e685750600a60159054906101000a900460ff165b15612f7057600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580612ef85750612ec9611c79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612f30575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f66906159d8565b60405180910390fd5b5b600a60149054906101000a900460ff161561360357612f8d611c79565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ffb5750612fcb611c79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613035575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561308b5750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130e15750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561360257600c60009054906101000a900460ff161561331957600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131a75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613318576002436131b991906159f8565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054108015613250575060024361320e91906159f8565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b61328f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328690615a9e565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133bc5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561346357601254811115613406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fd90615b30565b60405180910390fd5b601454613412836114f3565b8261341d9190614c00565b111561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615b9c565b60405180910390fd5b613601565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135065750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561355557601354811115613550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354790615c2e565b60405180910390fd5b613600565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166135ff576014546135b2836114f3565b826135bd9190614c00565b11156135fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f590615b9c565b60405180910390fd5b5b5b5b5b5b600061360e306114f3565b9050600060095482101590508080156136335750600a60169054906101000a900460ff165b801561364c5750600860149054906101000a900460ff16155b80156136a15750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136e5576001600860146101000a81548160ff0219169083151502179055506136c9613dae565b6000600860146101000a81548160ff0219169083151502179055505b600060019050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061378c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561379657600090505b60008115613cef576137a6611375565b806137e05750670c7d713b49da00006012546137c291906159f8565b85101580156137df57504360086016546137dc9190614c00565b10155b5b80156138355750602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561388b5750602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e15750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138ef57506000601a54115b15613aff576138fc611375565b61391b5760016012600082825461391391906159f8565b925050819055505b600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a79576001600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008282546139d79190614c00565b92505081905550600e869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a86604051613a709190614911565b60405180910390a15b6064606386613a889190615c4e565b613a929190615cbf565b9050601a54601c5482613aa59190615c4e565b613aaf9190615cbf565b60196000828254613ac09190614c00565b92505081905550601a54601b5482613ad89190615c4e565b613ae29190615cbf565b60186000828254613af39190614c00565b92505081905550613ccb565b602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b5a57506000600f54115b15613be6576064600f5486613b6f9190615c4e565b613b799190615cbf565b9050600f5460115482613b8c9190615c4e565b613b969190615cbf565b60196000828254613ba79190614c00565b92505081905550600f5460105482613bbf9190615c4e565b613bc99190615cbf565b60186000828254613bda9190614c00565b92505081905550613cca565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c4157506000601a54115b15613cc9576064601a5486613c569190615c4e565b613c609190615cbf565b9050601a54601c5482613c739190615c4e565b613c7d9190615cbf565b60196000828254613c8e9190614c00565b92505081905550601a54601b5482613ca69190615c4e565b613cb09190615cbf565b60186000828254613cc19190614c00565b925050819055505b5b5b6000811115613ce057613cdf873083613f66565b5b8085613cec91906159f8565b94505b613cfa878787613f66565b50505050505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613d6482826141cf565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613db9306114f3565b90506000601854601954613dcd9190614c00565b90506000821480613dde5750600081145b15613dea575050613f64565b600a600954613df99190615c4e565b821115613e1257600a600954613e0f9190615c4e565b91505b60008060028360195486613e269190615c4e565b613e309190615cbf565b613e3a9190615cbf565b9050613e508185613e4b91906159f8565b614263565b6000479050600081905060006002601954613e6b9190615cbf565b86613e7691906159f8565b60185484613e849190615c4e565b613e8e9190615cbf565b90508082613e9c91906159f8565b915060006019819055506000601881905550600084118015613ebe5750600082115b15613ece57613ecd84836144a6565b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f149061559f565b60006040518083038185875af1925050503d8060008114613f51576040519150601f19603f3d011682016040523d82523d6000602084013e613f56565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fcc906157b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161403b90615848565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140c190615d62565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461415d9190614c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141c1919061485d565b60405180910390a350505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614257929190615d82565b60405180910390a15050565b6000600267ffffffffffffffff8111156142805761427f615dab565b5b6040519080825280602002602001820160405280156142ae5781602001602082028036833780820191505090505b50905030816000815181106142c6576142c5615dda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561436d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143919190615e1e565b816001815181106143a5576143a4615dda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061440c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614470959493929190615e4b565b600060405180830381600087803b15801561448a57600080fd5b505af115801561449e573d6000803e3d6000fd5b505050505050565b6144d330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161455c96959493929190615428565b60606040518083038185885af115801561457a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061459f9190615489565b5050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145d6826145ab565b9050919050565b6145e6816145cb565b81146145f157600080fd5b50565b600081359050614603816145dd565b92915050565b60006020828403121561461f5761461e6145a6565b5b600061462d848285016145f4565b91505092915050565b60008115159050919050565b61464b81614636565b82525050565b60006020820190506146666000830184614642565b92915050565b6000819050919050565b61467f8161466c565b811461468a57600080fd5b50565b60008135905061469c81614676565b92915050565b600080604083850312156146b9576146b86145a6565b5b60006146c78582860161468d565b92505060206146d88582860161468d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561471c578082015181840152602081019050614701565b60008484015250505050565b6000601f19601f8301169050919050565b6000614744826146e2565b61474e81856146ed565b935061475e8185602086016146fe565b61476781614728565b840191505092915050565b6000602082019050818103600083015261478c8184614739565b905092915050565b6000819050919050565b60006147b96147b46147af846145ab565b614794565b6145ab565b9050919050565b60006147cb8261479e565b9050919050565b60006147dd826147c0565b9050919050565b6147ed816147d2565b82525050565b600060208201905061480860008301846147e4565b92915050565b60008060408385031215614825576148246145a6565b5b6000614833858286016145f4565b92505060206148448582860161468d565b9150509250929050565b6148578161466c565b82525050565b6000602082019050614872600083018461484e565b92915050565b600080600060608486031215614891576148906145a6565b5b600061489f868287016145f4565b93505060206148b0868287016145f4565b92505060406148c18682870161468d565b9150509250925092565b600060ff82169050919050565b6148e1816148cb565b82525050565b60006020820190506148fc60008301846148d8565b92915050565b61490b816145cb565b82525050565b60006020820190506149266000830184614902565b92915050565b600080600060608486031215614945576149446145a6565b5b60006149538682870161468d565b93505060206149648682870161468d565b92505060406149758682870161468d565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6149b4816145cb565b82525050565b60006149c683836149ab565b60208301905092915050565b6000602082019050919050565b60006149ea8261497f565b6149f4818561498a565b93506149ff8361499b565b8060005b83811015614a30578151614a1788826149ba565b9750614a22836149d2565b925050600181019050614a03565b5085935050505092915050565b60006020820190508181036000830152614a5781846149df565b905092915050565b614a6881614636565b8114614a7357600080fd5b50565b600081359050614a8581614a5f565b92915050565b60008060408385031215614aa257614aa16145a6565b5b6000614ab0858286016145f4565b9250506020614ac185828601614a76565b9150509250929050565b600060208284031215614ae157614ae06145a6565b5b6000614aef84828501614a76565b91505092915050565b600060208284031215614b0e57614b0d6145a6565b5b6000614b1c8482850161468d565b91505092915050565b60008060408385031215614b3c57614b3b6145a6565b5b6000614b4a858286016145f4565b9250506020614b5b858286016145f4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b9b6020836146ed565b9150614ba682614b65565b602082019050919050565b60006020820190508181036000830152614bca81614b8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c0b8261466c565b9150614c168361466c565b9250828201905080821115614c2e57614c2d614bd1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c7b57607f821691505b602082108103614c8e57614c8d614c34565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614cf06028836146ed565b9150614cfb82614c94565b604082019050919050565b60006020820190508181036000830152614d1f81614ce3565b9050919050565b7f57616c6c657420697320616c726561647920666c61676765642e000000000000600082015250565b6000614d5c601a836146ed565b9150614d6782614d26565b602082019050919050565b60006020820190508181036000830152614d8b81614d4f565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614dee6027836146ed565b9150614df982614d92565b604082019050919050565b60006020820190508181036000830152614e1d81614de1565b9050919050565b7f506c6561736520636f6e6669726d2072656e6f756e6365210000000000000000600082015250565b6000614e5a6018836146ed565b9150614e6582614e24565b602082019050919050565b60006020820190508181036000830152614e8981614e4d565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614ec66017836146ed565b9150614ed182614e90565b602082019050919050565b60006020820190508181036000830152614ef581614eb9565b9050919050565b7f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060008201527f7468616e20313000000000000000000000000000000000000000000000000000602082015250565b6000614f586027836146ed565b9150614f6382614efc565b604082019050919050565b60006020820190508181036000830152614f8781614f4b565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614fc4601a836146ed565b9150614fcf82614f8e565b602082019050919050565b60006020820190508181036000830152614ff381614fb7565b9050919050565b60008151905061500981614676565b92915050565b600060208284031215615025576150246145a6565b5b600061503384828501614ffa565b91505092915050565b60006040820190506150516000830185614902565b61505e602083018461484e565b9392505050565b60008151905061507481614a5f565b92915050565b6000602082840312156150905761508f6145a6565b5b600061509e84828501615065565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151036039836146ed565b915061510e826150a7565b604082019050919050565b60006020820190508181036000830152615132816150f6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006151956025836146ed565b91506151a082615139565b604082019050919050565b600060208201905081810360008301526151c481615188565b9050919050565b7f506c6561736520636f6e6669726d20616464696e67206f6620746865204c5000600082015250565b6000615201601f836146ed565b915061520c826151cb565b602082019050919050565b60006020820190508181036000830152615230816151f4565b9050919050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742072656c61756e63682e000000000000000000000000000000000000000000602082015250565b6000615293602b836146ed565b915061529e82615237565b604082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f4d757374206861766520455448206f6e20636f6e747261637420746f206c617560008201527f6e63680000000000000000000000000000000000000000000000000000000000602082015250565b60006153256023836146ed565b9150615330826152c9565b604082019050919050565b6000602082019050818103600083015261535481615318565b9050919050565b7f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f2060008201527f6c61756e63680000000000000000000000000000000000000000000000000000602082015250565b60006153b76026836146ed565b91506153c28261535b565b604082019050919050565b600060208201905081810360008301526153e6816153aa565b9050919050565b6000819050919050565b600061541261540d615408846153ed565b614794565b61466c565b9050919050565b615422816153f7565b82525050565b600060c08201905061543d6000830189614902565b61544a602083018861484e565b6154576040830187615419565b6154646060830186615419565b6154716080830185614902565b61547e60a083018461484e565b979650505050505050565b6000806000606084860312156154a2576154a16145a6565b5b60006154b086828701614ffa565b93505060206154c186828701614ffa565b92505060406154d286828701614ffa565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006155386026836146ed565b9150615543826154dc565b604082019050919050565b600060208201905081810360008301526155678161552b565b9050919050565b600081905092915050565b50565b600061558960008361556e565b915061559482615579565b600082019050919050565b60006155aa8261557c565b9150819050919050565b7f57616c6c657420697320616c7265616479206e6f7420666c61676765642e0000600082015250565b60006155ea601e836146ed565b91506155f5826155b4565b602082019050919050565b60006020820190508181036000830152615619816155dd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061567c6024836146ed565b915061568782615620565b604082019050919050565b600060208201905081810360008301526156ab8161566f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061570e6022836146ed565b9150615719826156b2565b604082019050919050565b6000602082019050818103600083015261573d81615701565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157a06025836146ed565b91506157ab82615744565b604082019050919050565b600060208201905081810360008301526157cf81615793565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006158326023836146ed565b915061583d826157d6565b604082019050919050565b6000602082019050818103600083015261586181615825565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061589e601d836146ed565b91506158a982615868565b602082019050919050565b600060208201905081810360008301526158cd81615891565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061590a6016836146ed565b9150615915826158d4565b602082019050919050565b60006020820190508181036000830152615939816158fd565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b60006159c26046836146ed565b91506159cd82615940565b606082019050919050565b600060208201905081810360008301526159f1816159b5565b9050919050565b6000615a038261466c565b9150615a0e8361466c565b9250828203905081811115615a2657615a25614bd1565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b6000615a886035836146ed565b9150615a9382615a2c565b604082019050919050565b60006020820190508181036000830152615ab781615a7b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615b1a6028836146ed565b9150615b2582615abe565b604082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b7f4d61782057616c6c657420457863656564656400000000000000000000000000600082015250565b6000615b866013836146ed565b9150615b9182615b50565b602082019050919050565b60006020820190508181036000830152615bb581615b79565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615c18602a836146ed565b9150615c2382615bbc565b604082019050919050565b60006020820190508181036000830152615c4781615c0b565b9050919050565b6000615c598261466c565b9150615c648361466c565b9250828202615c728161466c565b91508282048414831517615c8957615c88614bd1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615cca8261466c565b9150615cd58361466c565b925082615ce557615ce4615c90565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d4c6026836146ed565b9150615d5782615cf0565b604082019050919050565b60006020820190508181036000830152615d7b81615d3f565b9050919050565b6000604082019050615d976000830185614902565b615da46020830184614642565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615e18816145dd565b92915050565b600060208284031215615e3457615e336145a6565b5b6000615e4284828501615e09565b91505092915050565b600060a082019050615e60600083018861484e565b615e6d6020830187615419565b8181036040830152615e7f81866149df565b9050615e8e6060830185614902565b615e9b608083018461484e565b969550505050505056fea264697066735822122052e0d7e602ece8607297a2da96f0441008da248c95ab06966b7efa6b18e8c13e64736f6c63430008110033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806388e765ff116101c6578063c876d0b9116100f7578063ee40166e11610095578063f5648a4f1161006f578063f5648a4f14610ce5578063f637434214610cfc578063f8b45b0514610d27578063fed20c7814610d5257610376565b8063ee40166e14610c66578063f11a24d314610c91578063f2fde38b14610cbc57610376565b8063d85ba063116100d1578063d85ba06314610bbc578063dd62ed3e14610be7578063e2f4560514610c24578063e7b71ce214610c4f57610376565b8063c876d0b914610b29578063d4ee1d9014610b54578063d5fb5b1714610b7f57610376565b8063b53aee9711610164578063b98755391161013e578063b987553914610a81578063bbc0c74214610aaa578063bf6146cd14610ad5578063c024666814610b0057610376565b8063b53aee97146109ee578063b62496f514610a19578063b8fad14714610a5657610376565b80639a7a23d6116101a05780639a7a23d614610920578063a457c2d714610949578063a62068ce14610986578063a9059cbb146109b157610376565b806388e765ff1461089f5780638da5cb5b146108ca57806395d89b41146108f557610376565b80634bf56d68116102a05780636ddd17131161023e5780637e926b4b116102185780637e926b4b146107e557806382aa7c681461080e5780638366e79a1461083757806386e476dd1461087457610376565b80636ddd17131461075457806370a082311461077f5780637571336a146107bc57610376565b806366d602ae1161027a57806366d602ae146106a85780636a11afc6146106d35780636a486a8e146106fe5780636b0a894c1461072957610376565b80634bf56d681461062b57806358a6d5311461065457806366ca9b831461067f57610376565b80631a8145bb1161030d578063313ce567116102e7578063313ce5671461056d5780633950935114610598578063452ed4f1146105d55780634a62bb651461060057610376565b80631a8145bb146104dc57806323b872dd14610507578063243c20f71461054457610376565b80630758d924116103495780630758d9241461040c578063095ea7b31461043757806310d5de531461047457806318160ddd146104b157610376565b8063017e01921461037b57806302dbd8f8146103b857806306fdde03146103e157610376565b3661037657005b600080fd5b34801561038757600080fd5b506103a2600480360381019061039d9190614609565b610d7b565b6040516103af9190614651565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da91906146a2565b610d9b565b005b3480156103ed57600080fd5b506103f6610e5a565b6040516104039190614772565b60405180910390f35b34801561041857600080fd5b50610421610eec565b60405161042e91906147f3565b60405180910390f35b34801561044357600080fd5b5061045e6004803603810190610459919061480e565b610f12565b60405161046b9190614651565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190614609565b610f30565b6040516104a89190614651565b60405180910390f35b3480156104bd57600080fd5b506104c6610f4f565b6040516104d3919061485d565b60405180910390f35b3480156104e857600080fd5b506104f1610f59565b6040516104fe919061485d565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190614878565b610f5f565b60405161053b9190614651565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190614609565b611057565b005b34801561057957600080fd5b506105826111d6565b60405161058f91906148e7565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba919061480e565b6111df565b6040516105cc9190614651565b60405180910390f35b3480156105e157600080fd5b506105ea61128b565b6040516105f79190614911565b60405180910390f35b34801561060c57600080fd5b506106156112b1565b6040516106229190614651565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d919061492c565b6112c4565b005b34801561066057600080fd5b50610669611375565b6040516106769190614651565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a191906146a2565b611381565b005b3480156106b457600080fd5b506106bd611440565b6040516106ca919061485d565b60405180910390f35b3480156106df57600080fd5b506106e8611446565b6040516106f59190614a3d565b60405180910390f35b34801561070a57600080fd5b506107136114d4565b604051610720919061485d565b60405180910390f35b34801561073557600080fd5b5061073e6114da565b60405161074b919061485d565b60405180910390f35b34801561076057600080fd5b506107696114e0565b6040516107769190614651565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190614609565b6114f3565b6040516107b3919061485d565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190614a8b565b61153b565b005b3480156107f157600080fd5b5061080c60048036038101906108079190614acb565b6116c3565b005b34801561081a57600080fd5b5061083560048036038101906108309190614af8565b61185c565b005b34801561084357600080fd5b5061085e60048036038101906108599190614b25565b611a07565b60405161086b9190614651565b60405180910390f35b34801561088057600080fd5b50610889611c4d565b6040516108969190614911565b60405180910390f35b3480156108ab57600080fd5b506108b4611c73565b6040516108c1919061485d565b60405180910390f35b3480156108d657600080fd5b506108df611c79565b6040516108ec9190614911565b60405180910390f35b34801561090157600080fd5b5061090a611ca3565b6040516109179190614772565b60405180910390f35b34801561092c57600080fd5b5061094760048036038101906109429190614a8b565b611d35565b005b34801561095557600080fd5b50610970600480360381019061096b919061480e565b611eb0565b60405161097d9190614651565b60405180910390f35b34801561099257600080fd5b5061099b611f9b565b6040516109a8919061485d565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d3919061480e565b611fa1565b6040516109e59190614651565b60405180910390f35b3480156109fa57600080fd5b50610a03611fbf565b604051610a10919061485d565b60405180910390f35b348015610a2557600080fd5b50610a406004803603810190610a3b9190614609565b611fc5565b604051610a4d9190614651565b60405180910390f35b348015610a6257600080fd5b50610a6b611fe5565b604051610a78919061485d565b60405180910390f35b348015610a8d57600080fd5b50610aa86004803603810190610aa39190614acb565b611feb565b005b348015610ab657600080fd5b50610abf6122af565b604051610acc9190614651565b60405180910390f35b348015610ae157600080fd5b50610aea6122c2565b604051610af7919061485d565b60405180910390f35b348015610b0c57600080fd5b50610b276004803603810190610b229190614a8b565b6122c8565b005b348015610b3557600080fd5b50610b3e612408565b604051610b4b9190614651565b60405180910390f35b348015610b6057600080fd5b50610b6961241b565b604051610b769190614911565b60405180910390f35b348015610b8b57600080fd5b50610ba66004803603810190610ba19190614af8565b612441565b604051610bb39190614911565b60405180910390f35b348015610bc857600080fd5b50610bd1612480565b604051610bde919061485d565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190614b25565b612486565b604051610c1b919061485d565b60405180910390f35b348015610c3057600080fd5b50610c3961250d565b604051610c46919061485d565b60405180910390f35b348015610c5b57600080fd5b50610c64612513565b005b348015610c7257600080fd5b50610c7b6125fc565b604051610c88919061485d565b60405180910390f35b348015610c9d57600080fd5b50610ca6612602565b604051610cb3919061485d565b60405180910390f35b348015610cc857600080fd5b50610ce36004803603810190610cde9190614609565b612608565b005b348015610cf157600080fd5b50610cfa6127ce565b005b348015610d0857600080fd5b50610d116128d6565b604051610d1e919061485d565b60405180910390f35b348015610d3357600080fd5b50610d3c6128dc565b604051610d49919061485d565b60405180910390f35b348015610d5e57600080fd5b50610d796004803603810190610d749190614609565b6128e2565b005b600d6020528060005260406000206000915054906101000a900460ff1681565b610da3612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614bb1565b60405180910390fd5b8160108190555080601181905550601154601054610e509190614c00565b600f819055505050565b606060038054610e6990614c63565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9590614c63565b8015610ee25780601f10610eb757610100808354040283529160200191610ee2565b820191906000526020600020905b815481529060010190602001808311610ec557829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f26610f1f612a60565b8484612a68565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60195481565b6000610f6c848484612c31565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fb7612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90614d06565b60405180910390fd5b61104b85611043612a60565b858403612a68565b60019150509392505050565b61105f612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590614bb1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290614d72565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b60006112816111ec612a60565b8484600160006111fa612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127c9190614c00565b612a68565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b6112cc612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135290614bb1565b60405180910390fd5b816013819055508260128190555080601481905550505050565b60006016544310905090565b611389612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90614bb1565b60405180910390fd5b81601b8190555080601c81905550601c54601b546114369190614c00565b601a819055505050565b60135481565b6060600e8054806020026020016040519081016040528092919081815260200182805480156114ca57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611480575b5050505050905090565b600f5481565b60175481565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611543612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c990614bb1565b60405180910390fd5b8061166857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90614e04565b60405180910390fd5b5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6116cb612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175190614bb1565b60405180910390fd5b8061179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190614e70565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611864612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90614bb1565b60405180910390fd5b600a60159054906101000a900460ff1615611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90614edc565b60405180910390fd5b600a811115611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90614f6e565b60405180910390fd5b6001600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff02191690831515021790555043601581905550806015546119d29190614c00565b6016819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a150565b6000611a11612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790614bb1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614fda565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b4a9190614911565b602060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b919061500f565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611bc892919061503c565b6020604051808303816000875af1158015611be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0b919061507a565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c3e92919061503c565b60405180910390a15092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611cb290614c63565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90614c63565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b611d3d612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390614bb1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390615119565b60405180910390fd5b611e668282613d03565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611ebf612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f73906151ab565b60405180910390fd5b611f90611f87612a60565b85858403612a68565b600191505092915050565b60165481565b6000611fb5611fae612a60565b8484612c31565b6001905092915050565b60105481565b60216020528060005260406000206000915054906101000a900460ff1681565b601b5481565b611ff3612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990614bb1565b60405180910390fd5b806120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990615217565b60405180910390fd5b600a60159054906101000a900460ff1615612112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612109906152a9565b60405180910390fd5b60004711612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c9061533b565b60405180910390fd5b6000612160306114f3565b116121a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612197906153cd565b60405180910390fd5b6121d530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166121d0306114f3565b612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061221e306114f3565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161226696959493929190615428565b60606040518083038185885af1158015612284573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122a99190615489565b50505050565b600a60159054906101000a900460ff1681565b60185481565b6122d0612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235690614bb1565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123fc9190614651565b60405180910390a25050565b600c60009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e818154811061245157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b61251b612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a190614bb1565b60405180910390fd5b601d54601b81905550601e54601c81905550601c54601b546125cc9190614c00565b601a81905550601d54601081905550601e546011819055506011546010546125f49190614c00565b600f81905550565b60155481565b601c5481565b612610612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269690614bb1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361270e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127059061554e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127d6612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285c90614bb1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161288b9061559f565b60006040518083038185875af1925050503d80600081146128c8576040519150601f19603f3d011682016040523d82523d6000602084013e6128cd565b606091505b50508091505050565b60115481565b60145481565b6128ea612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297090614bb1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fc90615600565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ace90615692565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3d90615724565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c24919061485d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c97906157b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690615848565b60405180910390fd5b60008111612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d49906158b4565b60405180910390fd5b600a60159054906101000a900460ff16612e4757601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e075750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3d90615920565b60405180910390fd5b5b612e4f611375565b158015612e685750600a60159054906101000a900460ff165b15612f7057600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580612ef85750612ec9611c79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612f30575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f66906159d8565b60405180910390fd5b5b600a60149054906101000a900460ff161561360357612f8d611c79565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ffb5750612fcb611c79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613035575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561308b5750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130e15750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561360257600c60009054906101000a900460ff161561331957600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131a75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613318576002436131b991906159f8565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054108015613250575060024361320e91906159f8565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b61328f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328690615a9e565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133bc5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561346357601254811115613406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fd90615b30565b60405180910390fd5b601454613412836114f3565b8261341d9190614c00565b111561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615b9c565b60405180910390fd5b613601565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135065750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561355557601354811115613550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354790615c2e565b60405180910390fd5b613600565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166135ff576014546135b2836114f3565b826135bd9190614c00565b11156135fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f590615b9c565b60405180910390fd5b5b5b5b5b5b600061360e306114f3565b9050600060095482101590508080156136335750600a60169054906101000a900460ff165b801561364c5750600860149054906101000a900460ff16155b80156136a15750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136e5576001600860146101000a81548160ff0219169083151502179055506136c9613dae565b6000600860146101000a81548160ff0219169083151502179055505b600060019050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061378c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561379657600090505b60008115613cef576137a6611375565b806137e05750670c7d713b49da00006012546137c291906159f8565b85101580156137df57504360086016546137dc9190614c00565b10155b5b80156138355750602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561388b5750602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e15750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138ef57506000601a54115b15613aff576138fc611375565b61391b5760016012600082825461391391906159f8565b925050819055505b600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a79576001600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008282546139d79190614c00565b92505081905550600e869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a86604051613a709190614911565b60405180910390a15b6064606386613a889190615c4e565b613a929190615cbf565b9050601a54601c5482613aa59190615c4e565b613aaf9190615cbf565b60196000828254613ac09190614c00565b92505081905550601a54601b5482613ad89190615c4e565b613ae29190615cbf565b60186000828254613af39190614c00565b92505081905550613ccb565b602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b5a57506000600f54115b15613be6576064600f5486613b6f9190615c4e565b613b799190615cbf565b9050600f5460115482613b8c9190615c4e565b613b969190615cbf565b60196000828254613ba79190614c00565b92505081905550600f5460105482613bbf9190615c4e565b613bc99190615cbf565b60186000828254613bda9190614c00565b92505081905550613cca565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c4157506000601a54115b15613cc9576064601a5486613c569190615c4e565b613c609190615cbf565b9050601a54601c5482613c739190615c4e565b613c7d9190615cbf565b60196000828254613c8e9190614c00565b92505081905550601a54601b5482613ca69190615c4e565b613cb09190615cbf565b60186000828254613cc19190614c00565b925050819055505b5b5b6000811115613ce057613cdf873083613f66565b5b8085613cec91906159f8565b94505b613cfa878787613f66565b50505050505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613d6482826141cf565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613db9306114f3565b90506000601854601954613dcd9190614c00565b90506000821480613dde5750600081145b15613dea575050613f64565b600a600954613df99190615c4e565b821115613e1257600a600954613e0f9190615c4e565b91505b60008060028360195486613e269190615c4e565b613e309190615cbf565b613e3a9190615cbf565b9050613e508185613e4b91906159f8565b614263565b6000479050600081905060006002601954613e6b9190615cbf565b86613e7691906159f8565b60185484613e849190615c4e565b613e8e9190615cbf565b90508082613e9c91906159f8565b915060006019819055506000601881905550600084118015613ebe5750600082115b15613ece57613ecd84836144a6565b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f149061559f565b60006040518083038185875af1925050503d8060008114613f51576040519150601f19603f3d011682016040523d82523d6000602084013e613f56565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fcc906157b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161403b90615848565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140c190615d62565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461415d9190614c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141c1919061485d565b60405180910390a350505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614257929190615d82565b60405180910390a15050565b6000600267ffffffffffffffff8111156142805761427f615dab565b5b6040519080825280602002602001820160405280156142ae5781602001602082028036833780820191505090505b50905030816000815181106142c6576142c5615dda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561436d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143919190615e1e565b816001815181106143a5576143a4615dda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061440c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614470959493929190615e4b565b600060405180830381600087803b15801561448a57600080fd5b505af115801561449e573d6000803e3d6000fd5b505050505050565b6144d330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161455c96959493929190615428565b60606040518083038185885af115801561457a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061459f9190615489565b5050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145d6826145ab565b9050919050565b6145e6816145cb565b81146145f157600080fd5b50565b600081359050614603816145dd565b92915050565b60006020828403121561461f5761461e6145a6565b5b600061462d848285016145f4565b91505092915050565b60008115159050919050565b61464b81614636565b82525050565b60006020820190506146666000830184614642565b92915050565b6000819050919050565b61467f8161466c565b811461468a57600080fd5b50565b60008135905061469c81614676565b92915050565b600080604083850312156146b9576146b86145a6565b5b60006146c78582860161468d565b92505060206146d88582860161468d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561471c578082015181840152602081019050614701565b60008484015250505050565b6000601f19601f8301169050919050565b6000614744826146e2565b61474e81856146ed565b935061475e8185602086016146fe565b61476781614728565b840191505092915050565b6000602082019050818103600083015261478c8184614739565b905092915050565b6000819050919050565b60006147b96147b46147af846145ab565b614794565b6145ab565b9050919050565b60006147cb8261479e565b9050919050565b60006147dd826147c0565b9050919050565b6147ed816147d2565b82525050565b600060208201905061480860008301846147e4565b92915050565b60008060408385031215614825576148246145a6565b5b6000614833858286016145f4565b92505060206148448582860161468d565b9150509250929050565b6148578161466c565b82525050565b6000602082019050614872600083018461484e565b92915050565b600080600060608486031215614891576148906145a6565b5b600061489f868287016145f4565b93505060206148b0868287016145f4565b92505060406148c18682870161468d565b9150509250925092565b600060ff82169050919050565b6148e1816148cb565b82525050565b60006020820190506148fc60008301846148d8565b92915050565b61490b816145cb565b82525050565b60006020820190506149266000830184614902565b92915050565b600080600060608486031215614945576149446145a6565b5b60006149538682870161468d565b93505060206149648682870161468d565b92505060406149758682870161468d565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6149b4816145cb565b82525050565b60006149c683836149ab565b60208301905092915050565b6000602082019050919050565b60006149ea8261497f565b6149f4818561498a565b93506149ff8361499b565b8060005b83811015614a30578151614a1788826149ba565b9750614a22836149d2565b925050600181019050614a03565b5085935050505092915050565b60006020820190508181036000830152614a5781846149df565b905092915050565b614a6881614636565b8114614a7357600080fd5b50565b600081359050614a8581614a5f565b92915050565b60008060408385031215614aa257614aa16145a6565b5b6000614ab0858286016145f4565b9250506020614ac185828601614a76565b9150509250929050565b600060208284031215614ae157614ae06145a6565b5b6000614aef84828501614a76565b91505092915050565b600060208284031215614b0e57614b0d6145a6565b5b6000614b1c8482850161468d565b91505092915050565b60008060408385031215614b3c57614b3b6145a6565b5b6000614b4a858286016145f4565b9250506020614b5b858286016145f4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b9b6020836146ed565b9150614ba682614b65565b602082019050919050565b60006020820190508181036000830152614bca81614b8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c0b8261466c565b9150614c168361466c565b9250828201905080821115614c2e57614c2d614bd1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c7b57607f821691505b602082108103614c8e57614c8d614c34565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614cf06028836146ed565b9150614cfb82614c94565b604082019050919050565b60006020820190508181036000830152614d1f81614ce3565b9050919050565b7f57616c6c657420697320616c726561647920666c61676765642e000000000000600082015250565b6000614d5c601a836146ed565b9150614d6782614d26565b602082019050919050565b60006020820190508181036000830152614d8b81614d4f565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614dee6027836146ed565b9150614df982614d92565b604082019050919050565b60006020820190508181036000830152614e1d81614de1565b9050919050565b7f506c6561736520636f6e6669726d2072656e6f756e6365210000000000000000600082015250565b6000614e5a6018836146ed565b9150614e6582614e24565b602082019050919050565b60006020820190508181036000830152614e8981614e4d565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614ec66017836146ed565b9150614ed182614e90565b602082019050919050565b60006020820190508181036000830152614ef581614eb9565b9050919050565b7f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060008201527f7468616e20313000000000000000000000000000000000000000000000000000602082015250565b6000614f586027836146ed565b9150614f6382614efc565b604082019050919050565b60006020820190508181036000830152614f8781614f4b565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614fc4601a836146ed565b9150614fcf82614f8e565b602082019050919050565b60006020820190508181036000830152614ff381614fb7565b9050919050565b60008151905061500981614676565b92915050565b600060208284031215615025576150246145a6565b5b600061503384828501614ffa565b91505092915050565b60006040820190506150516000830185614902565b61505e602083018461484e565b9392505050565b60008151905061507481614a5f565b92915050565b6000602082840312156150905761508f6145a6565b5b600061509e84828501615065565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151036039836146ed565b915061510e826150a7565b604082019050919050565b60006020820190508181036000830152615132816150f6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006151956025836146ed565b91506151a082615139565b604082019050919050565b600060208201905081810360008301526151c481615188565b9050919050565b7f506c6561736520636f6e6669726d20616464696e67206f6620746865204c5000600082015250565b6000615201601f836146ed565b915061520c826151cb565b602082019050919050565b60006020820190508181036000830152615230816151f4565b9050919050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742072656c61756e63682e000000000000000000000000000000000000000000602082015250565b6000615293602b836146ed565b915061529e82615237565b604082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f4d757374206861766520455448206f6e20636f6e747261637420746f206c617560008201527f6e63680000000000000000000000000000000000000000000000000000000000602082015250565b60006153256023836146ed565b9150615330826152c9565b604082019050919050565b6000602082019050818103600083015261535481615318565b9050919050565b7f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f2060008201527f6c61756e63680000000000000000000000000000000000000000000000000000602082015250565b60006153b76026836146ed565b91506153c28261535b565b604082019050919050565b600060208201905081810360008301526153e6816153aa565b9050919050565b6000819050919050565b600061541261540d615408846153ed565b614794565b61466c565b9050919050565b615422816153f7565b82525050565b600060c08201905061543d6000830189614902565b61544a602083018861484e565b6154576040830187615419565b6154646060830186615419565b6154716080830185614902565b61547e60a083018461484e565b979650505050505050565b6000806000606084860312156154a2576154a16145a6565b5b60006154b086828701614ffa565b93505060206154c186828701614ffa565b92505060406154d286828701614ffa565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006155386026836146ed565b9150615543826154dc565b604082019050919050565b600060208201905081810360008301526155678161552b565b9050919050565b600081905092915050565b50565b600061558960008361556e565b915061559482615579565b600082019050919050565b60006155aa8261557c565b9150819050919050565b7f57616c6c657420697320616c7265616479206e6f7420666c61676765642e0000600082015250565b60006155ea601e836146ed565b91506155f5826155b4565b602082019050919050565b60006020820190508181036000830152615619816155dd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061567c6024836146ed565b915061568782615620565b604082019050919050565b600060208201905081810360008301526156ab8161566f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061570e6022836146ed565b9150615719826156b2565b604082019050919050565b6000602082019050818103600083015261573d81615701565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157a06025836146ed565b91506157ab82615744565b604082019050919050565b600060208201905081810360008301526157cf81615793565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006158326023836146ed565b915061583d826157d6565b604082019050919050565b6000602082019050818103600083015261586181615825565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061589e601d836146ed565b91506158a982615868565b602082019050919050565b600060208201905081810360008301526158cd81615891565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061590a6016836146ed565b9150615915826158d4565b602082019050919050565b60006020820190508181036000830152615939816158fd565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b60006159c26046836146ed565b91506159cd82615940565b606082019050919050565b600060208201905081810360008301526159f1816159b5565b9050919050565b6000615a038261466c565b9150615a0e8361466c565b9250828203905081811115615a2657615a25614bd1565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b6000615a886035836146ed565b9150615a9382615a2c565b604082019050919050565b60006020820190508181036000830152615ab781615a7b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615b1a6028836146ed565b9150615b2582615abe565b604082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b7f4d61782057616c6c657420457863656564656400000000000000000000000000600082015250565b6000615b866013836146ed565b9150615b9182615b50565b602082019050919050565b60006020820190508181036000830152615bb581615b79565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615c18602a836146ed565b9150615c2382615bbc565b604082019050919050565b60006020820190508181036000830152615c4781615c0b565b9050919050565b6000615c598261466c565b9150615c648361466c565b9250828202615c728161466c565b91508282048414831517615c8957615c88614bd1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615cca8261466c565b9150615cd58361466c565b925082615ce557615ce4615c90565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d4c6026836146ed565b9150615d5782615cf0565b604082019050919050565b60006020820190508181036000830152615d7b81615d3f565b9050919050565b6000604082019050615d976000830185614902565b615da46020830184614642565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615e18816145dd565b92915050565b600060208284031215615e3457615e336145a6565b5b6000615e4284828501615e09565b91505092915050565b600060a082019050615e60600083018861484e565b615e6d6020830187615419565b8181036040830152615e7f81866149df565b9050615e8e6060830185614902565b615e9b608083018461484e565b969550505050505056fea264697066735822122052e0d7e602ece8607297a2da96f0441008da248c95ab06966b7efa6b18e8c13e64736f6c63430008110033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.