Latest 25 from a total of 137,215 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 46012190 | 58 mins ago | IN | 0 BNB | 0.00021793 | ||||
Transfer | 46012156 | 1 hrs ago | IN | 0 BNB | 0.00007991 | ||||
Approve | 46011943 | 1 hr ago | IN | 0 BNB | 0.00004729 | ||||
Transfer | 46010488 | 2 hrs ago | IN | 0 BNB | 0.00007261 | ||||
Approve | 46010279 | 2 hrs ago | IN | 0 BNB | 0.00008866 | ||||
Transfer | 46010165 | 2 hrs ago | IN | 0 BNB | 0.00007259 | ||||
Transfer | 46010138 | 2 hrs ago | IN | 0 BNB | 0.00007258 | ||||
Approve | 46009957 | 2 hrs ago | IN | 0 BNB | 0.00002747 | ||||
Transfer | 46009718 | 3 hrs ago | IN | 0 BNB | 0.00014529 | ||||
Transfer | 46009238 | 3 hrs ago | IN | 0 BNB | 0.00006783 | ||||
Transfer | 46008676 | 3 hrs ago | IN | 0 BNB | 0.00008716 | ||||
Approve | 46008611 | 3 hrs ago | IN | 0 BNB | 0.00004729 | ||||
Transfer | 46006696 | 5 hrs ago | IN | 0 BNB | 0.00043587 | ||||
Transfer | 46006261 | 5 hrs ago | IN | 0 BNB | 0.00025361 | ||||
Transfer | 46006182 | 5 hrs ago | IN | 0 BNB | 0.00007262 | ||||
Transfer | 46005010 | 6 hrs ago | IN | 0 BNB | 0.00014529 | ||||
Approve | 46005002 | 6 hrs ago | IN | 0 BNB | 0.00014189 | ||||
Transfer | 46004666 | 7 hrs ago | IN | 0 BNB | 0.00007991 | ||||
Transfer | 46003576 | 8 hrs ago | IN | 0 BNB | 0.0003332 | ||||
Transfer | 46003420 | 8 hrs ago | IN | 0 BNB | 0.00008718 | ||||
Transfer | 46002156 | 9 hrs ago | IN | 0 BNB | 0.00005075 | ||||
Transfer | 46001958 | 9 hrs ago | IN | 0 BNB | 0.00008718 | ||||
Approve | 46001902 | 9 hrs ago | IN | 0 BNB | 0.00004729 | ||||
Approve | 46001606 | 9 hrs ago | IN | 0 BNB | 0.00004722 | ||||
Approve | 46000846 | 10 hrs ago | IN | 0 BNB | 0.00004722 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
45950343 | 2 days ago | 0.79126837 BNB | ||||
45950343 | 2 days ago | 0.79126837 BNB | ||||
45950343 | 2 days ago | 0.09905027 BNB | ||||
45950343 | 2 days ago | 0.09905027 BNB | ||||
45921671 | 3 days ago | 0.77858498 BNB | ||||
45921671 | 3 days ago | 0.77858498 BNB | ||||
45921671 | 3 days ago | 0.09745725 BNB | ||||
45921671 | 3 days ago | 0.09745725 BNB | ||||
45903551 | 3 days ago | 0.8245147 BNB | ||||
45903551 | 3 days ago | 0.8245147 BNB | ||||
45903551 | 3 days ago | 0.10321088 BNB | ||||
45903551 | 3 days ago | 0.10321088 BNB | ||||
45884993 | 4 days ago | 0.8596786 BNB | ||||
45884993 | 4 days ago | 0.8596786 BNB | ||||
45884993 | 4 days ago | 0.10761506 BNB | ||||
45884993 | 4 days ago | 0.10761506 BNB | ||||
45817033 | 6 days ago | 0.91575264 BNB | ||||
45817033 | 6 days ago | 0.91575264 BNB | ||||
45817033 | 6 days ago | 0.11464366 BNB | ||||
45817033 | 6 days ago | 0.11464366 BNB | ||||
45783284 | 7 days ago | 1.08009313 BNB | ||||
45783284 | 7 days ago | 1.08009313 BNB | ||||
45783284 | 7 days ago | 0.13525007 BNB | ||||
45783284 | 7 days ago | 0.13525007 BNB | ||||
45775068 | 8 days ago | 1.0266498 BNB |
Loading...
Loading
Contract Name:
BabyBonk
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2023-12-15 */ // https://babybonkcoin.io // Twitter.com/BabyBonkCoin // t.me/BabyBonkBNB // SPDX-License-Identifier: MIT pragma solidity 0.8.19; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } 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); } library Address { function sendValue(address payable recipient, uint256 amount) internal returns(bool){ require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); return success; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 9; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract BabyBonk is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair = address(0xdead); mapping (address => bool) private _isExcludedFromFees; uint256 public liquidityFeeOnBuy; uint256 public liquidityFeeOnSell; uint256 public marketingFeeOnBuy; uint256 public marketingFeeOnSell; uint256 private _totalFeesOnBuy; uint256 private _totalFeesOnSell; uint256 private maxFee; uint256 public walletToWalletTransferFee; bool public pairSet; address public marketingWallet; uint256 public swapTokensAtAmount; bool private swapping; bool public swapEnabled; event ExcludeFromFees(address indexed account, bool isExcluded); event MarketingWalletChanged(address marketingWallet); event UpdateBuyFees(uint256 liquidityFeeOnBuy, uint256 marketingFeeOnBuy); event UpdateSellFees(uint256 liquidityFeeOnSell, uint256 marketingFeeOnSell); event UpdateWalletToWalletTransferFee(uint256 walletToWalletTransferFee); event SwapAndLiquify(uint256 tokensSwapped,uint256 bnbReceived,uint256 tokensIntoLiqudity); event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20("Baby Bonk", "BabyBonk") { address router; address pinkLock; if (block.chainid == 56) { router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router pinkLock = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE; // BSC PinkLock } else if (block.chainid == 97) { router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router pinkLock = 0x5E5b9bE5fd939c578ABE5800a90C566eeEbA44a5; // BSC Testnet PinkLock } else if (block.chainid == 1 || block.chainid == 5) { router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet pinkLock = 0x71B5759d73262FBb223956913ecF4ecC51057641; // ETH PinkLock } else { revert(); } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), type(uint256).max); liquidityFeeOnBuy = 1; liquidityFeeOnSell = 1; marketingFeeOnBuy = 4; marketingFeeOnSell = 4; maxFee = 25; _totalFeesOnBuy = liquidityFeeOnBuy + marketingFeeOnBuy; _totalFeesOnSell = liquidityFeeOnSell + marketingFeeOnSell; walletToWalletTransferFee = 0; marketingWallet = 0xF02Ac6721bD22549438CFd10bb4B521E4180ef78; maxTransactionLimitEnabled = true; _isExcludedFromMaxTxLimit[owner()] = true; _isExcludedFromMaxTxLimit[address(this)] = true; _isExcludedFromMaxTxLimit[address(0xdead)] = true; _isExcludedFromMaxTxLimit[marketingWallet] = true; _isExcludedFromMaxTxLimit[pinkLock] = true; maxWalletLimitEnabled = true; _isExcludedFromMaxWalletLimit[owner()] = true; _isExcludedFromMaxWalletLimit[address(this)] = true; _isExcludedFromMaxWalletLimit[address(0xdead)] = true; _isExcludedFromMaxWalletLimit[marketingWallet] = true; _isExcludedFromMaxWalletLimit[pinkLock] = true; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[pinkLock] = true; _mint(owner(), 420e15 * (10 ** decimals())); swapTokensAtAmount = totalSupply() / 5_000; maxTransactionAmountBuy = totalSupply() * 15 / 1000; maxTransactionAmountSell = totalSupply() * 15 / 1000; maxWalletAmount = totalSupply() * 15 / 1000; tradingEnabled = false; swapEnabled = false; } receive() external payable { } function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function setPair (address _uniswapV2Pair) external onlyOwner { require(!pairSet, "Cannot change the pair"); uniswapV2Pair = _uniswapV2Pair; } function pairIsSet() external onlyOwner { pairSet = true; } function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function updateBuyFees(uint256 _liquidityFeeOnBuy, uint256 _marketingFeeOnBuy) external onlyOwner { liquidityFeeOnBuy = _liquidityFeeOnBuy; marketingFeeOnBuy = _marketingFeeOnBuy; _totalFeesOnBuy = liquidityFeeOnBuy + marketingFeeOnBuy; require(_totalFeesOnBuy <= maxFee, "Total Fees cannot exceed the maximum"); emit UpdateBuyFees(liquidityFeeOnBuy, marketingFeeOnBuy); } function updateSellFees(uint256 _liquidityFeeOnSell, uint256 _marketingFeeOnSell) external onlyOwner { liquidityFeeOnSell = _liquidityFeeOnSell; marketingFeeOnSell = _marketingFeeOnSell; _totalFeesOnSell = liquidityFeeOnSell + marketingFeeOnSell; require(_totalFeesOnSell <= maxFee, "Total Fees cannot exceed the maximum"); emit UpdateSellFees(liquidityFeeOnSell, marketingFeeOnSell); } function updateWalletToWalletTransferFee(uint256 _walletToWalletTransferFee) external onlyOwner { require(_walletToWalletTransferFee <= maxFee, "Wallet to Wallet Transfer Fee cannot exceed the maximum"); walletToWalletTransferFee = _walletToWalletTransferFee; emit UpdateWalletToWalletTransferFee(walletToWalletTransferFee); } function changeMarketingWallet(address _marketingWallet) external onlyOwner{ require(_marketingWallet != marketingWallet,"Marketing wallet is already that address"); require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address"); marketingWallet = _marketingWallet; emit MarketingWalletChanged(marketingWallet); } bool public tradingEnabled; function enableTrading(address _uniswapV2Pair) external onlyOwner{ require(!tradingEnabled, "Trading already enabled."); tradingEnabled = true; swapEnabled = true; uniswapV2Pair = _uniswapV2Pair; } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } if (maxTransactionLimitEnabled) { if ((from == uniswapV2Pair || to == uniswapV2Pair) && !_isExcludedFromMaxTxLimit[from] && !_isExcludedFromMaxTxLimit[to] ) { if (from == uniswapV2Pair) { require( amount <= maxTransactionAmountBuy, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } else { require( amount <= maxTransactionAmountSell, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !swapping && to == uniswapV2Pair && _totalFeesOnBuy + _totalFeesOnSell > 0 && swapEnabled ) { swapping = true; uint256 totalFee = _totalFeesOnBuy + _totalFeesOnSell; uint256 liquidityShare = liquidityFeeOnBuy + liquidityFeeOnSell; uint256 marketingShare = marketingFeeOnBuy + marketingFeeOnSell; if (liquidityShare > 0) { uint256 liquidityTokens = contractTokenBalance * liquidityShare / totalFee; swapAndLiquify(liquidityTokens); } if (marketingShare > 0) { uint256 marketingTokens = contractTokenBalance * marketingShare / totalFee; swapAndSendMarketing(marketingTokens); } swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { _totalFees = _totalFeesOnBuy; } else if (to == uniswapV2Pair) { _totalFees = _totalFeesOnSell; } else { _totalFees = walletToWalletTransferFee; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } if (maxWalletLimitEnabled) { if (!_isExcludedFromMaxWalletLimit[from] && !_isExcludedFromMaxWalletLimit[to] && to != uniswapV2Pair ) { uint256 balance = balanceOf(to); require( balance + amount <= maxWalletAmount, "MaxWallet: Recipient exceeds the maxWalletAmount" ); } } super._transfer(from, to, amount); } function setSwapEnabled(bool _enabled) external onlyOwner{ require(swapEnabled != _enabled, "swapEnabled already at this state."); swapEnabled = _enabled; } function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{ require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply"); swapTokensAtAmount = newAmount; emit SwapTokensAtAmountUpdated(swapTokensAtAmount); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens / 2; uint256 otherHalf = tokens - half; uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( half, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; uniswapV2Router.addLiquidityETH{value: newBalance}( address(this), otherHalf, 0, 0, address(0xdead), block.timestamp ); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapAndSendMarketing(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; payable(marketingWallet).sendValue(newBalance); emit SwapAndSendMarketing(tokenAmount, newBalance); } mapping(address => bool) private _isExcludedFromMaxWalletLimit; bool public maxWalletLimitEnabled; uint256 public maxWalletAmount; event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded); event MaxWalletLimitStateChanged(bool maxWalletLimit); event MaxWalletLimitAmountChanged(uint256 maxWalletAmount); function setEnableMaxWalletLimit(bool enable) external onlyOwner { require(enable != maxWalletLimitEnabled,"Max wallet limit is already set to that state"); maxWalletLimitEnabled = enable; emit MaxWalletLimitStateChanged(maxWalletLimitEnabled); } function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner { require(_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%"); maxWalletAmount = _maxWalletAmount * (10 ** decimals()); emit MaxWalletLimitAmountChanged(maxWalletAmount); } function excludeFromMaxWallet(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxWalletLimit[account] != exclude,"Account is already set to that state"); require(account != address(this), "Can't set this address."); _isExcludedFromMaxWalletLimit[account] = exclude; emit ExcludedFromMaxWalletLimit(account, exclude); } function isExcludedFromMaxWalletLimit(address account) public view returns(bool) { return _isExcludedFromMaxWalletLimit[account]; } mapping(address => bool) private _isExcludedFromMaxTxLimit; bool public maxTransactionLimitEnabled; uint256 public maxTransactionAmountBuy; uint256 public maxTransactionAmountSell; event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded); event MaxTransactionLimitStateChanged(bool maxTransactionLimit); event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell); function setEnableMaxTransactionLimit(bool enable) external onlyOwner { require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state"); maxTransactionLimitEnabled = enable; emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled); } function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner { require( _maxTransactionAmountBuy >= (totalSupply() / (10 ** decimals())) / 1_000 && _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, "Max Transaction limis cannot be lower than 0.1% of total supply" ); maxTransactionAmountBuy = _maxTransactionAmountBuy * (10 ** decimals()); maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals()); emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell); } function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state"); require(account != address(this), "Can't set this address."); _isExcludedFromMaxTxLimit[account] = exclude; emit ExcludedFromMaxTransactionLimit(account, exclude); } function isExcludedFromMaxTransaction(address account) public view returns(bool) { return _isExcludedFromMaxTxLimit[account]; } }
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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","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":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","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":"liquidityFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityFeeOnSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxWallet","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairIsSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pairSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"}],"name":"setMaxTransactionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_walletToWalletTransferFee","type":"uint256"}],"name":"updateWalletToWalletTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200005457600080fd5b506040518060400160405280600981526020017f4261627920426f6e6b00000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f42616279426f6e6b0000000000000000000000000000000000000000000000008152508160039081620000d2919062001095565b508060049081620000e4919062001095565b5050506000620000f962000a8360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060008060384603620001d8577310ed43c718714eb63d5aa57b78b54704e256024e915073407993575c91ce7643a4d4ccacc9a98c36ee1bbe905062000266565b60614603620002155773d99d1c33f9fc3444f8101754abc46c52416550d19150735e5b9be5fd939c578abe5800a90c566eeeba44a5905062000265565b6001461480620002255750600546145b156200025f57737a250d5630b4cf539739df2c5dacb4c659f2488d91507371b5759d73262fbb223956913ecf4ecc51057641905062000264565b600080fd5b5b5b600082905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200030130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000a8b60201b60201c565b60016009819055506001600a819055506004600b819055506004600c819055506019600f81905550600b546009546200033b9190620011ab565b600d81905550600c54600a54620003539190620011ab565b600e81905550600060108190555073f02ac6721bd22549438cfd10bb4b521e4180ef78601160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601860006101000a81548160ff021916908315150217905550600160176000620003e762000c5c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560006101000a81548160ff021916908315150217905550600160146000620005ed62000c5c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620007d862000c5c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009866200094762000c5c60201b60201c565b6200095762000c8660201b60201c565b600a62000965919062001347565b6705d423c655aa00006200097a919062001398565b62000c8f60201b60201c565b6113886200099962000e0760201b60201c565b620009a5919062001412565b6012819055506103e8600f620009c062000e0760201b60201c565b620009cc919062001398565b620009d8919062001412565b6019819055506103e8600f620009f362000e0760201b60201c565b620009ff919062001398565b62000a0b919062001412565b601a819055506103e8600f62000a2662000e0760201b60201c565b62000a32919062001398565b62000a3e919062001412565b6016819055506000601360026101000a81548160ff0219169083151502179055506000601360016101000a81548160ff0219169083151502179055505050506200162b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af490620014d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b669062001569565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000c4f91906200159c565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006009905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cf89062001609565b60405180910390fd5b62000d156000838362000e1160201b60201c565b806002600082825462000d299190620011ab565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000d809190620011ab565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000de791906200159c565b60405180910390a362000e036000838362000e1660201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e9d57607f821691505b60208210810362000eb35762000eb262000e55565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ede565b62000f29868362000ede565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f7662000f7062000f6a8462000f41565b62000f4b565b62000f41565b9050919050565b6000819050919050565b62000f928362000f55565b62000faa62000fa18262000f7d565b84845462000eeb565b825550505050565b600090565b62000fc162000fb2565b62000fce81848462000f87565b505050565b5b8181101562000ff65762000fea60008262000fb7565b60018101905062000fd4565b5050565b601f82111562001045576200100f8162000eb9565b6200101a8462000ece565b810160208510156200102a578190505b62001042620010398562000ece565b83018262000fd3565b50505b505050565b600082821c905092915050565b60006200106a600019846008026200104a565b1980831691505092915050565b600062001085838362001057565b9150826002028217905092915050565b620010a08262000e1b565b67ffffffffffffffff811115620010bc57620010bb62000e26565b5b620010c8825462000e84565b620010d582828562000ffa565b600060209050601f8311600181146200110d5760008415620010f8578287015190505b62001104858262001077565b86555062001174565b601f1984166200111d8662000eb9565b60005b82811015620011475784890151825560018201915060208501945060208101905062001120565b8683101562001167578489015162001163601f89168262001057565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011b88262000f41565b9150620011c58362000f41565b9250828201905080821115620011e057620011df6200117c565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562001245578086048111156200121d576200121c6200117c565b5b60018516156200122d5780820291505b80810290506200123d85620011e6565b9450620011fd565b94509492505050565b60008262001260576001905062001333565b8162001270576000905062001333565b81600181146200128957600281146200129457620012ca565b600191505062001333565b60ff841115620012a957620012a86200117c565b5b8360020a915084821115620012c357620012c26200117c565b5b5062001333565b5060208310610133831016604e8410600b8410161715620013045782820a905083811115620012fe57620012fd6200117c565b5b62001333565b620013138484846001620011f3565b925090508184048111156200132d576200132c6200117c565b5b81810290505b9392505050565b600060ff82169050919050565b6000620013548262000f41565b915062001361836200133a565b9250620013907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200124e565b905092915050565b6000620013a58262000f41565b9150620013b28362000f41565b9250828202620013c28162000f41565b91508282048414831517620013dc57620013db6200117c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200141f8262000f41565b91506200142c8362000f41565b9250826200143f576200143e620013e3565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620014b96024836200144a565b9150620014c6826200145b565b604082019050919050565b60006020820190508181036000830152620014ec81620014aa565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620015516022836200144a565b91506200155e82620014f3565b604082019050919050565b60006020820190508181036000830152620015848162001542565b9050919050565b620015968162000f41565b82525050565b6000602082019050620015b360008301846200158b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620015f1601f836200144a565b9150620015fe82620015b9565b602082019050919050565b600060208201905081810360008301526200162481620015e2565b9050919050565b615fd9806200163b6000396000f3fe6080604052600436106102e85760003560e01c80636ddd171311610190578063a9059cbb116100dc578063d2fcc00111610095578063e01af92c1161006f578063e01af92c14610b49578063e2f4560514610b72578063f2fde38b14610b9d578063f9d0831a14610bc6576102ef565b8063d2fcc00114610ab8578063dc4c7dbc14610ae1578063dd62ed3e14610b0c576102ef565b8063a9059cbb146109ac578063aa4bde28146109e9578063afa4f3b214610a14578063b6f7f68114610a3d578063bb85c6d114610a66578063c024666814610a8f576102ef565b80638187f5161161014957806395d89b411161012357806395d89b41146108f05780639ffc7ec61461091b578063a457c2d714610932578063a8a69b9d1461096f576102ef565b80638187f51614610873578063880bcbc11461089c5780638da5cb5b146108c5576102ef565b80636ddd171314610773578063702509fd1461079e57806370a08231146107c9578063715018a61461080657806375f0a8741461081d5780637b3c83b114610848576102ef565b80632ba86bf21161024f5780634fbee1931161020857806359136fa5116101e257806359136fa5146106cb5780635fc2e596146106f657806364c98c441461072157806366ca9b831461074a576102ef565b80634fbee1931461063a5780635223a0da1461067757806356a6cabf146106a2576102ef565b80632ba86bf2146105265780632ce86fbf14610551578063313ce5671461057c57806339509351146105a757806349bd5a5e146105e45780634ada218b1461060f576102ef565b806318160ddd116102a157806318160ddd1461040457806318d9ceae1461042f57806321a9d82a1461046c57806323b872dd1461049757806327a14fc2146104d45780632a6c7dba146104fd576102ef565b80630105d0fd146102f457806302dbd8f81461031f57806306fdde031461034857806307980cb914610373578063095ea7b31461039c5780631694505e146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bef565b6040516103169190614479565b60405180910390f35b34801561032b57600080fd5b50610346600480360381019061034191906144c5565b610bf5565b005b34801561035457600080fd5b5061035d610d38565b60405161036a9190614595565b60405180910390f35b34801561037f57600080fd5b5061039a60048036038101906103959190614615565b610dca565b005b3480156103a857600080fd5b506103c360048036038101906103be9190614642565b610f2b565b6040516103d0919061469d565b60405180910390f35b3480156103e557600080fd5b506103ee610f49565b6040516103fb9190614717565b60405180910390f35b34801561041057600080fd5b50610419610f6f565b6040516104269190614479565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614615565b610f79565b604051610463919061469d565b60405180910390f35b34801561047857600080fd5b50610481610fcf565b60405161048e919061469d565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b99190614732565b610fe2565b6040516104cb919061469d565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190614785565b611101565b005b34801561050957600080fd5b50610524600480360381019061051f91906147de565b61126d565b005b34801561053257600080fd5b5061053b6113bc565b604051610548919061469d565b60405180910390f35b34801561055d57600080fd5b506105666113cf565b6040516105739190614479565b60405180910390f35b34801561058857600080fd5b506105916113d5565b60405161059e9190614827565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614642565b6113de565b6040516105db919061469d565b60405180910390f35b3480156105f057600080fd5b506105f961148a565b6040516106069190614851565b60405180910390f35b34801561061b57600080fd5b506106246114b0565b604051610631919061469d565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190614615565b6114c3565b60405161066e919061469d565b60405180910390f35b34801561068357600080fd5b5061068c611519565b604051610699919061469d565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c491906147de565b61152c565b005b3480156106d757600080fd5b506106e061167b565b6040516106ed9190614479565b60405180910390f35b34801561070257600080fd5b5061070b611681565b6040516107189190614479565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614785565b611687565b005b34801561075657600080fd5b50610771600480360381019061076c91906144c5565b6117a6565b005b34801561077f57600080fd5b506107886118e9565b604051610795919061469d565b60405180910390f35b3480156107aa57600080fd5b506107b36118fc565b6040516107c09190614479565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb9190614615565b611902565b6040516107fd9190614479565b60405180910390f35b34801561081257600080fd5b5061081b61194a565b005b34801561082957600080fd5b50610832611aa2565b60405161083f9190614851565b60405180910390f35b34801561085457600080fd5b5061085d611ac8565b60405161086a9190614479565b60405180910390f35b34801561087f57600080fd5b5061089a60048036038101906108959190614615565b611ace565b005b3480156108a857600080fd5b506108c360048036038101906108be919061486c565b611bf9565b005b3480156108d157600080fd5b506108da611e39565b6040516108e79190614851565b60405180910390f35b3480156108fc57600080fd5b50610905611e63565b6040516109129190614595565b60405180910390f35b34801561092757600080fd5b50610930611ef5565b005b34801561093e57600080fd5b5061095960048036038101906109549190614642565b611fa9565b604051610966919061469d565b60405180910390f35b34801561097b57600080fd5b5061099660048036038101906109919190614615565b612094565b6040516109a3919061469d565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce9190614642565b6120ea565b6040516109e0919061469d565b60405180910390f35b3480156109f557600080fd5b506109fe612108565b604051610a0b9190614479565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a369190614785565b61210e565b005b348015610a4957600080fd5b50610a646004803603810190610a5f91906144c5565b61223f565b005b348015610a7257600080fd5b50610a8d6004803603810190610a889190614615565b612414565b005b348015610a9b57600080fd5b50610ab66004803603810190610ab1919061486c565b612647565b005b348015610ac457600080fd5b50610adf6004803603810190610ada919061486c565b612819565b005b348015610aed57600080fd5b50610af6612a59565b604051610b039190614479565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e91906148ac565b612a5f565b604051610b409190614479565b60405180910390f35b348015610b5557600080fd5b50610b706004803603810190610b6b91906147de565b612ae6565b005b348015610b7e57600080fd5b50610b87612bef565b604051610b949190614479565b60405180910390f35b348015610ba957600080fd5b50610bc46004803603810190610bbf9190614615565b612bf5565b005b348015610bd257600080fd5b50610bed6004803603810190610be89190614615565b612dbb565b005b60195481565b610bfd61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8390614938565b60405180910390fd5b81600a8190555080600c81905550600c54600a54610caa9190614987565b600e81905550600f54600e541115610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90614a2d565b60405180910390fd5b7f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600a54600c54604051610d2c929190614a4d565b60405180910390a15050565b606060038054610d4790614aa5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7390614aa5565b8015610dc05780601f10610d9557610100808354040283529160200191610dc0565b820191906000526020600020905b815481529060010190602001808311610da357829003601f168201915b5050505050905090565b610dd261302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890614938565b60405180910390fd5b601360029054906101000a900460ff1615610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890614b22565b60405180910390fd5b6001601360026101000a81548160ff0219169083151502179055506001601360016101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610f3f610f3861302b565b8484613033565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601560009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061102e61302b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110ea57828110156110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc90614bb4565b60405180910390fd5b6110e9856110e161302b565b858403613033565b5b6110f58585856131fc565b60019150509392505050565b61110961302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90614938565b60405180910390fd5b60646111a26113d5565b600a6111ae9190614d07565b6111b6610f6f565b6111c09190614d81565b6111ca9190614d81565b81101561120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390614e24565b60405180910390fd5b6112146113d5565b600a6112209190614d07565b8161122b9190614e44565b6016819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb59426016546040516112629190614479565b60405180910390a150565b61127561302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90614938565b60405180910390fd5b601560009054906101000a900460ff16151581151503611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090614ef8565b60405180910390fd5b80601560006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601560009054906101000a900460ff166040516113b1919061469d565b60405180910390a150565b601860009054906101000a900460ff1681565b600a5481565b60006009905090565b60006114806113eb61302b565b8484600160006113f961302b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147b9190614987565b613033565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900460ff1681565b61153461302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90614938565b60405180910390fd5b601860009054906101000a900460ff16151581151503611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90614f8a565b60405180910390fd5b80601860006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601860009054906101000a900460ff16604051611670919061469d565b60405180910390a150565b601a5481565b600b5481565b61168f61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590614938565b60405180910390fd5b600f54811115611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a9061501c565b60405180910390fd5b806010819055507f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b60105460405161179b9190614479565b60405180910390a150565b6117ae61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490614938565b60405180910390fd5b8160098190555080600b81905550600b5460095461185b9190614987565b600d81905550600f54600d5411156118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90614a2d565b60405180910390fd5b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600954600b546040516118dd929190614a4d565b60405180910390a15050565b601360019054906101000a900460ff1681565b60105481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61195261302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890614938565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b611ad661302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90614938565b60405180910390fd5b601160009054906101000a900460ff1615611bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bac90615088565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c0161302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8790614938565b60405180910390fd5b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d199061511a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8790615186565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1082604051611e2d919061469d565b60405180910390a25050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611e7290614aa5565b80601f0160208091040260200160405190810160405280929190818152602001828054611e9e90614aa5565b8015611eeb5780601f10611ec057610100808354040283529160200191611eeb565b820191906000526020600020905b815481529060010190602001808311611ece57829003601f168201915b5050505050905090565b611efd61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8390614938565b60405180910390fd5b6001601160006101000a81548160ff021916908315150217905550565b60008060016000611fb861302b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c90615218565b60405180910390fd5b61208961208061302b565b85858403613033565b600191505092915050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006120fe6120f761302b565b84846131fc565b6001905092915050565b60165481565b61211661302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90614938565b60405180910390fd5b620f42406121b1610f6f565b6121bb9190614d81565b81116121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f3906152aa565b60405180910390fd5b806012819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1456012546040516122349190614479565b60405180910390a150565b61224761302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614938565b60405180910390fd5b6103e86122e16113d5565b600a6122ed9190614d07565b6122f5610f6f565b6122ff9190614d81565b6123099190614d81565b821015801561234a57506103e861231e6113d5565b600a61232a9190614d07565b612332610f6f565b61233c9190614d81565b6123469190614d81565b8110155b612389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123809061533c565b60405180910390fd5b6123916113d5565b600a61239d9190614d07565b826123a89190614e44565b6019819055506123b66113d5565b600a6123c29190614d07565b816123cd9190614e44565b601a819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601954601a54604051612408929190614a4d565b60405180910390a15050565b61241c61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a290614938565b60405180910390fd5b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361253b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612532906153ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a190615460565b60405180910390fd5b80601160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161263c9190614851565b60405180910390a150565b61264f61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590614938565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612767906154f2565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161280d919061469d565b60405180910390a25050565b61282161302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a790614938565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612942576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129399061511a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a790615186565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c82604051612a4d919061469d565b60405180910390a25050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612aee61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7490614938565b60405180910390fd5b801515601360019054906101000a900460ff16151503612bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc990615584565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b60125481565b612bfd61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8390614938565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf290615616565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612dc361302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4990614938565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb7906156a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612f2357612f1d473373ffffffffffffffffffffffffffffffffffffffff16613b3090919063ffffffff16565b50613028565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612f639190614851565b602060405180830381865afa158015612f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa491906156dd565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612fe192919061570a565b6020604051808303816000875af1158015613000573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130249190615748565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613099906157e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310890615879565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131ef9190614479565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361326b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132629061590b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d19061599d565b60405180910390fd5b601360029054906101000a900460ff168061333e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806133925750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6133d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c890615a09565b60405180910390fd5b600081036133ea576133e583836000613beb565b613b2b565b601860009054906101000a900460ff161561364057600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806134a85750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156134fe5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135545750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561363f57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135f8576019548111156135f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ea90615a9b565b60405180910390fd5b61363e565b601a5481111561363d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363490615a9b565b60405180910390fd5b5b5b5b600061364b30611902565b9050600060125482101590508080156136715750601360009054906101000a900460ff16155b80156136ca5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156136e557506000600e54600d546136e39190614987565b115b80156136fd5750601360019054906101000a900460ff165b156137d6576001601360006101000a81548160ff0219169083151502179055506000600e54600d5461372f9190614987565b90506000600a546009546137439190614987565b90506000600c54600b546137579190614987565b905060008211156137885760008383876137719190614e44565b61377b9190614d81565b905061378681613e6a565b505b60008111156137b75760008382876137a09190614e44565b6137aa9190614d81565b90506137b5816141a4565b505b6000601360006101000a81548160ff0219169083151502179055505050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138795750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806138905750601360009054906101000a900460ff165b1561389e5760009050613964565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036138fd57600d549050613963565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361395c57600e549050613962565b60105490505b5b5b60008111156139a45760006064828661397d9190614e44565b6139879190614d81565b905080856139959190615abb565b94506139a2873083613beb565b505b601560009054906101000a900460ff1615613b1c57601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613a5d5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613ab75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613b1b576000613ac786611902565b90506016548582613ad89190614987565b1115613b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b1090615b61565b60405180910390fd5b505b5b613b27868686613beb565b5050505b505050565b600081471015613b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6c90615bcd565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051613b9b90615c1e565b60006040518083038185875af1925050503d8060008114613bd8576040519150601f19603f3d011682016040523d82523d6000602084013e613bdd565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c519061590b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cc09061599d565b60405180910390fd5b613cd4838383614456565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5190615ca5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ded9190614987565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e519190614479565b60405180910390a3613e6484848461445b565b50505050565b6000600282613e799190614d81565b905060008183613e899190615abb565b905060004790506000600267ffffffffffffffff811115613ead57613eac615cc5565b5b604051908082528060200260200182016040528015613edb5781602001602082028036833780820191505090505b5090503081600081518110613ef357613ef2615cf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fbe9190615d38565b81600181518110613fd257613fd1615cf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401614070959493929190615e5e565b600060405180830381600087803b15801561408a57600080fd5b505af115801561409e573d6000803e3d6000fd5b50505050600082476140b09190615abb565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b815260040161411b96959493929190615eb8565b60606040518083038185885af1158015614139573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061415e9190615f19565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405161419493929190615f6c565b60405180910390a1505050505050565b60004790506000600267ffffffffffffffff8111156141c6576141c5615cc5565b5b6040519080825280602002602001820160405280156141f45781602001602082028036833780820191505090505b509050308160008151811061420c5761420b615cf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d79190615d38565b816001815181106142eb576142ea615cf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401614389959493929190615e5e565b600060405180830381600087803b1580156143a357600080fd5b505af11580156143b7573d6000803e3d6000fd5b50505050600082476143c99190615abb565b905061441681601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613b3090919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e629998482604051614448929190614a4d565b60405180910390a150505050565b505050565b505050565b6000819050919050565b61447381614460565b82525050565b600060208201905061448e600083018461446a565b92915050565b600080fd5b6144a281614460565b81146144ad57600080fd5b50565b6000813590506144bf81614499565b92915050565b600080604083850312156144dc576144db614494565b5b60006144ea858286016144b0565b92505060206144fb858286016144b0565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561453f578082015181840152602081019050614524565b60008484015250505050565b6000601f19601f8301169050919050565b600061456782614505565b6145718185614510565b9350614581818560208601614521565b61458a8161454b565b840191505092915050565b600060208201905081810360008301526145af818461455c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145e2826145b7565b9050919050565b6145f2816145d7565b81146145fd57600080fd5b50565b60008135905061460f816145e9565b92915050565b60006020828403121561462b5761462a614494565b5b600061463984828501614600565b91505092915050565b6000806040838503121561465957614658614494565b5b600061466785828601614600565b9250506020614678858286016144b0565b9150509250929050565b60008115159050919050565b61469781614682565b82525050565b60006020820190506146b2600083018461468e565b92915050565b6000819050919050565b60006146dd6146d86146d3846145b7565b6146b8565b6145b7565b9050919050565b60006146ef826146c2565b9050919050565b6000614701826146e4565b9050919050565b614711816146f6565b82525050565b600060208201905061472c6000830184614708565b92915050565b60008060006060848603121561474b5761474a614494565b5b600061475986828701614600565b935050602061476a86828701614600565b925050604061477b868287016144b0565b9150509250925092565b60006020828403121561479b5761479a614494565b5b60006147a9848285016144b0565b91505092915050565b6147bb81614682565b81146147c657600080fd5b50565b6000813590506147d8816147b2565b92915050565b6000602082840312156147f4576147f3614494565b5b6000614802848285016147c9565b91505092915050565b600060ff82169050919050565b6148218161480b565b82525050565b600060208201905061483c6000830184614818565b92915050565b61484b816145d7565b82525050565b60006020820190506148666000830184614842565b92915050565b6000806040838503121561488357614882614494565b5b600061489185828601614600565b92505060206148a2858286016147c9565b9150509250929050565b600080604083850312156148c3576148c2614494565b5b60006148d185828601614600565b92505060206148e285828601614600565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614922602083614510565b915061492d826148ec565b602082019050919050565b6000602082019050818103600083015261495181614915565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061499282614460565b915061499d83614460565b92508282019050808211156149b5576149b4614958565b5b92915050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000614a17602483614510565b9150614a22826149bb565b604082019050919050565b60006020820190508181036000830152614a4681614a0a565b9050919050565b6000604082019050614a62600083018561446a565b614a6f602083018461446a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614abd57607f821691505b602082108103614ad057614acf614a76565b5b50919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000614b0c601883614510565b9150614b1782614ad6565b602082019050919050565b60006020820190508181036000830152614b3b81614aff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614b9e602883614510565b9150614ba982614b42565b604082019050919050565b60006020820190508181036000830152614bcd81614b91565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115614c2b57808604811115614c0757614c06614958565b5b6001851615614c165780820291505b8081029050614c2485614bd4565b9450614beb565b94509492505050565b600082614c445760019050614d00565b81614c525760009050614d00565b8160018114614c685760028114614c7257614ca1565b6001915050614d00565b60ff841115614c8457614c83614958565b5b8360020a915084821115614c9b57614c9a614958565b5b50614d00565b5060208310610133831016604e8410600b8410161715614cd65782820a905083811115614cd157614cd0614958565b5b614d00565b614ce38484846001614be1565b92509050818404811115614cfa57614cf9614958565b5b81810290505b9392505050565b6000614d1282614460565b9150614d1d8361480b565b9250614d4a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614c34565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d8c82614460565b9150614d9783614460565b925082614da757614da6614d52565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614e0e602d83614510565b9150614e1982614db2565b604082019050919050565b60006020820190508181036000830152614e3d81614e01565b9050919050565b6000614e4f82614460565b9150614e5a83614460565b9250828202614e6881614460565b91508282048414831517614e7f57614e7e614958565b5b5092915050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b6000614ee2602d83614510565b9150614eed82614e86565b604082019050919050565b60006020820190508181036000830152614f1181614ed5565b9050919050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b6000614f74603283614510565b9150614f7f82614f18565b604082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160008201527f6e6e6f742065786365656420746865206d6178696d756d000000000000000000602082015250565b6000615006603783614510565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f43616e6e6f74206368616e676520746865207061697200000000000000000000600082015250565b6000615072601683614510565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000615104602483614510565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b6000615170601783614510565b915061517b8261513a565b602082019050919050565b6000602082019050818103600083015261519f81615163565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000615202602583614510565b915061520d826151a6565b604082019050919050565b60006020820190508181036000830152615231816151f5565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000615294603f83614510565b915061529f82615238565b604082019050919050565b600060208201905081810360008301526152c381615287565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000615326603f83614510565b9150615331826152ca565b604082019050919050565b6000602082019050818103600083015261535581615319565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006153b8602883614510565b91506153c38261535c565b604082019050919050565b600060208201905081810360008301526153e7816153ab565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b600061544a602b83614510565b9150615455826153ee565b604082019050919050565b600060208201905081810360008301526154798161543d565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006154dc602a83614510565b91506154e782615480565b604082019050919050565b6000602082019050818103600083015261550b816154cf565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b600061556e602283614510565b915061557982615512565b604082019050919050565b6000602082019050818103600083015261559d81615561565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615600602683614510565b915061560b826155a4565b604082019050919050565b6000602082019050818103600083015261562f816155f3565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000615692603783614510565b915061569d82615636565b604082019050919050565b600060208201905081810360008301526156c181615685565b9050919050565b6000815190506156d781614499565b92915050565b6000602082840312156156f3576156f2614494565b5b6000615701848285016156c8565b91505092915050565b600060408201905061571f6000830185614842565b61572c602083018461446a565b9392505050565b600081519050615742816147b2565b92915050565b60006020828403121561575e5761575d614494565b5b600061576c84828501615733565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006157d1602483614510565b91506157dc82615775565b604082019050919050565b60006020820190508181036000830152615800816157c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615863602283614510565b915061586e82615807565b604082019050919050565b6000602082019050818103600083015261589281615856565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006158f5602583614510565b915061590082615899565b604082019050919050565b60006020820190508181036000830152615924816158e8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615987602383614510565b91506159928261592b565b604082019050919050565b600060208201905081810360008301526159b68161597a565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006159f3601883614510565b91506159fe826159bd565b602082019050919050565b60006020820190508181036000830152615a22816159e6565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000615a85603b83614510565b9150615a9082615a29565b604082019050919050565b60006020820190508181036000830152615ab481615a78565b9050919050565b6000615ac682614460565b9150615ad183614460565b9250828203905081811115615ae957615ae8614958565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000615b4b603083614510565b9150615b5682615aef565b604082019050919050565b60006020820190508181036000830152615b7a81615b3e565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000615bb7601d83614510565b9150615bc282615b81565b602082019050919050565b60006020820190508181036000830152615be681615baa565b9050919050565b600081905092915050565b50565b6000615c08600083615bed565b9150615c1382615bf8565b600082019050919050565b6000615c2982615bfb565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615c8f602683614510565b9150615c9a82615c33565b604082019050919050565b60006020820190508181036000830152615cbe81615c82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615d32816145e9565b92915050565b600060208284031215615d4e57615d4d614494565b5b6000615d5c84828501615d23565b91505092915050565b6000819050919050565b6000615d8a615d85615d8084615d65565b6146b8565b614460565b9050919050565b615d9a81615d6f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615dd5816145d7565b82525050565b6000615de78383615dcc565b60208301905092915050565b6000602082019050919050565b6000615e0b82615da0565b615e158185615dab565b9350615e2083615dbc565b8060005b83811015615e51578151615e388882615ddb565b9750615e4383615df3565b925050600181019050615e24565b5085935050505092915050565b600060a082019050615e73600083018861446a565b615e806020830187615d91565b8181036040830152615e928186615e00565b9050615ea16060830185614842565b615eae608083018461446a565b9695505050505050565b600060c082019050615ecd6000830189614842565b615eda602083018861446a565b615ee76040830187615d91565b615ef46060830186615d91565b615f016080830185614842565b615f0e60a083018461446a565b979650505050505050565b600080600060608486031215615f3257615f31614494565b5b6000615f40868287016156c8565b9350506020615f51868287016156c8565b9250506040615f62868287016156c8565b9150509250925092565b6000606082019050615f81600083018661446a565b615f8e602083018561446a565b615f9b604083018461446a565b94935050505056fea26469706673582212202e9b4c80901a7bc2d54684b9d27939cc980147c3756bdce4fbf0cbf33df82f9364736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c80636ddd171311610190578063a9059cbb116100dc578063d2fcc00111610095578063e01af92c1161006f578063e01af92c14610b49578063e2f4560514610b72578063f2fde38b14610b9d578063f9d0831a14610bc6576102ef565b8063d2fcc00114610ab8578063dc4c7dbc14610ae1578063dd62ed3e14610b0c576102ef565b8063a9059cbb146109ac578063aa4bde28146109e9578063afa4f3b214610a14578063b6f7f68114610a3d578063bb85c6d114610a66578063c024666814610a8f576102ef565b80638187f5161161014957806395d89b411161012357806395d89b41146108f05780639ffc7ec61461091b578063a457c2d714610932578063a8a69b9d1461096f576102ef565b80638187f51614610873578063880bcbc11461089c5780638da5cb5b146108c5576102ef565b80636ddd171314610773578063702509fd1461079e57806370a08231146107c9578063715018a61461080657806375f0a8741461081d5780637b3c83b114610848576102ef565b80632ba86bf21161024f5780634fbee1931161020857806359136fa5116101e257806359136fa5146106cb5780635fc2e596146106f657806364c98c441461072157806366ca9b831461074a576102ef565b80634fbee1931461063a5780635223a0da1461067757806356a6cabf146106a2576102ef565b80632ba86bf2146105265780632ce86fbf14610551578063313ce5671461057c57806339509351146105a757806349bd5a5e146105e45780634ada218b1461060f576102ef565b806318160ddd116102a157806318160ddd1461040457806318d9ceae1461042f57806321a9d82a1461046c57806323b872dd1461049757806327a14fc2146104d45780632a6c7dba146104fd576102ef565b80630105d0fd146102f457806302dbd8f81461031f57806306fdde031461034857806307980cb914610373578063095ea7b31461039c5780631694505e146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bef565b6040516103169190614479565b60405180910390f35b34801561032b57600080fd5b50610346600480360381019061034191906144c5565b610bf5565b005b34801561035457600080fd5b5061035d610d38565b60405161036a9190614595565b60405180910390f35b34801561037f57600080fd5b5061039a60048036038101906103959190614615565b610dca565b005b3480156103a857600080fd5b506103c360048036038101906103be9190614642565b610f2b565b6040516103d0919061469d565b60405180910390f35b3480156103e557600080fd5b506103ee610f49565b6040516103fb9190614717565b60405180910390f35b34801561041057600080fd5b50610419610f6f565b6040516104269190614479565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614615565b610f79565b604051610463919061469d565b60405180910390f35b34801561047857600080fd5b50610481610fcf565b60405161048e919061469d565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b99190614732565b610fe2565b6040516104cb919061469d565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190614785565b611101565b005b34801561050957600080fd5b50610524600480360381019061051f91906147de565b61126d565b005b34801561053257600080fd5b5061053b6113bc565b604051610548919061469d565b60405180910390f35b34801561055d57600080fd5b506105666113cf565b6040516105739190614479565b60405180910390f35b34801561058857600080fd5b506105916113d5565b60405161059e9190614827565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614642565b6113de565b6040516105db919061469d565b60405180910390f35b3480156105f057600080fd5b506105f961148a565b6040516106069190614851565b60405180910390f35b34801561061b57600080fd5b506106246114b0565b604051610631919061469d565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190614615565b6114c3565b60405161066e919061469d565b60405180910390f35b34801561068357600080fd5b5061068c611519565b604051610699919061469d565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c491906147de565b61152c565b005b3480156106d757600080fd5b506106e061167b565b6040516106ed9190614479565b60405180910390f35b34801561070257600080fd5b5061070b611681565b6040516107189190614479565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614785565b611687565b005b34801561075657600080fd5b50610771600480360381019061076c91906144c5565b6117a6565b005b34801561077f57600080fd5b506107886118e9565b604051610795919061469d565b60405180910390f35b3480156107aa57600080fd5b506107b36118fc565b6040516107c09190614479565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb9190614615565b611902565b6040516107fd9190614479565b60405180910390f35b34801561081257600080fd5b5061081b61194a565b005b34801561082957600080fd5b50610832611aa2565b60405161083f9190614851565b60405180910390f35b34801561085457600080fd5b5061085d611ac8565b60405161086a9190614479565b60405180910390f35b34801561087f57600080fd5b5061089a60048036038101906108959190614615565b611ace565b005b3480156108a857600080fd5b506108c360048036038101906108be919061486c565b611bf9565b005b3480156108d157600080fd5b506108da611e39565b6040516108e79190614851565b60405180910390f35b3480156108fc57600080fd5b50610905611e63565b6040516109129190614595565b60405180910390f35b34801561092757600080fd5b50610930611ef5565b005b34801561093e57600080fd5b5061095960048036038101906109549190614642565b611fa9565b604051610966919061469d565b60405180910390f35b34801561097b57600080fd5b5061099660048036038101906109919190614615565b612094565b6040516109a3919061469d565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce9190614642565b6120ea565b6040516109e0919061469d565b60405180910390f35b3480156109f557600080fd5b506109fe612108565b604051610a0b9190614479565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a369190614785565b61210e565b005b348015610a4957600080fd5b50610a646004803603810190610a5f91906144c5565b61223f565b005b348015610a7257600080fd5b50610a8d6004803603810190610a889190614615565b612414565b005b348015610a9b57600080fd5b50610ab66004803603810190610ab1919061486c565b612647565b005b348015610ac457600080fd5b50610adf6004803603810190610ada919061486c565b612819565b005b348015610aed57600080fd5b50610af6612a59565b604051610b039190614479565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e91906148ac565b612a5f565b604051610b409190614479565b60405180910390f35b348015610b5557600080fd5b50610b706004803603810190610b6b91906147de565b612ae6565b005b348015610b7e57600080fd5b50610b87612bef565b604051610b949190614479565b60405180910390f35b348015610ba957600080fd5b50610bc46004803603810190610bbf9190614615565b612bf5565b005b348015610bd257600080fd5b50610bed6004803603810190610be89190614615565b612dbb565b005b60195481565b610bfd61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8390614938565b60405180910390fd5b81600a8190555080600c81905550600c54600a54610caa9190614987565b600e81905550600f54600e541115610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90614a2d565b60405180910390fd5b7f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600a54600c54604051610d2c929190614a4d565b60405180910390a15050565b606060038054610d4790614aa5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7390614aa5565b8015610dc05780601f10610d9557610100808354040283529160200191610dc0565b820191906000526020600020905b815481529060010190602001808311610da357829003601f168201915b5050505050905090565b610dd261302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890614938565b60405180910390fd5b601360029054906101000a900460ff1615610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890614b22565b60405180910390fd5b6001601360026101000a81548160ff0219169083151502179055506001601360016101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610f3f610f3861302b565b8484613033565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601560009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061102e61302b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110ea57828110156110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc90614bb4565b60405180910390fd5b6110e9856110e161302b565b858403613033565b5b6110f58585856131fc565b60019150509392505050565b61110961302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90614938565b60405180910390fd5b60646111a26113d5565b600a6111ae9190614d07565b6111b6610f6f565b6111c09190614d81565b6111ca9190614d81565b81101561120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390614e24565b60405180910390fd5b6112146113d5565b600a6112209190614d07565b8161122b9190614e44565b6016819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb59426016546040516112629190614479565b60405180910390a150565b61127561302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90614938565b60405180910390fd5b601560009054906101000a900460ff16151581151503611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090614ef8565b60405180910390fd5b80601560006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601560009054906101000a900460ff166040516113b1919061469d565b60405180910390a150565b601860009054906101000a900460ff1681565b600a5481565b60006009905090565b60006114806113eb61302b565b8484600160006113f961302b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147b9190614987565b613033565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900460ff1681565b61153461302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90614938565b60405180910390fd5b601860009054906101000a900460ff16151581151503611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90614f8a565b60405180910390fd5b80601860006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601860009054906101000a900460ff16604051611670919061469d565b60405180910390a150565b601a5481565b600b5481565b61168f61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590614938565b60405180910390fd5b600f54811115611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a9061501c565b60405180910390fd5b806010819055507f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b60105460405161179b9190614479565b60405180910390a150565b6117ae61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490614938565b60405180910390fd5b8160098190555080600b81905550600b5460095461185b9190614987565b600d81905550600f54600d5411156118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90614a2d565b60405180910390fd5b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600954600b546040516118dd929190614a4d565b60405180910390a15050565b601360019054906101000a900460ff1681565b60105481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61195261302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890614938565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b611ad661302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90614938565b60405180910390fd5b601160009054906101000a900460ff1615611bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bac90615088565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c0161302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8790614938565b60405180910390fd5b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d199061511a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8790615186565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1082604051611e2d919061469d565b60405180910390a25050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611e7290614aa5565b80601f0160208091040260200160405190810160405280929190818152602001828054611e9e90614aa5565b8015611eeb5780601f10611ec057610100808354040283529160200191611eeb565b820191906000526020600020905b815481529060010190602001808311611ece57829003601f168201915b5050505050905090565b611efd61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8390614938565b60405180910390fd5b6001601160006101000a81548160ff021916908315150217905550565b60008060016000611fb861302b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c90615218565b60405180910390fd5b61208961208061302b565b85858403613033565b600191505092915050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006120fe6120f761302b565b84846131fc565b6001905092915050565b60165481565b61211661302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90614938565b60405180910390fd5b620f42406121b1610f6f565b6121bb9190614d81565b81116121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f3906152aa565b60405180910390fd5b806012819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1456012546040516122349190614479565b60405180910390a150565b61224761302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614938565b60405180910390fd5b6103e86122e16113d5565b600a6122ed9190614d07565b6122f5610f6f565b6122ff9190614d81565b6123099190614d81565b821015801561234a57506103e861231e6113d5565b600a61232a9190614d07565b612332610f6f565b61233c9190614d81565b6123469190614d81565b8110155b612389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123809061533c565b60405180910390fd5b6123916113d5565b600a61239d9190614d07565b826123a89190614e44565b6019819055506123b66113d5565b600a6123c29190614d07565b816123cd9190614e44565b601a819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601954601a54604051612408929190614a4d565b60405180910390a15050565b61241c61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a290614938565b60405180910390fd5b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361253b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612532906153ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a190615460565b60405180910390fd5b80601160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161263c9190614851565b60405180910390a150565b61264f61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590614938565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612767906154f2565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161280d919061469d565b60405180910390a25050565b61282161302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a790614938565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612942576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129399061511a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a790615186565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c82604051612a4d919061469d565b60405180910390a25050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612aee61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7490614938565b60405180910390fd5b801515601360019054906101000a900460ff16151503612bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc990615584565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b60125481565b612bfd61302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8390614938565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf290615616565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612dc361302b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4990614938565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb7906156a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612f2357612f1d473373ffffffffffffffffffffffffffffffffffffffff16613b3090919063ffffffff16565b50613028565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612f639190614851565b602060405180830381865afa158015612f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa491906156dd565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612fe192919061570a565b6020604051808303816000875af1158015613000573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130249190615748565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613099906157e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310890615879565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131ef9190614479565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361326b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132629061590b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d19061599d565b60405180910390fd5b601360029054906101000a900460ff168061333e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806133925750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6133d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c890615a09565b60405180910390fd5b600081036133ea576133e583836000613beb565b613b2b565b601860009054906101000a900460ff161561364057600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806134a85750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156134fe5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135545750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561363f57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135f8576019548111156135f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ea90615a9b565b60405180910390fd5b61363e565b601a5481111561363d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363490615a9b565b60405180910390fd5b5b5b5b600061364b30611902565b9050600060125482101590508080156136715750601360009054906101000a900460ff16155b80156136ca5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156136e557506000600e54600d546136e39190614987565b115b80156136fd5750601360019054906101000a900460ff165b156137d6576001601360006101000a81548160ff0219169083151502179055506000600e54600d5461372f9190614987565b90506000600a546009546137439190614987565b90506000600c54600b546137579190614987565b905060008211156137885760008383876137719190614e44565b61377b9190614d81565b905061378681613e6a565b505b60008111156137b75760008382876137a09190614e44565b6137aa9190614d81565b90506137b5816141a4565b505b6000601360006101000a81548160ff0219169083151502179055505050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138795750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806138905750601360009054906101000a900460ff165b1561389e5760009050613964565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036138fd57600d549050613963565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361395c57600e549050613962565b60105490505b5b5b60008111156139a45760006064828661397d9190614e44565b6139879190614d81565b905080856139959190615abb565b94506139a2873083613beb565b505b601560009054906101000a900460ff1615613b1c57601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613a5d5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613ab75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613b1b576000613ac786611902565b90506016548582613ad89190614987565b1115613b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b1090615b61565b60405180910390fd5b505b5b613b27868686613beb565b5050505b505050565b600081471015613b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6c90615bcd565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051613b9b90615c1e565b60006040518083038185875af1925050503d8060008114613bd8576040519150601f19603f3d011682016040523d82523d6000602084013e613bdd565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c519061590b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cc09061599d565b60405180910390fd5b613cd4838383614456565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5190615ca5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ded9190614987565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e519190614479565b60405180910390a3613e6484848461445b565b50505050565b6000600282613e799190614d81565b905060008183613e899190615abb565b905060004790506000600267ffffffffffffffff811115613ead57613eac615cc5565b5b604051908082528060200260200182016040528015613edb5781602001602082028036833780820191505090505b5090503081600081518110613ef357613ef2615cf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fbe9190615d38565b81600181518110613fd257613fd1615cf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401614070959493929190615e5e565b600060405180830381600087803b15801561408a57600080fd5b505af115801561409e573d6000803e3d6000fd5b50505050600082476140b09190615abb565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b815260040161411b96959493929190615eb8565b60606040518083038185885af1158015614139573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061415e9190615f19565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405161419493929190615f6c565b60405180910390a1505050505050565b60004790506000600267ffffffffffffffff8111156141c6576141c5615cc5565b5b6040519080825280602002602001820160405280156141f45781602001602082028036833780820191505090505b509050308160008151811061420c5761420b615cf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d79190615d38565b816001815181106142eb576142ea615cf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401614389959493929190615e5e565b600060405180830381600087803b1580156143a357600080fd5b505af11580156143b7573d6000803e3d6000fd5b50505050600082476143c99190615abb565b905061441681601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613b3090919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e629998482604051614448929190614a4d565b60405180910390a150505050565b505050565b505050565b6000819050919050565b61447381614460565b82525050565b600060208201905061448e600083018461446a565b92915050565b600080fd5b6144a281614460565b81146144ad57600080fd5b50565b6000813590506144bf81614499565b92915050565b600080604083850312156144dc576144db614494565b5b60006144ea858286016144b0565b92505060206144fb858286016144b0565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561453f578082015181840152602081019050614524565b60008484015250505050565b6000601f19601f8301169050919050565b600061456782614505565b6145718185614510565b9350614581818560208601614521565b61458a8161454b565b840191505092915050565b600060208201905081810360008301526145af818461455c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145e2826145b7565b9050919050565b6145f2816145d7565b81146145fd57600080fd5b50565b60008135905061460f816145e9565b92915050565b60006020828403121561462b5761462a614494565b5b600061463984828501614600565b91505092915050565b6000806040838503121561465957614658614494565b5b600061466785828601614600565b9250506020614678858286016144b0565b9150509250929050565b60008115159050919050565b61469781614682565b82525050565b60006020820190506146b2600083018461468e565b92915050565b6000819050919050565b60006146dd6146d86146d3846145b7565b6146b8565b6145b7565b9050919050565b60006146ef826146c2565b9050919050565b6000614701826146e4565b9050919050565b614711816146f6565b82525050565b600060208201905061472c6000830184614708565b92915050565b60008060006060848603121561474b5761474a614494565b5b600061475986828701614600565b935050602061476a86828701614600565b925050604061477b868287016144b0565b9150509250925092565b60006020828403121561479b5761479a614494565b5b60006147a9848285016144b0565b91505092915050565b6147bb81614682565b81146147c657600080fd5b50565b6000813590506147d8816147b2565b92915050565b6000602082840312156147f4576147f3614494565b5b6000614802848285016147c9565b91505092915050565b600060ff82169050919050565b6148218161480b565b82525050565b600060208201905061483c6000830184614818565b92915050565b61484b816145d7565b82525050565b60006020820190506148666000830184614842565b92915050565b6000806040838503121561488357614882614494565b5b600061489185828601614600565b92505060206148a2858286016147c9565b9150509250929050565b600080604083850312156148c3576148c2614494565b5b60006148d185828601614600565b92505060206148e285828601614600565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614922602083614510565b915061492d826148ec565b602082019050919050565b6000602082019050818103600083015261495181614915565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061499282614460565b915061499d83614460565b92508282019050808211156149b5576149b4614958565b5b92915050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000614a17602483614510565b9150614a22826149bb565b604082019050919050565b60006020820190508181036000830152614a4681614a0a565b9050919050565b6000604082019050614a62600083018561446a565b614a6f602083018461446a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614abd57607f821691505b602082108103614ad057614acf614a76565b5b50919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000614b0c601883614510565b9150614b1782614ad6565b602082019050919050565b60006020820190508181036000830152614b3b81614aff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614b9e602883614510565b9150614ba982614b42565b604082019050919050565b60006020820190508181036000830152614bcd81614b91565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115614c2b57808604811115614c0757614c06614958565b5b6001851615614c165780820291505b8081029050614c2485614bd4565b9450614beb565b94509492505050565b600082614c445760019050614d00565b81614c525760009050614d00565b8160018114614c685760028114614c7257614ca1565b6001915050614d00565b60ff841115614c8457614c83614958565b5b8360020a915084821115614c9b57614c9a614958565b5b50614d00565b5060208310610133831016604e8410600b8410161715614cd65782820a905083811115614cd157614cd0614958565b5b614d00565b614ce38484846001614be1565b92509050818404811115614cfa57614cf9614958565b5b81810290505b9392505050565b6000614d1282614460565b9150614d1d8361480b565b9250614d4a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614c34565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d8c82614460565b9150614d9783614460565b925082614da757614da6614d52565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614e0e602d83614510565b9150614e1982614db2565b604082019050919050565b60006020820190508181036000830152614e3d81614e01565b9050919050565b6000614e4f82614460565b9150614e5a83614460565b9250828202614e6881614460565b91508282048414831517614e7f57614e7e614958565b5b5092915050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b6000614ee2602d83614510565b9150614eed82614e86565b604082019050919050565b60006020820190508181036000830152614f1181614ed5565b9050919050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b6000614f74603283614510565b9150614f7f82614f18565b604082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160008201527f6e6e6f742065786365656420746865206d6178696d756d000000000000000000602082015250565b6000615006603783614510565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f43616e6e6f74206368616e676520746865207061697200000000000000000000600082015250565b6000615072601683614510565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000615104602483614510565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b6000615170601783614510565b915061517b8261513a565b602082019050919050565b6000602082019050818103600083015261519f81615163565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000615202602583614510565b915061520d826151a6565b604082019050919050565b60006020820190508181036000830152615231816151f5565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000615294603f83614510565b915061529f82615238565b604082019050919050565b600060208201905081810360008301526152c381615287565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000615326603f83614510565b9150615331826152ca565b604082019050919050565b6000602082019050818103600083015261535581615319565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006153b8602883614510565b91506153c38261535c565b604082019050919050565b600060208201905081810360008301526153e7816153ab565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b600061544a602b83614510565b9150615455826153ee565b604082019050919050565b600060208201905081810360008301526154798161543d565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006154dc602a83614510565b91506154e782615480565b604082019050919050565b6000602082019050818103600083015261550b816154cf565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b600061556e602283614510565b915061557982615512565b604082019050919050565b6000602082019050818103600083015261559d81615561565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615600602683614510565b915061560b826155a4565b604082019050919050565b6000602082019050818103600083015261562f816155f3565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000615692603783614510565b915061569d82615636565b604082019050919050565b600060208201905081810360008301526156c181615685565b9050919050565b6000815190506156d781614499565b92915050565b6000602082840312156156f3576156f2614494565b5b6000615701848285016156c8565b91505092915050565b600060408201905061571f6000830185614842565b61572c602083018461446a565b9392505050565b600081519050615742816147b2565b92915050565b60006020828403121561575e5761575d614494565b5b600061576c84828501615733565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006157d1602483614510565b91506157dc82615775565b604082019050919050565b60006020820190508181036000830152615800816157c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615863602283614510565b915061586e82615807565b604082019050919050565b6000602082019050818103600083015261589281615856565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006158f5602583614510565b915061590082615899565b604082019050919050565b60006020820190508181036000830152615924816158e8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615987602383614510565b91506159928261592b565b604082019050919050565b600060208201905081810360008301526159b68161597a565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006159f3601883614510565b91506159fe826159bd565b602082019050919050565b60006020820190508181036000830152615a22816159e6565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000615a85603b83614510565b9150615a9082615a29565b604082019050919050565b60006020820190508181036000830152615ab481615a78565b9050919050565b6000615ac682614460565b9150615ad183614460565b9250828203905081811115615ae957615ae8614958565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000615b4b603083614510565b9150615b5682615aef565b604082019050919050565b60006020820190508181036000830152615b7a81615b3e565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000615bb7601d83614510565b9150615bc282615b81565b602082019050919050565b60006020820190508181036000830152615be681615baa565b9050919050565b600081905092915050565b50565b6000615c08600083615bed565b9150615c1382615bf8565b600082019050919050565b6000615c2982615bfb565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615c8f602683614510565b9150615c9a82615c33565b604082019050919050565b60006020820190508181036000830152615cbe81615c82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615d32816145e9565b92915050565b600060208284031215615d4e57615d4d614494565b5b6000615d5c84828501615d23565b91505092915050565b6000819050919050565b6000615d8a615d85615d8084615d65565b6146b8565b614460565b9050919050565b615d9a81615d6f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615dd5816145d7565b82525050565b6000615de78383615dcc565b60208301905092915050565b6000602082019050919050565b6000615e0b82615da0565b615e158185615dab565b9350615e2083615dbc565b8060005b83811015615e51578151615e388882615ddb565b9750615e4383615df3565b925050600181019050615e24565b5085935050505092915050565b600060a082019050615e73600083018861446a565b615e806020830187615d91565b8181036040830152615e928186615e00565b9050615ea16060830185614842565b615eae608083018461446a565b9695505050505050565b600060c082019050615ecd6000830189614842565b615eda602083018861446a565b615ee76040830187615d91565b615ef46060830186615d91565b615f016080830185614842565b615f0e60a083018461446a565b979650505050505050565b600080600060608486031215615f3257615f31614494565b5b6000615f40868287016156c8565b9350506020615f51868287016156c8565b9250506040615f62868287016156c8565b9150509250925092565b6000606082019050615f81600083018661446a565b615f8e602083018561446a565b615f9b604083018461446a565b94935050505056fea26469706673582212202e9b4c80901a7bc2d54684b9d27939cc980147c3756bdce4fbf0cbf33df82f9364736f6c63430008130033
Deployed Bytecode Sourcemap
15783:16286:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30137:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21559:444;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11069:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22801:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11982:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15868:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11389:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31925:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28545:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12159:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29123:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28835:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30088:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16073:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11289:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12740:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15916:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22766:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20988:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16363:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30502:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30183:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16116:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22011:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21121:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16505:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16309:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11505:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10256:148;;;;;;;;;;;;;:::i;:::-;;16391:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16033:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20437:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31518:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10042:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11177:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20609:73;;;;;;;;;;;;;:::i;:::-;;12963:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29870:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11640:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28588:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26625:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30821:689;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22379:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20690:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29471:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16156:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11823:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26438:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16431:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10412:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19964:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30137:39;;;;:::o;21559:444::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21692:19:::1;21671:18;:40;;;;21743:19;21722:18;:40;;;;21817:18;;21796;;:39;;;;:::i;:::-;21775:16;:60;;;;21876:6;;21856:16;;:26;;21848:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21941:54;21956:18;;21976;;21941:54;;;;;;;:::i;:::-;;;;;;;;21559:444:::0;;:::o;11069:100::-;11123:13;11156:5;11149:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11069:100;:::o;22801:238::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22886:14:::1;;;;;;;;;;;22885:15;22877:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;22957:4;22940:14;;:21;;;;;;;;;;;;;;;;;;22986:4;22972:11;;:18;;;;;;;;;;;;;;;;;;23017:14;23001:13;;:30;;;;;;;;;;;;;;;;;;22801:238:::0;:::o;11982:169::-;12065:4;12082:39;12091:12;:10;:12::i;:::-;12105:7;12114:6;12082:8;:39::i;:::-;12139:4;12132:11;;11982:169;;;;:::o;15868:41::-;;;;;;;;;;;;;:::o;11389:108::-;11450:7;11477:12;;11470:19;;11389:108;:::o;31925:141::-;32000:4;32024:25;:34;32050:7;32024:34;;;;;;;;;;;;;;;;;;;;;;;;;32017:41;;31925:141;;;:::o;28545:36::-;;;;;;;;;;;;;:::o;12159:573::-;12299:4;12316:24;12343:11;:19;12355:6;12343:19;;;;;;;;;;;;;;;:33;12363:12;:10;:12::i;:::-;12343:33;;;;;;;;;;;;;;;;12316:60;;12411:17;12391:16;:37;12387:265;;12473:6;12453:16;:26;;12445:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12568:57;12577:6;12585:12;:10;:12::i;:::-;12618:6;12599:16;:25;12568:8;:57::i;:::-;12387:265;12664:36;12674:6;12682:9;12693:6;12664:9;:36::i;:::-;12720:4;12713:11;;;12159:573;;;;;:::o;29123:340::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29274:3:::1;29259:10;:8;:10::i;:::-;29253:2;:16;;;;:::i;:::-;29236:13;:11;:13::i;:::-;:34;;;;:::i;:::-;29235:42;;;;:::i;:::-;29215:16;:62;;29207:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;29382:10;:8;:10::i;:::-;29376:2;:16;;;;:::i;:::-;29356;:37;;;;:::i;:::-;29338:15;:55;;;;29411:44;29439:15;;29411:44;;;;;;:::i;:::-;;;;;;;;29123:340:::0;:::o;28835:280::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28929:21:::1;;;;;;;;;;;28919:31;;:6;:31;;::::0;28911:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29034:6;29010:21;;:30;;;;;;;;;;;;;;;;;;29058:49;29085:21;;;;;;;;;;;29058:49;;;;;;:::i;:::-;;;;;;;;28835:280:::0;:::o;30088:42::-;;;;;;;;;;;;;:::o;16073:34::-;;;;:::o;11289:92::-;11347:5;11372:1;11365:8;;11289:92;:::o;12740:215::-;12828:4;12845:80;12854:12;:10;:12::i;:::-;12868:7;12914:10;12877:11;:25;12889:12;:10;:12::i;:::-;12877:25;;;;;;;;;;;;;;;:34;12903:7;12877:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12845:8;:80::i;:::-;12943:4;12936:11;;12740:215;;;;:::o;15916:46::-;;;;;;;;;;;;;:::o;22766:26::-;;;;;;;;;;;;;:::o;20988:125::-;21053:4;21077:19;:28;21097:7;21077:28;;;;;;;;;;;;;;;;;;;;;;;;;21070:35;;20988:125;;;:::o;16363:19::-;;;;;;;;;;;;;:::o;30502:311::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30601:26:::1;;;;;;;;;;;30591:36;;:6;:36;;::::0;30583:99:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30722:6;30693:26;;:35;;;;;;;;;;;;;;;;;;30746:59;30778:26;;;;;;;;;;;30746:59;;;;;;:::i;:::-;;;;;;;;30502:311:::0;:::o;30183:40::-;;;;:::o;16116:33::-;;;;:::o;22011:360::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22156:6:::1;;22126:26;:36;;22118:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;22261:26;22233:25;:54;;;;22305:58;22337:25;;22305:58;;;;;;:::i;:::-;;;;;;;;22011:360:::0;:::o;21121:430::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21250:18:::1;21230:17;:38;;;;21299:18;21279:17;:38;;;;21370:17;;21350;;:37;;;;:::i;:::-;21330:15;:57;;;;21427:6;;21408:15;;:25;;21400:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21492:51;21506:17;;21525;;21492:51;;;;;;;:::i;:::-;;;;;;;;21121:430:::0;;:::o;16505:26::-;;;;;;;;;;;;;:::o;16309:41::-;;;;:::o;11505:127::-;11579:7;11606:9;:18;11616:7;11606:18;;;;;;;;;;;;;;;;11599:25;;11505:127;;;:::o;10256:148::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10363:1:::1;10326:40;;10347:6;;;;;;;;;;;10326:40;;;;;;;;;;;;10394:1;10377:6;;:19;;;;;;;;;;;;;;;;;;10256:148::o:0;16391:31::-;;;;;;;;;;;;;:::o;16033:33::-;;;;:::o;20437:164::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20518:7:::1;;;;;;;;;;;20517:8;20509:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;20579:14;20563:13;;:30;;;;;;;;;;;;;;;;;;20437:164:::0;:::o;31518:399::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31666:7:::1;31628:45;;:25;:34;31654:7;31628:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;::::0;31619:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;31752:4;31733:24;;:7;:24;;::::0;31725:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;31835:7;31798:25;:34;31824:7;31798:34;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;31892:7;31860:49;;;31901:7;31860:49;;;;;;:::i;:::-;;;;;;;;31518:399:::0;;:::o;10042:79::-;10080:7;10107:6;;;;;;;;;;;10100:13;;10042:79;:::o;11177:104::-;11233:13;11266:7;11259:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11177:104;:::o;20609:73::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20670:4:::1;20660:7;;:14;;;;;;;;;;;;;;;;;;20609:73::o:0;12963:413::-;13056:4;13073:24;13100:11;:25;13112:12;:10;:12::i;:::-;13100:25;;;;;;;;;;;;;;;:34;13126:7;13100:34;;;;;;;;;;;;;;;;13073:61;;13173:15;13153:16;:35;;13145:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13266:67;13275:12;:10;:12::i;:::-;13289:7;13317:15;13298:16;:34;13266:8;:67::i;:::-;13364:4;13357:11;;;12963:413;;;;:::o;29870:145::-;29945:4;29969:29;:38;29999:7;29969:38;;;;;;;;;;;;;;;;;;;;;;;;;29962:45;;29870:145;;;:::o;11640:175::-;11726:4;11743:42;11753:12;:10;:12::i;:::-;11767:9;11778:6;11743:9;:42::i;:::-;11803:4;11796:11;;11640:175;;;;:::o;28588:30::-;;;;:::o;26625:304::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26740:9:::1;26724:13;:11;:13::i;:::-;:25;;;;:::i;:::-;26712:9;:37;26704:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;26849:9;26828:18;:30;;;;26876:45;26902:18;;26876:45;;;;;;:::i;:::-;;;;;;;;26625:304:::0;:::o;30821:689::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31044:5:::1;31029:10;:8;:10::i;:::-;31023:2;:16;;;;:::i;:::-;31006:13;:11;:13::i;:::-;:34;;;;:::i;:::-;31005:44;;;;:::i;:::-;30976:24;:73;;:164;;;;;31135:5;31120:10;:8;:10::i;:::-;31114:2;:16;;;;:::i;:::-;31097:13;:11;:13::i;:::-;:34;;;;:::i;:::-;31096:44;;;;:::i;:::-;31067:25;:73;;30976:164;30954:278;;;;;;;;;;;;:::i;:::-;;;;;;;;;31306:10;:8;:10::i;:::-;31300:2;:16;;;;:::i;:::-;31271:24;:46;;;;:::i;:::-;31244:23;:73;;;;31390:10;:8;:10::i;:::-;31384:2;:16;;;;:::i;:::-;31355:25;:46;;;;:::i;:::-;31328:24;:73;;;;31419:83;31452:23;;31477:24;;31419:83;;;;;;;:::i;:::-;;;;;;;;30821:689:::0;;:::o;22379:379::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22493:15:::1;;;;;;;;;;;22473:35;;:16;:35;;::::0;22465:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22599:1;22571:30;;:16;:30;;::::0;22563:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22677:16;22659:15;;:34;;;;;;;;;;;;;;;;;;22711:39;22734:15;;;;;;;;;;;22711:39;;;;;;:::i;:::-;;;;;;;;22379:379:::0;:::o;20690:290::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20816:8:::1;20784:40;;:19;:28;20804:7;20784:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;20776:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20912:8;20881:19;:28;20901:7;20881:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20954:7;20938:34;;;20963:8;20938:34;;;;;;:::i;:::-;;;;;;;;20690:290:::0;;:::o;29471:391::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29613:7:::1;29571:49;;:29;:38;29601:7;29571:38;;;;;;;;;;;;;;;;;;;;;;;;;:49;;::::0;29562:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29698:4;29679:24;;:7;:24;;::::0;29671:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29785:7;29744:29;:38;29774:7;29744:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;29837:7;29810:44;;;29846:7;29810:44;;;;;;:::i;:::-;;;;;;;;29471:391:::0;;:::o;16156:34::-;;;;:::o;11823:151::-;11912:7;11939:11;:18;11951:5;11939:18;;;;;;;;;;;;;;;:27;11958:7;11939:27;;;;;;;;;;;;;;;;11932:34;;11823:151;;;;:::o;26438:179::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26529:8:::1;26514:23;;:11;;;;;;;;;;;:23;;::::0;26506:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26601:8;26587:11;;:22;;;;;;;;;;;;;;;;;;26438:179:::0;:::o;16431:34::-;;;;:::o;10412:244::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10521:1:::1;10501:22;;:8;:22;;::::0;10493:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10611:8;10582:38;;10603:6;;;;;;;;;;;10582:38;;;;;;;;;;;;10640:8;10631:6;;:17;;;;;;;;;;;;;;;;;;10412:244:::0;:::o;19964:465::-;10179:12;:10;:12::i;:::-;10169:22;;:6;;;;;;;;;;;:22;;;10161:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20060:4:::1;20043:22;;:5;:22;;::::0;20035:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20157:3;20140:21;;:5;:21;;::::0;20136:127:::1;;20178:52;20208:21;20186:10;20178:29;;;;:52;;;;:::i;:::-;;20245:7;;20136:127;20273:17;20300:5;20273:33;;20317:15;20335:10;:20;;;20364:4;20335:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20317:53;;20381:10;:19;;;20401:10;20413:7;20381:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20024:405;;10239:1;19964:465:::0;:::o;9365:98::-;9418:7;9445:10;9438:17;;9365:98;:::o;15131:380::-;15284:1;15267:19;;:5;:19;;;15259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15365:1;15346:21;;:7;:21;;;15338:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15449:6;15419:11;:18;15431:5;15419:18;;;;;;;;;;;;;;;:27;15438:7;15419:27;;;;;;;;;;;;;;;:36;;;;15487:7;15471:32;;15480:5;15471:32;;;15496:6;15471:32;;;;;;:::i;:::-;;;;;;;;15131:380;;;:::o;23047:3383::-;23160:1;23144:18;;:4;:18;;;23136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23237:1;23223:16;;:2;:16;;;23215:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23298:14;;;;;;;;;;;:43;;;;23316:19;:25;23336:4;23316:25;;;;;;;;;;;;;;;;;;;;;;;;;23298:43;:70;;;;23345:19;:23;23365:2;23345:23;;;;;;;;;;;;;;;;;;;;;;;;;23298:70;23290:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;23431:1;23421:6;:11;23417:93;;23449:28;23465:4;23471:2;23475:1;23449:15;:28::i;:::-;23492:7;;23417:93;23526:26;;;;;;;;;;;23522:752;;;23592:13;;;;;;;;;;;23584:21;;:4;:21;;;:44;;;;23615:13;;;;;;;;;;;23609:19;;:2;:19;;;23584:44;23583:99;;;;;23651:25;:31;23677:4;23651:31;;;;;;;;;;;;;;;;;;;;;;;;;23650:32;23583:99;:151;;;;;23705:25;:29;23731:2;23705:29;;;;;;;;;;;;;;;;;;;;;;;;;23704:30;23583:151;23579:684;;;23781:13;;;;;;;;;;;23773:21;;:4;:21;;;23769:479;;23863:23;;23853:6;:33;;23819:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;23769:479;;;24092:24;;24082:6;:34;;24048:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;23769:479;23579:684;23522:752;24280:28;24311:24;24329:4;24311:9;:24::i;:::-;24280:55;;24348:12;24387:18;;24363:20;:42;;24348:57;;24422:7;:33;;;;;24447:8;;;;;;;;;;;24446:9;24422:33;:69;;;;;24478:13;;;;;;;;;;;24472:19;;:2;:19;;;24422:69;:124;;;;;24545:1;24526:16;;24508:15;;:34;;;;:::i;:::-;:38;24422:124;:152;;;;;24563:11;;;;;;;;;;;24422:152;24418:895;;;24612:4;24601:8;;:15;;;;;;;;;;;;;;;;;;24633:16;24670;;24652:15;;:34;;;;:::i;:::-;24633:53;;24701:22;24746:18;;24726:17;;:38;;;;:::i;:::-;24701:63;;24779:22;24824:18;;24804:17;;:38;;;;:::i;:::-;24779:63;;24880:1;24863:14;:18;24859:183;;;24902:23;24968:8;24951:14;24928:20;:37;;;;:::i;:::-;:48;;;;:::i;:::-;24902:74;;24995:31;25010:15;24995:14;:31::i;:::-;24883:159;24859:183;25091:1;25074:14;:18;25070:189;;;25113:23;25179:8;25162:14;25139:20;:37;;;;:::i;:::-;:48;;;;:::i;:::-;25113:74;;25206:37;25227:15;25206:20;:37::i;:::-;25094:165;25070:189;25296:5;25285:8;;:16;;;;;;;;;;;;;;;;;;24586:727;;;24418:895;25325:18;25358:19;:25;25378:4;25358:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25387:19;:23;25407:2;25387:23;;;;;;;;;;;;;;;;;;;;;;;;;25358:52;:64;;;;25414:8;;;;;;;;;;;25358:64;25354:357;;;25452:1;25439:14;;25354:357;;;25483:13;;;;;;;;;;;25475:21;;:4;:21;;;25471:240;;25526:15;;25513:28;;25471:240;;;25569:13;;;;;;;;;;;25563:19;;:2;:19;;;25559:152;;25612:16;;25599:29;;25559:152;;;25674:25;;25661:38;;25559:152;25471:240;25354:357;25740:1;25727:10;:14;25723:183;;;25758:12;25797:3;25783:10;25774:6;:19;;;;:::i;:::-;25773:27;;;;:::i;:::-;25758:42;;25833:4;25824:6;:13;;;;:::i;:::-;25815:22;;25852:42;25868:4;25882;25889;25852:15;:42::i;:::-;25743:163;25723:183;25922:21;;;;;;;;;;;25918:459;;;25975:29;:35;26005:4;25975:35;;;;;;;;;;;;;;;;;;;;;;;;;25974:36;:92;;;;;26033:29;:33;26063:2;26033:33;;;;;;;;;;;;;;;;;;;;;;;;;26032:34;25974:92;:132;;;;;26093:13;;;;;;;;;;;26087:19;;:2;:19;;;;25974:132;25970:396;;;26141:15;26160:13;26170:2;26160:9;:13::i;:::-;26141:32;;26242:15;;26232:6;26222:7;:16;;;;:::i;:::-;:35;;26192:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;26122:244;25970:396;25918:459;26389:33;26405:4;26411:2;26415:6;26389:15;:33::i;:::-;23125:3305;;;23047:3383;;;;:::o;9059:266::-;9138:4;9187:6;9162:21;:31;;9154:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9241:12;9259:9;:14;;9281:6;9259:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9240:52;;;9310:7;9303:14;;;9059:266;;;;:::o;13384:733::-;13542:1;13524:20;;:6;:20;;;13516:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13626:1;13605:23;;:9;:23;;;13597:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13681:47;13702:6;13710:9;13721:6;13681:20;:47::i;:::-;13741:21;13765:9;:17;13775:6;13765:17;;;;;;;;;;;;;;;;13741:41;;13818:6;13801:13;:23;;13793:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13939:6;13923:13;:22;13903:9;:17;13913:6;13903:17;;;;;;;;;;;;;;;:42;;;;13991:6;13967:9;:20;13977:9;13967:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14032:9;14015:35;;14024:6;14015:35;;;14043:6;14015:35;;;;;;:::i;:::-;;;;;;;;14063:46;14083:6;14091:9;14102:6;14063:19;:46::i;:::-;13505:612;13384:733;;;:::o;26937:876::-;26996:12;27020:1;27011:6;:10;;;;:::i;:::-;26996:25;;27032:17;27061:4;27052:6;:13;;;;:::i;:::-;27032:33;;27078:22;27103:21;27078:46;;27137:21;27175:1;27161:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27137:40;;27206:4;27188;27193:1;27188:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27232:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27222:4;27227:1;27222:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27267:15;;;;;;;;;;;:66;;;27348:4;27367:1;27383:4;27410;27430:15;27267:179;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27467:18;27512:14;27488:21;:38;;;;:::i;:::-;27467:59;;27539:15;;;;;;;;;;;:31;;;27578:10;27612:4;27632:9;27656:1;27672;27696:6;27718:15;27539:205;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27762:43;27777:4;27783:10;27795:9;27762:43;;;;;;;;:::i;:::-;;;;;;;;26985:828;;;;;26937:876;:::o;27821:647::-;27891:22;27916:21;27891:46;;27950:21;27988:1;27974:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27950:40;;28019:4;28001;28006:1;28001:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28045:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28035:4;28040:1;28035:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28080:15;;;;;;;;;;;:66;;;28161:11;28187:1;28203:4;28230;28250:15;28080:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28279:18;28324:14;28300:21;:38;;;;:::i;:::-;28279:59;;28351:46;28386:10;28359:15;;;;;;;;;;;28351:34;;;;:46;;;;:::i;:::-;;28415:45;28436:11;28449:10;28415:45;;;;;;;:::i;:::-;;;;;;;;27880:588;;;27821:647;:::o;15519:125::-;;;;:::o;15652:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:474::-;1110:6;1118;1167:2;1155:9;1146:7;1142:23;1138:32;1135:119;;;1173:79;;:::i;:::-;1135:119;1293:1;1318:53;1363:7;1354:6;1343:9;1339:22;1318:53;:::i;:::-;1308:63;;1264:117;1420:2;1446:53;1491:7;1482:6;1471:9;1467:22;1446:53;:::i;:::-;1436:63;;1391:118;1042:474;;;;;:::o;1522:99::-;1574:6;1608:5;1602:12;1592:22;;1522:99;;;:::o;1627:169::-;1711:11;1745:6;1740:3;1733:19;1785:4;1780:3;1776:14;1761:29;;1627:169;;;;:::o;1802:246::-;1883:1;1893:113;1907:6;1904:1;1901:13;1893:113;;;1992:1;1987:3;1983:11;1977:18;1973:1;1968:3;1964:11;1957:39;1929:2;1926:1;1922:10;1917:15;;1893:113;;;2040:1;2031:6;2026:3;2022:16;2015:27;1864:184;1802:246;;;:::o;2054:102::-;2095:6;2146:2;2142:7;2137:2;2130:5;2126:14;2122:28;2112:38;;2054:102;;;:::o;2162:377::-;2250:3;2278:39;2311:5;2278:39;:::i;:::-;2333:71;2397:6;2392:3;2333:71;:::i;:::-;2326:78;;2413:65;2471:6;2466:3;2459:4;2452:5;2448:16;2413:65;:::i;:::-;2503:29;2525:6;2503:29;:::i;:::-;2498:3;2494:39;2487:46;;2254:285;2162:377;;;;:::o;2545:313::-;2658:4;2696:2;2685:9;2681:18;2673:26;;2745:9;2739:4;2735:20;2731:1;2720:9;2716:17;2709:47;2773:78;2846:4;2837:6;2773:78;:::i;:::-;2765:86;;2545:313;;;;:::o;2864:126::-;2901:7;2941:42;2934:5;2930:54;2919:65;;2864:126;;;:::o;2996:96::-;3033:7;3062:24;3080:5;3062:24;:::i;:::-;3051:35;;2996:96;;;:::o;3098:122::-;3171:24;3189:5;3171:24;:::i;:::-;3164:5;3161:35;3151:63;;3210:1;3207;3200:12;3151:63;3098:122;:::o;3226:139::-;3272:5;3310:6;3297:20;3288:29;;3326:33;3353:5;3326:33;:::i;:::-;3226:139;;;;:::o;3371:329::-;3430:6;3479:2;3467:9;3458:7;3454:23;3450:32;3447:119;;;3485:79;;:::i;:::-;3447:119;3605:1;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3576:117;3371:329;;;;:::o;3706:474::-;3774:6;3782;3831:2;3819:9;3810:7;3806:23;3802:32;3799:119;;;3837:79;;:::i;:::-;3799:119;3957:1;3982:53;4027:7;4018:6;4007:9;4003:22;3982:53;:::i;:::-;3972:63;;3928:117;4084:2;4110:53;4155:7;4146:6;4135:9;4131:22;4110:53;:::i;:::-;4100:63;;4055:118;3706:474;;;;;:::o;4186:90::-;4220:7;4263:5;4256:13;4249:21;4238:32;;4186:90;;;:::o;4282:109::-;4363:21;4378:5;4363:21;:::i;:::-;4358:3;4351:34;4282:109;;:::o;4397:210::-;4484:4;4522:2;4511:9;4507:18;4499:26;;4535:65;4597:1;4586:9;4582:17;4573:6;4535:65;:::i;:::-;4397:210;;;;:::o;4613:60::-;4641:3;4662:5;4655:12;;4613:60;;;:::o;4679:142::-;4729:9;4762:53;4780:34;4789:24;4807:5;4789:24;:::i;:::-;4780:34;:::i;:::-;4762:53;:::i;:::-;4749:66;;4679:142;;;:::o;4827:126::-;4877:9;4910:37;4941:5;4910:37;:::i;:::-;4897:50;;4827:126;;;:::o;4959:152::-;5035:9;5068:37;5099:5;5068:37;:::i;:::-;5055:50;;4959:152;;;:::o;5117:183::-;5230:63;5287:5;5230:63;:::i;:::-;5225:3;5218:76;5117:183;;:::o;5306:274::-;5425:4;5463:2;5452:9;5448:18;5440:26;;5476:97;5570:1;5559:9;5555:17;5546:6;5476:97;:::i;:::-;5306:274;;;;:::o;5586:619::-;5663:6;5671;5679;5728:2;5716:9;5707:7;5703:23;5699:32;5696:119;;;5734:79;;:::i;:::-;5696:119;5854:1;5879:53;5924:7;5915:6;5904:9;5900:22;5879:53;:::i;:::-;5869:63;;5825:117;5981:2;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5952:118;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5586:619;;;;;:::o;6211:329::-;6270:6;6319:2;6307:9;6298:7;6294:23;6290:32;6287:119;;;6325:79;;:::i;:::-;6287:119;6445:1;6470:53;6515:7;6506:6;6495:9;6491:22;6470:53;:::i;:::-;6460:63;;6416:117;6211:329;;;;:::o;6546:116::-;6616:21;6631:5;6616:21;:::i;:::-;6609:5;6606:32;6596:60;;6652:1;6649;6642:12;6596:60;6546:116;:::o;6668:133::-;6711:5;6749:6;6736:20;6727:29;;6765:30;6789:5;6765:30;:::i;:::-;6668:133;;;;:::o;6807:323::-;6863:6;6912:2;6900:9;6891:7;6887:23;6883:32;6880:119;;;6918:79;;:::i;:::-;6880:119;7038:1;7063:50;7105:7;7096:6;7085:9;7081:22;7063:50;:::i;:::-;7053:60;;7009:114;6807:323;;;;:::o;7136:86::-;7171:7;7211:4;7204:5;7200:16;7189:27;;7136:86;;;:::o;7228:112::-;7311:22;7327:5;7311:22;:::i;:::-;7306:3;7299:35;7228:112;;:::o;7346:214::-;7435:4;7473:2;7462:9;7458:18;7450:26;;7486:67;7550:1;7539:9;7535:17;7526:6;7486:67;:::i;:::-;7346:214;;;;:::o;7566:118::-;7653:24;7671:5;7653:24;:::i;:::-;7648:3;7641:37;7566:118;;:::o;7690:222::-;7783:4;7821:2;7810:9;7806:18;7798:26;;7834:71;7902:1;7891:9;7887:17;7878:6;7834:71;:::i;:::-;7690:222;;;;:::o;7918:468::-;7983:6;7991;8040:2;8028:9;8019:7;8015:23;8011:32;8008:119;;;8046:79;;:::i;:::-;8008:119;8166:1;8191:53;8236:7;8227:6;8216:9;8212:22;8191:53;:::i;:::-;8181:63;;8137:117;8293:2;8319:50;8361:7;8352:6;8341:9;8337:22;8319:50;:::i;:::-;8309:60;;8264:115;7918:468;;;;;:::o;8392:474::-;8460:6;8468;8517:2;8505:9;8496:7;8492:23;8488:32;8485:119;;;8523:79;;:::i;:::-;8485:119;8643:1;8668:53;8713:7;8704:6;8693:9;8689:22;8668:53;:::i;:::-;8658:63;;8614:117;8770:2;8796:53;8841:7;8832:6;8821:9;8817:22;8796:53;:::i;:::-;8786:63;;8741:118;8392:474;;;;;:::o;8872:182::-;9012:34;9008:1;9000:6;8996:14;8989:58;8872:182;:::o;9060:366::-;9202:3;9223:67;9287:2;9282:3;9223:67;:::i;:::-;9216:74;;9299:93;9388:3;9299:93;:::i;:::-;9417:2;9412:3;9408:12;9401:19;;9060:366;;;:::o;9432:419::-;9598:4;9636:2;9625:9;9621:18;9613:26;;9685:9;9679:4;9675:20;9671:1;9660:9;9656:17;9649:47;9713:131;9839:4;9713:131;:::i;:::-;9705:139;;9432:419;;;:::o;9857:180::-;9905:77;9902:1;9895:88;10002:4;9999:1;9992:15;10026:4;10023:1;10016:15;10043:191;10083:3;10102:20;10120:1;10102:20;:::i;:::-;10097:25;;10136:20;10154:1;10136:20;:::i;:::-;10131:25;;10179:1;10176;10172:9;10165:16;;10200:3;10197:1;10194:10;10191:36;;;10207:18;;:::i;:::-;10191:36;10043:191;;;;:::o;10240:223::-;10380:34;10376:1;10368:6;10364:14;10357:58;10449:6;10444:2;10436:6;10432:15;10425:31;10240:223;:::o;10469:366::-;10611:3;10632:67;10696:2;10691:3;10632:67;:::i;:::-;10625:74;;10708:93;10797:3;10708:93;:::i;:::-;10826:2;10821:3;10817:12;10810:19;;10469:366;;;:::o;10841:419::-;11007:4;11045:2;11034:9;11030:18;11022:26;;11094:9;11088:4;11084:20;11080:1;11069:9;11065:17;11058:47;11122:131;11248:4;11122:131;:::i;:::-;11114:139;;10841:419;;;:::o;11266:332::-;11387:4;11425:2;11414:9;11410:18;11402:26;;11438:71;11506:1;11495:9;11491:17;11482:6;11438:71;:::i;:::-;11519:72;11587:2;11576:9;11572:18;11563:6;11519:72;:::i;:::-;11266:332;;;;;:::o;11604:180::-;11652:77;11649:1;11642:88;11749:4;11746:1;11739:15;11773:4;11770:1;11763:15;11790:320;11834:6;11871:1;11865:4;11861:12;11851:22;;11918:1;11912:4;11908:12;11939:18;11929:81;;11995:4;11987:6;11983:17;11973:27;;11929:81;12057:2;12049:6;12046:14;12026:18;12023:38;12020:84;;12076:18;;:::i;:::-;12020:84;11841:269;11790:320;;;:::o;12116:174::-;12256:26;12252:1;12244:6;12240:14;12233:50;12116:174;:::o;12296:366::-;12438:3;12459:67;12523:2;12518:3;12459:67;:::i;:::-;12452:74;;12535:93;12624:3;12535:93;:::i;:::-;12653:2;12648:3;12644:12;12637:19;;12296:366;;;:::o;12668:419::-;12834:4;12872:2;12861:9;12857:18;12849:26;;12921:9;12915:4;12911:20;12907:1;12896:9;12892:17;12885:47;12949:131;13075:4;12949:131;:::i;:::-;12941:139;;12668:419;;;:::o;13093:227::-;13233:34;13229:1;13221:6;13217:14;13210:58;13302:10;13297:2;13289:6;13285:15;13278:35;13093:227;:::o;13326:366::-;13468:3;13489:67;13553:2;13548:3;13489:67;:::i;:::-;13482:74;;13565:93;13654:3;13565:93;:::i;:::-;13683:2;13678:3;13674:12;13667:19;;13326:366;;;:::o;13698:419::-;13864:4;13902:2;13891:9;13887:18;13879:26;;13951:9;13945:4;13941:20;13937:1;13926:9;13922:17;13915:47;13979:131;14105:4;13979:131;:::i;:::-;13971:139;;13698:419;;;:::o;14123:102::-;14165:8;14212:5;14209:1;14205:13;14184:34;;14123:102;;;:::o;14231:848::-;14292:5;14299:4;14323:6;14314:15;;14347:5;14338:14;;14361:712;14382:1;14372:8;14369:15;14361:712;;;14477:4;14472:3;14468:14;14462:4;14459:24;14456:50;;;14486:18;;:::i;:::-;14456:50;14536:1;14526:8;14522:16;14519:451;;;14951:4;14944:5;14940:16;14931:25;;14519:451;15001:4;14995;14991:15;14983:23;;15031:32;15054:8;15031:32;:::i;:::-;15019:44;;14361:712;;;14231:848;;;;;;;:::o;15085:1073::-;15139:5;15330:8;15320:40;;15351:1;15342:10;;15353:5;;15320:40;15379:4;15369:36;;15396:1;15387:10;;15398:5;;15369:36;15465:4;15513:1;15508:27;;;;15549:1;15544:191;;;;15458:277;;15508:27;15526:1;15517:10;;15528:5;;;15544:191;15589:3;15579:8;15576:17;15573:43;;;15596:18;;:::i;:::-;15573:43;15645:8;15642:1;15638:16;15629:25;;15680:3;15673:5;15670:14;15667:40;;;15687:18;;:::i;:::-;15667:40;15720:5;;;15458:277;;15844:2;15834:8;15831:16;15825:3;15819:4;15816:13;15812:36;15794:2;15784:8;15781:16;15776:2;15770:4;15767:12;15763:35;15747:111;15744:246;;;15900:8;15894:4;15890:19;15881:28;;15935:3;15928:5;15925:14;15922:40;;;15942:18;;:::i;:::-;15922:40;15975:5;;15744:246;16015:42;16053:3;16043:8;16037:4;16034:1;16015:42;:::i;:::-;16000:57;;;;16089:4;16084:3;16080:14;16073:5;16070:25;16067:51;;;16098:18;;:::i;:::-;16067:51;16147:4;16140:5;16136:16;16127:25;;15085:1073;;;;;;:::o;16164:281::-;16222:5;16246:23;16264:4;16246:23;:::i;:::-;16238:31;;16290:25;16306:8;16290:25;:::i;:::-;16278:37;;16334:104;16371:66;16361:8;16355:4;16334:104;:::i;:::-;16325:113;;16164:281;;;;:::o;16451:180::-;16499:77;16496:1;16489:88;16596:4;16593:1;16586:15;16620:4;16617:1;16610:15;16637:185;16677:1;16694:20;16712:1;16694:20;:::i;:::-;16689:25;;16728:20;16746:1;16728:20;:::i;:::-;16723:25;;16767:1;16757:35;;16772:18;;:::i;:::-;16757:35;16814:1;16811;16807:9;16802:14;;16637:185;;;;:::o;16828:232::-;16968:34;16964:1;16956:6;16952:14;16945:58;17037:15;17032:2;17024:6;17020:15;17013:40;16828:232;:::o;17066:366::-;17208:3;17229:67;17293:2;17288:3;17229:67;:::i;:::-;17222:74;;17305:93;17394:3;17305:93;:::i;:::-;17423:2;17418:3;17414:12;17407:19;;17066:366;;;:::o;17438:419::-;17604:4;17642:2;17631:9;17627:18;17619:26;;17691:9;17685:4;17681:20;17677:1;17666:9;17662:17;17655:47;17719:131;17845:4;17719:131;:::i;:::-;17711:139;;17438:419;;;:::o;17863:410::-;17903:7;17926:20;17944:1;17926:20;:::i;:::-;17921:25;;17960:20;17978:1;17960:20;:::i;:::-;17955:25;;18015:1;18012;18008:9;18037:30;18055:11;18037:30;:::i;:::-;18026:41;;18216:1;18207:7;18203:15;18200:1;18197:22;18177:1;18170:9;18150:83;18127:139;;18246:18;;:::i;:::-;18127:139;17911:362;17863:410;;;;:::o;18279:232::-;18419:34;18415:1;18407:6;18403:14;18396:58;18488:15;18483:2;18475:6;18471:15;18464:40;18279:232;:::o;18517:366::-;18659:3;18680:67;18744:2;18739:3;18680:67;:::i;:::-;18673:74;;18756:93;18845:3;18756:93;:::i;:::-;18874:2;18869:3;18865:12;18858:19;;18517:366;;;:::o;18889:419::-;19055:4;19093:2;19082:9;19078:18;19070:26;;19142:9;19136:4;19132:20;19128:1;19117:9;19113:17;19106:47;19170:131;19296:4;19170:131;:::i;:::-;19162:139;;18889:419;;;:::o;19314:237::-;19454:34;19450:1;19442:6;19438:14;19431:58;19523:20;19518:2;19510:6;19506:15;19499:45;19314:237;:::o;19557:366::-;19699:3;19720:67;19784:2;19779:3;19720:67;:::i;:::-;19713:74;;19796:93;19885:3;19796:93;:::i;:::-;19914:2;19909:3;19905:12;19898:19;;19557:366;;;:::o;19929:419::-;20095:4;20133:2;20122:9;20118:18;20110:26;;20182:9;20176:4;20172:20;20168:1;20157:9;20153:17;20146:47;20210:131;20336:4;20210:131;:::i;:::-;20202:139;;19929:419;;;:::o;20354:242::-;20494:34;20490:1;20482:6;20478:14;20471:58;20563:25;20558:2;20550:6;20546:15;20539:50;20354:242;:::o;20602:366::-;20744:3;20765:67;20829:2;20824:3;20765:67;:::i;:::-;20758:74;;20841:93;20930:3;20841:93;:::i;:::-;20959:2;20954:3;20950:12;20943:19;;20602:366;;;:::o;20974:419::-;21140:4;21178:2;21167:9;21163:18;21155:26;;21227:9;21221:4;21217:20;21213:1;21202:9;21198:17;21191:47;21255:131;21381:4;21255:131;:::i;:::-;21247:139;;20974:419;;;:::o;21399:172::-;21539:24;21535:1;21527:6;21523:14;21516:48;21399:172;:::o;21577:366::-;21719:3;21740:67;21804:2;21799:3;21740:67;:::i;:::-;21733:74;;21816:93;21905:3;21816:93;:::i;:::-;21934:2;21929:3;21925:12;21918:19;;21577:366;;;:::o;21949:419::-;22115:4;22153:2;22142:9;22138:18;22130:26;;22202:9;22196:4;22192:20;22188:1;22177:9;22173:17;22166:47;22230:131;22356:4;22230:131;:::i;:::-;22222:139;;21949:419;;;:::o;22374:223::-;22514:34;22510:1;22502:6;22498:14;22491:58;22583:6;22578:2;22570:6;22566:15;22559:31;22374:223;:::o;22603:366::-;22745:3;22766:67;22830:2;22825:3;22766:67;:::i;:::-;22759:74;;22842:93;22931:3;22842:93;:::i;:::-;22960:2;22955:3;22951:12;22944:19;;22603:366;;;:::o;22975:419::-;23141:4;23179:2;23168:9;23164:18;23156:26;;23228:9;23222:4;23218:20;23214:1;23203:9;23199:17;23192:47;23256:131;23382:4;23256:131;:::i;:::-;23248:139;;22975:419;;;:::o;23400:173::-;23540:25;23536:1;23528:6;23524:14;23517:49;23400:173;:::o;23579:366::-;23721:3;23742:67;23806:2;23801:3;23742:67;:::i;:::-;23735:74;;23818:93;23907:3;23818:93;:::i;:::-;23936:2;23931:3;23927:12;23920:19;;23579:366;;;:::o;23951:419::-;24117:4;24155:2;24144:9;24140:18;24132:26;;24204:9;24198:4;24194:20;24190:1;24179:9;24175:17;24168:47;24232:131;24358:4;24232:131;:::i;:::-;24224:139;;23951:419;;;:::o;24376:224::-;24516:34;24512:1;24504:6;24500:14;24493:58;24585:7;24580:2;24572:6;24568:15;24561:32;24376:224;:::o;24606:366::-;24748:3;24769:67;24833:2;24828:3;24769:67;:::i;:::-;24762:74;;24845:93;24934:3;24845:93;:::i;:::-;24963:2;24958:3;24954:12;24947:19;;24606:366;;;:::o;24978:419::-;25144:4;25182:2;25171:9;25167:18;25159:26;;25231:9;25225:4;25221:20;25217:1;25206:9;25202:17;25195:47;25259:131;25385:4;25259:131;:::i;:::-;25251:139;;24978:419;;;:::o;25403:250::-;25543:34;25539:1;25531:6;25527:14;25520:58;25612:33;25607:2;25599:6;25595:15;25588:58;25403:250;:::o;25659:366::-;25801:3;25822:67;25886:2;25881:3;25822:67;:::i;:::-;25815:74;;25898:93;25987:3;25898:93;:::i;:::-;26016:2;26011:3;26007:12;26000:19;;25659:366;;;:::o;26031:419::-;26197:4;26235:2;26224:9;26220:18;26212:26;;26284:9;26278:4;26274:20;26270:1;26259:9;26255:17;26248:47;26312:131;26438:4;26312:131;:::i;:::-;26304:139;;26031:419;;;:::o;26456:250::-;26596:34;26592:1;26584:6;26580:14;26573:58;26665:33;26660:2;26652:6;26648:15;26641:58;26456:250;:::o;26712:366::-;26854:3;26875:67;26939:2;26934:3;26875:67;:::i;:::-;26868:74;;26951:93;27040:3;26951:93;:::i;:::-;27069:2;27064:3;27060:12;27053:19;;26712:366;;;:::o;27084:419::-;27250:4;27288:2;27277:9;27273:18;27265:26;;27337:9;27331:4;27327:20;27323:1;27312:9;27308:17;27301:47;27365:131;27491:4;27365:131;:::i;:::-;27357:139;;27084:419;;;:::o;27509:227::-;27649:34;27645:1;27637:6;27633:14;27626:58;27718:10;27713:2;27705:6;27701:15;27694:35;27509:227;:::o;27742:366::-;27884:3;27905:67;27969:2;27964:3;27905:67;:::i;:::-;27898:74;;27981:93;28070:3;27981:93;:::i;:::-;28099:2;28094:3;28090:12;28083:19;;27742:366;;;:::o;28114:419::-;28280:4;28318:2;28307:9;28303:18;28295:26;;28367:9;28361:4;28357:20;28353:1;28342:9;28338:17;28331:47;28395:131;28521:4;28395:131;:::i;:::-;28387:139;;28114:419;;;:::o;28539:230::-;28679:34;28675:1;28667:6;28663:14;28656:58;28748:13;28743:2;28735:6;28731:15;28724:38;28539:230;:::o;28775:366::-;28917:3;28938:67;29002:2;28997:3;28938:67;:::i;:::-;28931:74;;29014:93;29103:3;29014:93;:::i;:::-;29132:2;29127:3;29123:12;29116:19;;28775:366;;;:::o;29147:419::-;29313:4;29351:2;29340:9;29336:18;29328:26;;29400:9;29394:4;29390:20;29386:1;29375:9;29371:17;29364:47;29428:131;29554:4;29428:131;:::i;:::-;29420:139;;29147:419;;;:::o;29572:229::-;29712:34;29708:1;29700:6;29696:14;29689:58;29781:12;29776:2;29768:6;29764:15;29757:37;29572:229;:::o;29807:366::-;29949:3;29970:67;30034:2;30029:3;29970:67;:::i;:::-;29963:74;;30046:93;30135:3;30046:93;:::i;:::-;30164:2;30159:3;30155:12;30148:19;;29807:366;;;:::o;30179:419::-;30345:4;30383:2;30372:9;30368:18;30360:26;;30432:9;30426:4;30422:20;30418:1;30407:9;30403:17;30396:47;30460:131;30586:4;30460:131;:::i;:::-;30452:139;;30179:419;;;:::o;30604:221::-;30744:34;30740:1;30732:6;30728:14;30721:58;30813:4;30808:2;30800:6;30796:15;30789:29;30604:221;:::o;30831:366::-;30973:3;30994:67;31058:2;31053:3;30994:67;:::i;:::-;30987:74;;31070:93;31159:3;31070:93;:::i;:::-;31188:2;31183:3;31179:12;31172:19;;30831:366;;;:::o;31203:419::-;31369:4;31407:2;31396:9;31392:18;31384:26;;31456:9;31450:4;31446:20;31442:1;31431:9;31427:17;31420:47;31484:131;31610:4;31484:131;:::i;:::-;31476:139;;31203:419;;;:::o;31628:225::-;31768:34;31764:1;31756:6;31752:14;31745:58;31837:8;31832:2;31824:6;31820:15;31813:33;31628:225;:::o;31859:366::-;32001:3;32022:67;32086:2;32081:3;32022:67;:::i;:::-;32015:74;;32098:93;32187:3;32098:93;:::i;:::-;32216:2;32211:3;32207:12;32200:19;;31859:366;;;:::o;32231:419::-;32397:4;32435:2;32424:9;32420:18;32412:26;;32484:9;32478:4;32474:20;32470:1;32459:9;32455:17;32448:47;32512:131;32638:4;32512:131;:::i;:::-;32504:139;;32231:419;;;:::o;32656:242::-;32796:34;32792:1;32784:6;32780:14;32773:58;32865:25;32860:2;32852:6;32848:15;32841:50;32656:242;:::o;32904:366::-;33046:3;33067:67;33131:2;33126:3;33067:67;:::i;:::-;33060:74;;33143:93;33232:3;33143:93;:::i;:::-;33261:2;33256:3;33252:12;33245:19;;32904:366;;;:::o;33276:419::-;33442:4;33480:2;33469:9;33465:18;33457:26;;33529:9;33523:4;33519:20;33515:1;33504:9;33500:17;33493:47;33557:131;33683:4;33557:131;:::i;:::-;33549:139;;33276:419;;;:::o;33701:143::-;33758:5;33789:6;33783:13;33774:22;;33805:33;33832:5;33805:33;:::i;:::-;33701:143;;;;:::o;33850:351::-;33920:6;33969:2;33957:9;33948:7;33944:23;33940:32;33937:119;;;33975:79;;:::i;:::-;33937:119;34095:1;34120:64;34176:7;34167:6;34156:9;34152:22;34120:64;:::i;:::-;34110:74;;34066:128;33850:351;;;;:::o;34207:332::-;34328:4;34366:2;34355:9;34351:18;34343:26;;34379:71;34447:1;34436:9;34432:17;34423:6;34379:71;:::i;:::-;34460:72;34528:2;34517:9;34513:18;34504:6;34460:72;:::i;:::-;34207:332;;;;;:::o;34545:137::-;34599:5;34630:6;34624:13;34615:22;;34646:30;34670:5;34646:30;:::i;:::-;34545:137;;;;:::o;34688:345::-;34755:6;34804:2;34792:9;34783:7;34779:23;34775:32;34772:119;;;34810:79;;:::i;:::-;34772:119;34930:1;34955:61;35008:7;34999:6;34988:9;34984:22;34955:61;:::i;:::-;34945:71;;34901:125;34688:345;;;;:::o;35039:223::-;35179:34;35175:1;35167:6;35163:14;35156:58;35248:6;35243:2;35235:6;35231:15;35224:31;35039:223;:::o;35268:366::-;35410:3;35431:67;35495:2;35490:3;35431:67;:::i;:::-;35424:74;;35507:93;35596:3;35507:93;:::i;:::-;35625:2;35620:3;35616:12;35609:19;;35268:366;;;:::o;35640:419::-;35806:4;35844:2;35833:9;35829:18;35821:26;;35893:9;35887:4;35883:20;35879:1;35868:9;35864:17;35857:47;35921:131;36047:4;35921:131;:::i;:::-;35913:139;;35640:419;;;:::o;36065:221::-;36205:34;36201:1;36193:6;36189:14;36182:58;36274:4;36269:2;36261:6;36257:15;36250:29;36065:221;:::o;36292:366::-;36434:3;36455:67;36519:2;36514:3;36455:67;:::i;:::-;36448:74;;36531:93;36620:3;36531:93;:::i;:::-;36649:2;36644:3;36640:12;36633:19;;36292:366;;;:::o;36664:419::-;36830:4;36868:2;36857:9;36853:18;36845:26;;36917:9;36911:4;36907:20;36903:1;36892:9;36888:17;36881:47;36945:131;37071:4;36945:131;:::i;:::-;36937:139;;36664:419;;;:::o;37089:224::-;37229:34;37225:1;37217:6;37213:14;37206:58;37298:7;37293:2;37285:6;37281:15;37274:32;37089:224;:::o;37319:366::-;37461:3;37482:67;37546:2;37541:3;37482:67;:::i;:::-;37475:74;;37558:93;37647:3;37558:93;:::i;:::-;37676:2;37671:3;37667:12;37660:19;;37319:366;;;:::o;37691:419::-;37857:4;37895:2;37884:9;37880:18;37872:26;;37944:9;37938:4;37934:20;37930:1;37919:9;37915:17;37908:47;37972:131;38098:4;37972:131;:::i;:::-;37964:139;;37691:419;;;:::o;38116:222::-;38256:34;38252:1;38244:6;38240:14;38233:58;38325:5;38320:2;38312:6;38308:15;38301:30;38116:222;:::o;38344:366::-;38486:3;38507:67;38571:2;38566:3;38507:67;:::i;:::-;38500:74;;38583:93;38672:3;38583:93;:::i;:::-;38701:2;38696:3;38692:12;38685:19;;38344:366;;;:::o;38716:419::-;38882:4;38920:2;38909:9;38905:18;38897:26;;38969:9;38963:4;38959:20;38955:1;38944:9;38940:17;38933:47;38997:131;39123:4;38997:131;:::i;:::-;38989:139;;38716:419;;;:::o;39141:174::-;39281:26;39277:1;39269:6;39265:14;39258:50;39141:174;:::o;39321:366::-;39463:3;39484:67;39548:2;39543:3;39484:67;:::i;:::-;39477:74;;39560:93;39649:3;39560:93;:::i;:::-;39678:2;39673:3;39669:12;39662:19;;39321:366;;;:::o;39693:419::-;39859:4;39897:2;39886:9;39882:18;39874:26;;39946:9;39940:4;39936:20;39932:1;39921:9;39917:17;39910:47;39974:131;40100:4;39974:131;:::i;:::-;39966:139;;39693:419;;;:::o;40118:246::-;40258:34;40254:1;40246:6;40242:14;40235:58;40327:29;40322:2;40314:6;40310:15;40303:54;40118:246;:::o;40370:366::-;40512:3;40533:67;40597:2;40592:3;40533:67;:::i;:::-;40526:74;;40609:93;40698:3;40609:93;:::i;:::-;40727:2;40722:3;40718:12;40711:19;;40370:366;;;:::o;40742:419::-;40908:4;40946:2;40935:9;40931:18;40923:26;;40995:9;40989:4;40985:20;40981:1;40970:9;40966:17;40959:47;41023:131;41149:4;41023:131;:::i;:::-;41015:139;;40742:419;;;:::o;41167:194::-;41207:4;41227:20;41245:1;41227:20;:::i;:::-;41222:25;;41261:20;41279:1;41261:20;:::i;:::-;41256:25;;41305:1;41302;41298:9;41290:17;;41329:1;41323:4;41320:11;41317:37;;;41334:18;;:::i;:::-;41317:37;41167:194;;;;:::o;41367:235::-;41507:34;41503:1;41495:6;41491:14;41484:58;41576:18;41571:2;41563:6;41559:15;41552:43;41367:235;:::o;41608:366::-;41750:3;41771:67;41835:2;41830:3;41771:67;:::i;:::-;41764:74;;41847:93;41936:3;41847:93;:::i;:::-;41965:2;41960:3;41956:12;41949:19;;41608:366;;;:::o;41980:419::-;42146:4;42184:2;42173:9;42169:18;42161:26;;42233:9;42227:4;42223:20;42219:1;42208:9;42204:17;42197:47;42261:131;42387:4;42261:131;:::i;:::-;42253:139;;41980:419;;;:::o;42405:179::-;42545:31;42541:1;42533:6;42529:14;42522:55;42405:179;:::o;42590:366::-;42732:3;42753:67;42817:2;42812:3;42753:67;:::i;:::-;42746:74;;42829:93;42918:3;42829:93;:::i;:::-;42947:2;42942:3;42938:12;42931:19;;42590:366;;;:::o;42962:419::-;43128:4;43166:2;43155:9;43151:18;43143:26;;43215:9;43209:4;43205:20;43201:1;43190:9;43186:17;43179:47;43243:131;43369:4;43243:131;:::i;:::-;43235:139;;42962:419;;;:::o;43387:147::-;43488:11;43525:3;43510:18;;43387:147;;;;:::o;43540:114::-;;:::o;43660:398::-;43819:3;43840:83;43921:1;43916:3;43840:83;:::i;:::-;43833:90;;43932:93;44021:3;43932:93;:::i;:::-;44050:1;44045:3;44041:11;44034:18;;43660:398;;;:::o;44064:379::-;44248:3;44270:147;44413:3;44270:147;:::i;:::-;44263:154;;44434:3;44427:10;;44064:379;;;:::o;44449:225::-;44589:34;44585:1;44577:6;44573:14;44566:58;44658:8;44653:2;44645:6;44641:15;44634:33;44449:225;:::o;44680:366::-;44822:3;44843:67;44907:2;44902:3;44843:67;:::i;:::-;44836:74;;44919:93;45008:3;44919:93;:::i;:::-;45037:2;45032:3;45028:12;45021:19;;44680:366;;;:::o;45052:419::-;45218:4;45256:2;45245:9;45241:18;45233:26;;45305:9;45299:4;45295:20;45291:1;45280:9;45276:17;45269:47;45333:131;45459:4;45333:131;:::i;:::-;45325:139;;45052:419;;;:::o;45477:180::-;45525:77;45522:1;45515:88;45622:4;45619:1;45612:15;45646:4;45643:1;45636:15;45663:180;45711:77;45708:1;45701:88;45808:4;45805:1;45798:15;45832:4;45829:1;45822:15;45849:143;45906:5;45937:6;45931:13;45922:22;;45953:33;45980:5;45953:33;:::i;:::-;45849:143;;;;:::o;45998:351::-;46068:6;46117:2;46105:9;46096:7;46092:23;46088:32;46085:119;;;46123:79;;:::i;:::-;46085:119;46243:1;46268:64;46324:7;46315:6;46304:9;46300:22;46268:64;:::i;:::-;46258:74;;46214:128;45998:351;;;;:::o;46355:85::-;46400:7;46429:5;46418:16;;46355:85;;;:::o;46446:158::-;46504:9;46537:61;46555:42;46564:32;46590:5;46564:32;:::i;:::-;46555:42;:::i;:::-;46537:61;:::i;:::-;46524:74;;46446:158;;;:::o;46610:147::-;46705:45;46744:5;46705:45;:::i;:::-;46700:3;46693:58;46610:147;;:::o;46763:114::-;46830:6;46864:5;46858:12;46848:22;;46763:114;;;:::o;46883:184::-;46982:11;47016:6;47011:3;47004:19;47056:4;47051:3;47047:14;47032:29;;46883:184;;;;:::o;47073:132::-;47140:4;47163:3;47155:11;;47193:4;47188:3;47184:14;47176:22;;47073:132;;;:::o;47211:108::-;47288:24;47306:5;47288:24;:::i;:::-;47283:3;47276:37;47211:108;;:::o;47325:179::-;47394:10;47415:46;47457:3;47449:6;47415:46;:::i;:::-;47493:4;47488:3;47484:14;47470:28;;47325:179;;;;:::o;47510:113::-;47580:4;47612;47607:3;47603:14;47595:22;;47510:113;;;:::o;47659:732::-;47778:3;47807:54;47855:5;47807:54;:::i;:::-;47877:86;47956:6;47951:3;47877:86;:::i;:::-;47870:93;;47987:56;48037:5;47987:56;:::i;:::-;48066:7;48097:1;48082:284;48107:6;48104:1;48101:13;48082:284;;;48183:6;48177:13;48210:63;48269:3;48254:13;48210:63;:::i;:::-;48203:70;;48296:60;48349:6;48296:60;:::i;:::-;48286:70;;48142:224;48129:1;48126;48122:9;48117:14;;48082:284;;;48086:14;48382:3;48375:10;;47783:608;;;47659:732;;;;:::o;48397:831::-;48660:4;48698:3;48687:9;48683:19;48675:27;;48712:71;48780:1;48769:9;48765:17;48756:6;48712:71;:::i;:::-;48793:80;48869:2;48858:9;48854:18;48845:6;48793:80;:::i;:::-;48920:9;48914:4;48910:20;48905:2;48894:9;48890:18;48883:48;48948:108;49051:4;49042:6;48948:108;:::i;:::-;48940:116;;49066:72;49134:2;49123:9;49119:18;49110:6;49066:72;:::i;:::-;49148:73;49216:3;49205:9;49201:19;49192:6;49148:73;:::i;:::-;48397:831;;;;;;;;:::o;49234:807::-;49483:4;49521:3;49510:9;49506:19;49498:27;;49535:71;49603:1;49592:9;49588:17;49579:6;49535:71;:::i;:::-;49616:72;49684:2;49673:9;49669:18;49660:6;49616:72;:::i;:::-;49698:80;49774:2;49763:9;49759:18;49750:6;49698:80;:::i;:::-;49788;49864:2;49853:9;49849:18;49840:6;49788:80;:::i;:::-;49878:73;49946:3;49935:9;49931:19;49922:6;49878:73;:::i;:::-;49961;50029:3;50018:9;50014:19;50005:6;49961:73;:::i;:::-;49234:807;;;;;;;;;:::o;50047:663::-;50135:6;50143;50151;50200:2;50188:9;50179:7;50175:23;50171:32;50168:119;;;50206:79;;:::i;:::-;50168:119;50326:1;50351:64;50407:7;50398:6;50387:9;50383:22;50351:64;:::i;:::-;50341:74;;50297:128;50464:2;50490:64;50546:7;50537:6;50526:9;50522:22;50490:64;:::i;:::-;50480:74;;50435:129;50603:2;50629:64;50685:7;50676:6;50665:9;50661:22;50629:64;:::i;:::-;50619:74;;50574:129;50047:663;;;;;:::o;50716:442::-;50865:4;50903:2;50892:9;50888:18;50880:26;;50916:71;50984:1;50973:9;50969:17;50960:6;50916:71;:::i;:::-;50997:72;51065:2;51054:9;51050:18;51041:6;50997:72;:::i;:::-;51079;51147:2;51136:9;51132:18;51123:6;51079:72;:::i;:::-;50716:442;;;;;;:::o
Swarm Source
ipfs://2e9b4c80901a7bc2d54684b9d27939cc980147c3756bdce4fbf0cbf33df82f93
Loading...
Loading
Loading...
Loading
OVERVIEW
BabyBonk is a meme coin celebrating the overhoul of Pepe by Bonk.Loading...
Loading
Multichain Portfolio | 29 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | BNB Chain (BNB) | 67.13% | $686.35 | 5.1969 | $3,566.88 |
BSC | 10.12% | <$0.000001 | 70,796,838,962,565.063 | $537.91 | |
BSC | 8.12% | $0.999377 | 431.5213 | $431.25 | |
BSC | 1.03% | <$0.000001 | 24,107,367,121.7387 | $54.65 | |
BSC | 0.37% | $2.12 | 9.33 | $19.78 | |
BSC | 0.13% | <$0.000001 | 3,546,461,633,207.0142 | $7.12 | |
BSC | 0.10% | <$0.000001 | 1,825,482,399,689,796,900 | $5.48 | |
BSC | 0.08% | <$0.000001 | 1,426,019,073,084.699 | $4.39 | |
BSC | 0.06% | <$0.000001 | 101,255,004,400,094.17 | $3.11 | |
BSC | 0.03% | $2 | 0.9 | $1.8 | |
BSC | 0.03% | $0.001743 | 1,000 | $1.74 | |
BSC | 0.02% | <$0.000001 | 98,000,000 | $0.885 | |
BSC | <0.01% | $0.000007 | 34,846.8102 | $0.2445 | |
ETH | 9.33% | $0.999377 | 495.8722 | $495.56 | |
ETH | 2.58% | $3,217.93 | 0.0427 | $137.25 | |
ETH | 0.43% | $0.00002 | 1,127,495.79 | $22.61 | |
ETH | 0.16% | <$0.000001 | 1,291,420,836.7181 | $8.52 | |
ARB | 0.20% | <$0.000001 | 108,089,018,093 | $10.81 | |
ARB | 0.04% | $3,216.28 | 0.00062543 | $2.01 | |
BASE | 0.02% | $1 | 1 | $1 |
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.