ERC-20
Overview
Max Total Supply
1,000,000,000,000 USHI
Holders
71
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,296,118,407.056964444134893595 USHIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Ushizo
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-11 */ /* * Ushizo teh one... * We do it for teh ppl. */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; 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); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { _owner = 0x03D8A7e258a0d5079A9B38415E4853BfF6AE9511; emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface 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; } contract Ushizo is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; address private _developmentWalletAddress = 0x03D8A7e258a0d5079A9B38415E4853BfF6AE9511; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Ushizo"; string private _symbol = "USHI"; uint8 private _decimals = 18; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _developmentFee = 30; uint256 private _previousDevelopmentFee = _developmentFee; uint256 public _liquidityFee = 20; uint256 private _previousLiquidityFee = _liquidityFee; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = 1000000000000 * 10**18; uint256 private numTokensSellToAddToLiquidity = 1000000000 * 10**18; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[owner()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), owner(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeDevelopment(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setDevelopmentFeePercent(uint256 developmentFee) external onlyOwner() { _developmentFee = developmentFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**3 ); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tDevelopment, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tDevelopment); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tDevelopment = calculateDevelopmentFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tDevelopment); return (tTransferAmount, tFee, tLiquidity, tDevelopment); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rDevelopment = tDevelopment.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rDevelopment); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function _takeDevelopment(uint256 tDevelopment) private { uint256 currentRate = _getRate(); uint256 rDevelopment = tDevelopment.mul(currentRate); _rOwned[_developmentWalletAddress] = _rOwned[_developmentWalletAddress].add(rDevelopment); if(_isExcluded[_developmentWalletAddress]) _tOwned[_developmentWalletAddress] = _tOwned[_developmentWalletAddress].add(tDevelopment); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**3 ); } function calculateDevelopmentFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_developmentFee).div( 10**3 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**3 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousDevelopmentFee = _developmentFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _developmentFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _developmentFee = _previousDevelopmentFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; swapAndLiquify(contractTokenBalance); } bool takeFee = true; if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeDevelopment(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeDevelopment(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeDevelopment(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"developmentFee","type":"uint256"}],"name":"setDevelopmentFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040527303d8a7e258a0d5079a9b38415e4853bff6ae9511600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506c0c9f2c9cd04674edea400000006008556008546000196200007c919062000866565b6000196200008b9190620007b7565b6009556040518060400160405280600681526020017f557368697a6f0000000000000000000000000000000000000000000000000000815250600b9080519060200190620000db92919062000658565b506040518060400160405280600481526020017f5553484900000000000000000000000000000000000000000000000000000000815250600c90805190602001906200012992919062000658565b506012600d60006101000a81548160ff021916908360ff1602179055506000600e55600e54600f55601e60105560105460115560146012556012546013556001601460016101000a81548160ff0219169083151502179055506c0c9f2c9cd04674edea400000006015556b033b2e3c9fd0803ce8000000601655348015620001b057600080fd5b507303d8a7e258a0d5079a9b38415e4853bff6ae95116000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360095460016000620002976200062f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033557600080fd5b505afa1580156200034a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037091906200071f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d357600080fd5b505afa158015620003e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040e91906200071f565b6040518363ffffffff1660e01b81526004016200042d9291906200076d565b602060405180830381600087803b1580156200044857600080fd5b505af11580156200045d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048391906200071f565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620005066200062f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005bf6200062f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516200062091906200079a565b60405180910390a35062000945565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006669062000830565b90600052602060002090601f0160209004810192826200068a5760008555620006d6565b82601f10620006a557805160ff1916838001178555620006d6565b82800160010185558215620006d6579182015b82811115620006d5578251825591602001919060010190620006b8565b5b509050620006e59190620006e9565b5090565b5b8082111562000704576000816000905550600101620006ea565b5090565b60008151905062000719816200092b565b92915050565b6000602082840312156200073257600080fd5b6000620007428482850162000708565b91505092915050565b6200075681620007f2565b82525050565b620007678162000826565b82525050565b60006040820190506200078460008301856200074b565b6200079360208301846200074b565b9392505050565b6000602082019050620007b160008301846200075c565b92915050565b6000620007c48262000826565b9150620007d18362000826565b925082821015620007e757620007e66200089e565b5b828203905092915050565b6000620007ff8262000806565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200084957607f821691505b6020821081141562000860576200085f620008fc565b5b50919050565b6000620008738262000826565b9150620008808362000826565b925082620008935762000892620008cd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6200093681620007f2565b81146200094257600080fd5b50565b60805160601c60a05160601c61514c6200099b6000396000818161137b01526123df015260008181610a0901528181612faf015281816130c5015281816130ec0152818161318801526131af015261514c6000f3fe6080604052600436106102135760003560e01c806352390c021161011857806395d89b41116100a0578063d14751851161006f578063d1475185146107e4578063d543dbeb1461080f578063dd62ed3e14610838578063ea2f0b3714610875578063f2fde38b1461089e5761021a565b806395d89b4114610716578063a457c2d714610741578063a9059cbb1461077e578063c49b9a80146107bb5761021a565b8063715018a6116100e7578063715018a6146106435780637d1db4a51461065a57806388f82020146106855780638da5cb5b146106c25780638ee88c53146106ed5761021a565b806352390c02146105755780635342acb41461059e5780636bc87c3a146105db57806370a08231146106065761021a565b80633685d4191161019b578063437823ec1161016a578063437823ec146104905780634549b039146104b95780634680ff35146104f657806349bd5a5e1461051f5780634a74bb021461054a5761021a565b80633685d419146103d657806339509351146103ff5780633b124fe71461043c5780633bd5d173146104675761021a565b80631694505e116101e25780631694505e146102db57806318160ddd1461030657806323b872dd146103315780632d8381191461036e578063313ce567146103ab5761021a565b8063061c82d01461021f57806306fdde0314610248578063095ea7b31461027357806313114a9d146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102466004803603810190610241919061430a565b6108c7565b005b34801561025457600080fd5b5061025d61094d565b60405161026a919061474f565b60405180910390f35b34801561027f57600080fd5b5061029a600480360381019061029591906142a5565b6109df565b6040516102a79190614719565b60405180910390f35b3480156102bc57600080fd5b506102c56109fd565b6040516102d29190614911565b60405180910390f35b3480156102e757600080fd5b506102f0610a07565b6040516102fd9190614734565b60405180910390f35b34801561031257600080fd5b5061031b610a2b565b6040516103289190614911565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190614256565b610a35565b6040516103659190614719565b60405180910390f35b34801561037a57600080fd5b506103956004803603810190610390919061430a565b610b0e565b6040516103a29190614911565b60405180910390f35b3480156103b757600080fd5b506103c0610b7c565b6040516103cd91906149bd565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906141c8565b610b93565b005b34801561040b57600080fd5b50610426600480360381019061042191906142a5565b610f61565b6040516104339190614719565b60405180910390f35b34801561044857600080fd5b50610451611014565b60405161045e9190614911565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061430a565b61101a565b005b34801561049c57600080fd5b506104b760048036038101906104b291906141c8565b611196565b005b3480156104c557600080fd5b506104e060048036038101906104db9190614333565b61126d565b6040516104ed9190614911565b60405180910390f35b34801561050257600080fd5b5061051d6004803603810190610518919061430a565b6112f3565b005b34801561052b57600080fd5b50610534611379565b604051610541919061469d565b60405180910390f35b34801561055657600080fd5b5061055f61139d565b60405161056c9190614719565b60405180910390f35b34801561058157600080fd5b5061059c600480360381019061059791906141c8565b6113b0565b005b3480156105aa57600080fd5b506105c560048036038101906105c091906141c8565b61164b565b6040516105d29190614719565b60405180910390f35b3480156105e757600080fd5b506105f06116a1565b6040516105fd9190614911565b60405180910390f35b34801561061257600080fd5b5061062d600480360381019061062891906141c8565b6116a7565b60405161063a9190614911565b60405180910390f35b34801561064f57600080fd5b50610658611792565b005b34801561066657600080fd5b5061066f6118cc565b60405161067c9190614911565b60405180910390f35b34801561069157600080fd5b506106ac60048036038101906106a791906141c8565b6118d2565b6040516106b99190614719565b60405180910390f35b3480156106ce57600080fd5b506106d7611928565b6040516106e4919061469d565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f919061430a565b611951565b005b34801561072257600080fd5b5061072b6119d7565b604051610738919061474f565b60405180910390f35b34801561074d57600080fd5b50610768600480360381019061076391906142a5565b611a69565b6040516107759190614719565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a091906142a5565b611b36565b6040516107b29190614719565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd91906142e1565b611b54565b005b3480156107f057600080fd5b506107f9611c24565b6040516108069190614911565b60405180910390f35b34801561081b57600080fd5b506108366004803603810190610831919061430a565b611c2a565b005b34801561084457600080fd5b5061085f600480360381019061085a919061421a565b611cd8565b60405161086c9190614911565b60405180910390f35b34801561088157600080fd5b5061089c600480360381019061089791906141c8565b611d5f565b005b3480156108aa57600080fd5b506108c560048036038101906108c091906141c8565b611e36565b005b6108cf611fdf565b73ffffffffffffffffffffffffffffffffffffffff166108ed611928565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90614871565b60405180910390fd5b80600e8190555050565b6060600b805461095c90614c00565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614c00565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b5050505050905090565b60006109f36109ec611fdf565b8484611fe7565b6001905092915050565b6000600a54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6000610a428484846121b2565b610b0384610a4e611fdf565b610afe856040518060600160405280602881526020016150ca60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab4611fdf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251f9092919063ffffffff16565b611fe7565b600190509392505050565b6000600954821115610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90614791565b60405180910390fd5b6000610b5f612574565b9050610b74818461259f90919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b610b9b611fdf565b73ffffffffffffffffffffffffffffffffffffffff16610bb9611928565b73ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0690614871565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9290614811565b60405180910390fd5b60005b600680549050811015610f5d578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610cfc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f4a5760066001600680549050610d579190614b0e565b81548110610d8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610df3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610f10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610f5d565b8080610f5590614c32565b915050610c9e565b5050565b600061100a610f6e611fdf565b846110058560036000610f7f611fdf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b611fe7565b6001905092915050565b600e5481565b6000611024611fdf565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa906148f1565b60405180910390fd5b60006110be836125cb565b505050505050905061111881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111708160095461263390919063ffffffff16565b60098190555061118b83600a546125b590919063ffffffff16565b600a81905550505050565b61119e611fdf565b73ffffffffffffffffffffffffffffffffffffffff166111bc611928565b73ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990614871565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006008548311156112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab90614831565b60405180910390fd5b816112d55760006112c4846125cb565b5050505050509050809150506112ed565b60006112e0846125cb565b5050505050915050809150505b92915050565b6112fb611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611319611928565b73ffffffffffffffffffffffffffffffffffffffff161461136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136690614871565b60405180910390fd5b8060108190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601460019054906101000a900460ff1681565b6113b8611fdf565b73ffffffffffffffffffffffffffffffffffffffff166113d6611928565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390614871565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b0906147f1565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561158d57611549600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0e565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561174257600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061178d565b61178a600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0e565b90505b919050565b61179a611fdf565b73ffffffffffffffffffffffffffffffffffffffff166117b8611928565b73ffffffffffffffffffffffffffffffffffffffff161461180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180590614871565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611959611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611977611928565b73ffffffffffffffffffffffffffffffffffffffff16146119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c490614871565b60405180910390fd5b8060128190555050565b6060600c80546119e690614c00565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1290614c00565b8015611a5f5780601f10611a3457610100808354040283529160200191611a5f565b820191906000526020600020905b815481529060010190602001808311611a4257829003601f168201915b5050505050905090565b6000611b2c611a76611fdf565b84611b27856040518060600160405280602581526020016150f26025913960036000611aa0611fdf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251f9092919063ffffffff16565b611fe7565b6001905092915050565b6000611b4a611b43611fdf565b84846121b2565b6001905092915050565b611b5c611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611b7a611928565b73ffffffffffffffffffffffffffffffffffffffff1614611bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc790614871565b60405180910390fd5b80601460016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611c199190614719565b60405180910390a150565b60105481565b611c32611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611c50611928565b73ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90614871565b60405180910390fd5b611ccf6103e8611cc18360085461264990919063ffffffff16565b61259f90919063ffffffff16565b60158190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d67611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611d85611928565b73ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd290614871565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611e3e611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611e5c611928565b73ffffffffffffffffffffffffffffffffffffffff1614611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea990614871565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f19906147b1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e906148d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120be906147d1565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121a59190614911565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612219906148b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228990614771565b60405180910390fd5b600081116122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90614891565b60405180910390fd5b6122dd611928565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561234b575061231b611928565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561239657601554811115612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90614851565b60405180910390fd5b5b60006123a1306116a7565b905060155481106123b25760155490505b600060165482101590508080156123d65750601460009054906101000a900460ff16155b801561242e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156124465750601460019054906101000a900460ff165b1561245a5760165491506124598261265f565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125015750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561250b57600090505b61251786868684612735565b505050505050565b6000838311158290612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e919061474f565b60405180910390fd5b5082840390509392505050565b6000806000612581612a46565b91509150612598818361259f90919063ffffffff16565b9250505090565b600081836125ad9190614a83565b905092915050565b600081836125c39190614a2d565b905092915050565b60008060008060008060008060008060006125e58c612d91565b935093509350935060008060006126068f878787612601612574565b612e10565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836126419190614b0e565b905092915050565b600081836126579190614ab4565b905092915050565b6001601460006101000a81548160ff021916908315150217905550600061269060028361259f90919063ffffffff16565b905060006126a7828461263390919063ffffffff16565b905060004790506126b783612ec4565b60006126cc824761263390919063ffffffff16565b90506126d88382613182565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161270b93929190614986565b60405180910390a1505050506000601460006101000a81548160ff02191690831515021790555050565b8061274357612742613272565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127e65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127fb576127f68484846132c6565b612a32565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561289e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128b3576128ae848484613534565b612a31565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129575750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561296c576129678484846137a2565b612a30565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a0e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a2357612a1e84848461397b565b612a2f565b612a2e8484846137a2565b5b5b5b5b80612a4057612a3f613c7e565b5b50505050565b600080600060095490506000600854905060005b600680549050811015612d5457826001600060068481548110612aa6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612bba5750816002600060068481548110612b52577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612bd15760095460085494509450505050612d8d565b612c876001600060068481548110612c12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461263390919063ffffffff16565b9250612d3f6002600060068481548110612cca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361263390919063ffffffff16565b91508080612d4c90614c32565b915050612a5a565b50612d6c60085460095461259f90919063ffffffff16565b821015612d8457600954600854935093505050612d8d565b81819350935050505b9091565b6000806000806000612da286613c9b565b90506000612daf87613ccd565b90506000612dbc88613cff565b90506000612df782612de985612ddb888e61263390919063ffffffff16565b61263390919063ffffffff16565b61263390919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612e29858a61264990919063ffffffff16565b90506000612e40868a61264990919063ffffffff16565b90506000612e57878a61264990919063ffffffff16565b90506000612e6e888a61264990919063ffffffff16565b90506000612ea982612e9b85612e8d888a61263390919063ffffffff16565b61263390919063ffffffff16565b61263390919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612f07577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f355781602001602082028036833780820191505090505b5090503081600081518110612f73577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561301357600080fd5b505afa158015613027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304b91906141f1565b81600181518110613085577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130ea307f000000000000000000000000000000000000000000000000000000000000000084611fe7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161314c95949392919061492c565b600060405180830381600087803b15801561316657600080fd5b505af115801561317a573d6000803e3d6000fd5b505050505050565b6131ad307f000000000000000000000000000000000000000000000000000000000000000084611fe7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806131f7611928565b426040518863ffffffff1660e01b8152600401613219969594939291906146b8565b6060604051808303818588803b15801561323257600080fd5b505af1158015613246573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061326b919061436f565b5050505050565b6000600e5414801561328657506000601254145b15613290576132c4565b600e54600f819055506010546011819055506012546013819055506000600e81905550600060108190555060006012819055505b565b60008060008060008060006132da886125cb565b965096509650965096509650965061333a88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133cf87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061346486600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b082613d31565b6134b981613ed6565b6134c38584614125565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516135209190614911565b60405180910390a350505050505050505050565b6000806000806000806000613548886125cb565b96509650965096509650965096506135a887600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061363d84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136d286600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061371e82613d31565b61372781613ed6565b6137318584614125565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161378e9190614911565b60405180910390a350505050505050505050565b60008060008060008060006137b6886125cb565b965096509650965096509650965061381687600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138ab86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138f782613d31565b61390081613ed6565b61390a8584614125565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516139679190614911565b60405180910390a350505050505050505050565b600080600080600080600061398f886125cb565b96509650965096509650965096506139ef88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a8487600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1984600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bae86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bfa82613d31565b613c0381613ed6565b613c0d8584614125565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613c6a9190614911565b60405180910390a350505050505050505050565b600f54600e81905550601154601081905550601354601281905550565b6000613cc66103e8613cb8600e548561264990919063ffffffff16565b61259f90919063ffffffff16565b9050919050565b6000613cf86103e8613cea6012548561264990919063ffffffff16565b61259f90919063ffffffff16565b9050919050565b6000613d2a6103e8613d1c6010548561264990919063ffffffff16565b61259f90919063ffffffff16565b9050919050565b6000613d3b612574565b90506000613d52828461264990919063ffffffff16565b9050613da681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ed157613e8d83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613ee0612574565b90506000613ef7828461264990919063ffffffff16565b9050613f6d8160016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b60016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614120576140ba8360026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b60026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61413a8260095461263390919063ffffffff16565b60098190555061415581600a546125b590919063ffffffff16565b600a819055505050565b60008135905061416e81615084565b92915050565b60008151905061418381615084565b92915050565b6000813590506141988161509b565b92915050565b6000813590506141ad816150b2565b92915050565b6000815190506141c2816150b2565b92915050565b6000602082840312156141da57600080fd5b60006141e88482850161415f565b91505092915050565b60006020828403121561420357600080fd5b600061421184828501614174565b91505092915050565b6000806040838503121561422d57600080fd5b600061423b8582860161415f565b925050602061424c8582860161415f565b9150509250929050565b60008060006060848603121561426b57600080fd5b60006142798682870161415f565b935050602061428a8682870161415f565b925050604061429b8682870161419e565b9150509250925092565b600080604083850312156142b857600080fd5b60006142c68582860161415f565b92505060206142d78582860161419e565b9150509250929050565b6000602082840312156142f357600080fd5b600061430184828501614189565b91505092915050565b60006020828403121561431c57600080fd5b600061432a8482850161419e565b91505092915050565b6000806040838503121561434657600080fd5b60006143548582860161419e565b925050602061436585828601614189565b9150509250929050565b60008060006060848603121561438457600080fd5b6000614392868287016141b3565b93505060206143a3868287016141b3565b92505060406143b4868287016141b3565b9150509250925092565b60006143ca83836143d6565b60208301905092915050565b6143df81614b42565b82525050565b6143ee81614b42565b82525050565b60006143ff826149e8565b6144098185614a0b565b9350614414836149d8565b8060005b8381101561444557815161442c88826143be565b9750614437836149fe565b925050600181019050614418565b5085935050505092915050565b61445b81614b54565b82525050565b61446a81614b97565b82525050565b61447981614bbb565b82525050565b600061448a826149f3565b6144948185614a1c565b93506144a4818560208601614bcd565b6144ad81614d08565b840191505092915050565b60006144c5602383614a1c565b91506144d082614d19565b604082019050919050565b60006144e8602a83614a1c565b91506144f382614d68565b604082019050919050565b600061450b602683614a1c565b915061451682614db7565b604082019050919050565b600061452e602283614a1c565b915061453982614e06565b604082019050919050565b6000614551601b83614a1c565b915061455c82614e55565b602082019050919050565b6000614574601b83614a1c565b915061457f82614e7e565b602082019050919050565b6000614597601f83614a1c565b91506145a282614ea7565b602082019050919050565b60006145ba602883614a1c565b91506145c582614ed0565b604082019050919050565b60006145dd602083614a1c565b91506145e882614f1f565b602082019050919050565b6000614600602983614a1c565b915061460b82614f48565b604082019050919050565b6000614623602583614a1c565b915061462e82614f97565b604082019050919050565b6000614646602483614a1c565b915061465182614fe6565b604082019050919050565b6000614669602c83614a1c565b915061467482615035565b604082019050919050565b61468881614b80565b82525050565b61469781614b8a565b82525050565b60006020820190506146b260008301846143e5565b92915050565b600060c0820190506146cd60008301896143e5565b6146da602083018861467f565b6146e76040830187614470565b6146f46060830186614470565b61470160808301856143e5565b61470e60a083018461467f565b979650505050505050565b600060208201905061472e6000830184614452565b92915050565b60006020820190506147496000830184614461565b92915050565b60006020820190508181036000830152614769818461447f565b905092915050565b6000602082019050818103600083015261478a816144b8565b9050919050565b600060208201905081810360008301526147aa816144db565b9050919050565b600060208201905081810360008301526147ca816144fe565b9050919050565b600060208201905081810360008301526147ea81614521565b9050919050565b6000602082019050818103600083015261480a81614544565b9050919050565b6000602082019050818103600083015261482a81614567565b9050919050565b6000602082019050818103600083015261484a8161458a565b9050919050565b6000602082019050818103600083015261486a816145ad565b9050919050565b6000602082019050818103600083015261488a816145d0565b9050919050565b600060208201905081810360008301526148aa816145f3565b9050919050565b600060208201905081810360008301526148ca81614616565b9050919050565b600060208201905081810360008301526148ea81614639565b9050919050565b6000602082019050818103600083015261490a8161465c565b9050919050565b6000602082019050614926600083018461467f565b92915050565b600060a082019050614941600083018861467f565b61494e6020830187614470565b818103604083015261496081866143f4565b905061496f60608301856143e5565b61497c608083018461467f565b9695505050505050565b600060608201905061499b600083018661467f565b6149a8602083018561467f565b6149b5604083018461467f565b949350505050565b60006020820190506149d2600083018461468e565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614a3882614b80565b9150614a4383614b80565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a7857614a77614c7b565b5b828201905092915050565b6000614a8e82614b80565b9150614a9983614b80565b925082614aa957614aa8614caa565b5b828204905092915050565b6000614abf82614b80565b9150614aca83614b80565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b0357614b02614c7b565b5b828202905092915050565b6000614b1982614b80565b9150614b2483614b80565b925082821015614b3757614b36614c7b565b5b828203905092915050565b6000614b4d82614b60565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614ba282614ba9565b9050919050565b6000614bb482614b60565b9050919050565b6000614bc682614b80565b9050919050565b60005b83811015614beb578082015181840152602081019050614bd0565b83811115614bfa576000848401525b50505050565b60006002820490506001821680614c1857607f821691505b60208210811415614c2c57614c2b614cd9565b5b50919050565b6000614c3d82614b80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c7057614c6f614c7b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61508d81614b42565b811461509857600080fd5b50565b6150a481614b54565b81146150af57600080fd5b50565b6150bb81614b80565b81146150c657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206b27acb66c26abe600c8348af16621f1e46c47285f30f019816fa5fe50aa538464736f6c63430008040033
Deployed Bytecode
0x6080604052600436106102135760003560e01c806352390c021161011857806395d89b41116100a0578063d14751851161006f578063d1475185146107e4578063d543dbeb1461080f578063dd62ed3e14610838578063ea2f0b3714610875578063f2fde38b1461089e5761021a565b806395d89b4114610716578063a457c2d714610741578063a9059cbb1461077e578063c49b9a80146107bb5761021a565b8063715018a6116100e7578063715018a6146106435780637d1db4a51461065a57806388f82020146106855780638da5cb5b146106c25780638ee88c53146106ed5761021a565b806352390c02146105755780635342acb41461059e5780636bc87c3a146105db57806370a08231146106065761021a565b80633685d4191161019b578063437823ec1161016a578063437823ec146104905780634549b039146104b95780634680ff35146104f657806349bd5a5e1461051f5780634a74bb021461054a5761021a565b80633685d419146103d657806339509351146103ff5780633b124fe71461043c5780633bd5d173146104675761021a565b80631694505e116101e25780631694505e146102db57806318160ddd1461030657806323b872dd146103315780632d8381191461036e578063313ce567146103ab5761021a565b8063061c82d01461021f57806306fdde0314610248578063095ea7b31461027357806313114a9d146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102466004803603810190610241919061430a565b6108c7565b005b34801561025457600080fd5b5061025d61094d565b60405161026a919061474f565b60405180910390f35b34801561027f57600080fd5b5061029a600480360381019061029591906142a5565b6109df565b6040516102a79190614719565b60405180910390f35b3480156102bc57600080fd5b506102c56109fd565b6040516102d29190614911565b60405180910390f35b3480156102e757600080fd5b506102f0610a07565b6040516102fd9190614734565b60405180910390f35b34801561031257600080fd5b5061031b610a2b565b6040516103289190614911565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190614256565b610a35565b6040516103659190614719565b60405180910390f35b34801561037a57600080fd5b506103956004803603810190610390919061430a565b610b0e565b6040516103a29190614911565b60405180910390f35b3480156103b757600080fd5b506103c0610b7c565b6040516103cd91906149bd565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906141c8565b610b93565b005b34801561040b57600080fd5b50610426600480360381019061042191906142a5565b610f61565b6040516104339190614719565b60405180910390f35b34801561044857600080fd5b50610451611014565b60405161045e9190614911565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061430a565b61101a565b005b34801561049c57600080fd5b506104b760048036038101906104b291906141c8565b611196565b005b3480156104c557600080fd5b506104e060048036038101906104db9190614333565b61126d565b6040516104ed9190614911565b60405180910390f35b34801561050257600080fd5b5061051d6004803603810190610518919061430a565b6112f3565b005b34801561052b57600080fd5b50610534611379565b604051610541919061469d565b60405180910390f35b34801561055657600080fd5b5061055f61139d565b60405161056c9190614719565b60405180910390f35b34801561058157600080fd5b5061059c600480360381019061059791906141c8565b6113b0565b005b3480156105aa57600080fd5b506105c560048036038101906105c091906141c8565b61164b565b6040516105d29190614719565b60405180910390f35b3480156105e757600080fd5b506105f06116a1565b6040516105fd9190614911565b60405180910390f35b34801561061257600080fd5b5061062d600480360381019061062891906141c8565b6116a7565b60405161063a9190614911565b60405180910390f35b34801561064f57600080fd5b50610658611792565b005b34801561066657600080fd5b5061066f6118cc565b60405161067c9190614911565b60405180910390f35b34801561069157600080fd5b506106ac60048036038101906106a791906141c8565b6118d2565b6040516106b99190614719565b60405180910390f35b3480156106ce57600080fd5b506106d7611928565b6040516106e4919061469d565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f919061430a565b611951565b005b34801561072257600080fd5b5061072b6119d7565b604051610738919061474f565b60405180910390f35b34801561074d57600080fd5b50610768600480360381019061076391906142a5565b611a69565b6040516107759190614719565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a091906142a5565b611b36565b6040516107b29190614719565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd91906142e1565b611b54565b005b3480156107f057600080fd5b506107f9611c24565b6040516108069190614911565b60405180910390f35b34801561081b57600080fd5b506108366004803603810190610831919061430a565b611c2a565b005b34801561084457600080fd5b5061085f600480360381019061085a919061421a565b611cd8565b60405161086c9190614911565b60405180910390f35b34801561088157600080fd5b5061089c600480360381019061089791906141c8565b611d5f565b005b3480156108aa57600080fd5b506108c560048036038101906108c091906141c8565b611e36565b005b6108cf611fdf565b73ffffffffffffffffffffffffffffffffffffffff166108ed611928565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90614871565b60405180910390fd5b80600e8190555050565b6060600b805461095c90614c00565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614c00565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b5050505050905090565b60006109f36109ec611fdf565b8484611fe7565b6001905092915050565b6000600a54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b6000610a428484846121b2565b610b0384610a4e611fdf565b610afe856040518060600160405280602881526020016150ca60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab4611fdf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251f9092919063ffffffff16565b611fe7565b600190509392505050565b6000600954821115610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90614791565b60405180910390fd5b6000610b5f612574565b9050610b74818461259f90919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b610b9b611fdf565b73ffffffffffffffffffffffffffffffffffffffff16610bb9611928565b73ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0690614871565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9290614811565b60405180910390fd5b60005b600680549050811015610f5d578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610cfc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f4a5760066001600680549050610d579190614b0e565b81548110610d8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610df3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610f10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610f5d565b8080610f5590614c32565b915050610c9e565b5050565b600061100a610f6e611fdf565b846110058560036000610f7f611fdf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b611fe7565b6001905092915050565b600e5481565b6000611024611fdf565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa906148f1565b60405180910390fd5b60006110be836125cb565b505050505050905061111881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111708160095461263390919063ffffffff16565b60098190555061118b83600a546125b590919063ffffffff16565b600a81905550505050565b61119e611fdf565b73ffffffffffffffffffffffffffffffffffffffff166111bc611928565b73ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990614871565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006008548311156112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab90614831565b60405180910390fd5b816112d55760006112c4846125cb565b5050505050509050809150506112ed565b60006112e0846125cb565b5050505050915050809150505b92915050565b6112fb611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611319611928565b73ffffffffffffffffffffffffffffffffffffffff161461136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136690614871565b60405180910390fd5b8060108190555050565b7f0000000000000000000000006c61ffe23109a1da1520110940cb7dec401cfdfc81565b601460019054906101000a900460ff1681565b6113b8611fdf565b73ffffffffffffffffffffffffffffffffffffffff166113d6611928565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390614871565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b0906147f1565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561158d57611549600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0e565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561174257600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061178d565b61178a600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0e565b90505b919050565b61179a611fdf565b73ffffffffffffffffffffffffffffffffffffffff166117b8611928565b73ffffffffffffffffffffffffffffffffffffffff161461180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180590614871565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611959611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611977611928565b73ffffffffffffffffffffffffffffffffffffffff16146119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c490614871565b60405180910390fd5b8060128190555050565b6060600c80546119e690614c00565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1290614c00565b8015611a5f5780601f10611a3457610100808354040283529160200191611a5f565b820191906000526020600020905b815481529060010190602001808311611a4257829003601f168201915b5050505050905090565b6000611b2c611a76611fdf565b84611b27856040518060600160405280602581526020016150f26025913960036000611aa0611fdf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251f9092919063ffffffff16565b611fe7565b6001905092915050565b6000611b4a611b43611fdf565b84846121b2565b6001905092915050565b611b5c611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611b7a611928565b73ffffffffffffffffffffffffffffffffffffffff1614611bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc790614871565b60405180910390fd5b80601460016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611c199190614719565b60405180910390a150565b60105481565b611c32611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611c50611928565b73ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90614871565b60405180910390fd5b611ccf6103e8611cc18360085461264990919063ffffffff16565b61259f90919063ffffffff16565b60158190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d67611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611d85611928565b73ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd290614871565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611e3e611fdf565b73ffffffffffffffffffffffffffffffffffffffff16611e5c611928565b73ffffffffffffffffffffffffffffffffffffffff1614611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea990614871565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f19906147b1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e906148d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120be906147d1565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121a59190614911565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612219906148b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228990614771565b60405180910390fd5b600081116122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90614891565b60405180910390fd5b6122dd611928565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561234b575061231b611928565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561239657601554811115612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90614851565b60405180910390fd5b5b60006123a1306116a7565b905060155481106123b25760155490505b600060165482101590508080156123d65750601460009054906101000a900460ff16155b801561242e57507f0000000000000000000000006c61ffe23109a1da1520110940cb7dec401cfdfc73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156124465750601460019054906101000a900460ff165b1561245a5760165491506124598261265f565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125015750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561250b57600090505b61251786868684612735565b505050505050565b6000838311158290612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e919061474f565b60405180910390fd5b5082840390509392505050565b6000806000612581612a46565b91509150612598818361259f90919063ffffffff16565b9250505090565b600081836125ad9190614a83565b905092915050565b600081836125c39190614a2d565b905092915050565b60008060008060008060008060008060006125e58c612d91565b935093509350935060008060006126068f878787612601612574565b612e10565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836126419190614b0e565b905092915050565b600081836126579190614ab4565b905092915050565b6001601460006101000a81548160ff021916908315150217905550600061269060028361259f90919063ffffffff16565b905060006126a7828461263390919063ffffffff16565b905060004790506126b783612ec4565b60006126cc824761263390919063ffffffff16565b90506126d88382613182565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161270b93929190614986565b60405180910390a1505050506000601460006101000a81548160ff02191690831515021790555050565b8061274357612742613272565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127e65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127fb576127f68484846132c6565b612a32565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561289e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128b3576128ae848484613534565b612a31565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129575750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561296c576129678484846137a2565b612a30565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a0e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a2357612a1e84848461397b565b612a2f565b612a2e8484846137a2565b5b5b5b5b80612a4057612a3f613c7e565b5b50505050565b600080600060095490506000600854905060005b600680549050811015612d5457826001600060068481548110612aa6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612bba5750816002600060068481548110612b52577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612bd15760095460085494509450505050612d8d565b612c876001600060068481548110612c12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461263390919063ffffffff16565b9250612d3f6002600060068481548110612cca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361263390919063ffffffff16565b91508080612d4c90614c32565b915050612a5a565b50612d6c60085460095461259f90919063ffffffff16565b821015612d8457600954600854935093505050612d8d565b81819350935050505b9091565b6000806000806000612da286613c9b565b90506000612daf87613ccd565b90506000612dbc88613cff565b90506000612df782612de985612ddb888e61263390919063ffffffff16565b61263390919063ffffffff16565b61263390919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612e29858a61264990919063ffffffff16565b90506000612e40868a61264990919063ffffffff16565b90506000612e57878a61264990919063ffffffff16565b90506000612e6e888a61264990919063ffffffff16565b90506000612ea982612e9b85612e8d888a61263390919063ffffffff16565b61263390919063ffffffff16565b61263390919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612f07577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f355781602001602082028036833780820191505090505b5090503081600081518110612f73577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561301357600080fd5b505afa158015613027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304b91906141f1565b81600181518110613085577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130ea307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611fe7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161314c95949392919061492c565b600060405180830381600087803b15801561316657600080fd5b505af115801561317a573d6000803e3d6000fd5b505050505050565b6131ad307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611fe7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806131f7611928565b426040518863ffffffff1660e01b8152600401613219969594939291906146b8565b6060604051808303818588803b15801561323257600080fd5b505af1158015613246573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061326b919061436f565b5050505050565b6000600e5414801561328657506000601254145b15613290576132c4565b600e54600f819055506010546011819055506012546013819055506000600e81905550600060108190555060006012819055505b565b60008060008060008060006132da886125cb565b965096509650965096509650965061333a88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133cf87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061346486600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b082613d31565b6134b981613ed6565b6134c38584614125565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516135209190614911565b60405180910390a350505050505050505050565b6000806000806000806000613548886125cb565b96509650965096509650965096506135a887600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061363d84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136d286600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061371e82613d31565b61372781613ed6565b6137318584614125565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161378e9190614911565b60405180910390a350505050505050505050565b60008060008060008060006137b6886125cb565b965096509650965096509650965061381687600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138ab86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138f782613d31565b61390081613ed6565b61390a8584614125565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516139679190614911565b60405180910390a350505050505050505050565b600080600080600080600061398f886125cb565b96509650965096509650965096506139ef88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a8487600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1984600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bae86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bfa82613d31565b613c0381613ed6565b613c0d8584614125565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613c6a9190614911565b60405180910390a350505050505050505050565b600f54600e81905550601154601081905550601354601281905550565b6000613cc66103e8613cb8600e548561264990919063ffffffff16565b61259f90919063ffffffff16565b9050919050565b6000613cf86103e8613cea6012548561264990919063ffffffff16565b61259f90919063ffffffff16565b9050919050565b6000613d2a6103e8613d1c6010548561264990919063ffffffff16565b61259f90919063ffffffff16565b9050919050565b6000613d3b612574565b90506000613d52828461264990919063ffffffff16565b9050613da681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ed157613e8d83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613ee0612574565b90506000613ef7828461264990919063ffffffff16565b9050613f6d8160016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b60016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614120576140ba8360026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b590919063ffffffff16565b60026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61413a8260095461263390919063ffffffff16565b60098190555061415581600a546125b590919063ffffffff16565b600a819055505050565b60008135905061416e81615084565b92915050565b60008151905061418381615084565b92915050565b6000813590506141988161509b565b92915050565b6000813590506141ad816150b2565b92915050565b6000815190506141c2816150b2565b92915050565b6000602082840312156141da57600080fd5b60006141e88482850161415f565b91505092915050565b60006020828403121561420357600080fd5b600061421184828501614174565b91505092915050565b6000806040838503121561422d57600080fd5b600061423b8582860161415f565b925050602061424c8582860161415f565b9150509250929050565b60008060006060848603121561426b57600080fd5b60006142798682870161415f565b935050602061428a8682870161415f565b925050604061429b8682870161419e565b9150509250925092565b600080604083850312156142b857600080fd5b60006142c68582860161415f565b92505060206142d78582860161419e565b9150509250929050565b6000602082840312156142f357600080fd5b600061430184828501614189565b91505092915050565b60006020828403121561431c57600080fd5b600061432a8482850161419e565b91505092915050565b6000806040838503121561434657600080fd5b60006143548582860161419e565b925050602061436585828601614189565b9150509250929050565b60008060006060848603121561438457600080fd5b6000614392868287016141b3565b93505060206143a3868287016141b3565b92505060406143b4868287016141b3565b9150509250925092565b60006143ca83836143d6565b60208301905092915050565b6143df81614b42565b82525050565b6143ee81614b42565b82525050565b60006143ff826149e8565b6144098185614a0b565b9350614414836149d8565b8060005b8381101561444557815161442c88826143be565b9750614437836149fe565b925050600181019050614418565b5085935050505092915050565b61445b81614b54565b82525050565b61446a81614b97565b82525050565b61447981614bbb565b82525050565b600061448a826149f3565b6144948185614a1c565b93506144a4818560208601614bcd565b6144ad81614d08565b840191505092915050565b60006144c5602383614a1c565b91506144d082614d19565b604082019050919050565b60006144e8602a83614a1c565b91506144f382614d68565b604082019050919050565b600061450b602683614a1c565b915061451682614db7565b604082019050919050565b600061452e602283614a1c565b915061453982614e06565b604082019050919050565b6000614551601b83614a1c565b915061455c82614e55565b602082019050919050565b6000614574601b83614a1c565b915061457f82614e7e565b602082019050919050565b6000614597601f83614a1c565b91506145a282614ea7565b602082019050919050565b60006145ba602883614a1c565b91506145c582614ed0565b604082019050919050565b60006145dd602083614a1c565b91506145e882614f1f565b602082019050919050565b6000614600602983614a1c565b915061460b82614f48565b604082019050919050565b6000614623602583614a1c565b915061462e82614f97565b604082019050919050565b6000614646602483614a1c565b915061465182614fe6565b604082019050919050565b6000614669602c83614a1c565b915061467482615035565b604082019050919050565b61468881614b80565b82525050565b61469781614b8a565b82525050565b60006020820190506146b260008301846143e5565b92915050565b600060c0820190506146cd60008301896143e5565b6146da602083018861467f565b6146e76040830187614470565b6146f46060830186614470565b61470160808301856143e5565b61470e60a083018461467f565b979650505050505050565b600060208201905061472e6000830184614452565b92915050565b60006020820190506147496000830184614461565b92915050565b60006020820190508181036000830152614769818461447f565b905092915050565b6000602082019050818103600083015261478a816144b8565b9050919050565b600060208201905081810360008301526147aa816144db565b9050919050565b600060208201905081810360008301526147ca816144fe565b9050919050565b600060208201905081810360008301526147ea81614521565b9050919050565b6000602082019050818103600083015261480a81614544565b9050919050565b6000602082019050818103600083015261482a81614567565b9050919050565b6000602082019050818103600083015261484a8161458a565b9050919050565b6000602082019050818103600083015261486a816145ad565b9050919050565b6000602082019050818103600083015261488a816145d0565b9050919050565b600060208201905081810360008301526148aa816145f3565b9050919050565b600060208201905081810360008301526148ca81614616565b9050919050565b600060208201905081810360008301526148ea81614639565b9050919050565b6000602082019050818103600083015261490a8161465c565b9050919050565b6000602082019050614926600083018461467f565b92915050565b600060a082019050614941600083018861467f565b61494e6020830187614470565b818103604083015261496081866143f4565b905061496f60608301856143e5565b61497c608083018461467f565b9695505050505050565b600060608201905061499b600083018661467f565b6149a8602083018561467f565b6149b5604083018461467f565b949350505050565b60006020820190506149d2600083018461468e565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614a3882614b80565b9150614a4383614b80565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a7857614a77614c7b565b5b828201905092915050565b6000614a8e82614b80565b9150614a9983614b80565b925082614aa957614aa8614caa565b5b828204905092915050565b6000614abf82614b80565b9150614aca83614b80565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b0357614b02614c7b565b5b828202905092915050565b6000614b1982614b80565b9150614b2483614b80565b925082821015614b3757614b36614c7b565b5b828203905092915050565b6000614b4d82614b60565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614ba282614ba9565b9050919050565b6000614bb482614b60565b9050919050565b6000614bc682614b80565b9050919050565b60005b83811015614beb578082015181840152602081019050614bd0565b83811115614bfa576000848401525b50505050565b60006002820490506001821680614c1857607f821691505b60208210811415614c2c57614c2b614cd9565b5b50919050565b6000614c3d82614b80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c7057614c6f614c7b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61508d81614b42565b811461509857600080fd5b50565b6150a481614b54565b81146150af57600080fd5b50565b6150bb81614b80565b81146150c657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206b27acb66c26abe600c8348af16621f1e46c47285f30f019816fa5fe50aa538464736f6c63430008040033
Deployed Bytecode Sourcemap
15504:17873:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22766:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17821:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18719:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19830:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16629:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18092:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18886:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20751:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18003:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21349:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19205:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16340:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19923:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22537:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20307:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22870:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16687:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16760:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21010:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27671:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16527:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18193:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7166:148;;;;;;;;;;;;;:::i;:::-;;16807:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19704:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6947:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23006:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17910:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19429:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18397:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23302:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16421:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23134:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18570:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22650:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7320:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22766:98;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22850:6:::1;22840:7;:16;;;;22766:98:::0;:::o;17821:83::-;17858:13;17891:5;17884:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17821:83;:::o;18719:161::-;18794:4;18811:39;18820:12;:10;:12::i;:::-;18834:7;18843:6;18811:8;:39::i;:::-;18868:4;18861:11;;18719:161;;;;:::o;19830:87::-;19872:7;19899:10;;19892:17;;19830:87;:::o;16629:51::-;;;:::o;18092:95::-;18145:7;18172;;18165:14;;18092:95;:::o;18886:313::-;18984:4;19001:36;19011:6;19019:9;19030:6;19001:9;:36::i;:::-;19048:121;19057:6;19065:12;:10;:12::i;:::-;19079:89;19117:6;19079:89;;;;;;;;;;;;;;;;;:11;:19;19091:6;19079:19;;;;;;;;;;;;;;;:33;19099:12;:10;:12::i;:::-;19079:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19048:8;:121::i;:::-;19187:4;19180:11;;18886:313;;;;;:::o;20751:253::-;20817:7;20856;;20845;:18;;20837:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20921:19;20944:10;:8;:10::i;:::-;20921:33;;20972:24;20984:11;20972:7;:11;;:24;;;;:::i;:::-;20965:31;;;20751:253;;;:::o;18003:83::-;18044:5;18069:9;;;;;;;;;;;18062:16;;18003:83;:::o;21349:479::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21431:11:::1;:20;21443:7;21431:20;;;;;;;;;;;;;;;;;;;;;;;;;21423:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21499:9;21494:327;21518:9;:16;;;;21514:1;:20;21494:327;;;21576:7;21560:23;;:9;21570:1;21560:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;21556:254;;;21619:9;21648:1;21629:9;:16;;;;:20;;;;:::i;:::-;21619:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21604:9;21614:1;21604:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21688:1;21669:7;:16;21677:7;21669:16;;;;;;;;;;;;;;;:20;;;;21731:5;21708:11;:20;21720:7;21708:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21755:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21789:5;;21556:254;21536:3;;;;;:::i;:::-;;;;21494:327;;;;21349:479:::0;:::o;19205:218::-;19293:4;19310:83;19319:12;:10;:12::i;:::-;19333:7;19342:50;19381:10;19342:11;:25;19354:12;:10;:12::i;:::-;19342:25;;;;;;;;;;;;;;;:34;19368:7;19342:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19310:8;:83::i;:::-;19411:4;19404:11;;19205:218;;;;:::o;16340:26::-;;;;:::o;19923:378::-;19975:14;19992:12;:10;:12::i;:::-;19975:29;;20024:11;:19;20036:6;20024:19;;;;;;;;;;;;;;;;;;;;;;;;;20023:20;20015:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20104:15;20129:19;20140:7;20129:10;:19::i;:::-;20103:45;;;;;;;;20177:28;20197:7;20177;:15;20185:6;20177:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20159:7;:15;20167:6;20159:15;;;;;;;;;;;;;;;:46;;;;20226:20;20238:7;20226;;:11;;:20;;;;:::i;:::-;20216:7;:30;;;;20270:23;20285:7;20270:10;;:14;;:23;;;;:::i;:::-;20257:10;:36;;;;19923:378;;;:::o;22537:107::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22632:4:::1;22602:18;:27;22621:7;22602:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22537:107:::0;:::o;20307:438::-;20397:7;20436;;20425;:18;;20417:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20495:17;20490:248;;20530:15;20555:19;20566:7;20555:10;:19::i;:::-;20529:45;;;;;;;;20596:7;20589:14;;;;;20490:248;20638:23;20670:19;20681:7;20670:10;:19::i;:::-;20636:53;;;;;;;;20711:15;20704:22;;;20307:438;;;;;:::o;22870:130::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22978:14:::1;22960:15;:32;;;;22870:130:::0;:::o;16687:38::-;;;:::o;16760:40::-;;;;;;;;;;;;;:::o;21010:333::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21093:11:::1;:20;21105:7;21093:20;;;;;;;;;;;;;;;;;;;;;;;;;21092:21;21084:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21178:1;21159:7;:16;21167:7;21159:16;;;;;;;;;;;;;;;;:20;21156:108;;;21215:37;21235:7;:16;21243:7;21235:16;;;;;;;;;;;;;;;;21215:19;:37::i;:::-;21196:7;:16;21204:7;21196:16;;;;;;;;;;;;;;;:56;;;;21156:108;21297:4;21274:11;:20;21286:7;21274:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21312:9;21327:7;21312:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21010:333:::0;:::o;27671:123::-;27735:4;27759:18;:27;27778:7;27759:27;;;;;;;;;;;;;;;;;;;;;;;;;27752:34;;27671:123;;;:::o;16527:33::-;;;;:::o;18193:198::-;18259:7;18283:11;:20;18295:7;18283:20;;;;;;;;;;;;;;;;;;;;;;;;;18279:49;;;18312:7;:16;18320:7;18312:16;;;;;;;;;;;;;;;;18305:23;;;;18279:49;18346:37;18366:7;:16;18374:7;18366:16;;;;;;;;;;;;;;;;18346:19;:37::i;:::-;18339:44;;18193:198;;;;:::o;7166:148::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7273:1:::1;7236:40;;7257:6;::::0;::::1;;;;;;;;7236:40;;;;;;;;;;;;7304:1;7287:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7166:148::o:0;16807:52::-;;;;:::o;19704:120::-;19772:4;19796:11;:20;19808:7;19796:20;;;;;;;;;;;;;;;;;;;;;;;;;19789:27;;19704:120;;;:::o;6947:87::-;6993:7;7020:6;;;;;;;;;;;7013:13;;6947:87;:::o;23006:122::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23108:12:::1;23092:13;:28;;;;23006:122:::0;:::o;17910:87::-;17949:13;17982:7;17975:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17910:87;:::o;19429:269::-;19522:4;19539:129;19548:12;:10;:12::i;:::-;19562:7;19571:96;19610:15;19571:96;;;;;;;;;;;;;;;;;:11;:25;19583:12;:10;:12::i;:::-;19571:25;;;;;;;;;;;;;;;:34;19597:7;19571:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19539:8;:129::i;:::-;19686:4;19679:11;;19429:269;;;;:::o;18397:167::-;18475:4;18492:42;18502:12;:10;:12::i;:::-;18516:9;18527:6;18492:9;:42::i;:::-;18552:4;18545:11;;18397:167;;;;:::o;23302:171::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23403:8:::1;23379:21;;:32;;;;;;;;;;;;;;;;;;23427:38;23456:8;23427:38;;;;;;:::i;:::-;;;;;;;;23302:171:::0;:::o;16421:35::-;;;;:::o;23134:162::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23228:60:::1;23272:5;23228:25;23240:12;23228:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;23213:12;:75;;;;23134:162:::0;:::o;18570:143::-;18651:7;18678:11;:18;18690:5;18678:18;;;;;;;;;;;;;;;:27;18697:7;18678:27;;;;;;;;;;;;;;;;18671:34;;18570:143;;;;:::o;22650:110::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22747:5:::1;22717:18;:27;22736:7;22717:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22650:110:::0;:::o;7320:244::-;7091:12;:10;:12::i;:::-;7080:23;;:7;:5;:7::i;:::-;:23;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7429:1:::1;7409:22;;:8;:22;;;;7401:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7519:8;7490:38;;7511:6;::::0;::::1;;;;;;;;7490:38;;;;;;;;;;;;7548:8;7539:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7320:244:::0;:::o;3132:98::-;3185:7;3212:10;3205:17;;3132:98;:::o;27800:335::-;27910:1;27893:19;;:5;:19;;;;27885:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27991:1;27972:21;;:7;:21;;;;27964:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28073:6;28043:11;:18;28055:5;28043:18;;;;;;;;;;;;;;;:27;28062:7;28043:27;;;;;;;;;;;;;;;:36;;;;28111:7;28095:32;;28104:5;28095:32;;;28120:6;28095:32;;;;;;:::i;:::-;;;;;;;;27800:335;;;:::o;28141:1239::-;28279:1;28263:18;;:4;:18;;;;28255:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28356:1;28342:16;;:2;:16;;;;28334:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28426:1;28417:6;:10;28409:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28495:7;:5;:7::i;:::-;28487:15;;:4;:15;;;;:32;;;;;28512:7;:5;:7::i;:::-;28506:13;;:2;:13;;;;28487:32;28484:125;;;28552:12;;28542:6;:22;;28534:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;28484:125;28620:28;28651:24;28669:4;28651:9;:24::i;:::-;28620:55;;28713:12;;28689:20;:36;28686:112;;28774:12;;28751:35;;28686:112;28808:24;28859:29;;28835:20;:53;;28808:80;;28917:19;:53;;;;;28954:16;;;;;;;;;;;28953:17;28917:53;:91;;;;;28995:13;28987:21;;:4;:21;;;;28917:91;:129;;;;;29025:21;;;;;;;;;;;28917:129;28899:289;;;29096:29;;29073:52;;29140:36;29155:20;29140:14;:36::i;:::-;28899:289;29198:12;29213:4;29198:19;;29231:18;:24;29250:4;29231:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;29259:18;:22;29278:2;29259:22;;;;;;;;;;;;;;;;;;;;;;;;;29231:50;29228:96;;;29307:5;29297:15;;29228:96;29334:38;29349:4;29354:2;29357:6;29364:7;29334:14;:38::i;:::-;28141:1239;;;;;;:::o;2464:206::-;2550:7;2608:1;2603;:6;;2611:12;2595:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2650:1;2646;:5;2639:12;;2464:206;;;;;:::o;25132:163::-;25173:7;25194:15;25211;25230:19;:17;:19::i;:::-;25193:56;;;;25267:20;25279:7;25267;:11;;:20;;;;:::i;:::-;25260:27;;;;25132:163;:::o;2256:98::-;2314:7;2345:1;2341;:5;;;;:::i;:::-;2334:12;;2256:98;;;;:::o;1944:::-;2002:7;2033:1;2029;:5;;;;:::i;:::-;2022:12;;1944:98;;;;:::o;23667:478::-;23726:7;23735;23744;23753;23762;23771;23780;23801:23;23826:12;23840:18;23860:20;23884;23896:7;23884:11;:20::i;:::-;23800:104;;;;;;;;23916:15;23933:23;23958:12;23974:64;23986:7;23995:4;24001:10;24013:12;24027:10;:8;:10::i;:::-;23974:11;:64::i;:::-;23915:123;;;;;;24057:7;24066:15;24083:4;24089:15;24106:4;24112:10;24124:12;24049:88;;;;;;;;;;;;;;;;;;;;;23667:478;;;;;;;;;:::o;2048:98::-;2106:7;2137:1;2133;:5;;;;:::i;:::-;2126:12;;2048:98;;;;:::o;2152:::-;2210:7;2241:1;2237;:5;;;;:::i;:::-;2230:12;;2152:98;;;;:::o;29386:464::-;17247:4;17228:16;;:23;;;;;;;;;;;;;;;;;;29471:12:::1;29486:27;29511:1;29486:20;:24;;:27;;;;:::i;:::-;29471:42;;29524:17;29544:30;29569:4;29544:20;:24;;:30;;;;:::i;:::-;29524:50;;29585:22;29610:21;29585:46;;29642:22;29659:4;29642:16;:22::i;:::-;29675:18;29696:41;29722:14;29696:21;:25;;:41;;;;:::i;:::-;29675:62;;29748:35;29761:9;29772:10;29748:12;:35::i;:::-;29799:43;29814:4;29820:10;29832:9;29799:43;;;;;;;;:::i;:::-;;;;;;;;17262:1;;;;17293:5:::0;17274:16;;:24;;;;;;;;;;;;;;;;;;29386:464;:::o;30699:814::-;30810:7;30806:40;;30832:14;:12;:14::i;:::-;30806:40;30861:11;:19;30873:6;30861:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;30885:11;:22;30897:9;30885:22;;;;;;;;;;;;;;;;;;;;;;;;;30884:23;30861:46;30857:597;;;30924:48;30946:6;30954:9;30965:6;30924:21;:48::i;:::-;30857:597;;;30995:11;:19;31007:6;30995:19;;;;;;;;;;;;;;;;;;;;;;;;;30994:20;:46;;;;;31018:11;:22;31030:9;31018:22;;;;;;;;;;;;;;;;;;;;;;;;;30994:46;30990:464;;;31057:46;31077:6;31085:9;31096:6;31057:19;:46::i;:::-;30990:464;;;31126:11;:19;31138:6;31126:19;;;;;;;;;;;;;;;;;;;;;;;;;31125:20;:47;;;;;31150:11;:22;31162:9;31150:22;;;;;;;;;;;;;;;;;;;;;;;;;31149:23;31125:47;31121:333;;;31189:44;31207:6;31215:9;31226:6;31189:17;:44::i;:::-;31121:333;;;31255:11;:19;31267:6;31255:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31278:11;:22;31290:9;31278:22;;;;;;;;;;;;;;;;;;;;;;;;;31255:45;31251:203;;;31317:48;31339:6;31347:9;31358:6;31317:21;:48::i;:::-;31251:203;;;31398:44;31416:6;31424:9;31435:6;31398:17;:44::i;:::-;31251:203;31121:333;30990:464;30857:597;31468:7;31464:41;;31490:15;:13;:15::i;:::-;31464:41;30699:814;;;;:::o;25301:561::-;25351:7;25360;25380:15;25398:7;;25380:25;;25416:15;25434:7;;25416:25;;25463:9;25458:289;25482:9;:16;;;;25478:1;:20;25458:289;;;25548:7;25524;:21;25532:9;25542:1;25532:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25524:21;;;;;;;;;;;;;;;;:31;:66;;;;25583:7;25559;:21;25567:9;25577:1;25567:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25559:21;;;;;;;;;;;;;;;;:31;25524:66;25520:97;;;25600:7;;25609;;25592:25;;;;;;;;;25520:97;25642:34;25654:7;:21;25662:9;25672:1;25662:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25654:21;;;;;;;;;;;;;;;;25642:7;:11;;:34;;;;:::i;:::-;25632:44;;25701:34;25713:7;:21;25721:9;25731:1;25721:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25713:21;;;;;;;;;;;;;;;;25701:7;:11;;:34;;;;:::i;:::-;25691:44;;25500:3;;;;;:::i;:::-;;;;25458:289;;;;25771:20;25783:7;;25771;;:11;;:20;;;;:::i;:::-;25761:7;:30;25757:61;;;25801:7;;25810;;25793:25;;;;;;;;25757:61;25837:7;25846;25829:25;;;;;;25301:561;;;:::o;24151:437::-;24211:7;24220;24229;24238;24258:12;24273:24;24289:7;24273:15;:24::i;:::-;24258:39;;24308:18;24329:30;24351:7;24329:21;:30::i;:::-;24308:51;;24370:20;24393:32;24417:7;24393:23;:32::i;:::-;24370:55;;24436:23;24462:51;24500:12;24462:33;24484:10;24462:17;24474:4;24462:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:51;;;;:::i;:::-;24436:77;;24532:15;24549:4;24555:10;24567:12;24524:56;;;;;;;;;;;;24151:437;;;;;:::o;24594:532::-;24731:7;24740;24749;24769:15;24787:24;24799:11;24787:7;:11;;:24;;;;:::i;:::-;24769:42;;24822:12;24837:21;24846:11;24837:4;:8;;:21;;;;:::i;:::-;24822:36;;24869:18;24890:27;24905:11;24890:10;:14;;:27;;;;:::i;:::-;24869:48;;24928:20;24951:29;24968:11;24951:12;:16;;:29;;;;:::i;:::-;24928:52;;24991:23;25017:51;25055:12;25017:33;25039:10;25017:17;25029:4;25017:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:51;;;;:::i;:::-;24991:77;;25087:7;25096:15;25113:4;25079:39;;;;;;;;;;;24594:532;;;;;;;;;:::o;29856:471::-;29922:21;29960:1;29946:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29922:40;;29991:4;29973;29978:1;29973:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;30017:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30007:4;30012:1;30007:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;30050:62;30067:4;30082:15;30100:11;30050:8;:62::i;:::-;30123:15;:66;;;30204:11;30230:1;30246:4;30273;30293:15;30123:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29856:471;;:::o;30333:360::-;30414:62;30431:4;30446:15;30464:11;30414:8;:62::i;:::-;30487:15;:31;;;30526:9;30559:4;30579:11;30605:1;30621;30637:7;:5;:7::i;:::-;30659:15;30487:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30333:360;;:::o;27170:312::-;27227:1;27216:7;;:12;:34;;;;;27249:1;27232:13;;:18;27216:34;27213:46;;;27252:7;;27213:46;27287:7;;27269:15;:25;;;;27331:15;;27305:23;:41;;;;27381:13;;27357:21;:37;;;;27415:1;27405:7;:11;;;;27445:1;27427:15;:19;;;;27473:1;27457:13;:17;;;;27170:312;:::o;32745:629::-;32848:15;32865:23;32890:12;32904:23;32929:12;32943:18;32963:20;32987:19;32998:7;32987:10;:19::i;:::-;32847:159;;;;;;;;;;;;;;33035:28;33055:7;33035;:15;33043:6;33035:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33017:7;:15;33025:6;33017:15;;;;;;;;;;;;;;;:46;;;;33092:28;33112:7;33092;:15;33100:6;33092:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33074:7;:15;33082:6;33074:15;;;;;;;;;;;;;;;:46;;;;33152:39;33175:15;33152:7;:18;33160:9;33152:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33131:7;:18;33139:9;33131:18;;;;;;;;;;;;;;;:60;;;;33205:26;33220:10;33205:14;:26::i;:::-;33242:30;33259:12;33242:16;:30::i;:::-;33283:23;33295:4;33301;33283:11;:23::i;:::-;33339:9;33322:44;;33331:6;33322:44;;;33350:15;33322:44;;;;;;:::i;:::-;;;;;;;;32745:629;;;;;;;;;;:::o;32090:649::-;32191:15;32208:23;32233:12;32247:23;32272:12;32286:18;32306:20;32330:19;32341:7;32330:10;:19::i;:::-;32190:159;;;;;;;;;;;;;;32378:28;32398:7;32378;:15;32386:6;32378:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32360:7;:15;32368:6;32360:15;;;;;;;;;;;;;;;:46;;;;32438:39;32461:15;32438:7;:18;32446:9;32438:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32417:7;:18;32425:9;32417:18;;;;;;;;;;;;;;;:60;;;;32509:39;32532:15;32509:7;:18;32517:9;32509:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32488:7;:18;32496:9;32488:18;;;;;;;;;;;;;;;:60;;;;32570:26;32585:10;32570:14;:26::i;:::-;32607:30;32624:12;32607:16;:30::i;:::-;32648:23;32660:4;32666;32648:11;:23::i;:::-;32704:9;32687:44;;32696:6;32687:44;;;32715:15;32687:44;;;;;;:::i;:::-;;;;;;;;32090:649;;;;;;;;;;:::o;31519:565::-;31618:15;31635:23;31660:12;31674:23;31699:12;31713:18;31733:20;31757:19;31768:7;31757:10;:19::i;:::-;31617:159;;;;;;;;;;;;;;31805:28;31825:7;31805;:15;31813:6;31805:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31787:7;:15;31795:6;31787:15;;;;;;;;;;;;;;;:46;;;;31865:39;31888:15;31865:7;:18;31873:9;31865:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31844:7;:18;31852:9;31844:18;;;;;;;;;;;;;;;:60;;;;31915:26;31930:10;31915:14;:26::i;:::-;31952:30;31969:12;31952:16;:30::i;:::-;31993:23;32005:4;32011;31993:11;:23::i;:::-;32049:9;32032:44;;32041:6;32032:44;;;32060:15;32032:44;;;;;;:::i;:::-;;;;;;;;31519:565;;;;;;;;;;:::o;21834:697::-;21933:15;21950:23;21975:12;21989:23;22014:12;22028:18;22048:20;22072:19;22083:7;22072:10;:19::i;:::-;21932:159;;;;;;;;;;;;;;22120:28;22140:7;22120;:15;22128:6;22120:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22102:7;:15;22110:6;22102:15;;;;;;;;;;;;;;;:46;;;;22177:28;22197:7;22177;:15;22185:6;22177:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22159:7;:15;22167:6;22159:15;;;;;;;;;;;;;;;:46;;;;22237:39;22260:15;22237:7;:18;22245:9;22237:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22216:7;:18;22224:9;22216:18;;;;;;;;;;;;;;;:60;;;;22308:39;22331:15;22308:7;:18;22316:9;22308:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22287:7;:18;22295:9;22287:18;;;;;;;;;;;;;;;:60;;;;22366:26;22381:10;22366:14;:26::i;:::-;22403:30;22420:12;22403:16;:30::i;:::-;22444:23;22456:4;22462;22444:11;:23::i;:::-;22496:9;22479:44;;22488:6;22479:44;;;22507:15;22479:44;;;;;;:::i;:::-;;;;;;;;21834:697;;;;;;;;;;:::o;27488:177::-;27542:15;;27532:7;:25;;;;27586:23;;27568:15;:41;;;;27636:21;;27620:13;:37;;;;27488:177::o;26662:154::-;26726:7;26753:55;26792:5;26753:20;26765:7;;26753;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;26746:62;;26662:154;;;:::o;26998:166::-;27068:7;27095:61;27140:5;27095:26;27107:13;;27095:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;27088:68;;26998:166;;;:::o;26822:170::-;26894:7;26921:63;26968:5;26921:28;26933:15;;26921:7;:11;;:28;;;;:::i;:::-;:32;;:63;;;;:::i;:::-;26914:70;;26822:170;;;:::o;25868:355::-;25931:19;25954:10;:8;:10::i;:::-;25931:33;;25975:18;25996:27;26011:11;25996:10;:14;;:27;;;;:::i;:::-;25975:48;;26059:38;26086:10;26059:7;:22;26075:4;26059:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;26034:7;:22;26050:4;26034:22;;;;;;;;;;;;;;;:63;;;;26111:11;:26;26131:4;26111:26;;;;;;;;;;;;;;;;;;;;;;;;;26108:107;;;26177:38;26204:10;26177:7;:22;26193:4;26177:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;26152:7;:22;26168:4;26152:22;;;;;;;;;;;;;;;:63;;;;26108:107;25868:355;;;:::o;26229:427::-;26296:19;26319:10;:8;:10::i;:::-;26296:33;;26340:20;26363:29;26380:11;26363:12;:16;;:29;;;;:::i;:::-;26340:52;;26440;26479:12;26440:7;:34;26448:25;;;;;;;;;;;26440:34;;;;;;;;;;;;;;;;:38;;:52;;;;:::i;:::-;26403:7;:34;26411:25;;;;;;;;;;;26403:34;;;;;;;;;;;;;;;:89;;;;26506:11;:38;26518:25;;;;;;;;;;;26506:38;;;;;;;;;;;;;;;;;;;;;;;;;26503:145;;;26596:52;26635:12;26596:7;:34;26604:25;;;;;;;;;;;26596:34;;;;;;;;;;;;;;;;:38;;:52;;;;:::i;:::-;26559:7;:34;26567:25;;;;;;;;;;;26559:34;;;;;;;;;;;;;;;:89;;;;26503:145;26229:427;;;:::o;23514:147::-;23592:17;23604:4;23592:7;;:11;;:17;;;;:::i;:::-;23582:7;:27;;;;23633:20;23648:4;23633:10;;:14;;:20;;;;:::i;:::-;23620:10;:33;;;;23514:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:407::-;2331:6;2339;2388:2;2376:9;2367:7;2363:23;2359:32;2356:2;;;2404:1;2401;2394:12;2356:2;2447:1;2472:53;2517:7;2508:6;2497:9;2493:22;2472:53;:::i;:::-;2462:63;;2418:117;2574:2;2600:53;2645:7;2636:6;2625:9;2621:22;2600:53;:::i;:::-;2590:63;;2545:118;2346:324;;;;;:::o;2676:256::-;2732:6;2781:2;2769:9;2760:7;2756:23;2752:32;2749:2;;;2797:1;2794;2787:12;2749:2;2840:1;2865:50;2907:7;2898:6;2887:9;2883:22;2865:50;:::i;:::-;2855:60;;2811:114;2739:193;;;;:::o;2938:262::-;2997:6;3046:2;3034:9;3025:7;3021:23;3017:32;3014:2;;;3062:1;3059;3052:12;3014:2;3105:1;3130:53;3175:7;3166:6;3155:9;3151:22;3130:53;:::i;:::-;3120:63;;3076:117;3004:196;;;;:::o;3206:401::-;3271:6;3279;3328:2;3316:9;3307:7;3303:23;3299:32;3296:2;;;3344:1;3341;3334:12;3296:2;3387:1;3412:53;3457:7;3448:6;3437:9;3433:22;3412:53;:::i;:::-;3402:63;;3358:117;3514:2;3540:50;3582:7;3573:6;3562:9;3558:22;3540:50;:::i;:::-;3530:60;;3485:115;3286:321;;;;;:::o;3613:596::-;3701:6;3709;3717;3766:2;3754:9;3745:7;3741:23;3737:32;3734:2;;;3782:1;3779;3772:12;3734:2;3825:1;3850:64;3906:7;3897:6;3886:9;3882:22;3850:64;:::i;:::-;3840:74;;3796:128;3963:2;3989:64;4045:7;4036:6;4025:9;4021:22;3989:64;:::i;:::-;3979:74;;3934:129;4102:2;4128:64;4184:7;4175:6;4164:9;4160:22;4128:64;:::i;:::-;4118:74;;4073:129;3724:485;;;;;:::o;4215:179::-;4284:10;4305:46;4347:3;4339:6;4305:46;:::i;:::-;4383:4;4378:3;4374:14;4360:28;;4295:99;;;;:::o;4400:108::-;4477:24;4495:5;4477:24;:::i;:::-;4472:3;4465:37;4455:53;;:::o;4514:118::-;4601:24;4619:5;4601:24;:::i;:::-;4596:3;4589:37;4579:53;;:::o;4668:732::-;4787:3;4816:54;4864:5;4816:54;:::i;:::-;4886:86;4965:6;4960:3;4886:86;:::i;:::-;4879:93;;4996:56;5046:5;4996:56;:::i;:::-;5075:7;5106:1;5091:284;5116:6;5113:1;5110:13;5091:284;;;5192:6;5186:13;5219:63;5278:3;5263:13;5219:63;:::i;:::-;5212:70;;5305:60;5358:6;5305:60;:::i;:::-;5295:70;;5151:224;5138:1;5135;5131:9;5126:14;;5091:284;;;5095:14;5391:3;5384:10;;4792:608;;;;;;;:::o;5406:109::-;5487:21;5502:5;5487:21;:::i;:::-;5482:3;5475:34;5465:50;;:::o;5521:185::-;5635:64;5693:5;5635:64;:::i;:::-;5630:3;5623:77;5613:93;;:::o;5712:147::-;5807:45;5846:5;5807:45;:::i;:::-;5802:3;5795:58;5785:74;;:::o;5865:364::-;5953:3;5981:39;6014:5;5981:39;:::i;:::-;6036:71;6100:6;6095:3;6036:71;:::i;:::-;6029:78;;6116:52;6161:6;6156:3;6149:4;6142:5;6138:16;6116:52;:::i;:::-;6193:29;6215:6;6193:29;:::i;:::-;6188:3;6184:39;6177:46;;5957:272;;;;;:::o;6235:366::-;6377:3;6398:67;6462:2;6457:3;6398:67;:::i;:::-;6391:74;;6474:93;6563:3;6474:93;:::i;:::-;6592:2;6587:3;6583:12;6576:19;;6381:220;;;:::o;6607:366::-;6749:3;6770:67;6834:2;6829:3;6770:67;:::i;:::-;6763:74;;6846:93;6935:3;6846:93;:::i;:::-;6964:2;6959:3;6955:12;6948:19;;6753:220;;;:::o;6979:366::-;7121:3;7142:67;7206:2;7201:3;7142:67;:::i;:::-;7135:74;;7218:93;7307:3;7218:93;:::i;:::-;7336:2;7331:3;7327:12;7320:19;;7125:220;;;:::o;7351:366::-;7493:3;7514:67;7578:2;7573:3;7514:67;:::i;:::-;7507:74;;7590:93;7679:3;7590:93;:::i;:::-;7708:2;7703:3;7699:12;7692:19;;7497:220;;;:::o;7723:366::-;7865:3;7886:67;7950:2;7945:3;7886:67;:::i;:::-;7879:74;;7962:93;8051:3;7962:93;:::i;:::-;8080:2;8075:3;8071:12;8064:19;;7869:220;;;:::o;8095:366::-;8237:3;8258:67;8322:2;8317:3;8258:67;:::i;:::-;8251:74;;8334:93;8423:3;8334:93;:::i;:::-;8452:2;8447:3;8443:12;8436:19;;8241:220;;;:::o;8467:366::-;8609:3;8630:67;8694:2;8689:3;8630:67;:::i;:::-;8623:74;;8706:93;8795:3;8706:93;:::i;:::-;8824:2;8819:3;8815:12;8808:19;;8613:220;;;:::o;8839:366::-;8981:3;9002:67;9066:2;9061:3;9002:67;:::i;:::-;8995:74;;9078:93;9167:3;9078:93;:::i;:::-;9196:2;9191:3;9187:12;9180:19;;8985:220;;;:::o;9211:366::-;9353:3;9374:67;9438:2;9433:3;9374:67;:::i;:::-;9367:74;;9450:93;9539:3;9450:93;:::i;:::-;9568:2;9563:3;9559:12;9552:19;;9357:220;;;:::o;9583:366::-;9725:3;9746:67;9810:2;9805:3;9746:67;:::i;:::-;9739:74;;9822:93;9911:3;9822:93;:::i;:::-;9940:2;9935:3;9931:12;9924:19;;9729:220;;;:::o;9955:366::-;10097:3;10118:67;10182:2;10177:3;10118:67;:::i;:::-;10111:74;;10194:93;10283:3;10194:93;:::i;:::-;10312:2;10307:3;10303:12;10296:19;;10101:220;;;:::o;10327:366::-;10469:3;10490:67;10554:2;10549:3;10490:67;:::i;:::-;10483:74;;10566:93;10655:3;10566:93;:::i;:::-;10684:2;10679:3;10675:12;10668:19;;10473:220;;;:::o;10699:366::-;10841:3;10862:67;10926:2;10921:3;10862:67;:::i;:::-;10855:74;;10938:93;11027:3;10938:93;:::i;:::-;11056:2;11051:3;11047:12;11040:19;;10845:220;;;:::o;11071:118::-;11158:24;11176:5;11158:24;:::i;:::-;11153:3;11146:37;11136:53;;:::o;11195:112::-;11278:22;11294:5;11278:22;:::i;:::-;11273:3;11266:35;11256:51;;:::o;11313:222::-;11406:4;11444:2;11433:9;11429:18;11421:26;;11457:71;11525:1;11514:9;11510:17;11501:6;11457:71;:::i;:::-;11411:124;;;;:::o;11541:807::-;11790:4;11828:3;11817:9;11813:19;11805:27;;11842:71;11910:1;11899:9;11895:17;11886:6;11842:71;:::i;:::-;11923:72;11991:2;11980:9;11976:18;11967:6;11923:72;:::i;:::-;12005:80;12081:2;12070:9;12066:18;12057:6;12005:80;:::i;:::-;12095;12171:2;12160:9;12156:18;12147:6;12095:80;:::i;:::-;12185:73;12253:3;12242:9;12238:19;12229:6;12185:73;:::i;:::-;12268;12336:3;12325:9;12321:19;12312:6;12268:73;:::i;:::-;11795:553;;;;;;;;;:::o;12354:210::-;12441:4;12479:2;12468:9;12464:18;12456:26;;12492:65;12554:1;12543:9;12539:17;12530:6;12492:65;:::i;:::-;12446:118;;;;:::o;12570:276::-;12690:4;12728:2;12717:9;12713:18;12705:26;;12741:98;12836:1;12825:9;12821:17;12812:6;12741:98;:::i;:::-;12695:151;;;;:::o;12852:313::-;12965:4;13003:2;12992:9;12988:18;12980:26;;13052:9;13046:4;13042:20;13038:1;13027:9;13023:17;13016:47;13080:78;13153:4;13144:6;13080:78;:::i;:::-;13072:86;;12970:195;;;;:::o;13171:419::-;13337:4;13375:2;13364:9;13360:18;13352:26;;13424:9;13418:4;13414:20;13410:1;13399:9;13395:17;13388:47;13452:131;13578:4;13452:131;:::i;:::-;13444:139;;13342:248;;;:::o;13596:419::-;13762:4;13800:2;13789:9;13785:18;13777:26;;13849:9;13843:4;13839:20;13835:1;13824:9;13820:17;13813:47;13877:131;14003:4;13877:131;:::i;:::-;13869:139;;13767:248;;;:::o;14021:419::-;14187:4;14225:2;14214:9;14210:18;14202:26;;14274:9;14268:4;14264:20;14260:1;14249:9;14245:17;14238:47;14302:131;14428:4;14302:131;:::i;:::-;14294:139;;14192:248;;;:::o;14446:419::-;14612:4;14650:2;14639:9;14635:18;14627:26;;14699:9;14693:4;14689:20;14685:1;14674:9;14670:17;14663:47;14727:131;14853:4;14727:131;:::i;:::-;14719:139;;14617:248;;;:::o;14871:419::-;15037:4;15075:2;15064:9;15060:18;15052:26;;15124:9;15118:4;15114:20;15110:1;15099:9;15095:17;15088:47;15152:131;15278:4;15152:131;:::i;:::-;15144:139;;15042:248;;;:::o;15296:419::-;15462:4;15500:2;15489:9;15485:18;15477:26;;15549:9;15543:4;15539:20;15535:1;15524:9;15520:17;15513:47;15577:131;15703:4;15577:131;:::i;:::-;15569:139;;15467:248;;;:::o;15721:419::-;15887:4;15925:2;15914:9;15910:18;15902:26;;15974:9;15968:4;15964:20;15960:1;15949:9;15945:17;15938:47;16002:131;16128:4;16002:131;:::i;:::-;15994:139;;15892:248;;;:::o;16146:419::-;16312:4;16350:2;16339:9;16335:18;16327:26;;16399:9;16393:4;16389:20;16385:1;16374:9;16370:17;16363:47;16427:131;16553:4;16427:131;:::i;:::-;16419:139;;16317:248;;;:::o;16571:419::-;16737:4;16775:2;16764:9;16760:18;16752:26;;16824:9;16818:4;16814:20;16810:1;16799:9;16795:17;16788:47;16852:131;16978:4;16852:131;:::i;:::-;16844:139;;16742:248;;;:::o;16996:419::-;17162:4;17200:2;17189:9;17185:18;17177:26;;17249:9;17243:4;17239:20;17235:1;17224:9;17220:17;17213:47;17277:131;17403:4;17277:131;:::i;:::-;17269:139;;17167:248;;;:::o;17421:419::-;17587:4;17625:2;17614:9;17610:18;17602:26;;17674:9;17668:4;17664:20;17660:1;17649:9;17645:17;17638:47;17702:131;17828:4;17702:131;:::i;:::-;17694:139;;17592:248;;;:::o;17846:419::-;18012:4;18050:2;18039:9;18035:18;18027:26;;18099:9;18093:4;18089:20;18085:1;18074:9;18070:17;18063:47;18127:131;18253:4;18127:131;:::i;:::-;18119:139;;18017:248;;;:::o;18271:419::-;18437:4;18475:2;18464:9;18460:18;18452:26;;18524:9;18518:4;18514:20;18510:1;18499:9;18495:17;18488:47;18552:131;18678:4;18552:131;:::i;:::-;18544:139;;18442:248;;;:::o;18696:222::-;18789:4;18827:2;18816:9;18812:18;18804:26;;18840:71;18908:1;18897:9;18893:17;18884:6;18840:71;:::i;:::-;18794:124;;;;:::o;18924:831::-;19187:4;19225:3;19214:9;19210:19;19202:27;;19239:71;19307:1;19296:9;19292:17;19283:6;19239:71;:::i;:::-;19320:80;19396:2;19385:9;19381:18;19372:6;19320:80;:::i;:::-;19447:9;19441:4;19437:20;19432:2;19421:9;19417:18;19410:48;19475:108;19578:4;19569:6;19475:108;:::i;:::-;19467:116;;19593:72;19661:2;19650:9;19646:18;19637:6;19593:72;:::i;:::-;19675:73;19743:3;19732:9;19728:19;19719:6;19675:73;:::i;:::-;19192:563;;;;;;;;:::o;19761:442::-;19910:4;19948:2;19937:9;19933:18;19925:26;;19961:71;20029:1;20018:9;20014:17;20005:6;19961:71;:::i;:::-;20042:72;20110:2;20099:9;20095:18;20086:6;20042:72;:::i;:::-;20124;20192:2;20181:9;20177:18;20168:6;20124:72;:::i;:::-;19915:288;;;;;;:::o;20209:214::-;20298:4;20336:2;20325:9;20321:18;20313:26;;20349:67;20413:1;20402:9;20398:17;20389:6;20349:67;:::i;:::-;20303:120;;;;:::o;20429:132::-;20496:4;20519:3;20511:11;;20549:4;20544:3;20540:14;20532:22;;20501:60;;;:::o;20567:114::-;20634:6;20668:5;20662:12;20652:22;;20641:40;;;:::o;20687:99::-;20739:6;20773:5;20767:12;20757:22;;20746:40;;;:::o;20792:113::-;20862:4;20894;20889:3;20885:14;20877:22;;20867:38;;;:::o;20911:184::-;21010:11;21044:6;21039:3;21032:19;21084:4;21079:3;21075:14;21060:29;;21022:73;;;;:::o;21101:169::-;21185:11;21219:6;21214:3;21207:19;21259:4;21254:3;21250:14;21235:29;;21197:73;;;;:::o;21276:305::-;21316:3;21335:20;21353:1;21335:20;:::i;:::-;21330:25;;21369:20;21387:1;21369:20;:::i;:::-;21364:25;;21523:1;21455:66;21451:74;21448:1;21445:81;21442:2;;;21529:18;;:::i;:::-;21442:2;21573:1;21570;21566:9;21559:16;;21320:261;;;;:::o;21587:185::-;21627:1;21644:20;21662:1;21644:20;:::i;:::-;21639:25;;21678:20;21696:1;21678:20;:::i;:::-;21673:25;;21717:1;21707:2;;21722:18;;:::i;:::-;21707:2;21764:1;21761;21757:9;21752:14;;21629:143;;;;:::o;21778:348::-;21818:7;21841:20;21859:1;21841:20;:::i;:::-;21836:25;;21875:20;21893:1;21875:20;:::i;:::-;21870:25;;22063:1;21995:66;21991:74;21988:1;21985:81;21980:1;21973:9;21966:17;21962:105;21959:2;;;22070:18;;:::i;:::-;21959:2;22118:1;22115;22111:9;22100:20;;21826:300;;;;:::o;22132:191::-;22172:4;22192:20;22210:1;22192:20;:::i;:::-;22187:25;;22226:20;22244:1;22226:20;:::i;:::-;22221:25;;22265:1;22262;22259:8;22256:2;;;22270:18;;:::i;:::-;22256:2;22315:1;22312;22308:9;22300:17;;22177:146;;;;:::o;22329:96::-;22366:7;22395:24;22413:5;22395:24;:::i;:::-;22384:35;;22374:51;;;:::o;22431:90::-;22465:7;22508:5;22501:13;22494:21;22483:32;;22473:48;;;:::o;22527:126::-;22564:7;22604:42;22597:5;22593:54;22582:65;;22572:81;;;:::o;22659:77::-;22696:7;22725:5;22714:16;;22704:32;;;:::o;22742:86::-;22777:7;22817:4;22810:5;22806:16;22795:27;;22785:43;;;:::o;22834:180::-;22911:9;22944:64;23002:5;22944:64;:::i;:::-;22931:77;;22921:93;;;:::o;23020:140::-;23097:9;23130:24;23148:5;23130:24;:::i;:::-;23117:37;;23107:53;;;:::o;23166:121::-;23224:9;23257:24;23275:5;23257:24;:::i;:::-;23244:37;;23234:53;;;:::o;23293:307::-;23361:1;23371:113;23385:6;23382:1;23379:13;23371:113;;;23470:1;23465:3;23461:11;23455:18;23451:1;23446:3;23442:11;23435:39;23407:2;23404:1;23400:10;23395:15;;23371:113;;;23502:6;23499:1;23496:13;23493:2;;;23582:1;23573:6;23568:3;23564:16;23557:27;23493:2;23342:258;;;;:::o;23606:320::-;23650:6;23687:1;23681:4;23677:12;23667:22;;23734:1;23728:4;23724:12;23755:18;23745:2;;23811:4;23803:6;23799:17;23789:27;;23745:2;23873;23865:6;23862:14;23842:18;23839:38;23836:2;;;23892:18;;:::i;:::-;23836:2;23657:269;;;;:::o;23932:233::-;23971:3;23994:24;24012:5;23994:24;:::i;:::-;23985:33;;24040:66;24033:5;24030:77;24027:2;;;24110:18;;:::i;:::-;24027:2;24157:1;24150:5;24146:13;24139:20;;23975:190;;;:::o;24171:180::-;24219:77;24216:1;24209:88;24316:4;24313:1;24306:15;24340:4;24337:1;24330:15;24357:180;24405:77;24402:1;24395:88;24502:4;24499:1;24492:15;24526:4;24523:1;24516:15;24543:180;24591:77;24588:1;24581:88;24688:4;24685:1;24678:15;24712:4;24709:1;24702:15;24729:102;24770:6;24821:2;24817:7;24812:2;24805:5;24801:14;24797:28;24787:38;;24777:54;;;:::o;24837:222::-;24977:34;24973:1;24965:6;24961:14;24954:58;25046:5;25041:2;25033:6;25029:15;25022:30;24943:116;:::o;25065:229::-;25205:34;25201:1;25193:6;25189:14;25182:58;25274:12;25269:2;25261:6;25257:15;25250:37;25171:123;:::o;25300:225::-;25440:34;25436:1;25428:6;25424:14;25417:58;25509:8;25504:2;25496:6;25492:15;25485:33;25406:119;:::o;25531:221::-;25671:34;25667:1;25659:6;25655:14;25648:58;25740:4;25735:2;25727:6;25723:15;25716:29;25637:115;:::o;25758:177::-;25898:29;25894:1;25886:6;25882:14;25875:53;25864:71;:::o;25941:177::-;26081:29;26077:1;26069:6;26065:14;26058:53;26047:71;:::o;26124:181::-;26264:33;26260:1;26252:6;26248:14;26241:57;26230:75;:::o;26311:227::-;26451:34;26447:1;26439:6;26435:14;26428:58;26520:10;26515:2;26507:6;26503:15;26496:35;26417:121;:::o;26544:182::-;26684:34;26680:1;26672:6;26668:14;26661:58;26650:76;:::o;26732:228::-;26872:34;26868:1;26860:6;26856:14;26849:58;26941:11;26936:2;26928:6;26924:15;26917:36;26838:122;:::o;26966:224::-;27106:34;27102:1;27094:6;27090:14;27083:58;27175:7;27170:2;27162:6;27158:15;27151:32;27072:118;:::o;27196:223::-;27336:34;27332:1;27324:6;27320:14;27313:58;27405:6;27400:2;27392:6;27388:15;27381:31;27302:117;:::o;27425:231::-;27565:34;27561:1;27553:6;27549:14;27542:58;27634:14;27629:2;27621:6;27617:15;27610:39;27531:125;:::o;27662:122::-;27735:24;27753:5;27735:24;:::i;:::-;27728:5;27725:35;27715:2;;27774:1;27771;27764:12;27715:2;27705:79;:::o;27790:116::-;27860:21;27875:5;27860:21;:::i;:::-;27853:5;27850:32;27840:2;;27896:1;27893;27886:12;27840:2;27830:76;:::o;27912:122::-;27985:24;28003:5;27985:24;:::i;:::-;27978:5;27975:35;27965:2;;28024:1;28021;28014:12;27965:2;27955:79;:::o
Swarm Source
ipfs://6b27acb66c26abe600c8348af16621f1e46c47285f30f019816fa5fe50aa5384
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.