Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 DS
Holders
118
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
479,521.075466916 DSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DexSniffer
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** Website: https://www.dexsniffer.io/ Twitter: https://twitter.com/Dex_Sniffer Telegram: https://t.me/Dex_Sniffer */ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } contract DexSniffer is IERC20Metadata, Ownable { mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isExcludedFromFee; mapping(address => bool) public isExcludedFromMaxWalletToken; address payable public marketingWallet; address payable public devWallet; address payable public constant burnWallet = payable(0x000000000000000000000000000000000000dEaD); uint8 private constant _decimals = 9; uint256 private _tTotal = 10**9 * 10**_decimals; string private constant _name = "Dex Sniffer"; string private constant _symbol = "DS"; uint256 public swapMinTokens = _tTotal / 500; uint256 public buyTax = 20; uint256 public sellTax = 50; uint256 public maxTransactionTax = 90; uint256 public marketingPct = 40; uint256 public devPct = 40; uint256 public maxPct = 100; uint256 public maxWalletSize = (_tTotal * 2) / maxPct; IUniswapV2Router02 public _uniswapV2Router; address public uniswapV2Pair; bool public inSwapAndLiquify; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event UpdatedBuySellTaxes(uint256 buyTax, uint256 sellTax); event UpdatedPercentTaxes(uint256 marketing, uint256 dev); event UpdatedIsExcludedFromFee(address account, bool flag); event UpdatedIsExcludedFromMaxWallet(address account, bool flag); event UpdatedMarketingAndDevWallet(address marketing, address dev); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() { _tOwned[owner()] = _tTotal; address uniswapRouterAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; _uniswapV2Router = IUniswapV2Router02(uniswapRouterAddress); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); address marketing = address(0x1efbfe128509d2cB2CBc9575ab3DC2eEB1654f16); address dev = address(0x4C8354abB533213A38e476a5Ec04955b7441C136); marketingWallet = payable(marketing); devWallet = payable(dev); isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; isExcludedFromFee[marketingWallet] = true; isExcludedFromFee[devWallet] = true; isExcludedFromFee[burnWallet] = true; isExcludedFromFee[uniswapRouterAddress] = true; isExcludedFromMaxWalletToken[uniswapRouterAddress] = true; isExcludedFromMaxWalletToken[owner()] = true; isExcludedFromMaxWalletToken[address(this)] = true; isExcludedFromMaxWalletToken[marketingWallet] = true; isExcludedFromMaxWalletToken[devWallet] = true; isExcludedFromMaxWalletToken[burnWallet] = true; isExcludedFromMaxWalletToken[uniswapV2Pair] = true; emit Transfer(address(0), owner(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address theOwner, address theSpender) public view override returns (uint256) { return _allowances[theOwner][theSpender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()] - 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) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue ); return true; } receive() external payable {} function _approve( address theOwner, address theSpender, uint256 amount ) private { require( theOwner != address(0) && theSpender != address(0), "Zero address." ); _allowances[theOwner][theSpender] = amount; emit Approval(theOwner, theSpender, amount); } function setTax(uint256 buy, uint256 sell) public onlyOwner { require(buy <= maxTransactionTax, "Buy tax cannot exceed the maximum."); require( sell <= maxTransactionTax, "Sell tax cannot exceed the maximum." ); buyTax = buy; sellTax = sell; emit UpdatedBuySellTaxes(buy, sell); } function setPercentTax(uint256 marketing, uint256 dev) public onlyOwner { require( marketing + dev == maxPct, "The sum of percentages must equal 100." ); marketingPct = marketing; devPct = dev; emit UpdatedPercentTaxes(marketing, dev); } function excludeFromFee(address account) external onlyOwner { isExcludedFromFee[account] = true; emit UpdatedIsExcludedFromFee(account, true); } function includeInFee(address account) external onlyOwner { isExcludedFromFee[account] = false; emit UpdatedIsExcludedFromFee(account, false); } function excludeMaxWallet(address account) external onlyOwner { isExcludedFromMaxWalletToken[account] = true; emit UpdatedIsExcludedFromMaxWallet(account, true); } function includeMaxWallet(address account) external onlyOwner { isExcludedFromMaxWalletToken[account] = false; emit UpdatedIsExcludedFromMaxWallet(account, false); } function setWallets(address marketing, address dev) public onlyOwner { require( marketing != address(0) && dev != address(0), "Invalid wallet addresses." ); isExcludedFromFee[marketingWallet] = false; isExcludedFromFee[devWallet] = false; marketingWallet = payable(marketing); devWallet = payable(dev); isExcludedFromFee[marketing] = true; isExcludedFromFee[dev] = true; emit UpdatedMarketingAndDevWallet(marketing, dev); } function _transfer( address from, address to, uint256 amount ) private { if (!isExcludedFromMaxWalletToken[to]) { uint256 heldTokens = balanceOf(to); require( (heldTokens + amount) <= maxWalletSize, "Over wallet limit." ); } require(from != address(0) && to != address(0), "Using 0 address!"); require(amount > 0, "Token value must be higher than zero."); if ( balanceOf(address(this)) >= swapMinTokens && !inSwapAndLiquify && from != uniswapV2Pair ) { swapAndDistributeTaxes(); } _tokenTransfer(from, to, amount); } function multipleAirdrop( address[] memory _address, uint256[] memory _amount ) external onlyOwner { require(_address.length == _amount.length, "Arrays length mismatch"); uint256 totalAmount = 0; for (uint256 i = 0; i < _amount.length; i++) { totalAmount += _amount[i]; } require( balanceOf(msg.sender) >= totalAmount * 10**decimals(), "Insufficient balance" ); for (uint256 i = 0; i < _amount.length; i++) { address adr = _address[i]; uint256 amnt = _amount[i] * 10**decimals(); _transfer(msg.sender, adr, amnt); } } function _sendToWallet(address payable wallet, uint256 amount) private { wallet.transfer(amount); } function setSwapMinTokens(uint256 minTokens) external onlyOwner { swapMinTokens = minTokens * 10**decimals(); require( swapMinTokens < totalSupply(), "Min tokens for swap is too high." ); } function swapAndDistributeTaxes() private lockTheSwap { uint256 contractTokenBalance = balanceOf(address(this)); uint256 marketingTokensShare = (contractTokenBalance * marketingPct) / maxPct; uint256 devTokensShare = (contractTokenBalance * devPct) / maxPct; uint256 ethBalanceBeforeSwap = address(this).balance; swapTokensForETH(marketingTokensShare + devTokensShare); uint256 ethReceived = address(this).balance - ethBalanceBeforeSwap; uint256 marketingSplit = (marketingPct * maxPct) / (marketingPct + devPct); uint256 ethToMarketing = (ethReceived * marketingSplit) / maxPct; // uint256 devSplit = (devPct * maxPct) / (marketingPct + devPct); // uint256 ethToDev = (ethReceived * devSplit) / maxPct; _sendToWallet(marketingWallet, ethToMarketing); _sendToWallet(devWallet, address(this).balance); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function withdraw() external onlyOwner { uint256 contractBalance = address(this).balance; require(contractBalance > 0, "DS::Contract balance is empty"); (bool status, ) = payable(owner()).call{value: contractBalance}(""); require(status, "DS::Failed to send contract balance"); } function removeStuckTokens(address tokenAddress, uint256 pctOfTokens) public returns (bool _sent) { require(tokenAddress != address(this), "Can not remove native token."); require( pctOfTokens <= 100, "Percentage must be less than or equal to 100." ); uint256 totalRandom = IERC20(tokenAddress).balanceOf(address(this)); uint256 removeRandom = (totalRandom * pctOfTokens) / maxPct; _sent = IERC20(tokenAddress).transfer(devWallet, removeRandom); } function _tokenTransfer( address from, address to, uint256 tAmount ) private { bool isBuy = (from == uniswapV2Pair); bool isSell = (to == uniswapV2Pair); bool isBuyOrSell = isBuy || isSell; bool takeFee = isBuyOrSell && !(isExcludedFromFee[from] || isExcludedFromFee[to]); uint256 fee = !takeFee ? 0 : isBuy ? (tAmount * buyTax) / maxPct : (tAmount * sellTax) / maxPct; uint256 tTransferAmount = tAmount - fee; _tOwned[from] = _tOwned[from] - tAmount; _tOwned[to] = _tOwned[to] + tTransferAmount; _tOwned[address(this)] = _tOwned[address(this)] + fee; emit Transfer(from, to, tTransferAmount); if (to == burnWallet) _tTotal = _tTotal - tTransferAmount; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"UpdatedBuySellTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"flag","type":"bool"}],"name":"UpdatedIsExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"flag","type":"bool"}],"name":"UpdatedIsExcludedFromMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"},{"indexed":false,"internalType":"address","name":"dev","type":"address"}],"name":"UpdatedMarketingAndDevWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dev","type":"uint256"}],"name":"UpdatedPercentTaxes","type":"event"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"theOwner","type":"address"},{"internalType":"address","name":"theSpender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"devPct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingPct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"multipleAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"pctOfTokens","type":"uint256"}],"name":"removeStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"name":"setPercentTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minTokens","type":"uint256"}],"name":"setSwapMinTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"dev","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMinTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","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":[{"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009600a62000014919062000c4d565b633b9aca0062000025919062000c9e565b6007556101f46007546200003a919062000d18565b60085560146009556032600a55605a600b556028600c556028600d556064600e55600e5460026007546200006f919062000c9e565b6200007b919062000d18565b600f553480156200008b57600080fd5b50620000ac620000a0620009be60201b60201c565b620009c660201b60201c565b60075460016000620000c362000a8a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef919062000dba565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000279573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029f919062000dba565b6040518363ffffffff1660e01b8152600401620002be92919062000dfd565b6020604051808303816000875af1158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000304919062000dba565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000731efbfe128509d2cb2cbc9575ab3dc2eeb1654f1690506000734c8354abb533213a38e476a5ec04955b7441c136905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360006200040e62000a8a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000620006cb62000a8a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200094c62000a8a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620009ad919062000e3b565b60405180910390a350505062000e58565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b415780860481111562000b195762000b1862000ab3565b5b600185161562000b295780820291505b808102905062000b398562000ae2565b945062000af9565b94509492505050565b60008262000b5c576001905062000c2f565b8162000b6c576000905062000c2f565b816001811462000b85576002811462000b905762000bc6565b600191505062000c2f565b60ff84111562000ba55762000ba462000ab3565b5b8360020a91508482111562000bbf5762000bbe62000ab3565b5b5062000c2f565b5060208310610133831016604e8410600b841016171562000c005782820a90508381111562000bfa5762000bf962000ab3565b5b62000c2f565b62000c0f848484600162000aef565b9250905081840481111562000c295762000c2862000ab3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c5a8262000c36565b915062000c678362000c40565b925062000c967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b4a565b905092915050565b600062000cab8262000c36565b915062000cb88362000c36565b925082820262000cc88162000c36565b9150828204841483151762000ce25762000ce162000ab3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d258262000c36565b915062000d328362000c36565b92508262000d455762000d4462000ce9565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d828262000d55565b9050919050565b62000d948162000d75565b811462000da057600080fd5b50565b60008151905062000db48162000d89565b92915050565b60006020828403121562000dd35762000dd262000d50565b5b600062000de38482850162000da3565b91505092915050565b62000df78162000d75565b82525050565b600060408201905062000e14600083018562000dec565b62000e23602083018462000dec565b9392505050565b62000e358162000c36565b82525050565b600060208201905062000e52600083018462000e2a565b92915050565b6142fb8062000e686000396000f3fe60806040526004361061024a5760003560e01c80635450e093116101395780638f3fa860116100b6578063a90bb2bf1161007a578063a90bb2bf146108a5578063cc1776d3146108ce578063d3f6a157146108f9578063dd62ed3e14610922578063ea2f0b371461095f578063f2fde38b1461098857610251565b80638f3fa860146107aa578063950fdad7146107d557806395d89b4114610800578063a457c2d71461082b578063a9059cbb1461086857610251565b806370a08231116100fd57806370a08231146106d5578063715018a61461071257806375f0a874146107295780638da5cb5b146107545780638ea5220f1461077f57610251565b80635450e093146105f0578063546417a91461061b578063583e0568146106445780636476b0691461066f578063667f6526146106ac57610251565b806339509351116101c75780634a73a2801161018b5780634a73a2801461050b5780634f7041a5146105345780634fb639f31461055f578063522ac058146105885780635342acb4146105b357610251565b8063395093511461043a5780633ccfd60b14610477578063437823ec1461048e57806343f07b58146104b757806349bd5a5e146104e057610251565b80631783e0521161020e5780631783e0521461035157806318160ddd1461037c578063220f6696146103a757806323b872dd146103d2578063313ce5671461040f57610251565b8063062287491461025657806306fdde0314610281578063095ea7b3146102ac5780630fe0eb0f146102e95780630ff974e71461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109b1565b6040516102789190612da6565b60405180910390f35b34801561028d57600080fd5b506102966109b7565b6040516102a39190612e51565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190612efb565b6109f4565b6040516102e09190612f56565b60405180910390f35b3480156102f557600080fd5b506102fe610a12565b60405161030b9190612f80565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190612f9b565b610a18565b6040516103489190612f56565b60405180910390f35b34801561035d57600080fd5b50610366610a38565b6040516103739190612f80565b60405180910390f35b34801561038857600080fd5b50610391610a3e565b60405161039e9190612f80565b60405180910390f35b3480156103b357600080fd5b506103bc610a48565b6040516103c99190612f56565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190612fc8565b610a5b565b6040516104069190612f56565b60405180910390f35b34801561041b57600080fd5b50610424610b13565b6040516104319190613037565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190612efb565b610b1c565b60405161046e9190612f56565b60405180910390f35b34801561048357600080fd5b5061048c610bc8565b005b34801561049a57600080fd5b506104b560048036038101906104b09190612f9b565b610d43565b005b3480156104c357600080fd5b506104de60048036038101906104d99190612f9b565b610e54565b005b3480156104ec57600080fd5b506104f5610f65565b6040516105029190613061565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190613287565b610f8b565b005b34801561054057600080fd5b5061054961118b565b6040516105569190612f80565b60405180910390f35b34801561056b57600080fd5b50610586600480360381019061058191906132ff565b611191565b005b34801561059457600080fd5b5061059d611280565b6040516105aa9190612f80565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190612f9b565b611286565b6040516105e79190612f56565b60405180910390f35b3480156105fc57600080fd5b506106056112a6565b6040516106129190612f80565b60405180910390f35b34801561062757600080fd5b50610642600480360381019061063d9190612f9b565b6112ac565b005b34801561065057600080fd5b506106596113bd565b604051610666919061338b565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190612efb565b6113e3565b6040516106a39190612f56565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce91906133a6565b6115dc565b005b3480156106e157600080fd5b506106fc60048036038101906106f79190612f9b565b61172d565b6040516107099190612f80565b60405180910390f35b34801561071e57600080fd5b50610727611776565b005b34801561073557600080fd5b5061073e6117fe565b60405161074b9190612da6565b60405180910390f35b34801561076057600080fd5b50610769611824565b6040516107769190613061565b60405180910390f35b34801561078b57600080fd5b5061079461184d565b6040516107a19190612da6565b60405180910390f35b3480156107b657600080fd5b506107bf611873565b6040516107cc9190612f80565b60405180910390f35b3480156107e157600080fd5b506107ea611879565b6040516107f79190612f80565b60405180910390f35b34801561080c57600080fd5b5061081561187f565b6040516108229190612e51565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190612efb565b6118bc565b60405161085f9190612f56565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a9190612efb565b611968565b60405161089c9190612f56565b60405180910390f35b3480156108b157600080fd5b506108cc60048036038101906108c791906133a6565b611986565b005b3480156108da57600080fd5b506108e3611a9c565b6040516108f09190612f80565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b91906133e6565b611aa2565b005b34801561092e57600080fd5b50610949600480360381019061094491906133e6565b611e2a565b6040516109569190612f80565b60405180910390f35b34801561096b57600080fd5b5061098660048036038101906109819190612f9b565b611eb1565b005b34801561099457600080fd5b506109af60048036038101906109aa9190612f9b565b611fc2565b005b61dead81565b60606040518060400160405280600b81526020017f44657820536e6966666572000000000000000000000000000000000000000000815250905090565b6000610a08610a016120b9565b84846120c1565b6001905092915050565b600b5481565b60046020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600754905090565b601160149054906101000a900460ff1681565b6000610a68848484612255565b610b0884610a746120b9565b84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610abe6120b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b039190613455565b6120c1565b600190509392505050565b60006009905090565b6000610bbe610b296120b9565b848460026000610b376120b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bb99190613489565b6120c1565b6001905092915050565b610bd06120b9565b73ffffffffffffffffffffffffffffffffffffffff16610bee611824565b73ffffffffffffffffffffffffffffffffffffffff1614610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90613509565b60405180910390fd5b600047905060008111610c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8390613575565b60405180910390fd5b6000610c96611824565b73ffffffffffffffffffffffffffffffffffffffff1682604051610cb9906135c6565b60006040518083038185875af1925050503d8060008114610cf6576040519150601f19603f3d011682016040523d82523d6000602084013e610cfb565b606091505b5050905080610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d369061364d565b60405180910390fd5b5050565b610d4b6120b9565b73ffffffffffffffffffffffffffffffffffffffff16610d69611824565b73ffffffffffffffffffffffffffffffffffffffff1614610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db690613509565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff410d6c4def96d69e5baed8146061b716dd4ace2384481d53122138bbe4f4347816001604051610e4992919061366d565b60405180910390a150565b610e5c6120b9565b73ffffffffffffffffffffffffffffffffffffffff16610e7a611824565b73ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec790613509565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f99daa791459a6f561a09f304798c43002eb4416e52640c5f42ebdc73a4eda411816000604051610f5a92919061366d565b60405180910390a150565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f936120b9565b73ffffffffffffffffffffffffffffffffffffffff16610fb1611824565b73ffffffffffffffffffffffffffffffffffffffff1614611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe90613509565b60405180910390fd5b805182511461104b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611042906136e2565b60405180910390fd5b6000805b82518110156110935782818151811061106b5761106a613702565b5b60200260200101518261107e9190613489565b9150808061108b90613731565b91505061104f565b5061109c610b13565b600a6110a891906138ac565b816110b391906138f7565b6110bc3361172d565b10156110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f490613985565b60405180910390fd5b60005b825181101561118557600084828151811061111e5761111d613702565b5b602002602001015190506000611132610b13565b600a61113e91906138ac565b85848151811061115157611150613702565b5b602002602001015161116391906138f7565b9050611170338383612255565b5050808061117d90613731565b915050611100565b50505050565b60095481565b6111996120b9565b73ffffffffffffffffffffffffffffffffffffffff166111b7611824565b73ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490613509565b60405180910390fd5b611215610b13565b600a61122191906138ac565b8161122c91906138f7565b60088190555061123a610a3e565b6008541061127d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611274906139f1565b60405180910390fd5b50565b600e5481565b60036020528060005260406000206000915054906101000a900460ff1681565b600c5481565b6112b46120b9565b73ffffffffffffffffffffffffffffffffffffffff166112d2611824565b73ffffffffffffffffffffffffffffffffffffffff1614611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90613509565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f99daa791459a6f561a09f304798c43002eb4416e52640c5f42ebdc73a4eda4118160016040516113b292919061366d565b60405180910390a150565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90613a5d565b60405180910390fd5b6064821115611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90613aef565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114d29190613061565b602060405180830381865afa1580156114ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115139190613b24565b90506000600e54848361152691906138f7565b6115309190613b80565b90508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161158f929190613bd2565b6020604051808303816000875af11580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d29190613c27565b9250505092915050565b6115e46120b9565b73ffffffffffffffffffffffffffffffffffffffff16611602611824565b73ffffffffffffffffffffffffffffffffffffffff1614611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f90613509565b60405180910390fd5b600b5482111561169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490613cc6565b60405180910390fd5b600b548111156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990613d58565b60405180910390fd5b8160098190555080600a819055507fee384adbada91a649af3c708314e31b6fe6974f02a951d6be3674ad17c956efe8282604051611721929190613d78565b60405180910390a15050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61177e6120b9565b73ffffffffffffffffffffffffffffffffffffffff1661179c611824565b73ffffffffffffffffffffffffffffffffffffffff16146117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e990613509565b60405180910390fd5b6117fc6000612490565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600d5481565b60606040518060400160405280600281526020017f4453000000000000000000000000000000000000000000000000000000000000815250905090565b600061195e6118c96120b9565b8484600260006118d76120b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119599190613455565b6120c1565b6001905092915050565b600061197c6119756120b9565b8484612255565b6001905092915050565b61198e6120b9565b73ffffffffffffffffffffffffffffffffffffffff166119ac611824565b73ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990613509565b60405180910390fd5b600e548183611a119190613489565b14611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4890613e13565b60405180910390fd5b81600c8190555080600d819055507f6675f8bcbf6132f90b29b99d5f4aae60ec816a76eeab53148e434183515b90568282604051611a90929190613d78565b60405180910390a15050565b600a5481565b611aaa6120b9565b73ffffffffffffffffffffffffffffffffffffffff16611ac8611824565b73ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1590613509565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b885750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbe90613e7f565b60405180910390fd5b600060036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1e28ff4341fc5e5dbba78e864f67855d4b87ecce752be336375b358c90b529ec8282604051611e1e929190613e9f565b60405180910390a15050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611eb96120b9565b73ffffffffffffffffffffffffffffffffffffffff16611ed7611824565b73ffffffffffffffffffffffffffffffffffffffff1614611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2490613509565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff410d6c4def96d69e5baed8146061b716dd4ace2384481d53122138bbe4f4347816000604051611fb792919061366d565b60405180910390a150565b611fca6120b9565b73ffffffffffffffffffffffffffffffffffffffff16611fe8611824565b73ffffffffffffffffffffffffffffffffffffffff161461203e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203590613509565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a490613f3a565b60405180910390fd5b6120b681612490565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561212b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190613fa6565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122489190612f80565b60405180910390a3505050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123055760006122b18361172d565b9050600f5482826122c29190613489565b1115612303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fa90614012565b60405180910390fd5b505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561236f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a59061407e565b60405180910390fd5b600081116123f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e890614110565b60405180910390fd5b6008546123fd3061172d565b101580156124185750601160149054906101000a900460ff16155b80156124725750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124805761247f612554565b5b61248b8383836126aa565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601160146101000a81548160ff021916908315150217905550600061257a3061172d565b90506000600e54600c548361258f91906138f7565b6125999190613b80565b90506000600e54600d54846125ae91906138f7565b6125b89190613b80565b905060004790506125d382846125ce9190613489565b612ad7565b600081476125e19190613455565b90506000600d54600c546125f59190613489565b600e54600c5461260591906138f7565b61260f9190613b80565b90506000600e54828461262291906138f7565b61262c9190613b80565b905061265a600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612d1a565b612686600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1647612d1a565b505050505050506000601160146101000a81548160ff021916908315150217905550565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000828061275f5750815b9050600081801561280e5750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061280c5750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b90506000811561285e578461283d57600e54600a548761282e91906138f7565b6128389190613b80565b612859565b600e546009548761284e91906138f7565b6128589190613b80565b5b612861565b60005b9050600081876128719190613455565b905086600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128be9190613455565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294c9190613489565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129da9190613489565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a7a9190612f80565b60405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612acc5780600754612ac59190613455565b6007819055505b505050505050505050565b6000600267ffffffffffffffff811115612af457612af3613081565b5b604051908082528060200260200182016040528015612b225781602001602082028036833780820191505090505b5090503081600081518110612b3a57612b39613702565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c059190614145565b81600181518110612c1957612c18613702565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c8030601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120c1565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ce495949392919061426b565b600060405180830381600087803b158015612cfe57600080fd5b505af1158015612d12573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d60573d6000803e3d6000fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d9082612d65565b9050919050565b612da081612d85565b82525050565b6000602082019050612dbb6000830184612d97565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dfb578082015181840152602081019050612de0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e2382612dc1565b612e2d8185612dcc565b9350612e3d818560208601612ddd565b612e4681612e07565b840191505092915050565b60006020820190508181036000830152612e6b8184612e18565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000612e9282612d65565b9050919050565b612ea281612e87565b8114612ead57600080fd5b50565b600081359050612ebf81612e99565b92915050565b6000819050919050565b612ed881612ec5565b8114612ee357600080fd5b50565b600081359050612ef581612ecf565b92915050565b60008060408385031215612f1257612f11612e7d565b5b6000612f2085828601612eb0565b9250506020612f3185828601612ee6565b9150509250929050565b60008115159050919050565b612f5081612f3b565b82525050565b6000602082019050612f6b6000830184612f47565b92915050565b612f7a81612ec5565b82525050565b6000602082019050612f956000830184612f71565b92915050565b600060208284031215612fb157612fb0612e7d565b5b6000612fbf84828501612eb0565b91505092915050565b600080600060608486031215612fe157612fe0612e7d565b5b6000612fef86828701612eb0565b935050602061300086828701612eb0565b925050604061301186828701612ee6565b9150509250925092565b600060ff82169050919050565b6130318161301b565b82525050565b600060208201905061304c6000830184613028565b92915050565b61305b81612e87565b82525050565b60006020820190506130766000830184613052565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130b982612e07565b810181811067ffffffffffffffff821117156130d8576130d7613081565b5b80604052505050565b60006130eb612e73565b90506130f782826130b0565b919050565b600067ffffffffffffffff82111561311757613116613081565b5b602082029050602081019050919050565b600080fd5b600061314061313b846130fc565b6130e1565b9050808382526020820190506020840283018581111561316357613162613128565b5b835b8181101561318c57806131788882612eb0565b845260208401935050602081019050613165565b5050509392505050565b600082601f8301126131ab576131aa61307c565b5b81356131bb84826020860161312d565b91505092915050565b600067ffffffffffffffff8211156131df576131de613081565b5b602082029050602081019050919050565b60006132036131fe846131c4565b6130e1565b9050808382526020820190506020840283018581111561322657613225613128565b5b835b8181101561324f578061323b8882612ee6565b845260208401935050602081019050613228565b5050509392505050565b600082601f83011261326e5761326d61307c565b5b813561327e8482602086016131f0565b91505092915050565b6000806040838503121561329e5761329d612e7d565b5b600083013567ffffffffffffffff8111156132bc576132bb612e82565b5b6132c885828601613196565b925050602083013567ffffffffffffffff8111156132e9576132e8612e82565b5b6132f585828601613259565b9150509250929050565b60006020828403121561331557613314612e7d565b5b600061332384828501612ee6565b91505092915050565b6000819050919050565b600061335161334c61334784612d65565b61332c565b612d65565b9050919050565b600061336382613336565b9050919050565b600061337582613358565b9050919050565b6133858161336a565b82525050565b60006020820190506133a0600083018461337c565b92915050565b600080604083850312156133bd576133bc612e7d565b5b60006133cb85828601612ee6565b92505060206133dc85828601612ee6565b9150509250929050565b600080604083850312156133fd576133fc612e7d565b5b600061340b85828601612eb0565b925050602061341c85828601612eb0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061346082612ec5565b915061346b83612ec5565b925082820390508181111561348357613482613426565b5b92915050565b600061349482612ec5565b915061349f83612ec5565b92508282019050808211156134b7576134b6613426565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134f3602083612dcc565b91506134fe826134bd565b602082019050919050565b60006020820190508181036000830152613522816134e6565b9050919050565b7f44533a3a436f6e74726163742062616c616e636520697320656d707479000000600082015250565b600061355f601d83612dcc565b915061356a82613529565b602082019050919050565b6000602082019050818103600083015261358e81613552565b9050919050565b600081905092915050565b50565b60006135b0600083613595565b91506135bb826135a0565b600082019050919050565b60006135d1826135a3565b9150819050919050565b7f44533a3a4661696c656420746f2073656e6420636f6e74726163742062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000613637602383612dcc565b9150613642826135db565b604082019050919050565b600060208201905081810360008301526136668161362a565b9050919050565b60006040820190506136826000830185613052565b61368f6020830184612f47565b9392505050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b60006136cc601683612dcc565b91506136d782613696565b602082019050919050565b600060208201905081810360008301526136fb816136bf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061373c82612ec5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361376e5761376d613426565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b60018511156137d0578086048111156137ac576137ab613426565b5b60018516156137bb5780820291505b80810290506137c985613779565b9450613790565b94509492505050565b6000826137e957600190506138a5565b816137f757600090506138a5565b816001811461380d576002811461381757613846565b60019150506138a5565b60ff84111561382957613828613426565b5b8360020a9150848211156138405761383f613426565b5b506138a5565b5060208310610133831016604e8410600b841016171561387b5782820a90508381111561387657613875613426565b5b6138a5565b6138888484846001613786565b9250905081840481111561389f5761389e613426565b5b81810290505b9392505050565b60006138b782612ec5565b91506138c28361301b565b92506138ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137d9565b905092915050565b600061390282612ec5565b915061390d83612ec5565b925082820261391b81612ec5565b9150828204841483151761393257613931613426565b5b5092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b600061396f601483612dcc565b915061397a82613939565b602082019050919050565b6000602082019050818103600083015261399e81613962565b9050919050565b7f4d696e20746f6b656e7320666f72207377617020697320746f6f20686967682e600082015250565b60006139db602083612dcc565b91506139e6826139a5565b602082019050919050565b60006020820190508181036000830152613a0a816139ce565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e2e00000000600082015250565b6000613a47601c83612dcc565b9150613a5282613a11565b602082019050919050565b60006020820190508181036000830152613a7681613a3a565b9050919050565b7f50657263656e74616765206d757374206265206c657373207468616e206f722060008201527f657175616c20746f203130302e00000000000000000000000000000000000000602082015250565b6000613ad9602d83612dcc565b9150613ae482613a7d565b604082019050919050565b60006020820190508181036000830152613b0881613acc565b9050919050565b600081519050613b1e81612ecf565b92915050565b600060208284031215613b3a57613b39612e7d565b5b6000613b4884828501613b0f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b8b82612ec5565b9150613b9683612ec5565b925082613ba657613ba5613b51565b5b828204905092915050565b6000613bbc82613358565b9050919050565b613bcc81613bb1565b82525050565b6000604082019050613be76000830185613bc3565b613bf46020830184612f71565b9392505050565b613c0481612f3b565b8114613c0f57600080fd5b50565b600081519050613c2181613bfb565b92915050565b600060208284031215613c3d57613c3c612e7d565b5b6000613c4b84828501613c12565b91505092915050565b7f427579207461782063616e6e6f742065786365656420746865206d6178696d7560008201527f6d2e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cb0602283612dcc565b9150613cbb82613c54565b604082019050919050565b60006020820190508181036000830152613cdf81613ca3565b9050919050565b7f53656c6c207461782063616e6e6f742065786365656420746865206d6178696d60008201527f756d2e0000000000000000000000000000000000000000000000000000000000602082015250565b6000613d42602383612dcc565b9150613d4d82613ce6565b604082019050919050565b60006020820190508181036000830152613d7181613d35565b9050919050565b6000604082019050613d8d6000830185612f71565b613d9a6020830184612f71565b9392505050565b7f5468652073756d206f662070657263656e7461676573206d757374206571756160008201527f6c203130302e0000000000000000000000000000000000000000000000000000602082015250565b6000613dfd602683612dcc565b9150613e0882613da1565b604082019050919050565b60006020820190508181036000830152613e2c81613df0565b9050919050565b7f496e76616c69642077616c6c6574206164647265737365732e00000000000000600082015250565b6000613e69601983612dcc565b9150613e7482613e33565b602082019050919050565b60006020820190508181036000830152613e9881613e5c565b9050919050565b6000604082019050613eb46000830185613052565b613ec16020830184613052565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f24602683612dcc565b9150613f2f82613ec8565b604082019050919050565b60006020820190508181036000830152613f5381613f17565b9050919050565b7f5a65726f20616464726573732e00000000000000000000000000000000000000600082015250565b6000613f90600d83612dcc565b9150613f9b82613f5a565b602082019050919050565b60006020820190508181036000830152613fbf81613f83565b9050919050565b7f4f7665722077616c6c6574206c696d69742e0000000000000000000000000000600082015250565b6000613ffc601283612dcc565b915061400782613fc6565b602082019050919050565b6000602082019050818103600083015261402b81613fef565b9050919050565b7f5573696e67203020616464726573732100000000000000000000000000000000600082015250565b6000614068601083612dcc565b915061407382614032565b602082019050919050565b600060208201905081810360008301526140978161405b565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b60006140fa602583612dcc565b91506141058261409e565b604082019050919050565b60006020820190508181036000830152614129816140ed565b9050919050565b60008151905061413f81612e99565b92915050565b60006020828403121561415b5761415a612e7d565b5b600061416984828501614130565b91505092915050565b6000819050919050565b600061419761419261418d84614172565b61332c565b612ec5565b9050919050565b6141a78161417c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141e281612e87565b82525050565b60006141f483836141d9565b60208301905092915050565b6000602082019050919050565b6000614218826141ad565b61422281856141b8565b935061422d836141c9565b8060005b8381101561425e57815161424588826141e8565b975061425083614200565b925050600181019050614231565b5085935050505092915050565b600060a0820190506142806000830188612f71565b61428d602083018761419e565b818103604083015261429f818661420d565b90506142ae6060830185613052565b6142bb6080830184612f71565b969550505050505056fea2646970667358221220e944b606f76842491b9e151759dbc09c2bc9d5d8667ddccf24f6e1dbc61f126d64736f6c63430008130033
Deployed Bytecode
0x60806040526004361061024a5760003560e01c80635450e093116101395780638f3fa860116100b6578063a90bb2bf1161007a578063a90bb2bf146108a5578063cc1776d3146108ce578063d3f6a157146108f9578063dd62ed3e14610922578063ea2f0b371461095f578063f2fde38b1461098857610251565b80638f3fa860146107aa578063950fdad7146107d557806395d89b4114610800578063a457c2d71461082b578063a9059cbb1461086857610251565b806370a08231116100fd57806370a08231146106d5578063715018a61461071257806375f0a874146107295780638da5cb5b146107545780638ea5220f1461077f57610251565b80635450e093146105f0578063546417a91461061b578063583e0568146106445780636476b0691461066f578063667f6526146106ac57610251565b806339509351116101c75780634a73a2801161018b5780634a73a2801461050b5780634f7041a5146105345780634fb639f31461055f578063522ac058146105885780635342acb4146105b357610251565b8063395093511461043a5780633ccfd60b14610477578063437823ec1461048e57806343f07b58146104b757806349bd5a5e146104e057610251565b80631783e0521161020e5780631783e0521461035157806318160ddd1461037c578063220f6696146103a757806323b872dd146103d2578063313ce5671461040f57610251565b8063062287491461025657806306fdde0314610281578063095ea7b3146102ac5780630fe0eb0f146102e95780630ff974e71461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109b1565b6040516102789190612da6565b60405180910390f35b34801561028d57600080fd5b506102966109b7565b6040516102a39190612e51565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190612efb565b6109f4565b6040516102e09190612f56565b60405180910390f35b3480156102f557600080fd5b506102fe610a12565b60405161030b9190612f80565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190612f9b565b610a18565b6040516103489190612f56565b60405180910390f35b34801561035d57600080fd5b50610366610a38565b6040516103739190612f80565b60405180910390f35b34801561038857600080fd5b50610391610a3e565b60405161039e9190612f80565b60405180910390f35b3480156103b357600080fd5b506103bc610a48565b6040516103c99190612f56565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190612fc8565b610a5b565b6040516104069190612f56565b60405180910390f35b34801561041b57600080fd5b50610424610b13565b6040516104319190613037565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190612efb565b610b1c565b60405161046e9190612f56565b60405180910390f35b34801561048357600080fd5b5061048c610bc8565b005b34801561049a57600080fd5b506104b560048036038101906104b09190612f9b565b610d43565b005b3480156104c357600080fd5b506104de60048036038101906104d99190612f9b565b610e54565b005b3480156104ec57600080fd5b506104f5610f65565b6040516105029190613061565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190613287565b610f8b565b005b34801561054057600080fd5b5061054961118b565b6040516105569190612f80565b60405180910390f35b34801561056b57600080fd5b50610586600480360381019061058191906132ff565b611191565b005b34801561059457600080fd5b5061059d611280565b6040516105aa9190612f80565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190612f9b565b611286565b6040516105e79190612f56565b60405180910390f35b3480156105fc57600080fd5b506106056112a6565b6040516106129190612f80565b60405180910390f35b34801561062757600080fd5b50610642600480360381019061063d9190612f9b565b6112ac565b005b34801561065057600080fd5b506106596113bd565b604051610666919061338b565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190612efb565b6113e3565b6040516106a39190612f56565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce91906133a6565b6115dc565b005b3480156106e157600080fd5b506106fc60048036038101906106f79190612f9b565b61172d565b6040516107099190612f80565b60405180910390f35b34801561071e57600080fd5b50610727611776565b005b34801561073557600080fd5b5061073e6117fe565b60405161074b9190612da6565b60405180910390f35b34801561076057600080fd5b50610769611824565b6040516107769190613061565b60405180910390f35b34801561078b57600080fd5b5061079461184d565b6040516107a19190612da6565b60405180910390f35b3480156107b657600080fd5b506107bf611873565b6040516107cc9190612f80565b60405180910390f35b3480156107e157600080fd5b506107ea611879565b6040516107f79190612f80565b60405180910390f35b34801561080c57600080fd5b5061081561187f565b6040516108229190612e51565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190612efb565b6118bc565b60405161085f9190612f56565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a9190612efb565b611968565b60405161089c9190612f56565b60405180910390f35b3480156108b157600080fd5b506108cc60048036038101906108c791906133a6565b611986565b005b3480156108da57600080fd5b506108e3611a9c565b6040516108f09190612f80565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b91906133e6565b611aa2565b005b34801561092e57600080fd5b50610949600480360381019061094491906133e6565b611e2a565b6040516109569190612f80565b60405180910390f35b34801561096b57600080fd5b5061098660048036038101906109819190612f9b565b611eb1565b005b34801561099457600080fd5b506109af60048036038101906109aa9190612f9b565b611fc2565b005b61dead81565b60606040518060400160405280600b81526020017f44657820536e6966666572000000000000000000000000000000000000000000815250905090565b6000610a08610a016120b9565b84846120c1565b6001905092915050565b600b5481565b60046020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600754905090565b601160149054906101000a900460ff1681565b6000610a68848484612255565b610b0884610a746120b9565b84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610abe6120b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b039190613455565b6120c1565b600190509392505050565b60006009905090565b6000610bbe610b296120b9565b848460026000610b376120b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bb99190613489565b6120c1565b6001905092915050565b610bd06120b9565b73ffffffffffffffffffffffffffffffffffffffff16610bee611824565b73ffffffffffffffffffffffffffffffffffffffff1614610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90613509565b60405180910390fd5b600047905060008111610c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8390613575565b60405180910390fd5b6000610c96611824565b73ffffffffffffffffffffffffffffffffffffffff1682604051610cb9906135c6565b60006040518083038185875af1925050503d8060008114610cf6576040519150601f19603f3d011682016040523d82523d6000602084013e610cfb565b606091505b5050905080610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d369061364d565b60405180910390fd5b5050565b610d4b6120b9565b73ffffffffffffffffffffffffffffffffffffffff16610d69611824565b73ffffffffffffffffffffffffffffffffffffffff1614610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db690613509565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff410d6c4def96d69e5baed8146061b716dd4ace2384481d53122138bbe4f4347816001604051610e4992919061366d565b60405180910390a150565b610e5c6120b9565b73ffffffffffffffffffffffffffffffffffffffff16610e7a611824565b73ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec790613509565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f99daa791459a6f561a09f304798c43002eb4416e52640c5f42ebdc73a4eda411816000604051610f5a92919061366d565b60405180910390a150565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f936120b9565b73ffffffffffffffffffffffffffffffffffffffff16610fb1611824565b73ffffffffffffffffffffffffffffffffffffffff1614611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe90613509565b60405180910390fd5b805182511461104b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611042906136e2565b60405180910390fd5b6000805b82518110156110935782818151811061106b5761106a613702565b5b60200260200101518261107e9190613489565b9150808061108b90613731565b91505061104f565b5061109c610b13565b600a6110a891906138ac565b816110b391906138f7565b6110bc3361172d565b10156110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f490613985565b60405180910390fd5b60005b825181101561118557600084828151811061111e5761111d613702565b5b602002602001015190506000611132610b13565b600a61113e91906138ac565b85848151811061115157611150613702565b5b602002602001015161116391906138f7565b9050611170338383612255565b5050808061117d90613731565b915050611100565b50505050565b60095481565b6111996120b9565b73ffffffffffffffffffffffffffffffffffffffff166111b7611824565b73ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490613509565b60405180910390fd5b611215610b13565b600a61122191906138ac565b8161122c91906138f7565b60088190555061123a610a3e565b6008541061127d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611274906139f1565b60405180910390fd5b50565b600e5481565b60036020528060005260406000206000915054906101000a900460ff1681565b600c5481565b6112b46120b9565b73ffffffffffffffffffffffffffffffffffffffff166112d2611824565b73ffffffffffffffffffffffffffffffffffffffff1614611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90613509565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f99daa791459a6f561a09f304798c43002eb4416e52640c5f42ebdc73a4eda4118160016040516113b292919061366d565b60405180910390a150565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90613a5d565b60405180910390fd5b6064821115611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90613aef565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114d29190613061565b602060405180830381865afa1580156114ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115139190613b24565b90506000600e54848361152691906138f7565b6115309190613b80565b90508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161158f929190613bd2565b6020604051808303816000875af11580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d29190613c27565b9250505092915050565b6115e46120b9565b73ffffffffffffffffffffffffffffffffffffffff16611602611824565b73ffffffffffffffffffffffffffffffffffffffff1614611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f90613509565b60405180910390fd5b600b5482111561169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490613cc6565b60405180910390fd5b600b548111156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990613d58565b60405180910390fd5b8160098190555080600a819055507fee384adbada91a649af3c708314e31b6fe6974f02a951d6be3674ad17c956efe8282604051611721929190613d78565b60405180910390a15050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61177e6120b9565b73ffffffffffffffffffffffffffffffffffffffff1661179c611824565b73ffffffffffffffffffffffffffffffffffffffff16146117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e990613509565b60405180910390fd5b6117fc6000612490565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600d5481565b60606040518060400160405280600281526020017f4453000000000000000000000000000000000000000000000000000000000000815250905090565b600061195e6118c96120b9565b8484600260006118d76120b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119599190613455565b6120c1565b6001905092915050565b600061197c6119756120b9565b8484612255565b6001905092915050565b61198e6120b9565b73ffffffffffffffffffffffffffffffffffffffff166119ac611824565b73ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990613509565b60405180910390fd5b600e548183611a119190613489565b14611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4890613e13565b60405180910390fd5b81600c8190555080600d819055507f6675f8bcbf6132f90b29b99d5f4aae60ec816a76eeab53148e434183515b90568282604051611a90929190613d78565b60405180910390a15050565b600a5481565b611aaa6120b9565b73ffffffffffffffffffffffffffffffffffffffff16611ac8611824565b73ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1590613509565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b885750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbe90613e7f565b60405180910390fd5b600060036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1e28ff4341fc5e5dbba78e864f67855d4b87ecce752be336375b358c90b529ec8282604051611e1e929190613e9f565b60405180910390a15050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611eb96120b9565b73ffffffffffffffffffffffffffffffffffffffff16611ed7611824565b73ffffffffffffffffffffffffffffffffffffffff1614611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2490613509565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff410d6c4def96d69e5baed8146061b716dd4ace2384481d53122138bbe4f4347816000604051611fb792919061366d565b60405180910390a150565b611fca6120b9565b73ffffffffffffffffffffffffffffffffffffffff16611fe8611824565b73ffffffffffffffffffffffffffffffffffffffff161461203e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203590613509565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a490613f3a565b60405180910390fd5b6120b681612490565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561212b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190613fa6565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122489190612f80565b60405180910390a3505050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123055760006122b18361172d565b9050600f5482826122c29190613489565b1115612303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fa90614012565b60405180910390fd5b505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561236f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a59061407e565b60405180910390fd5b600081116123f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e890614110565b60405180910390fd5b6008546123fd3061172d565b101580156124185750601160149054906101000a900460ff16155b80156124725750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124805761247f612554565b5b61248b8383836126aa565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601160146101000a81548160ff021916908315150217905550600061257a3061172d565b90506000600e54600c548361258f91906138f7565b6125999190613b80565b90506000600e54600d54846125ae91906138f7565b6125b89190613b80565b905060004790506125d382846125ce9190613489565b612ad7565b600081476125e19190613455565b90506000600d54600c546125f59190613489565b600e54600c5461260591906138f7565b61260f9190613b80565b90506000600e54828461262291906138f7565b61262c9190613b80565b905061265a600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612d1a565b612686600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1647612d1a565b505050505050506000601160146101000a81548160ff021916908315150217905550565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000828061275f5750815b9050600081801561280e5750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061280c5750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b90506000811561285e578461283d57600e54600a548761282e91906138f7565b6128389190613b80565b612859565b600e546009548761284e91906138f7565b6128589190613b80565b5b612861565b60005b9050600081876128719190613455565b905086600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128be9190613455565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294c9190613489565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129da9190613489565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a7a9190612f80565b60405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612acc5780600754612ac59190613455565b6007819055505b505050505050505050565b6000600267ffffffffffffffff811115612af457612af3613081565b5b604051908082528060200260200182016040528015612b225781602001602082028036833780820191505090505b5090503081600081518110612b3a57612b39613702565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c059190614145565b81600181518110612c1957612c18613702565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c8030601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120c1565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ce495949392919061426b565b600060405180830381600087803b158015612cfe57600080fd5b505af1158015612d12573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d60573d6000803e3d6000fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d9082612d65565b9050919050565b612da081612d85565b82525050565b6000602082019050612dbb6000830184612d97565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dfb578082015181840152602081019050612de0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e2382612dc1565b612e2d8185612dcc565b9350612e3d818560208601612ddd565b612e4681612e07565b840191505092915050565b60006020820190508181036000830152612e6b8184612e18565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000612e9282612d65565b9050919050565b612ea281612e87565b8114612ead57600080fd5b50565b600081359050612ebf81612e99565b92915050565b6000819050919050565b612ed881612ec5565b8114612ee357600080fd5b50565b600081359050612ef581612ecf565b92915050565b60008060408385031215612f1257612f11612e7d565b5b6000612f2085828601612eb0565b9250506020612f3185828601612ee6565b9150509250929050565b60008115159050919050565b612f5081612f3b565b82525050565b6000602082019050612f6b6000830184612f47565b92915050565b612f7a81612ec5565b82525050565b6000602082019050612f956000830184612f71565b92915050565b600060208284031215612fb157612fb0612e7d565b5b6000612fbf84828501612eb0565b91505092915050565b600080600060608486031215612fe157612fe0612e7d565b5b6000612fef86828701612eb0565b935050602061300086828701612eb0565b925050604061301186828701612ee6565b9150509250925092565b600060ff82169050919050565b6130318161301b565b82525050565b600060208201905061304c6000830184613028565b92915050565b61305b81612e87565b82525050565b60006020820190506130766000830184613052565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130b982612e07565b810181811067ffffffffffffffff821117156130d8576130d7613081565b5b80604052505050565b60006130eb612e73565b90506130f782826130b0565b919050565b600067ffffffffffffffff82111561311757613116613081565b5b602082029050602081019050919050565b600080fd5b600061314061313b846130fc565b6130e1565b9050808382526020820190506020840283018581111561316357613162613128565b5b835b8181101561318c57806131788882612eb0565b845260208401935050602081019050613165565b5050509392505050565b600082601f8301126131ab576131aa61307c565b5b81356131bb84826020860161312d565b91505092915050565b600067ffffffffffffffff8211156131df576131de613081565b5b602082029050602081019050919050565b60006132036131fe846131c4565b6130e1565b9050808382526020820190506020840283018581111561322657613225613128565b5b835b8181101561324f578061323b8882612ee6565b845260208401935050602081019050613228565b5050509392505050565b600082601f83011261326e5761326d61307c565b5b813561327e8482602086016131f0565b91505092915050565b6000806040838503121561329e5761329d612e7d565b5b600083013567ffffffffffffffff8111156132bc576132bb612e82565b5b6132c885828601613196565b925050602083013567ffffffffffffffff8111156132e9576132e8612e82565b5b6132f585828601613259565b9150509250929050565b60006020828403121561331557613314612e7d565b5b600061332384828501612ee6565b91505092915050565b6000819050919050565b600061335161334c61334784612d65565b61332c565b612d65565b9050919050565b600061336382613336565b9050919050565b600061337582613358565b9050919050565b6133858161336a565b82525050565b60006020820190506133a0600083018461337c565b92915050565b600080604083850312156133bd576133bc612e7d565b5b60006133cb85828601612ee6565b92505060206133dc85828601612ee6565b9150509250929050565b600080604083850312156133fd576133fc612e7d565b5b600061340b85828601612eb0565b925050602061341c85828601612eb0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061346082612ec5565b915061346b83612ec5565b925082820390508181111561348357613482613426565b5b92915050565b600061349482612ec5565b915061349f83612ec5565b92508282019050808211156134b7576134b6613426565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134f3602083612dcc565b91506134fe826134bd565b602082019050919050565b60006020820190508181036000830152613522816134e6565b9050919050565b7f44533a3a436f6e74726163742062616c616e636520697320656d707479000000600082015250565b600061355f601d83612dcc565b915061356a82613529565b602082019050919050565b6000602082019050818103600083015261358e81613552565b9050919050565b600081905092915050565b50565b60006135b0600083613595565b91506135bb826135a0565b600082019050919050565b60006135d1826135a3565b9150819050919050565b7f44533a3a4661696c656420746f2073656e6420636f6e74726163742062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000613637602383612dcc565b9150613642826135db565b604082019050919050565b600060208201905081810360008301526136668161362a565b9050919050565b60006040820190506136826000830185613052565b61368f6020830184612f47565b9392505050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b60006136cc601683612dcc565b91506136d782613696565b602082019050919050565b600060208201905081810360008301526136fb816136bf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061373c82612ec5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361376e5761376d613426565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b60018511156137d0578086048111156137ac576137ab613426565b5b60018516156137bb5780820291505b80810290506137c985613779565b9450613790565b94509492505050565b6000826137e957600190506138a5565b816137f757600090506138a5565b816001811461380d576002811461381757613846565b60019150506138a5565b60ff84111561382957613828613426565b5b8360020a9150848211156138405761383f613426565b5b506138a5565b5060208310610133831016604e8410600b841016171561387b5782820a90508381111561387657613875613426565b5b6138a5565b6138888484846001613786565b9250905081840481111561389f5761389e613426565b5b81810290505b9392505050565b60006138b782612ec5565b91506138c28361301b565b92506138ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137d9565b905092915050565b600061390282612ec5565b915061390d83612ec5565b925082820261391b81612ec5565b9150828204841483151761393257613931613426565b5b5092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b600061396f601483612dcc565b915061397a82613939565b602082019050919050565b6000602082019050818103600083015261399e81613962565b9050919050565b7f4d696e20746f6b656e7320666f72207377617020697320746f6f20686967682e600082015250565b60006139db602083612dcc565b91506139e6826139a5565b602082019050919050565b60006020820190508181036000830152613a0a816139ce565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e2e00000000600082015250565b6000613a47601c83612dcc565b9150613a5282613a11565b602082019050919050565b60006020820190508181036000830152613a7681613a3a565b9050919050565b7f50657263656e74616765206d757374206265206c657373207468616e206f722060008201527f657175616c20746f203130302e00000000000000000000000000000000000000602082015250565b6000613ad9602d83612dcc565b9150613ae482613a7d565b604082019050919050565b60006020820190508181036000830152613b0881613acc565b9050919050565b600081519050613b1e81612ecf565b92915050565b600060208284031215613b3a57613b39612e7d565b5b6000613b4884828501613b0f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b8b82612ec5565b9150613b9683612ec5565b925082613ba657613ba5613b51565b5b828204905092915050565b6000613bbc82613358565b9050919050565b613bcc81613bb1565b82525050565b6000604082019050613be76000830185613bc3565b613bf46020830184612f71565b9392505050565b613c0481612f3b565b8114613c0f57600080fd5b50565b600081519050613c2181613bfb565b92915050565b600060208284031215613c3d57613c3c612e7d565b5b6000613c4b84828501613c12565b91505092915050565b7f427579207461782063616e6e6f742065786365656420746865206d6178696d7560008201527f6d2e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cb0602283612dcc565b9150613cbb82613c54565b604082019050919050565b60006020820190508181036000830152613cdf81613ca3565b9050919050565b7f53656c6c207461782063616e6e6f742065786365656420746865206d6178696d60008201527f756d2e0000000000000000000000000000000000000000000000000000000000602082015250565b6000613d42602383612dcc565b9150613d4d82613ce6565b604082019050919050565b60006020820190508181036000830152613d7181613d35565b9050919050565b6000604082019050613d8d6000830185612f71565b613d9a6020830184612f71565b9392505050565b7f5468652073756d206f662070657263656e7461676573206d757374206571756160008201527f6c203130302e0000000000000000000000000000000000000000000000000000602082015250565b6000613dfd602683612dcc565b9150613e0882613da1565b604082019050919050565b60006020820190508181036000830152613e2c81613df0565b9050919050565b7f496e76616c69642077616c6c6574206164647265737365732e00000000000000600082015250565b6000613e69601983612dcc565b9150613e7482613e33565b602082019050919050565b60006020820190508181036000830152613e9881613e5c565b9050919050565b6000604082019050613eb46000830185613052565b613ec16020830184613052565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f24602683612dcc565b9150613f2f82613ec8565b604082019050919050565b60006020820190508181036000830152613f5381613f17565b9050919050565b7f5a65726f20616464726573732e00000000000000000000000000000000000000600082015250565b6000613f90600d83612dcc565b9150613f9b82613f5a565b602082019050919050565b60006020820190508181036000830152613fbf81613f83565b9050919050565b7f4f7665722077616c6c6574206c696d69742e0000000000000000000000000000600082015250565b6000613ffc601283612dcc565b915061400782613fc6565b602082019050919050565b6000602082019050818103600083015261402b81613fef565b9050919050565b7f5573696e67203020616464726573732100000000000000000000000000000000600082015250565b6000614068601083612dcc565b915061407382614032565b602082019050919050565b600060208201905081810360008301526140978161405b565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b60006140fa602583612dcc565b91506141058261409e565b604082019050919050565b60006020820190508181036000830152614129816140ed565b9050919050565b60008151905061413f81612e99565b92915050565b60006020828403121561415b5761415a612e7d565b5b600061416984828501614130565b91505092915050565b6000819050919050565b600061419761419261418d84614172565b61332c565b612ec5565b9050919050565b6141a78161417c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141e281612e87565b82525050565b60006141f483836141d9565b60208301905092915050565b6000602082019050919050565b6000614218826141ad565b61422281856141b8565b935061422d836141c9565b8060005b8381101561425e57815161424588826141e8565b975061425083614200565b925050600181019050614231565b5085935050505092915050565b600060a0820190506142806000830188612f71565b61428d602083018761419e565b818103604083015261429f818661420d565b90506142ae6060830185613052565b6142bb6080830184612f71565b969550505050505056fea2646970667358221220e944b606f76842491b9e151759dbc09c2bc9d5d8667ddccf24f6e1dbc61f126d64736f6c63430008130033
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.