ERC-20
Overview
Max Total Supply
100,000,000 DBALLZ
Holders
58
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
52,642.016301986 DBALLZValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Diamond_Ballz
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-24 */ // https://dballz.club/ // https://medium.com/@diamondballzerc/unleashing-the-power-of-diamond-hands-with-dballz-7733a6bd0e89 // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.7; 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 add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } 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 IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract Diamond_Ballz 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; mapping(address => bool) private _isSniper; address[] private _confirmedSnipers; address payable public _marketingAddress = payable(0xf8441bf59B3F3Ac39d2E506cfeb3f7F5cF6a0256); uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100 * 10**6 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Diamond Ballz"; string private _symbol = "DBALLZ"; uint8 private _decimals = 9; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _marketingFee = 30; uint256 private _previousmarketingFee = _marketingFee; uint256 launchTime; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool tradingOpen = false; uint256 public _maxTxAmount = _tTotal * 2 / 100; // Liquify when 100k tokens are stored uint256 private numTokensSellToLiquify = _tTotal * 1 / 1000; uint256 public maxWalletSell = 60; uint256 public sellRewardFee1hour = 30; uint256 public sellRewardFee6hour = 20; uint256 public sellRewardFee24hour = 10; mapping(address => uint256) public lastTxnTime; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived ); event TransferToMarketing(uint256 ethTransferred); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function openTrading() external onlyOwner { tradingOpen = true; launchTime = block.timestamp; } 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(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); 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 excluded"); 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) = _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); _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 setmarketingFeePercent(uint256 marketingFee) external onlyOwner() { _marketingFee = marketingFee; } function setTaxFeePercent(uint256 taxFee) external onlyOwner { _taxFee = taxFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); } function removeMaxTxPercent() external onlyOwner() { _maxTxAmount = _tTotal; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to receive ETH from uniswapV2Router when swapping 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 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculatemarketingFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); 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 calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculatemarketingFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_marketingFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _marketingFee == 0) return; _previousTaxFee = _taxFee; _previousmarketingFee = _marketingFee; _taxFee = 0; _marketingFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _marketingFee = _previousmarketingFee; } 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"); require(!_isSniper[to], 'You have no power here!'); require(!_isSniper[msg.sender], 'You have no power here!'); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } // buy if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) { require(tradingOpen, 'Trading not yet enabled.'); //antibot if (block.timestamp == launchTime) { _isSniper[to] = true; _confirmedSnipers.push(to); } } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToLiquify; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToLiquify; swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 marketingTokenBalance = contractTokenBalance; // capture the contract's current eth balance. // this is so that we can capture exactly the amount of eth that the // swap creates, and not make the liquidity event include any eth that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for eth swapTokensForEth(marketingTokenBalance); // Total eth that has been swapped uint256 ethSwapped = address(this).balance.sub(initialBalance); emit SwapAndLiquify(marketingTokenBalance, ethSwapped); // The remaining eth balance is to be Transferred to the marketing wallet uint256 marketingethToTransfer = ethSwapped; // Transfer the eth to the marketing wallet _marketingAddress.transfer(marketingethToTransfer); emit TransferToMarketing(marketingethToTransfer); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); else if(recipient == uniswapV2Pair) { earlySellFees(sender); bigSellFees(sender, amount); //excludeFromReward(sender); lastTxnTime[sender] = block.timestamp; } else if(sender == uniswapV2Pair && balanceOf(recipient) == 0) lastTxnTime[recipient] = block.timestamp; 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(recipient == uniswapV2Pair) restoreAllFee(); if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _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) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _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) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function isRemovedSniper(address account) public view returns (bool) { return _isSniper[account]; } function _removeSniper(address account) external onlyOwner { require( account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap' ); require(!_isSniper[account], 'Account is already blacklisted'); _isSniper[account] = true; _confirmedSnipers.push(account); } function _amnestySniper(address account) external onlyOwner { require(_isSniper[account], 'Account is not blacklisted'); for (uint256 i = 0; i < _confirmedSnipers.length; i++) { if (_confirmedSnipers[i] == account) { _confirmedSnipers[i] = _confirmedSnipers[_confirmedSnipers.length - 1]; _isSniper[account] = false; _confirmedSnipers.pop(); break; } } } function setSellRewardFees(uint256 _1hour, uint256 _6hour, uint256 _24hour) public onlyOwner { sellRewardFee1hour = _1hour; sellRewardFee6hour = _6hour; sellRewardFee24hour = _24hour; } function setMaxWalletSell(uint256 maxTxAmount) public onlyOwner { require(maxWalletSell >= 50); maxWalletSell = maxTxAmount; } function bigSellFees(address seller, uint256 amount) internal { if (amount > balanceOf(seller) * maxWalletSell / 100) { _taxFee = sellRewardFee1hour; } } function earlySellFees(address seller) internal { uint256 _lastTxnTime = block.timestamp - lastTxnTime[seller]; if (_lastTxnTime < 1 hours) { _taxFee = sellRewardFee1hour; } else if (_lastTxnTime < 6 hours) { _taxFee = sellRewardFee6hour; } else if (_lastTxnTime < 24 hours) { _taxFee = sellRewardFee24hour; } } }
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"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethTransferred","type":"uint256"}],"name":"TransferToMarketing","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_amnestySniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_removeSniper","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isRemovedSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTxnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"removeMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellRewardFee1hour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardFee24hour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardFee6hour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxWalletSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_1hour","type":"uint256"},{"internalType":"uint256","name":"_6hour","type":"uint256"},{"internalType":"uint256","name":"_24hour","type":"uint256"}],"name":"setSellRewardFees","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":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setmarketingFeePercent","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":[],"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
60c060405273f8441bf59b3f3ac39d2e506cfeb3f7f5cf6a0256600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555067016345785d8a0000600b55600b54600019620000779190620009ab565b600019620000869190620008fc565b600c556040518060400160405280600d81526020017f4469616d6f6e642042616c6c7a00000000000000000000000000000000000000815250600e9080519060200190620000d6929190620006fe565b506040518060400160405280600681526020017f4442414c4c5a0000000000000000000000000000000000000000000000000000815250600f908051906020019062000124929190620006fe565b506009601060006101000a81548160ff021916908360ff1602179055506000601155601154601255601e6013556013546014556001601660016101000a81548160ff0219169083151502179055506000601660026101000a81548160ff02191690831515021790555060646002600b54620001a091906200089b565b620001ac919062000863565b6017556103e86001600b54620001c391906200089b565b620001cf919062000863565b601855603c601955601e601a556014601b55600a601c55348015620001f357600080fd5b50600062000206620006cd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600c5460026000620002bb620006cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035957600080fd5b505afa1580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003949190620007c5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f757600080fd5b505afa1580156200040c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004329190620007c5565b6040518363ffffffff1660e01b81526004016200045192919062000819565b602060405180830381600087803b1580156200046c57600080fd5b505af115801562000481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a79190620007c5565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600560006200052a620006d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065d620006cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620006be919062000846565b60405180910390a35062000a8f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200070c9062000975565b90600052602060002090601f0160209004810192826200073057600085556200077c565b82601f106200074b57805160ff19168380011785556200077c565b828001600101855582156200077c579182015b828111156200077b5782518255916020019190600101906200075e565b5b5090506200078b91906200078f565b5090565b5b80821115620007aa57600081600090555060010162000790565b5090565b600081519050620007bf8162000a75565b92915050565b600060208284031215620007de57620007dd62000a70565b5b6000620007ee84828501620007ae565b91505092915050565b620008028162000937565b82525050565b62000813816200096b565b82525050565b6000604082019050620008306000830185620007f7565b6200083f6020830184620007f7565b9392505050565b60006020820190506200085d600083018462000808565b92915050565b600062000870826200096b565b91506200087d836200096b565b92508262000890576200088f62000a12565b5b828204905092915050565b6000620008a8826200096b565b9150620008b5836200096b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620008f157620008f0620009e3565b5b828202905092915050565b600062000909826200096b565b915062000916836200096b565b9250828210156200092c576200092b620009e3565b5b828203905092915050565b600062000944826200094b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200098e57607f821691505b60208210811415620009a557620009a462000a41565b5b50919050565b6000620009b8826200096b565b9150620009c5836200096b565b925082620009d857620009d762000a12565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b62000a808162000937565b811462000a8c57600080fd5b50565b60805160601c60a05160601c615f6a62000afa6000396000818161186e01528181612dc201528181613005015281816134f6015281816135a60152613944015260008181610cd501528181612e1801528181613e4b01528181613f3b0152613f620152615f6a6000f3fe6080604052600436106102815760003560e01c8063610d5b191161014f578063a9059cbb116100c1578063d543dbeb1161007a578063d543dbeb146109e1578063dd62ed3e14610a0a578063e19e902514610a47578063ea2f0b3714610a5e578063f375b25314610a87578063fa42682314610ab057610288565b8063a9059cbb146108d3578063b6e0337414610910578063b9fa595f1461094d578063c49b9a8014610976578063c9567bf91461099f578063caac7934146109b657610288565b80637d1db4a5116101135780637d1db4a5146107ad57806388f82020146107d85780638da5cb5b1461081557806395d89b411461084057806398331db81461086b578063a457c2d71461089657610288565b8063610d5b19146106c857806366e9c091146107055780636a44cb541461072e57806370a0823114610759578063715018a61461079657610288565b8063362a3c5d116101f3578063437823ec116101ac578063437823ec146105a65780634549b039146105cf57806349bd5a5e1461060c5780634a74bb021461063757806352390c02146106625780635342acb41461068b57610288565b8063362a3c5d146104985780633685d419146104c157806339509351146104ea5780633b124fe7146105275780633bd5d173146105525780633c1a31fc1461057b57610288565b80631694505e116102455780631694505e1461037257806318160ddd1461039d57806322976e0d146103c857806323b872dd146103f35780632d83811914610430578063313ce5671461046d57610288565b8063061c82d01461028d57806306fdde03146102b6578063095ea7b3146102e15780630cd7c4781461031e57806313114a9d1461034757610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b460048036038101906102af9190614e8f565b610adb565b005b3480156102c257600080fd5b506102cb610b7a565b6040516102d89190615358565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190614e22565b610c0c565b6040516103159190615322565b60405180910390f35b34801561032a57600080fd5b5061034560048036038101906103409190614e8f565b610c2a565b005b34801561035357600080fd5b5061035c610cc9565b60405161036991906155ba565b60405180910390f35b34801561037e57600080fd5b50610387610cd3565b604051610394919061533d565b60405180910390f35b3480156103a957600080fd5b506103b2610cf7565b6040516103bf91906155ba565b60405180910390f35b3480156103d457600080fd5b506103dd610d01565b6040516103ea91906155ba565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614dcf565b610d07565b6040516104279190615322565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190614e8f565b610de0565b60405161046491906155ba565b60405180910390f35b34801561047957600080fd5b50610482610e4e565b60405161048f9190615658565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190614d35565b610e65565b005b3480156104cd57600080fd5b506104e860048036038101906104e39190614d35565b61116f565b005b3480156104f657600080fd5b50610511600480360381019061050c9190614e22565b6114be565b60405161051e9190615322565b60405180910390f35b34801561053357600080fd5b5061053c611571565b60405161054991906155ba565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190614e8f565b611577565b005b34801561058757600080fd5b506105906116f2565b60405161059d91906155ba565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190614d35565b6116f8565b005b3480156105db57600080fd5b506105f660048036038101906105f19190614ebc565b6117e8565b60405161060391906155ba565b60405180910390f35b34801561061857600080fd5b5061062161186c565b60405161062e91906152ec565b60405180910390f35b34801561064357600080fd5b5061064c611890565b6040516106599190615322565b60405180910390f35b34801561066e57600080fd5b5061068960048036038101906106849190614d35565b6118a3565b005b34801561069757600080fd5b506106b260048036038101906106ad9190614d35565b611b57565b6040516106bf9190615322565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea9190614d35565b611bad565b6040516106fc9190615322565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190614e8f565b611c03565b005b34801561073a57600080fd5b50610743611cb2565b60405161075091906155ba565b60405180910390f35b34801561076557600080fd5b50610780600480360381019061077b9190614d35565b611cb8565b60405161078d91906155ba565b60405180910390f35b3480156107a257600080fd5b506107ab611da3565b005b3480156107b957600080fd5b506107c2611ef6565b6040516107cf91906155ba565b60405180910390f35b3480156107e457600080fd5b506107ff60048036038101906107fa9190614d35565b611efc565b60405161080c9190615322565b60405180910390f35b34801561082157600080fd5b5061082a611f52565b60405161083791906152ec565b60405180910390f35b34801561084c57600080fd5b50610855611f7b565b6040516108629190615358565b60405180910390f35b34801561087757600080fd5b5061088061200d565b60405161088d91906155ba565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190614e22565b612013565b6040516108ca9190615322565b60405180910390f35b3480156108df57600080fd5b506108fa60048036038101906108f59190614e22565b6120e0565b6040516109079190615322565b60405180910390f35b34801561091c57600080fd5b5061093760048036038101906109329190614d35565b6120fe565b60405161094491906155ba565b60405180910390f35b34801561095957600080fd5b50610974600480360381019061096f9190614efc565b612116565b005b34801561098257600080fd5b5061099d60048036038101906109989190614e62565b6121c5565b005b3480156109ab57600080fd5b506109b46122ae565b005b3480156109c257600080fd5b506109cb612367565b6040516109d89190615307565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190614e8f565b61238d565b005b348015610a1657600080fd5b50610a316004803603810190610a2c9190614d8f565b612453565b604051610a3e91906155ba565b60405180910390f35b348015610a5357600080fd5b50610a5c6124da565b005b348015610a6a57600080fd5b50610a856004803603810190610a809190614d35565b61257a565b005b348015610a9357600080fd5b50610aae6004803603810190610aa99190614d35565b61266a565b005b348015610abc57600080fd5b50610ac56128cd565b604051610ad291906155ba565b60405180910390f35b610ae36128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b679061549a565b60405180910390fd5b8060118190555050565b6060600e8054610b89906158bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb5906158bf565b8015610c025780601f10610bd757610100808354040283529160200191610c02565b820191906000526020600020905b815481529060010190602001808311610be557829003601f168201915b5050505050905090565b6000610c20610c196128d3565b84846128db565b6001905092915050565b610c326128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb69061549a565b60405180910390fd5b8060138190555050565b6000600d54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600b54905090565b60135481565b6000610d14848484612aa6565b610dd584610d206128d3565b610dd085604051806060016040528060288152602001615ee860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d866128d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131459092919063ffffffff16565b6128db565b600190509392505050565b6000600c54821115610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e9061539a565b60405180910390fd5b6000610e316131a9565b9050610e4681846131d490919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b610e6d6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef19061549a565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d906154da565b60405180910390fd5b60005b60098054905081101561116b578173ffffffffffffffffffffffffffffffffffffffff1660098281548110610fc157610fc06159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611158576009600160098054905061101c91906157a9565b8154811061102d5761102c6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061106c5761106b6159f6565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061111e5761111d6159c7565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561116b565b8080611163906158f1565b915050610f89565b5050565b6111776128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb9061549a565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611287906153fa565b60405180910390fd5b60005b6007805490508110156114ba578173ffffffffffffffffffffffffffffffffffffffff16600782815481106112cb576112ca6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114a7576007600160078054905061132691906157a9565b81548110611337576113366159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110611376576113756159f6565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600780548061146d5761146c6159c7565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556114ba565b80806114b2906158f1565b915050611293565b5050565b60006115676114cb6128d3565b8461156285600460006114dc6128d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b6128db565b6001905092915050565b60115481565b60006115816128d3565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116079061557a565b60405180910390fd5b600061161b8361327c565b5050505050905061167481600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116cc81600c546132d890919063ffffffff16565b600c819055506116e783600d5461321e90919063ffffffff16565b600d81905550505050565b601b5481565b6117006128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117849061549a565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b5483111561182f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118269061543a565b60405180910390fd5b8161184f57600061183f8461327c565b5050505050905080915050611866565b600061185a8461327c565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601660019054906101000a900460ff1681565b6118ab6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f9061549a565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc906153fa565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a9957611a55600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de0565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c0b6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8f9061549a565b60405180910390fd5b60326019541015611ca857600080fd5b8060198190555050565b60195481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d5357600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611d9e565b611d9b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de0565b90505b919050565b611dab6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f9061549a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600f8054611f8a906158bf565b80601f0160208091040260200160405190810160405280929190818152602001828054611fb6906158bf565b80156120035780601f10611fd857610100808354040283529160200191612003565b820191906000526020600020905b815481529060010190602001808311611fe657829003601f168201915b5050505050905090565b601c5481565b60006120d66120206128d3565b846120d185604051806060016040528060258152602001615f10602591396004600061204a6128d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131459092919063ffffffff16565b6128db565b6001905092915050565b60006120f46120ed6128d3565b8484612aa6565b6001905092915050565b601d6020528060005260406000206000915090505481565b61211e6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a29061549a565b60405180910390fd5b82601a8190555081601b8190555080601c81905550505050565b6121cd6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122519061549a565b60405180910390fd5b80601660016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516122a39190615322565b60405180910390a150565b6122b66128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a9061549a565b60405180910390fd5b6001601660026101000a81548160ff02191690831515021790555042601581905550565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123956128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612422576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124199061549a565b60405180910390fd5b61244a606461243c83600b5461332290919063ffffffff16565b6131d490919063ffffffff16565b60178190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6124e26128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125669061549a565b60405180910390fd5b600b54601781905550565b6125826128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461260f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126069061549a565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6126726128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f69061549a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612782576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612779906154fa565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561280f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128069061541a565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561294b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129429061553a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b2906153ba565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a9991906155ba565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d9061551a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d9061537a565b60405180910390fd5b60008111612bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc0906154ba565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4d9061559a565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cda9061559a565b60405180910390fd5b612ceb611f52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d595750612d29611f52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612da457601754811115612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a9061545a565b60405180910390fd5b5b6000612daf30611cb8565b90506017548110612dc05760175490505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612e6757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ebd5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fd857601660029054906101000a900460ff16612f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f089061555a565b60405180910390fd5b601554421415612fd7576001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b60006018548210159050808015612ffc5750601660009054906101000a900460ff16155b801561305457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561306c5750601660019054906101000a900460ff165b1561308057601854915061307f8261339d565b5b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131275750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561313157600090505b61313d868686846134e2565b505050505050565b600083831115829061318d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131849190615358565b60405180910390fd5b506000838561319c91906157a9565b9050809150509392505050565b60008060006131b66139b3565b915091506131cd81836131d490919063ffffffff16565b9250505090565b600061321683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c66565b905092915050565b600080828461322d91906156c8565b905083811015613272576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613269906153da565b60405180910390fd5b8091505092915050565b60008060008060008060008060006132938a613cc9565b92509250925060008060006132b18d86866132ac6131a9565b613d23565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600061331a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613145565b905092915050565b6000808314156133355760009050613397565b60008284613343919061574f565b9050828482613352919061571e565b14613392576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133899061547a565b60405180910390fd5b809150505b92915050565b6001601660006101000a81548160ff021916908315150217905550600081905060004790506133cb82613dac565b60006133e082476132d890919063ffffffff16565b90507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486838260405161341392919061562f565b60405180910390a16000819050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613488573d6000803e3d6000fd5b507fcece836790e718d3e66cd1b6eaa6005ec1c1b021f2ab161c416ff6b300f6668e816040516134b891906155ba565b60405180910390a1505050506000601660006101000a81548160ff02191690831515021790555050565b806134f4576134ef613ff8565b613653565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135a4576135518461403b565b61355b84836140d5565b42601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613652565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156136075750600061360584611cb8565b145b156136515742601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136f65750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561370b5761370684848461410c565b613942565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137ae5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137c3576137be84848461436c565b613941565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138675750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561387c576138778484846145cc565b613940565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561391e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139335761392e848484614797565b61393f565b61393e8484846145cc565b5b5b5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561399f5761399e614a8c565b5b806139ad576139ac614a8c565b5b50505050565b6000806000600c5490506000600b54905060005b600780549050811015613c29578260026000600784815481106139ed576139ec6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613adb5750816003600060078481548110613a7357613a726159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613af257600c54600b5494509450505050613c62565b613b826002600060078481548110613b0d57613b0c6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846132d890919063ffffffff16565b9250613c146003600060078481548110613b9f57613b9e6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836132d890919063ffffffff16565b91508080613c21906158f1565b9150506139c7565b50613c41600b54600c546131d490919063ffffffff16565b821015613c5957600c54600b54935093505050613c62565b81819350935050505b9091565b60008083118290613cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ca49190615358565b60405180910390fd5b5060008385613cbc919061571e565b9050809150509392505050565b600080600080613cd885614aa0565b90506000613ce586614ad1565b90506000613d0e82613d00858a6132d890919063ffffffff16565b6132d890919063ffffffff16565b90508083839550955095505050509193909250565b600080600080613d3c858961332290919063ffffffff16565b90506000613d53868961332290919063ffffffff16565b90506000613d6a878961332290919063ffffffff16565b90506000613d9382613d8585876132d890919063ffffffff16565b6132d890919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff811115613dc957613dc8615a25565b5b604051908082528060200260200182016040528015613df75781602001602082028036833780820191505090505b5090503081600081518110613e0f57613e0e6159f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613eaf57600080fd5b505afa158015613ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ee79190614d62565b81600181518110613efb57613efa6159f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f60307f0000000000000000000000000000000000000000000000000000000000000000846128db565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fc29594939291906155d5565b600060405180830381600087803b158015613fdc57600080fd5b505af1158015613ff0573d6000803e3d6000fd5b505050505050565b600060115414801561400c57506000601354145b1561401657614039565b601154601281905550601354601481905550600060118190555060006013819055505b565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261408891906157a9565b9050610e108110156140a257601a546011819055506140d1565b6154608110156140ba57601b546011819055506140d0565b620151808110156140cf57601c546011819055505b5b5b5050565b60646019546140e384611cb8565b6140ed919061574f565b6140f7919061571e565b81111561410857601a546011819055505b5050565b60008060008060008061411e8761327c565b95509550955095509550955061417c87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061421186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142a685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142f281614b02565b6142fc8483614ca7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161435991906155ba565b60405180910390a3505050505050505050565b60008060008060008061437e8761327c565b9550955095509550955095506143dc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061447183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061450685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061455281614b02565b61455c8483614ca7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516145b991906155ba565b60405180910390a3505050505050505050565b6000806000806000806145de8761327c565b95509550955095509550955061463c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146d185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061471d81614b02565b6147278483614ca7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161478491906155ba565b60405180910390a3505050505050505050565b6000806000806000806147a98761327c565b95509550955095509550955061480787600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061489c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061493183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149c685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a1281614b02565b614a1c8483614ca7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051614a7991906155ba565b60405180910390a3505050505050505050565b601254601181905550601454601381905550565b6000614aca6064614abc6011548561332290919063ffffffff16565b6131d490919063ffffffff16565b9050919050565b6000614afb6064614aed6013548561332290919063ffffffff16565b6131d490919063ffffffff16565b9050919050565b6000614b0c6131a9565b90506000614b23828461332290919063ffffffff16565b9050614b7781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ca257614c5e83600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614cbc82600c546132d890919063ffffffff16565b600c81905550614cd781600d5461321e90919063ffffffff16565b600d819055505050565b600081359050614cf081615ea2565b92915050565b600081519050614d0581615ea2565b92915050565b600081359050614d1a81615eb9565b92915050565b600081359050614d2f81615ed0565b92915050565b600060208284031215614d4b57614d4a615a54565b5b6000614d5984828501614ce1565b91505092915050565b600060208284031215614d7857614d77615a54565b5b6000614d8684828501614cf6565b91505092915050565b60008060408385031215614da657614da5615a54565b5b6000614db485828601614ce1565b9250506020614dc585828601614ce1565b9150509250929050565b600080600060608486031215614de857614de7615a54565b5b6000614df686828701614ce1565b9350506020614e0786828701614ce1565b9250506040614e1886828701614d20565b9150509250925092565b60008060408385031215614e3957614e38615a54565b5b6000614e4785828601614ce1565b9250506020614e5885828601614d20565b9150509250929050565b600060208284031215614e7857614e77615a54565b5b6000614e8684828501614d0b565b91505092915050565b600060208284031215614ea557614ea4615a54565b5b6000614eb384828501614d20565b91505092915050565b60008060408385031215614ed357614ed2615a54565b5b6000614ee185828601614d20565b9250506020614ef285828601614d0b565b9150509250929050565b600080600060608486031215614f1557614f14615a54565b5b6000614f2386828701614d20565b9350506020614f3486828701614d20565b9250506040614f4586828701614d20565b9150509250925092565b6000614f5b8383614f76565b60208301905092915050565b614f70816157ef565b82525050565b614f7f816157dd565b82525050565b614f8e816157dd565b82525050565b6000614f9f82615683565b614fa981856156a6565b9350614fb483615673565b8060005b83811015614fe5578151614fcc8882614f4f565b9750614fd783615699565b925050600181019050614fb8565b5085935050505092915050565b614ffb81615801565b82525050565b61500a81615844565b82525050565b61501981615856565b82525050565b600061502a8261568e565b61503481856156b7565b935061504481856020860161588c565b61504d81615a59565b840191505092915050565b60006150656023836156b7565b915061507082615a6a565b604082019050919050565b6000615088602a836156b7565b915061509382615ab9565b604082019050919050565b60006150ab6022836156b7565b91506150b682615b08565b604082019050919050565b60006150ce601b836156b7565b91506150d982615b57565b602082019050919050565b60006150f1601b836156b7565b91506150fc82615b80565b602082019050919050565b6000615114601e836156b7565b915061511f82615ba9565b602082019050919050565b6000615137601f836156b7565b915061514282615bd2565b602082019050919050565b600061515a6028836156b7565b915061516582615bfb565b604082019050919050565b600061517d6021836156b7565b915061518882615c4a565b604082019050919050565b60006151a06020836156b7565b91506151ab82615c99565b602082019050919050565b60006151c36029836156b7565b91506151ce82615cc2565b604082019050919050565b60006151e6601a836156b7565b91506151f182615d11565b602082019050919050565b6000615209601c836156b7565b915061521482615d3a565b602082019050919050565b600061522c6025836156b7565b915061523782615d63565b604082019050919050565b600061524f6024836156b7565b915061525a82615db2565b604082019050919050565b60006152726018836156b7565b915061527d82615e01565b602082019050919050565b6000615295602c836156b7565b91506152a082615e2a565b604082019050919050565b60006152b86017836156b7565b91506152c382615e79565b602082019050919050565b6152d78161582d565b82525050565b6152e681615837565b82525050565b60006020820190506153016000830184614f85565b92915050565b600060208201905061531c6000830184614f67565b92915050565b60006020820190506153376000830184614ff2565b92915050565b60006020820190506153526000830184615001565b92915050565b60006020820190508181036000830152615372818461501f565b905092915050565b6000602082019050818103600083015261539381615058565b9050919050565b600060208201905081810360008301526153b38161507b565b9050919050565b600060208201905081810360008301526153d38161509e565b9050919050565b600060208201905081810360008301526153f3816150c1565b9050919050565b60006020820190508181036000830152615413816150e4565b9050919050565b6000602082019050818103600083015261543381615107565b9050919050565b600060208201905081810360008301526154538161512a565b9050919050565b600060208201905081810360008301526154738161514d565b9050919050565b6000602082019050818103600083015261549381615170565b9050919050565b600060208201905081810360008301526154b381615193565b9050919050565b600060208201905081810360008301526154d3816151b6565b9050919050565b600060208201905081810360008301526154f3816151d9565b9050919050565b60006020820190508181036000830152615513816151fc565b9050919050565b600060208201905081810360008301526155338161521f565b9050919050565b6000602082019050818103600083015261555381615242565b9050919050565b6000602082019050818103600083015261557381615265565b9050919050565b6000602082019050818103600083015261559381615288565b9050919050565b600060208201905081810360008301526155b3816152ab565b9050919050565b60006020820190506155cf60008301846152ce565b92915050565b600060a0820190506155ea60008301886152ce565b6155f76020830187615010565b81810360408301526156098186614f94565b90506156186060830185614f85565b61562560808301846152ce565b9695505050505050565b600060408201905061564460008301856152ce565b61565160208301846152ce565b9392505050565b600060208201905061566d60008301846152dd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006156d38261582d565b91506156de8361582d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156157135761571261593a565b5b828201905092915050565b60006157298261582d565b91506157348361582d565b92508261574457615743615969565b5b828204905092915050565b600061575a8261582d565b91506157658361582d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561579e5761579d61593a565b5b828202905092915050565b60006157b48261582d565b91506157bf8361582d565b9250828210156157d2576157d161593a565b5b828203905092915050565b60006157e88261580d565b9050919050565b60006157fa8261580d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061584f82615868565b9050919050565b60006158618261582d565b9050919050565b60006158738261587a565b9050919050565b60006158858261580d565b9050919050565b60005b838110156158aa57808201518184015260208101905061588f565b838111156158b9576000848401525b50505050565b600060028204905060018216806158d757607f821691505b602082108114156158eb576158ea615998565b5b50919050565b60006158fc8261582d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561592f5761592e61593a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615eab816157dd565b8114615eb657600080fd5b50565b615ec281615801565b8114615ecd57600080fd5b50565b615ed98161582d565b8114615ee457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205db31bf8f99c0af638822b0ec0f294e6f5cd1903d6dce9a35e64ee7e694b78de64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102815760003560e01c8063610d5b191161014f578063a9059cbb116100c1578063d543dbeb1161007a578063d543dbeb146109e1578063dd62ed3e14610a0a578063e19e902514610a47578063ea2f0b3714610a5e578063f375b25314610a87578063fa42682314610ab057610288565b8063a9059cbb146108d3578063b6e0337414610910578063b9fa595f1461094d578063c49b9a8014610976578063c9567bf91461099f578063caac7934146109b657610288565b80637d1db4a5116101135780637d1db4a5146107ad57806388f82020146107d85780638da5cb5b1461081557806395d89b411461084057806398331db81461086b578063a457c2d71461089657610288565b8063610d5b19146106c857806366e9c091146107055780636a44cb541461072e57806370a0823114610759578063715018a61461079657610288565b8063362a3c5d116101f3578063437823ec116101ac578063437823ec146105a65780634549b039146105cf57806349bd5a5e1461060c5780634a74bb021461063757806352390c02146106625780635342acb41461068b57610288565b8063362a3c5d146104985780633685d419146104c157806339509351146104ea5780633b124fe7146105275780633bd5d173146105525780633c1a31fc1461057b57610288565b80631694505e116102455780631694505e1461037257806318160ddd1461039d57806322976e0d146103c857806323b872dd146103f35780632d83811914610430578063313ce5671461046d57610288565b8063061c82d01461028d57806306fdde03146102b6578063095ea7b3146102e15780630cd7c4781461031e57806313114a9d1461034757610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b460048036038101906102af9190614e8f565b610adb565b005b3480156102c257600080fd5b506102cb610b7a565b6040516102d89190615358565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190614e22565b610c0c565b6040516103159190615322565b60405180910390f35b34801561032a57600080fd5b5061034560048036038101906103409190614e8f565b610c2a565b005b34801561035357600080fd5b5061035c610cc9565b60405161036991906155ba565b60405180910390f35b34801561037e57600080fd5b50610387610cd3565b604051610394919061533d565b60405180910390f35b3480156103a957600080fd5b506103b2610cf7565b6040516103bf91906155ba565b60405180910390f35b3480156103d457600080fd5b506103dd610d01565b6040516103ea91906155ba565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614dcf565b610d07565b6040516104279190615322565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190614e8f565b610de0565b60405161046491906155ba565b60405180910390f35b34801561047957600080fd5b50610482610e4e565b60405161048f9190615658565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190614d35565b610e65565b005b3480156104cd57600080fd5b506104e860048036038101906104e39190614d35565b61116f565b005b3480156104f657600080fd5b50610511600480360381019061050c9190614e22565b6114be565b60405161051e9190615322565b60405180910390f35b34801561053357600080fd5b5061053c611571565b60405161054991906155ba565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190614e8f565b611577565b005b34801561058757600080fd5b506105906116f2565b60405161059d91906155ba565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190614d35565b6116f8565b005b3480156105db57600080fd5b506105f660048036038101906105f19190614ebc565b6117e8565b60405161060391906155ba565b60405180910390f35b34801561061857600080fd5b5061062161186c565b60405161062e91906152ec565b60405180910390f35b34801561064357600080fd5b5061064c611890565b6040516106599190615322565b60405180910390f35b34801561066e57600080fd5b5061068960048036038101906106849190614d35565b6118a3565b005b34801561069757600080fd5b506106b260048036038101906106ad9190614d35565b611b57565b6040516106bf9190615322565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea9190614d35565b611bad565b6040516106fc9190615322565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190614e8f565b611c03565b005b34801561073a57600080fd5b50610743611cb2565b60405161075091906155ba565b60405180910390f35b34801561076557600080fd5b50610780600480360381019061077b9190614d35565b611cb8565b60405161078d91906155ba565b60405180910390f35b3480156107a257600080fd5b506107ab611da3565b005b3480156107b957600080fd5b506107c2611ef6565b6040516107cf91906155ba565b60405180910390f35b3480156107e457600080fd5b506107ff60048036038101906107fa9190614d35565b611efc565b60405161080c9190615322565b60405180910390f35b34801561082157600080fd5b5061082a611f52565b60405161083791906152ec565b60405180910390f35b34801561084c57600080fd5b50610855611f7b565b6040516108629190615358565b60405180910390f35b34801561087757600080fd5b5061088061200d565b60405161088d91906155ba565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190614e22565b612013565b6040516108ca9190615322565b60405180910390f35b3480156108df57600080fd5b506108fa60048036038101906108f59190614e22565b6120e0565b6040516109079190615322565b60405180910390f35b34801561091c57600080fd5b5061093760048036038101906109329190614d35565b6120fe565b60405161094491906155ba565b60405180910390f35b34801561095957600080fd5b50610974600480360381019061096f9190614efc565b612116565b005b34801561098257600080fd5b5061099d60048036038101906109989190614e62565b6121c5565b005b3480156109ab57600080fd5b506109b46122ae565b005b3480156109c257600080fd5b506109cb612367565b6040516109d89190615307565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190614e8f565b61238d565b005b348015610a1657600080fd5b50610a316004803603810190610a2c9190614d8f565b612453565b604051610a3e91906155ba565b60405180910390f35b348015610a5357600080fd5b50610a5c6124da565b005b348015610a6a57600080fd5b50610a856004803603810190610a809190614d35565b61257a565b005b348015610a9357600080fd5b50610aae6004803603810190610aa99190614d35565b61266a565b005b348015610abc57600080fd5b50610ac56128cd565b604051610ad291906155ba565b60405180910390f35b610ae36128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b679061549a565b60405180910390fd5b8060118190555050565b6060600e8054610b89906158bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb5906158bf565b8015610c025780601f10610bd757610100808354040283529160200191610c02565b820191906000526020600020905b815481529060010190602001808311610be557829003601f168201915b5050505050905090565b6000610c20610c196128d3565b84846128db565b6001905092915050565b610c326128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb69061549a565b60405180910390fd5b8060138190555050565b6000600d54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600b54905090565b60135481565b6000610d14848484612aa6565b610dd584610d206128d3565b610dd085604051806060016040528060288152602001615ee860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d866128d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131459092919063ffffffff16565b6128db565b600190509392505050565b6000600c54821115610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e9061539a565b60405180910390fd5b6000610e316131a9565b9050610e4681846131d490919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b610e6d6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef19061549a565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d906154da565b60405180910390fd5b60005b60098054905081101561116b578173ffffffffffffffffffffffffffffffffffffffff1660098281548110610fc157610fc06159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611158576009600160098054905061101c91906157a9565b8154811061102d5761102c6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061106c5761106b6159f6565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061111e5761111d6159c7565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561116b565b8080611163906158f1565b915050610f89565b5050565b6111776128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb9061549a565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611287906153fa565b60405180910390fd5b60005b6007805490508110156114ba578173ffffffffffffffffffffffffffffffffffffffff16600782815481106112cb576112ca6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114a7576007600160078054905061132691906157a9565b81548110611337576113366159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110611376576113756159f6565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600780548061146d5761146c6159c7565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556114ba565b80806114b2906158f1565b915050611293565b5050565b60006115676114cb6128d3565b8461156285600460006114dc6128d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b6128db565b6001905092915050565b60115481565b60006115816128d3565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116079061557a565b60405180910390fd5b600061161b8361327c565b5050505050905061167481600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116cc81600c546132d890919063ffffffff16565b600c819055506116e783600d5461321e90919063ffffffff16565b600d81905550505050565b601b5481565b6117006128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117849061549a565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b5483111561182f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118269061543a565b60405180910390fd5b8161184f57600061183f8461327c565b5050505050905080915050611866565b600061185a8461327c565b50505050915050809150505b92915050565b7f000000000000000000000000f22dec19e4d83a7a17244d31d09ed99cd307a65581565b601660019054906101000a900460ff1681565b6118ab6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f9061549a565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc906153fa565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a9957611a55600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de0565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c0b6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8f9061549a565b60405180910390fd5b60326019541015611ca857600080fd5b8060198190555050565b60195481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d5357600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611d9e565b611d9b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de0565b90505b919050565b611dab6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f9061549a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600f8054611f8a906158bf565b80601f0160208091040260200160405190810160405280929190818152602001828054611fb6906158bf565b80156120035780601f10611fd857610100808354040283529160200191612003565b820191906000526020600020905b815481529060010190602001808311611fe657829003601f168201915b5050505050905090565b601c5481565b60006120d66120206128d3565b846120d185604051806060016040528060258152602001615f10602591396004600061204a6128d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131459092919063ffffffff16565b6128db565b6001905092915050565b60006120f46120ed6128d3565b8484612aa6565b6001905092915050565b601d6020528060005260406000206000915090505481565b61211e6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a29061549a565b60405180910390fd5b82601a8190555081601b8190555080601c81905550505050565b6121cd6128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122519061549a565b60405180910390fd5b80601660016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516122a39190615322565b60405180910390a150565b6122b66128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a9061549a565b60405180910390fd5b6001601660026101000a81548160ff02191690831515021790555042601581905550565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123956128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612422576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124199061549a565b60405180910390fd5b61244a606461243c83600b5461332290919063ffffffff16565b6131d490919063ffffffff16565b60178190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6124e26128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125669061549a565b60405180910390fd5b600b54601781905550565b6125826128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461260f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126069061549a565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6126726128d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f69061549a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612782576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612779906154fa565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561280f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128069061541a565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561294b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129429061553a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b2906153ba565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a9991906155ba565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d9061551a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d9061537a565b60405180910390fd5b60008111612bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc0906154ba565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4d9061559a565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cda9061559a565b60405180910390fd5b612ceb611f52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d595750612d29611f52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612da457601754811115612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a9061545a565b60405180910390fd5b5b6000612daf30611cb8565b90506017548110612dc05760175490505b7f000000000000000000000000f22dec19e4d83a7a17244d31d09ed99cd307a65573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612e6757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ebd5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fd857601660029054906101000a900460ff16612f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f089061555a565b60405180910390fd5b601554421415612fd7576001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b60006018548210159050808015612ffc5750601660009054906101000a900460ff16155b801561305457507f000000000000000000000000f22dec19e4d83a7a17244d31d09ed99cd307a65573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561306c5750601660019054906101000a900460ff165b1561308057601854915061307f8261339d565b5b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131275750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561313157600090505b61313d868686846134e2565b505050505050565b600083831115829061318d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131849190615358565b60405180910390fd5b506000838561319c91906157a9565b9050809150509392505050565b60008060006131b66139b3565b915091506131cd81836131d490919063ffffffff16565b9250505090565b600061321683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c66565b905092915050565b600080828461322d91906156c8565b905083811015613272576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613269906153da565b60405180910390fd5b8091505092915050565b60008060008060008060008060006132938a613cc9565b92509250925060008060006132b18d86866132ac6131a9565b613d23565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600061331a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613145565b905092915050565b6000808314156133355760009050613397565b60008284613343919061574f565b9050828482613352919061571e565b14613392576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133899061547a565b60405180910390fd5b809150505b92915050565b6001601660006101000a81548160ff021916908315150217905550600081905060004790506133cb82613dac565b60006133e082476132d890919063ffffffff16565b90507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486838260405161341392919061562f565b60405180910390a16000819050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613488573d6000803e3d6000fd5b507fcece836790e718d3e66cd1b6eaa6005ec1c1b021f2ab161c416ff6b300f6668e816040516134b891906155ba565b60405180910390a1505050506000601660006101000a81548160ff02191690831515021790555050565b806134f4576134ef613ff8565b613653565b7f000000000000000000000000f22dec19e4d83a7a17244d31d09ed99cd307a65573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135a4576135518461403b565b61355b84836140d5565b42601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613652565b7f000000000000000000000000f22dec19e4d83a7a17244d31d09ed99cd307a65573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156136075750600061360584611cb8565b145b156136515742601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136f65750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561370b5761370684848461410c565b613942565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137ae5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137c3576137be84848461436c565b613941565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138675750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561387c576138778484846145cc565b613940565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561391e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139335761392e848484614797565b61393f565b61393e8484846145cc565b5b5b5b5b7f000000000000000000000000f22dec19e4d83a7a17244d31d09ed99cd307a65573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561399f5761399e614a8c565b5b806139ad576139ac614a8c565b5b50505050565b6000806000600c5490506000600b54905060005b600780549050811015613c29578260026000600784815481106139ed576139ec6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613adb5750816003600060078481548110613a7357613a726159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613af257600c54600b5494509450505050613c62565b613b826002600060078481548110613b0d57613b0c6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846132d890919063ffffffff16565b9250613c146003600060078481548110613b9f57613b9e6159f6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836132d890919063ffffffff16565b91508080613c21906158f1565b9150506139c7565b50613c41600b54600c546131d490919063ffffffff16565b821015613c5957600c54600b54935093505050613c62565b81819350935050505b9091565b60008083118290613cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ca49190615358565b60405180910390fd5b5060008385613cbc919061571e565b9050809150509392505050565b600080600080613cd885614aa0565b90506000613ce586614ad1565b90506000613d0e82613d00858a6132d890919063ffffffff16565b6132d890919063ffffffff16565b90508083839550955095505050509193909250565b600080600080613d3c858961332290919063ffffffff16565b90506000613d53868961332290919063ffffffff16565b90506000613d6a878961332290919063ffffffff16565b90506000613d9382613d8585876132d890919063ffffffff16565b6132d890919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff811115613dc957613dc8615a25565b5b604051908082528060200260200182016040528015613df75781602001602082028036833780820191505090505b5090503081600081518110613e0f57613e0e6159f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613eaf57600080fd5b505afa158015613ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ee79190614d62565b81600181518110613efb57613efa6159f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f60307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846128db565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fc29594939291906155d5565b600060405180830381600087803b158015613fdc57600080fd5b505af1158015613ff0573d6000803e3d6000fd5b505050505050565b600060115414801561400c57506000601354145b1561401657614039565b601154601281905550601354601481905550600060118190555060006013819055505b565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261408891906157a9565b9050610e108110156140a257601a546011819055506140d1565b6154608110156140ba57601b546011819055506140d0565b620151808110156140cf57601c546011819055505b5b5b5050565b60646019546140e384611cb8565b6140ed919061574f565b6140f7919061571e565b81111561410857601a546011819055505b5050565b60008060008060008061411e8761327c565b95509550955095509550955061417c87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061421186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142a685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142f281614b02565b6142fc8483614ca7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161435991906155ba565b60405180910390a3505050505050505050565b60008060008060008061437e8761327c565b9550955095509550955095506143dc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061447183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061450685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061455281614b02565b61455c8483614ca7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516145b991906155ba565b60405180910390a3505050505050505050565b6000806000806000806145de8761327c565b95509550955095509550955061463c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146d185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061471d81614b02565b6147278483614ca7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161478491906155ba565b60405180910390a3505050505050505050565b6000806000806000806147a98761327c565b95509550955095509550955061480787600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061489c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061493183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149c685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a1281614b02565b614a1c8483614ca7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051614a7991906155ba565b60405180910390a3505050505050505050565b601254601181905550601454601381905550565b6000614aca6064614abc6011548561332290919063ffffffff16565b6131d490919063ffffffff16565b9050919050565b6000614afb6064614aed6013548561332290919063ffffffff16565b6131d490919063ffffffff16565b9050919050565b6000614b0c6131a9565b90506000614b23828461332290919063ffffffff16565b9050614b7781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ca257614c5e83600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614cbc82600c546132d890919063ffffffff16565b600c81905550614cd781600d5461321e90919063ffffffff16565b600d819055505050565b600081359050614cf081615ea2565b92915050565b600081519050614d0581615ea2565b92915050565b600081359050614d1a81615eb9565b92915050565b600081359050614d2f81615ed0565b92915050565b600060208284031215614d4b57614d4a615a54565b5b6000614d5984828501614ce1565b91505092915050565b600060208284031215614d7857614d77615a54565b5b6000614d8684828501614cf6565b91505092915050565b60008060408385031215614da657614da5615a54565b5b6000614db485828601614ce1565b9250506020614dc585828601614ce1565b9150509250929050565b600080600060608486031215614de857614de7615a54565b5b6000614df686828701614ce1565b9350506020614e0786828701614ce1565b9250506040614e1886828701614d20565b9150509250925092565b60008060408385031215614e3957614e38615a54565b5b6000614e4785828601614ce1565b9250506020614e5885828601614d20565b9150509250929050565b600060208284031215614e7857614e77615a54565b5b6000614e8684828501614d0b565b91505092915050565b600060208284031215614ea557614ea4615a54565b5b6000614eb384828501614d20565b91505092915050565b60008060408385031215614ed357614ed2615a54565b5b6000614ee185828601614d20565b9250506020614ef285828601614d0b565b9150509250929050565b600080600060608486031215614f1557614f14615a54565b5b6000614f2386828701614d20565b9350506020614f3486828701614d20565b9250506040614f4586828701614d20565b9150509250925092565b6000614f5b8383614f76565b60208301905092915050565b614f70816157ef565b82525050565b614f7f816157dd565b82525050565b614f8e816157dd565b82525050565b6000614f9f82615683565b614fa981856156a6565b9350614fb483615673565b8060005b83811015614fe5578151614fcc8882614f4f565b9750614fd783615699565b925050600181019050614fb8565b5085935050505092915050565b614ffb81615801565b82525050565b61500a81615844565b82525050565b61501981615856565b82525050565b600061502a8261568e565b61503481856156b7565b935061504481856020860161588c565b61504d81615a59565b840191505092915050565b60006150656023836156b7565b915061507082615a6a565b604082019050919050565b6000615088602a836156b7565b915061509382615ab9565b604082019050919050565b60006150ab6022836156b7565b91506150b682615b08565b604082019050919050565b60006150ce601b836156b7565b91506150d982615b57565b602082019050919050565b60006150f1601b836156b7565b91506150fc82615b80565b602082019050919050565b6000615114601e836156b7565b915061511f82615ba9565b602082019050919050565b6000615137601f836156b7565b915061514282615bd2565b602082019050919050565b600061515a6028836156b7565b915061516582615bfb565b604082019050919050565b600061517d6021836156b7565b915061518882615c4a565b604082019050919050565b60006151a06020836156b7565b91506151ab82615c99565b602082019050919050565b60006151c36029836156b7565b91506151ce82615cc2565b604082019050919050565b60006151e6601a836156b7565b91506151f182615d11565b602082019050919050565b6000615209601c836156b7565b915061521482615d3a565b602082019050919050565b600061522c6025836156b7565b915061523782615d63565b604082019050919050565b600061524f6024836156b7565b915061525a82615db2565b604082019050919050565b60006152726018836156b7565b915061527d82615e01565b602082019050919050565b6000615295602c836156b7565b91506152a082615e2a565b604082019050919050565b60006152b86017836156b7565b91506152c382615e79565b602082019050919050565b6152d78161582d565b82525050565b6152e681615837565b82525050565b60006020820190506153016000830184614f85565b92915050565b600060208201905061531c6000830184614f67565b92915050565b60006020820190506153376000830184614ff2565b92915050565b60006020820190506153526000830184615001565b92915050565b60006020820190508181036000830152615372818461501f565b905092915050565b6000602082019050818103600083015261539381615058565b9050919050565b600060208201905081810360008301526153b38161507b565b9050919050565b600060208201905081810360008301526153d38161509e565b9050919050565b600060208201905081810360008301526153f3816150c1565b9050919050565b60006020820190508181036000830152615413816150e4565b9050919050565b6000602082019050818103600083015261543381615107565b9050919050565b600060208201905081810360008301526154538161512a565b9050919050565b600060208201905081810360008301526154738161514d565b9050919050565b6000602082019050818103600083015261549381615170565b9050919050565b600060208201905081810360008301526154b381615193565b9050919050565b600060208201905081810360008301526154d3816151b6565b9050919050565b600060208201905081810360008301526154f3816151d9565b9050919050565b60006020820190508181036000830152615513816151fc565b9050919050565b600060208201905081810360008301526155338161521f565b9050919050565b6000602082019050818103600083015261555381615242565b9050919050565b6000602082019050818103600083015261557381615265565b9050919050565b6000602082019050818103600083015261559381615288565b9050919050565b600060208201905081810360008301526155b3816152ab565b9050919050565b60006020820190506155cf60008301846152ce565b92915050565b600060a0820190506155ea60008301886152ce565b6155f76020830187615010565b81810360408301526156098186614f94565b90506156186060830185614f85565b61562560808301846152ce565b9695505050505050565b600060408201905061564460008301856152ce565b61565160208301846152ce565b9392505050565b600060208201905061566d60008301846152dd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006156d38261582d565b91506156de8361582d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156157135761571261593a565b5b828201905092915050565b60006157298261582d565b91506157348361582d565b92508261574457615743615969565b5b828204905092915050565b600061575a8261582d565b91506157658361582d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561579e5761579d61593a565b5b828202905092915050565b60006157b48261582d565b91506157bf8361582d565b9250828210156157d2576157d161593a565b5b828203905092915050565b60006157e88261580d565b9050919050565b60006157fa8261580d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061584f82615868565b9050919050565b60006158618261582d565b9050919050565b60006158738261587a565b9050919050565b60006158858261580d565b9050919050565b60005b838110156158aa57808201518184015260208101905061588f565b838111156158b9576000848401525b50505050565b600060028204905060018216806158d757607f821691505b602082108114156158eb576158ea615998565b5b50919050565b60006158fc8261582d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561592f5761592e61593a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615eab816157dd565b8114615eb657600080fd5b50565b615ec281615801565b8114615ecd57600080fd5b50565b615ed98161582d565b8114615ee457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205db31bf8f99c0af638822b0ec0f294e6f5cd1903d6dce9a35e64ee7e694b78de64736f6c63430008070033
Deployed Bytecode Sourcemap
13888:21313:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22092:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16925:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17837:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21962:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18958:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15063:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17202:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14934:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18006:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19882:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17111:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33707:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20598:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18327:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14851:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19053:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15531:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21725:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19438:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15121:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15196:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20143:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25904:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33218:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34420:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15444:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17305:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10245:160;;;;;;;;;;;;;:::i;:::-;;15276:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18830:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10003:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17016;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15576:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18553:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17511:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15622:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34195:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22466:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16799:118;;;;;;;;;;;;;:::i;:::-;;14435:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22196:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17686:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22366:92;;;;;;;;;;;;;:::i;:::-;;21844:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33339:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15486:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22092:96;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22174:6:::1;22164:7;:16;;;;22092:96:::0;:::o;16925:83::-;16962:13;16995:5;16988:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16925:83;:::o;17837:161::-;17912:4;17929:39;17938:12;:10;:12::i;:::-;17952:7;17961:6;17929:8;:39::i;:::-;17986:4;17979:11;;17837:161;;;;:::o;21962:122::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22064:12:::1;22048:13;:28;;;;21962:122:::0;:::o;18958:87::-;19000:7;19027:10;;19020:17;;18958:87;:::o;15063:51::-;;;:::o;17202:95::-;17255:7;17282;;17275:14;;17202:95;:::o;14934:33::-;;;;:::o;18006:313::-;18104:4;18121:36;18131:6;18139:9;18150:6;18121:9;:36::i;:::-;18168:121;18177:6;18185:12;:10;:12::i;:::-;18199:89;18237:6;18199:89;;;;;;;;;;;;;;;;;:11;:19;18211:6;18199:19;;;;;;;;;;;;;;;:33;18219:12;:10;:12::i;:::-;18199:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18168:8;:121::i;:::-;18307:4;18300:11;;18006:313;;;;;:::o;19882:253::-;19948:7;19987;;19976;:18;;19968:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20052:19;20075:10;:8;:10::i;:::-;20052:33;;20103:24;20115:11;20103:7;:11;;:24;;;;:::i;:::-;20096:31;;;19882:253;;;:::o;17111:83::-;17152:5;17177:9;;;;;;;;;;;17170:16;;17111:83;:::o;33707:480::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33786:9:::1;:18;33796:7;33786:18;;;;;;;;;;;;;;;;;;;;;;;;;33778:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;33851:9;33846:334;33870:17;:24;;;;33866:1;:28;33846:334;;;33944:7;33920:31;;:17;33938:1;33920:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:31;;;33916:253;;;33995:17;34040:1;34013:17;:24;;;;:28;;;;:::i;:::-;33995:47;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33972:17;33990:1;33972:20;;;;;;;;:::i;:::-;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;34082:5;34061:9;:18;34071:7;34061:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;34106:17;:23;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;34148:5;;33916:253;33896:3;;;;;:::i;:::-;;;;33846:334;;;;33707:480:::0;:::o;20598:479::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20680:11:::1;:20;20692:7;20680:20;;;;;;;;;;;;;;;;;;;;;;;;;20672:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20748:9;20743:327;20767:9;:16;;;;20763:1;:20;20743:327;;;20825:7;20809:23;;:9;20819:1;20809:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;20805:254;;;20868:9;20897:1;20878:9;:16;;;;:20;;;;:::i;:::-;20868:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20853:9;20863:1;20853:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;20937:1;20918:7;:16;20926:7;20918:16;;;;;;;;;;;;;;;:20;;;;20980:5;20957:11;:20;20969:7;20957:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21004:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;21038:5;;20805:254;20785:3;;;;;:::i;:::-;;;;20743:327;;;;20598:479:::0;:::o;18327:218::-;18415:4;18432:83;18441:12;:10;:12::i;:::-;18455:7;18464:50;18503:10;18464:11;:25;18476:12;:10;:12::i;:::-;18464:25;;;;;;;;;;;;;;;:34;18490:7;18464:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18432:8;:83::i;:::-;18533:4;18526:11;;18327:218;;;;:::o;14851:26::-;;;;:::o;19053:377::-;19105:14;19122:12;:10;:12::i;:::-;19105:29;;19154:11;:19;19166:6;19154:19;;;;;;;;;;;;;;;;;;;;;;;;;19153:20;19145:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;19234:15;19258:19;19269:7;19258:10;:19::i;:::-;19233:44;;;;;;;19306:28;19326:7;19306;:15;19314:6;19306:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19288:7;:15;19296:6;19288:15;;;;;;;;;;;;;;;:46;;;;19355:20;19367:7;19355;;:11;;:20;;;;:::i;:::-;19345:7;:30;;;;19399:23;19414:7;19399:10;;:14;;:23;;;;:::i;:::-;19386:10;:36;;;;19094:336;;19053:377;:::o;15531:38::-;;;;:::o;21725:111::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21824:4:::1;21794:18;:27;21813:7;21794:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;21725:111:::0;:::o;19438:436::-;19528:7;19567;;19556;:18;;19548:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19626:17;19621:246;;19661:15;19685:19;19696:7;19685:10;:19::i;:::-;19660:44;;;;;;;19726:7;19719:14;;;;;19621:246;19768:23;19799:19;19810:7;19799:10;:19::i;:::-;19766:52;;;;;;;19840:15;19833:22;;;19438:436;;;;;:::o;15121:38::-;;;:::o;15196:40::-;;;;;;;;;;;;;:::o;20143:447::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20340:11:::1;:20;20352:7;20340:20;;;;;;;;;;;;;;;;;;;;;;;;;20339:21;20331:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20425:1;20406:7;:16;20414:7;20406:16;;;;;;;;;;;;;;;;:20;20403:108;;;20462:37;20482:7;:16;20490:7;20482:16;;;;;;;;;;;;;;;;20462:19;:37::i;:::-;20443:7;:16;20451:7;20443:16;;;;;;;;;;;;;;;:56;;;;20403:108;20544:4;20521:11;:20;20533:7;20521:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20559:9;20574:7;20559:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20143:447:::0;:::o;25904:123::-;25968:4;25992:18;:27;26011:7;25992:27;;;;;;;;;;;;;;;;;;;;;;;;;25985:34;;25904:123;;;:::o;33218:113::-;33281:4;33305:9;:18;33315:7;33305:18;;;;;;;;;;;;;;;;;;;;;;;;;33298:25;;33218:113;;;:::o;34420:149::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34520:2:::1;34503:13;;:19;;34495:28;;;::::0;::::1;;34550:11;34534:13;:27;;;;34420:149:::0;:::o;15444:33::-;;;;:::o;17305:198::-;17371:7;17395:11;:20;17407:7;17395:20;;;;;;;;;;;;;;;;;;;;;;;;;17391:49;;;17424:7;:16;17432:7;17424:16;;;;;;;;;;;;;;;;17417:23;;;;17391:49;17458:37;17478:7;:16;17486:7;17478:16;;;;;;;;;;;;;;;;17458:19;:37::i;:::-;17451:44;;17305:198;;;;:::o;10245:160::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10356:1:::1;10319:40;;10340:6;::::0;::::1;;;;;;;;10319:40;;;;;;;;;;;;10391:1;10374:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10245:160::o:0;15276:47::-;;;;:::o;18830:120::-;18898:4;18922:11;:20;18934:7;18922:20;;;;;;;;;;;;;;;;;;;;;;;;;18915:27;;18830:120;;;:::o;10003:87::-;10041:7;10072:6;;;;;;;;;;;10065:13;;10003:87;:::o;17016:::-;17055:13;17088:7;17081:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17016:87;:::o;15576:39::-;;;;:::o;18553:269::-;18646:4;18663:129;18672:12;:10;:12::i;:::-;18686:7;18695:96;18734:15;18695:96;;;;;;;;;;;;;;;;;:11;:25;18707:12;:10;:12::i;:::-;18695:25;;;;;;;;;;;;;;;:34;18721:7;18695:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18663:8;:129::i;:::-;18810:4;18803:11;;18553:269;;;;:::o;17511:167::-;17589:4;17606:42;17616:12;:10;:12::i;:::-;17630:9;17641:6;17606:9;:42::i;:::-;17666:4;17659:11;;17511:167;;;;:::o;15622:46::-;;;;;;;;;;;;;;;;;:::o;34195:217::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34320:6:::1;34299:18;:27;;;;34358:6;34337:18;:27;;;;34397:7;34375:19;:29;;;;34195:217:::0;;;:::o;22466:171::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22567:8:::1;22543:21;;:32;;;;;;;;;;;;;;;;;;22591:38;22620:8;22591:38;;;;;;:::i;:::-;;;;;;;;22466:171:::0;:::o;16799:118::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16866:4:::1;16852:11;;:18;;;;;;;;;;;;;;;;;;16894:15;16881:10;:28;;;;16799:118::o:0;14435:94::-;;;;;;;;;;;;;:::o;22196:162::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22290:60:::1;22334:5;22290:25;22302:12;22290:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;22275:12;:75;;;;22196:162:::0;:::o;17686:143::-;17767:7;17794:11;:18;17806:5;17794:18;;;;;;;;;;;;;;;:27;17813:7;17794:27;;;;;;;;;;;;;;;;17787:34;;17686:143;;;;:::o;22366:92::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22443:7:::1;;22428:12;:22;;;;22366:92::o:0;21844:110::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21941:5:::1;21911:18;:27;21930:7;21911:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;21844:110:::0;:::o;33339:360::-;10156:12;:10;:12::i;:::-;10146:22;;:6;;;;;;;;;;:22;;;10138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33442:42:::1;33431:53;;:7;:53;;;;33409:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;33560:9;:18;33570:7;33560:18;;;;;;;;;;;;;;;;;;;;;;;;;33559:19;33551:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;33645:4;33624:9;:18;33634:7;33624:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;33660:17;33683:7;33660:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33339:360:::0;:::o;15486:38::-;;;;:::o;2767:106::-;2820:7;2851:10;2844:17;;2767:106;:::o;26035:337::-;26145:1;26128:19;;:5;:19;;;;26120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26226:1;26207:21;;:7;:21;;;;26199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26310:6;26280:11;:18;26292:5;26280:18;;;;;;;;;;;;;;;:27;26299:7;26280:27;;;;;;;;;;;;;;;:36;;;;26348:7;26332:32;;26341:5;26332:32;;;26357:6;26332:32;;;;;;:::i;:::-;;;;;;;;26035:337;;;:::o;26380:2169::-;26518:1;26502:18;;:4;:18;;;;26494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26595:1;26581:16;;:2;:16;;;;26573:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26665:1;26656:6;:10;26648:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26732:9;:13;26742:2;26732:13;;;;;;;;;;;;;;;;;;;;;;;;;26731:14;26723:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;26793:9;:21;26803:10;26793:21;;;;;;;;;;;;;;;;;;;;;;;;;26792:22;26784:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;26864:7;:5;:7::i;:::-;26856:15;;:4;:15;;;;:32;;;;;26881:7;:5;:7::i;:::-;26875:13;;:2;:13;;;;26856:32;26853:125;;;26921:12;;26911:6;:22;;26903:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;26853:125;27256:28;27287:24;27305:4;27287:9;:24::i;:::-;27256:55;;27351:12;;27327:20;:36;27324:112;;27412:12;;27389:35;;27324:112;27476:13;27468:21;;:4;:21;;;:55;;;;;27507:15;27493:30;;:2;:30;;;;27468:55;:82;;;;;27528:18;:22;27547:2;27528:22;;;;;;;;;;;;;;;;;;;;;;;;;27527:23;27468:82;27464:337;;;27575:11;;;;;;;;;;;27567:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27678:10;;27659:15;:29;27655:135;;;27725:4;27709:9;:13;27719:2;27709:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;27748:17;27771:2;27748:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27655:135;27464:337;27813:24;27864:22;;27840:20;:46;;27813:73;;27915:19;:40;;;;;27939:16;;;;;;;;;;;27938:17;27915:40;:65;;;;;27967:13;27959:21;;:4;:21;;;;27915:65;:90;;;;;27984:21;;;;;;;;;;;27915:90;27897:243;;;28055:22;;28032:45;;28092:36;28107:20;28092:14;:36::i;:::-;27897:243;28213:12;28228:4;28213:19;;28332:18;:24;28351:4;28332:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;28360:18;:22;28379:2;28360:22;;;;;;;;;;;;;;;;;;;;;;;;;28332:50;28329:96;;;28408:5;28398:15;;28329:96;28503:38;28518:4;28523:2;28526:6;28533:7;28503:14;:38::i;:::-;26483:2066;;;26380:2169;;;:::o;1315:206::-;1401:7;1438:1;1433;:6;;1441:12;1425:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1469:9;1485:1;1481;:5;;;;:::i;:::-;1469:17;;1508:1;1501:8;;;1315:206;;;;;:::o;24096:163::-;24137:7;24158:15;24175;24194:19;:17;:19::i;:::-;24157:56;;;;24231:20;24243:7;24231;:11;;:20;;;;:::i;:::-;24224:27;;;;24096:163;:::o;1819:140::-;1877:7;1908:39;1912:1;1915;1908:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1901:46;;1819:140;;;;:::o;952:195::-;1010:7;1034:9;1050:1;1046;:5;;;;:::i;:::-;1034:17;;1079:1;1074;:6;;1066:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1134:1;1127:8;;;952:195;;;;:::o;22894:419::-;22953:7;22962;22971;22980;22989;22998;23019:23;23044:12;23058:18;23080:20;23092:7;23080:11;:20::i;:::-;23018:82;;;;;;23112:15;23129:23;23154:12;23170:50;23182:7;23191:4;23197:10;23209;:8;:10::i;:::-;23170:11;:50::i;:::-;23111:109;;;;;;23239:7;23248:15;23265:4;23271:15;23288:4;23294:10;23231:74;;;;;;;;;;;;;;;;;;22894:419;;;;;;;:::o;1159:144::-;1217:7;1248:43;1252:1;1255;1248:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1241:50;;1159:144;;;;:::o;1533:274::-;1591:7;1624:1;1619;:6;1615:55;;;1653:1;1646:8;;;;1615:55;1684:9;1700:1;1696;:5;;;;:::i;:::-;1684:17;;1733:1;1728;1724;:5;;;;:::i;:::-;:10;1716:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1794:1;1787:8;;;1533:274;;;;;:::o;28557:1063::-;16005:4;15986:16;;:23;;;;;;;;;;;;;;;;;;28652:29:::1;28684:20;28652:52;;28982:22;29007:21;28982:46;;29073:39;29090:21;29073:16;:39::i;:::-;29169:18;29190:41;29216:14;29190:21;:25;;:41;;;;:::i;:::-;29169:62;;29249:49;29264:21;29287:10;29249:49;;;;;;;:::i;:::-;;;;;;;;29394:30;29427:10;29394:43;;29503:17;;;;;;;;;;;:26;;:50;29530:22;29503:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;29569:43;29589:22;29569:43;;;;;;:::i;:::-;;;;;;;;28631:989;;;;16051:5:::0;16032:16;;:24;;;;;;;;;;;;;;;;;;28557:1063;:::o;30298:1248::-;30409:7;30405:398;;30431:14;:12;:14::i;:::-;30405:398;;;30479:13;30466:26;;:9;:26;;;30463:340;;;30509:21;30523:6;30509:13;:21::i;:::-;30545:27;30557:6;30565;30545:11;:27::i;:::-;30651:15;30629:11;:19;30641:6;30629:19;;;;;;;;;;;;;;;:37;;;;30463:340;;;30706:13;30696:23;;:6;:23;;;:52;;;;;30747:1;30723:20;30733:9;30723;:20::i;:::-;:25;30696:52;30693:110;;;30788:15;30763:11;:22;30775:9;30763:22;;;;;;;;;;;;;;;:40;;;;30693:110;30463:340;30405:398;30820:11;:19;30832:6;30820:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;30844:11;:22;30856:9;30844:22;;;;;;;;;;;;;;;;;;;;;;;;;30843:23;30820:46;30816:597;;;30883:48;30905:6;30913:9;30924:6;30883:21;:48::i;:::-;30816:597;;;30954:11;:19;30966:6;30954:19;;;;;;;;;;;;;;;;;;;;;;;;;30953:20;:46;;;;;30977:11;:22;30989:9;30977:22;;;;;;;;;;;;;;;;;;;;;;;;;30953:46;30949:464;;;31016:46;31036:6;31044:9;31055:6;31016:19;:46::i;:::-;30949:464;;;31085:11;:19;31097:6;31085:19;;;;;;;;;;;;;;;;;;;;;;;;;31084:20;:47;;;;;31109:11;:22;31121:9;31109:22;;;;;;;;;;;;;;;;;;;;;;;;;31108:23;31084:47;31080:333;;;31148:44;31166:6;31174:9;31185:6;31148:17;:44::i;:::-;31080:333;;;31214:11;:19;31226:6;31214:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31237:11;:22;31249:9;31237:22;;;;;;;;;;;;;;;;;;;;;;;;;31214:45;31210:203;;;31276:48;31298:6;31306:9;31317:6;31276:21;:48::i;:::-;31210:203;;;31357:44;31375:6;31383:9;31394:6;31357:17;:44::i;:::-;31210:203;31080:333;30949:464;30816:597;31441:13;31428:26;;:9;:26;;;31425:59;;;31469:15;:13;:15::i;:::-;31425:59;31501:7;31497:41;;31523:15;:13;:15::i;:::-;31497:41;30298:1248;;;;:::o;24267:555::-;24317:7;24326;24346:15;24364:7;;24346:25;;24382:15;24400:7;;24382:25;;24423:9;24418:289;24442:9;:16;;;;24438:1;:20;24418:289;;;24508:7;24484;:21;24492:9;24502:1;24492:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24484:21;;;;;;;;;;;;;;;;:31;:66;;;;24543:7;24519;:21;24527:9;24537:1;24527:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24519:21;;;;;;;;;;;;;;;;:31;24484:66;24480:97;;;24560:7;;24569;;24552:25;;;;;;;;;24480:97;24602:34;24614:7;:21;24622:9;24632:1;24622:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24614:21;;;;;;;;;;;;;;;;24602:7;:11;;:34;;;;:::i;:::-;24592:44;;24661:34;24673:7;:21;24681:9;24691:1;24681:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24673:21;;;;;;;;;;;;;;;;24661:7;:11;;:34;;;;:::i;:::-;24651:44;;24460:3;;;;;:::i;:::-;;;;24418:289;;;;24731:20;24743:7;;24731;;:11;;:20;;;;:::i;:::-;24721:7;:30;24717:61;;;24761:7;;24770;;24753:25;;;;;;;;24717:61;24797:7;24806;24789:25;;;;;;24267:555;;;:::o;1971:205::-;2057:7;2093:1;2089;:5;2096:12;2081:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2124:9;2140:1;2136;:5;;;;:::i;:::-;2124:17;;2163:1;2156:8;;;1971:205;;;;;:::o;23321:330::-;23381:7;23390;23399;23419:12;23434:24;23450:7;23434:15;:24::i;:::-;23419:39;;23469:18;23490:30;23512:7;23490:21;:30::i;:::-;23469:51;;23531:23;23557:33;23579:10;23557:17;23569:4;23557:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;23531:59;;23609:15;23626:4;23632:10;23601:42;;;;;;;;;23321:330;;;;;:::o;23659:429::-;23774:7;23783;23792;23812:15;23830:24;23842:11;23830:7;:11;;:24;;;;:::i;:::-;23812:42;;23865:12;23880:21;23889:11;23880:4;:8;;:21;;;;:::i;:::-;23865:36;;23912:18;23933:27;23948:11;23933:10;:14;;:27;;;;:::i;:::-;23912:48;;23971:23;23997:33;24019:10;23997:17;24009:4;23997:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;23971:59;;24049:7;24058:15;24075:4;24041:39;;;;;;;;;;23659:429;;;;;;;;:::o;29628:589::-;29754:21;29792:1;29778:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29754:40;;29823:4;29805;29810:1;29805:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29849:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29839:4;29844:1;29839:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29884:62;29901:4;29916:15;29934:11;29884:8;:62::i;:::-;29985:15;:66;;;30066:11;30092:1;30136:4;30163;30183:15;29985:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29683:534;29628:589;:::o;25529:234::-;25586:1;25575:7;;:12;:34;;;;;25608:1;25591:13;;:18;25575:34;25572:46;;;25611:7;;25572:46;25648:7;;25630:15;:25;;;;25690:13;;25666:21;:37;;;;25726:1;25716:7;:11;;;;25754:1;25738:13;:17;;;;25529:234;:::o;34774:424::-;34835:20;34876:11;:19;34888:6;34876:19;;;;;;;;;;;;;;;;34858:15;:37;;;;:::i;:::-;34835:60;;34927:7;34912:12;:22;34908:281;;;34961:18;;34951:7;:28;;;;34908:281;;;35025:7;35010:12;:22;35006:183;;;35059:18;;35049:7;:28;;;;35006:183;;;35123:8;35108:12;:23;35104:85;;;35158:19;;35148:7;:29;;;;35104:85;35006:183;34908:281;34822:376;34774:424;:::o;34577:189::-;34699:3;34683:13;;34663:17;34673:6;34663:9;:17::i;:::-;:33;;;;:::i;:::-;:39;;;;:::i;:::-;34654:6;:48;34650:109;;;34729:18;;34719:7;:28;;;;34650:109;34577:189;;:::o;32647:563::-;32750:15;32767:23;32792:12;32806:23;32831:12;32845:18;32867:19;32878:7;32867:10;:19::i;:::-;32749:137;;;;;;;;;;;;32915:28;32935:7;32915;:15;32923:6;32915:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32897:7;:15;32905:6;32897:15;;;;;;;;;;;;;;;:46;;;;32972:28;32992:7;32972;:15;32980:6;32972:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32954:7;:15;32962:6;32954:15;;;;;;;;;;;;;;;:46;;;;33032:39;33055:15;33032:7;:18;33040:9;33032:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33011:7;:18;33019:9;33011:18;;;;;;;;;;;;;;;:60;;;;33082:26;33097:10;33082:14;:26::i;:::-;33119:23;33131:4;33137;33119:11;:23::i;:::-;33175:9;33158:44;;33167:6;33158:44;;;33186:15;33158:44;;;;;;:::i;:::-;;;;;;;;32738:472;;;;;;32647:563;;;:::o;32064:575::-;32165:15;32182:23;32207:12;32221:23;32246:12;32260:18;32282:19;32293:7;32282:10;:19::i;:::-;32164:137;;;;;;;;;;;;32330:28;32350:7;32330;:15;32338:6;32330:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32312:7;:15;32320:6;32312:15;;;;;;;;;;;;;;;:46;;;;32390:39;32413:15;32390:7;:18;32398:9;32390:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32369:7;:18;32377:9;32369:18;;;;;;;;;;;;;;;:60;;;;32461:39;32484:15;32461:7;:18;32469:9;32461:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32440:7;:18;32448:9;32440:18;;;;;;;;;;;;;;;:60;;;;32511:26;32526:10;32511:14;:26::i;:::-;32548:23;32560:4;32566;32548:11;:23::i;:::-;32604:9;32587:44;;32596:6;32587:44;;;32615:15;32587:44;;;;;;:::i;:::-;;;;;;;;32153:486;;;;;;32064:575;;;:::o;31554:502::-;31653:15;31670:23;31695:12;31709:23;31734:12;31748:18;31770:19;31781:7;31770:10;:19::i;:::-;31652:137;;;;;;;;;;;;31818:28;31838:7;31818;:15;31826:6;31818:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31800:7;:15;31808:6;31800:15;;;;;;;;;;;;;;;:46;;;;31878:39;31901:15;31878:7;:18;31886:9;31878:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31857:7;:18;31865:9;31857:18;;;;;;;;;;;;;;;:60;;;;31928:26;31943:10;31928:14;:26::i;:::-;31965:23;31977:4;31983;31965:11;:23::i;:::-;32021:9;32004:44;;32013:6;32004:44;;;32032:15;32004:44;;;;;;:::i;:::-;;;;;;;;31641:415;;;;;;31554:502;;;:::o;21083:634::-;21186:15;21203:23;21228:12;21242:23;21267:12;21281:18;21303:19;21314:7;21303:10;:19::i;:::-;21185:137;;;;;;;;;;;;21351:28;21371:7;21351;:15;21359:6;21351:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21333:7;:15;21341:6;21333:15;;;;;;;;;;;;;;;:46;;;;21408:28;21428:7;21408;:15;21416:6;21408:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21390:7;:15;21398:6;21390:15;;;;;;;;;;;;;;;:46;;;;21468:39;21491:15;21468:7;:18;21476:9;21468:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21447:7;:18;21455:9;21447:18;;;;;;;;;;;;;;;:60;;;;21539:39;21562:15;21539:7;:18;21547:9;21539:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21518:7;:18;21526:9;21518:18;;;;;;;;;;;;;;;:60;;;;21589:26;21604:10;21589:14;:26::i;:::-;21626:23;21638:4;21644;21626:11;:23::i;:::-;21682:9;21665:44;;21674:6;21665:44;;;21693:15;21665:44;;;;;;:::i;:::-;;;;;;;;21174:543;;;;;;21083:634;;;:::o;25771:125::-;25825:15;;25815:7;:25;;;;25867:21;;25851:13;:37;;;;25771:125::o;25193:154::-;25257:7;25284:55;25323:5;25284:20;25296:7;;25284;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;25277:62;;25193:154;;;:::o;25355:166::-;25425:7;25452:61;25497:5;25452:26;25464:13;;25452:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;25445:68;;25355:166;;;:::o;24830:355::-;24893:19;24916:10;:8;:10::i;:::-;24893:33;;24937:18;24958:27;24973:11;24958:10;:14;;:27;;;;:::i;:::-;24937:48;;25021:38;25048:10;25021:7;:22;25037:4;25021:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;24996:7;:22;25012:4;24996:22;;;;;;;;;;;;;;;:63;;;;25073:11;:26;25093:4;25073:26;;;;;;;;;;;;;;;;;;;;;;;;;25070:107;;;25139:38;25166:10;25139:7;:22;25155:4;25139:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;25114:7;:22;25130:4;25114:22;;;;;;;;;;;;;;;:63;;;;25070:107;24882:303;;24830:355;:::o;22739:147::-;22817:17;22829:4;22817:7;;:11;;:17;;;;:::i;:::-;22807:7;:27;;;;22858:20;22873:4;22858:10;;:14;;:20;;;;:::i;:::-;22845:10;:33;;;;22739:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:329::-;644:6;693:2;681:9;672:7;668:23;664:32;661:119;;;699:79;;:::i;:::-;661:119;819:1;844:53;889:7;880:6;869:9;865:22;844:53;:::i;:::-;834:63;;790:117;585:329;;;;:::o;920:351::-;990:6;1039:2;1027:9;1018:7;1014:23;1010:32;1007:119;;;1045:79;;:::i;:::-;1007:119;1165:1;1190:64;1246:7;1237:6;1226:9;1222:22;1190:64;:::i;:::-;1180:74;;1136:128;920:351;;;;:::o;1277:474::-;1345:6;1353;1402:2;1390:9;1381:7;1377:23;1373:32;1370:119;;;1408:79;;:::i;:::-;1370:119;1528:1;1553:53;1598:7;1589:6;1578:9;1574:22;1553:53;:::i;:::-;1543:63;;1499:117;1655:2;1681:53;1726:7;1717:6;1706:9;1702:22;1681:53;:::i;:::-;1671:63;;1626:118;1277:474;;;;;:::o;1757:619::-;1834:6;1842;1850;1899:2;1887:9;1878:7;1874:23;1870:32;1867:119;;;1905:79;;:::i;:::-;1867:119;2025:1;2050:53;2095:7;2086:6;2075:9;2071:22;2050:53;:::i;:::-;2040:63;;1996:117;2152:2;2178:53;2223:7;2214:6;2203:9;2199:22;2178:53;:::i;:::-;2168:63;;2123:118;2280:2;2306:53;2351:7;2342:6;2331:9;2327:22;2306:53;:::i;:::-;2296:63;;2251:118;1757:619;;;;;:::o;2382:474::-;2450:6;2458;2507:2;2495:9;2486:7;2482:23;2478:32;2475:119;;;2513:79;;:::i;:::-;2475:119;2633:1;2658:53;2703:7;2694:6;2683:9;2679:22;2658:53;:::i;:::-;2648:63;;2604:117;2760:2;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2731:118;2382:474;;;;;:::o;2862:323::-;2918:6;2967:2;2955:9;2946:7;2942:23;2938:32;2935:119;;;2973:79;;:::i;:::-;2935:119;3093:1;3118:50;3160:7;3151:6;3140:9;3136:22;3118:50;:::i;:::-;3108:60;;3064:114;2862:323;;;;:::o;3191:329::-;3250:6;3299:2;3287:9;3278:7;3274:23;3270:32;3267:119;;;3305:79;;:::i;:::-;3267:119;3425:1;3450:53;3495:7;3486:6;3475:9;3471:22;3450:53;:::i;:::-;3440:63;;3396:117;3191:329;;;;:::o;3526:468::-;3591:6;3599;3648:2;3636:9;3627:7;3623:23;3619:32;3616:119;;;3654:79;;:::i;:::-;3616:119;3774:1;3799:53;3844:7;3835:6;3824:9;3820:22;3799:53;:::i;:::-;3789:63;;3745:117;3901:2;3927:50;3969:7;3960:6;3949:9;3945:22;3927:50;:::i;:::-;3917:60;;3872:115;3526:468;;;;;:::o;4000:619::-;4077:6;4085;4093;4142:2;4130:9;4121:7;4117:23;4113:32;4110:119;;;4148:79;;:::i;:::-;4110:119;4268:1;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4239:117;4395:2;4421:53;4466:7;4457:6;4446:9;4442:22;4421:53;:::i;:::-;4411:63;;4366:118;4523:2;4549:53;4594:7;4585:6;4574:9;4570:22;4549:53;:::i;:::-;4539:63;;4494:118;4000:619;;;;;:::o;4625:179::-;4694:10;4715:46;4757:3;4749:6;4715:46;:::i;:::-;4793:4;4788:3;4784:14;4770:28;;4625:179;;;;:::o;4810:142::-;4913:32;4939:5;4913:32;:::i;:::-;4908:3;4901:45;4810:142;;:::o;4958:108::-;5035:24;5053:5;5035:24;:::i;:::-;5030:3;5023:37;4958:108;;:::o;5072:118::-;5159:24;5177:5;5159:24;:::i;:::-;5154:3;5147:37;5072:118;;:::o;5226:732::-;5345:3;5374:54;5422:5;5374:54;:::i;:::-;5444:86;5523:6;5518:3;5444:86;:::i;:::-;5437:93;;5554:56;5604:5;5554:56;:::i;:::-;5633:7;5664:1;5649:284;5674:6;5671:1;5668:13;5649:284;;;5750:6;5744:13;5777:63;5836:3;5821:13;5777:63;:::i;:::-;5770:70;;5863:60;5916:6;5863:60;:::i;:::-;5853:70;;5709:224;5696:1;5693;5689:9;5684:14;;5649:284;;;5653:14;5949:3;5942:10;;5350:608;;;5226:732;;;;:::o;5964:109::-;6045:21;6060:5;6045:21;:::i;:::-;6040:3;6033:34;5964:109;;:::o;6079:183::-;6192:63;6249:5;6192:63;:::i;:::-;6187:3;6180:76;6079:183;;:::o;6268:147::-;6363:45;6402:5;6363:45;:::i;:::-;6358:3;6351:58;6268:147;;:::o;6421:364::-;6509:3;6537:39;6570:5;6537:39;:::i;:::-;6592:71;6656:6;6651:3;6592:71;:::i;:::-;6585:78;;6672:52;6717:6;6712:3;6705:4;6698:5;6694:16;6672:52;:::i;:::-;6749:29;6771:6;6749:29;:::i;:::-;6744:3;6740:39;6733:46;;6513:272;6421:364;;;;:::o;6791:366::-;6933:3;6954:67;7018:2;7013:3;6954:67;:::i;:::-;6947:74;;7030:93;7119:3;7030:93;:::i;:::-;7148:2;7143:3;7139:12;7132:19;;6791:366;;;:::o;7163:::-;7305:3;7326:67;7390:2;7385:3;7326:67;:::i;:::-;7319:74;;7402:93;7491:3;7402:93;:::i;:::-;7520:2;7515:3;7511:12;7504:19;;7163:366;;;:::o;7535:::-;7677:3;7698:67;7762:2;7757:3;7698:67;:::i;:::-;7691:74;;7774:93;7863:3;7774:93;:::i;:::-;7892:2;7887:3;7883:12;7876:19;;7535:366;;;:::o;7907:::-;8049:3;8070:67;8134:2;8129:3;8070:67;:::i;:::-;8063:74;;8146:93;8235:3;8146:93;:::i;:::-;8264:2;8259:3;8255:12;8248:19;;7907:366;;;:::o;8279:::-;8421:3;8442:67;8506:2;8501:3;8442:67;:::i;:::-;8435:74;;8518:93;8607:3;8518:93;:::i;:::-;8636:2;8631:3;8627:12;8620:19;;8279:366;;;:::o;8651:::-;8793:3;8814:67;8878:2;8873:3;8814:67;:::i;:::-;8807:74;;8890:93;8979:3;8890:93;:::i;:::-;9008:2;9003:3;8999:12;8992:19;;8651:366;;;:::o;9023:::-;9165:3;9186:67;9250:2;9245:3;9186:67;:::i;:::-;9179:74;;9262:93;9351:3;9262:93;:::i;:::-;9380:2;9375:3;9371:12;9364:19;;9023:366;;;:::o;9395:::-;9537:3;9558:67;9622:2;9617:3;9558:67;:::i;:::-;9551:74;;9634:93;9723:3;9634:93;:::i;:::-;9752:2;9747:3;9743:12;9736:19;;9395:366;;;:::o;9767:::-;9909:3;9930:67;9994:2;9989:3;9930:67;:::i;:::-;9923:74;;10006:93;10095:3;10006:93;:::i;:::-;10124:2;10119:3;10115:12;10108:19;;9767:366;;;:::o;10139:::-;10281:3;10302:67;10366:2;10361:3;10302:67;:::i;:::-;10295:74;;10378:93;10467:3;10378:93;:::i;:::-;10496:2;10491:3;10487:12;10480:19;;10139:366;;;:::o;10511:::-;10653:3;10674:67;10738:2;10733:3;10674:67;:::i;:::-;10667:74;;10750:93;10839:3;10750:93;:::i;:::-;10868:2;10863:3;10859:12;10852:19;;10511:366;;;:::o;10883:::-;11025:3;11046:67;11110:2;11105:3;11046:67;:::i;:::-;11039:74;;11122:93;11211:3;11122:93;:::i;:::-;11240:2;11235:3;11231:12;11224:19;;10883:366;;;:::o;11255:::-;11397:3;11418:67;11482:2;11477:3;11418:67;:::i;:::-;11411:74;;11494:93;11583:3;11494:93;:::i;:::-;11612:2;11607:3;11603:12;11596:19;;11255:366;;;:::o;11627:::-;11769:3;11790:67;11854:2;11849:3;11790:67;:::i;:::-;11783:74;;11866:93;11955:3;11866:93;:::i;:::-;11984:2;11979:3;11975:12;11968:19;;11627:366;;;:::o;11999:::-;12141:3;12162:67;12226:2;12221:3;12162:67;:::i;:::-;12155:74;;12238:93;12327:3;12238:93;:::i;:::-;12356:2;12351:3;12347:12;12340:19;;11999:366;;;:::o;12371:::-;12513:3;12534:67;12598:2;12593:3;12534:67;:::i;:::-;12527:74;;12610:93;12699:3;12610:93;:::i;:::-;12728:2;12723:3;12719:12;12712:19;;12371:366;;;:::o;12743:::-;12885:3;12906:67;12970:2;12965:3;12906:67;:::i;:::-;12899:74;;12982:93;13071:3;12982:93;:::i;:::-;13100:2;13095:3;13091:12;13084:19;;12743:366;;;:::o;13115:::-;13257:3;13278:67;13342:2;13337:3;13278:67;:::i;:::-;13271:74;;13354:93;13443:3;13354:93;:::i;:::-;13472:2;13467:3;13463:12;13456:19;;13115:366;;;:::o;13487:118::-;13574:24;13592:5;13574:24;:::i;:::-;13569:3;13562:37;13487:118;;:::o;13611:112::-;13694:22;13710:5;13694:22;:::i;:::-;13689:3;13682:35;13611:112;;:::o;13729:222::-;13822:4;13860:2;13849:9;13845:18;13837:26;;13873:71;13941:1;13930:9;13926:17;13917:6;13873:71;:::i;:::-;13729:222;;;;:::o;13957:254::-;14066:4;14104:2;14093:9;14089:18;14081:26;;14117:87;14201:1;14190:9;14186:17;14177:6;14117:87;:::i;:::-;13957:254;;;;:::o;14217:210::-;14304:4;14342:2;14331:9;14327:18;14319:26;;14355:65;14417:1;14406:9;14402:17;14393:6;14355:65;:::i;:::-;14217:210;;;;:::o;14433:274::-;14552:4;14590:2;14579:9;14575:18;14567:26;;14603:97;14697:1;14686:9;14682:17;14673:6;14603:97;:::i;:::-;14433:274;;;;:::o;14713:313::-;14826:4;14864:2;14853:9;14849:18;14841:26;;14913:9;14907:4;14903:20;14899:1;14888:9;14884:17;14877:47;14941:78;15014:4;15005:6;14941:78;:::i;:::-;14933:86;;14713:313;;;;:::o;15032:419::-;15198:4;15236:2;15225:9;15221:18;15213:26;;15285:9;15279:4;15275:20;15271:1;15260:9;15256:17;15249:47;15313:131;15439:4;15313:131;:::i;:::-;15305:139;;15032:419;;;:::o;15457:::-;15623:4;15661:2;15650:9;15646:18;15638:26;;15710:9;15704:4;15700:20;15696:1;15685:9;15681:17;15674:47;15738:131;15864:4;15738:131;:::i;:::-;15730:139;;15457:419;;;:::o;15882:::-;16048:4;16086:2;16075:9;16071:18;16063:26;;16135:9;16129:4;16125:20;16121:1;16110:9;16106:17;16099:47;16163:131;16289:4;16163:131;:::i;:::-;16155:139;;15882:419;;;:::o;16307:::-;16473:4;16511:2;16500:9;16496:18;16488:26;;16560:9;16554:4;16550:20;16546:1;16535:9;16531:17;16524:47;16588:131;16714:4;16588:131;:::i;:::-;16580:139;;16307:419;;;:::o;16732:::-;16898:4;16936:2;16925:9;16921:18;16913:26;;16985:9;16979:4;16975:20;16971:1;16960:9;16956:17;16949:47;17013:131;17139:4;17013:131;:::i;:::-;17005:139;;16732:419;;;:::o;17157:::-;17323:4;17361:2;17350:9;17346:18;17338:26;;17410:9;17404:4;17400:20;17396:1;17385:9;17381:17;17374:47;17438:131;17564:4;17438:131;:::i;:::-;17430:139;;17157:419;;;:::o;17582:::-;17748:4;17786:2;17775:9;17771:18;17763:26;;17835:9;17829:4;17825:20;17821:1;17810:9;17806:17;17799:47;17863:131;17989:4;17863:131;:::i;:::-;17855:139;;17582:419;;;:::o;18007:::-;18173:4;18211:2;18200:9;18196:18;18188:26;;18260:9;18254:4;18250:20;18246:1;18235:9;18231:17;18224:47;18288:131;18414:4;18288:131;:::i;:::-;18280:139;;18007:419;;;:::o;18432:::-;18598:4;18636:2;18625:9;18621:18;18613:26;;18685:9;18679:4;18675:20;18671:1;18660:9;18656:17;18649:47;18713:131;18839:4;18713:131;:::i;:::-;18705:139;;18432:419;;;:::o;18857:::-;19023:4;19061:2;19050:9;19046:18;19038:26;;19110:9;19104:4;19100:20;19096:1;19085:9;19081:17;19074:47;19138:131;19264:4;19138:131;:::i;:::-;19130:139;;18857:419;;;:::o;19282:::-;19448:4;19486:2;19475:9;19471:18;19463:26;;19535:9;19529:4;19525:20;19521:1;19510:9;19506:17;19499:47;19563:131;19689:4;19563:131;:::i;:::-;19555:139;;19282:419;;;:::o;19707:::-;19873:4;19911:2;19900:9;19896:18;19888:26;;19960:9;19954:4;19950:20;19946:1;19935:9;19931:17;19924:47;19988:131;20114:4;19988:131;:::i;:::-;19980:139;;19707:419;;;:::o;20132:::-;20298:4;20336:2;20325:9;20321:18;20313:26;;20385:9;20379:4;20375:20;20371:1;20360:9;20356:17;20349:47;20413:131;20539:4;20413:131;:::i;:::-;20405:139;;20132:419;;;:::o;20557:::-;20723:4;20761:2;20750:9;20746:18;20738:26;;20810:9;20804:4;20800:20;20796:1;20785:9;20781:17;20774:47;20838:131;20964:4;20838:131;:::i;:::-;20830:139;;20557:419;;;:::o;20982:::-;21148:4;21186:2;21175:9;21171:18;21163:26;;21235:9;21229:4;21225:20;21221:1;21210:9;21206:17;21199:47;21263:131;21389:4;21263:131;:::i;:::-;21255:139;;20982:419;;;:::o;21407:::-;21573:4;21611:2;21600:9;21596:18;21588:26;;21660:9;21654:4;21650:20;21646:1;21635:9;21631:17;21624:47;21688:131;21814:4;21688:131;:::i;:::-;21680:139;;21407:419;;;:::o;21832:::-;21998:4;22036:2;22025:9;22021:18;22013:26;;22085:9;22079:4;22075:20;22071:1;22060:9;22056:17;22049:47;22113:131;22239:4;22113:131;:::i;:::-;22105:139;;21832:419;;;:::o;22257:::-;22423:4;22461:2;22450:9;22446:18;22438:26;;22510:9;22504:4;22500:20;22496:1;22485:9;22481:17;22474:47;22538:131;22664:4;22538:131;:::i;:::-;22530:139;;22257:419;;;:::o;22682:222::-;22775:4;22813:2;22802:9;22798:18;22790:26;;22826:71;22894:1;22883:9;22879:17;22870:6;22826:71;:::i;:::-;22682:222;;;;:::o;22910:831::-;23173:4;23211:3;23200:9;23196:19;23188:27;;23225:71;23293:1;23282:9;23278:17;23269:6;23225:71;:::i;:::-;23306:80;23382:2;23371:9;23367:18;23358:6;23306:80;:::i;:::-;23433:9;23427:4;23423:20;23418:2;23407:9;23403:18;23396:48;23461:108;23564:4;23555:6;23461:108;:::i;:::-;23453:116;;23579:72;23647:2;23636:9;23632:18;23623:6;23579:72;:::i;:::-;23661:73;23729:3;23718:9;23714:19;23705:6;23661:73;:::i;:::-;22910:831;;;;;;;;:::o;23747:332::-;23868:4;23906:2;23895:9;23891:18;23883:26;;23919:71;23987:1;23976:9;23972:17;23963:6;23919:71;:::i;:::-;24000:72;24068:2;24057:9;24053:18;24044:6;24000:72;:::i;:::-;23747:332;;;;;:::o;24085:214::-;24174:4;24212:2;24201:9;24197:18;24189:26;;24225:67;24289:1;24278:9;24274:17;24265:6;24225:67;:::i;:::-;24085:214;;;;:::o;24386:132::-;24453:4;24476:3;24468:11;;24506:4;24501:3;24497:14;24489:22;;24386:132;;;:::o;24524:114::-;24591:6;24625:5;24619:12;24609:22;;24524:114;;;:::o;24644:99::-;24696:6;24730:5;24724:12;24714:22;;24644:99;;;:::o;24749:113::-;24819:4;24851;24846:3;24842:14;24834:22;;24749:113;;;:::o;24868:184::-;24967:11;25001:6;24996:3;24989:19;25041:4;25036:3;25032:14;25017:29;;24868:184;;;;:::o;25058:169::-;25142:11;25176:6;25171:3;25164:19;25216:4;25211:3;25207:14;25192:29;;25058:169;;;;:::o;25233:305::-;25273:3;25292:20;25310:1;25292:20;:::i;:::-;25287:25;;25326:20;25344:1;25326:20;:::i;:::-;25321:25;;25480:1;25412:66;25408:74;25405:1;25402:81;25399:107;;;25486:18;;:::i;:::-;25399:107;25530:1;25527;25523:9;25516:16;;25233:305;;;;:::o;25544:185::-;25584:1;25601:20;25619:1;25601:20;:::i;:::-;25596:25;;25635:20;25653:1;25635:20;:::i;:::-;25630:25;;25674:1;25664:35;;25679:18;;:::i;:::-;25664:35;25721:1;25718;25714:9;25709:14;;25544:185;;;;:::o;25735:348::-;25775:7;25798:20;25816:1;25798:20;:::i;:::-;25793:25;;25832:20;25850:1;25832:20;:::i;:::-;25827:25;;26020:1;25952:66;25948:74;25945:1;25942:81;25937:1;25930:9;25923:17;25919:105;25916:131;;;26027:18;;:::i;:::-;25916:131;26075:1;26072;26068:9;26057:20;;25735:348;;;;:::o;26089:191::-;26129:4;26149:20;26167:1;26149:20;:::i;:::-;26144:25;;26183:20;26201:1;26183:20;:::i;:::-;26178:25;;26222:1;26219;26216:8;26213:34;;;26227:18;;:::i;:::-;26213:34;26272:1;26269;26265:9;26257:17;;26089:191;;;;:::o;26286:96::-;26323:7;26352:24;26370:5;26352:24;:::i;:::-;26341:35;;26286:96;;;:::o;26388:104::-;26433:7;26462:24;26480:5;26462:24;:::i;:::-;26451:35;;26388:104;;;:::o;26498:90::-;26532:7;26575:5;26568:13;26561:21;26550:32;;26498:90;;;:::o;26594:126::-;26631:7;26671:42;26664:5;26660:54;26649:65;;26594:126;;;:::o;26726:77::-;26763:7;26792:5;26781:16;;26726:77;;;:::o;26809:86::-;26844:7;26884:4;26877:5;26873:16;26862:27;;26809:86;;;:::o;26901:152::-;26977:9;27010:37;27041:5;27010:37;:::i;:::-;26997:50;;26901:152;;;:::o;27059:121::-;27117:9;27150:24;27168:5;27150:24;:::i;:::-;27137:37;;27059:121;;;:::o;27186:126::-;27236:9;27269:37;27300:5;27269:37;:::i;:::-;27256:50;;27186:126;;;:::o;27318:113::-;27368:9;27401:24;27419:5;27401:24;:::i;:::-;27388:37;;27318:113;;;:::o;27437:307::-;27505:1;27515:113;27529:6;27526:1;27523:13;27515:113;;;27614:1;27609:3;27605:11;27599:18;27595:1;27590:3;27586:11;27579:39;27551:2;27548:1;27544:10;27539:15;;27515:113;;;27646:6;27643:1;27640:13;27637:101;;;27726:1;27717:6;27712:3;27708:16;27701:27;27637:101;27486:258;27437:307;;;:::o;27750:320::-;27794:6;27831:1;27825:4;27821:12;27811:22;;27878:1;27872:4;27868:12;27899:18;27889:81;;27955:4;27947:6;27943:17;27933:27;;27889:81;28017:2;28009:6;28006:14;27986:18;27983:38;27980:84;;;28036:18;;:::i;:::-;27980:84;27801:269;27750:320;;;:::o;28076:233::-;28115:3;28138:24;28156:5;28138:24;:::i;:::-;28129:33;;28184:66;28177:5;28174:77;28171:103;;;28254:18;;:::i;:::-;28171:103;28301:1;28294:5;28290:13;28283:20;;28076:233;;;:::o;28315:180::-;28363:77;28360:1;28353:88;28460:4;28457:1;28450:15;28484:4;28481:1;28474:15;28501:180;28549:77;28546:1;28539:88;28646:4;28643:1;28636:15;28670:4;28667:1;28660:15;28687:180;28735:77;28732:1;28725:88;28832:4;28829:1;28822:15;28856:4;28853:1;28846:15;28873:180;28921:77;28918:1;28911:88;29018:4;29015:1;29008:15;29042:4;29039:1;29032:15;29059:180;29107:77;29104:1;29097:88;29204:4;29201:1;29194:15;29228:4;29225:1;29218:15;29245:180;29293:77;29290:1;29283:88;29390:4;29387:1;29380:15;29414:4;29411:1;29404:15;29554:117;29663:1;29660;29653:12;29677:102;29718:6;29769:2;29765:7;29760:2;29753:5;29749:14;29745:28;29735:38;;29677:102;;;:::o;29785:222::-;29925:34;29921:1;29913:6;29909:14;29902:58;29994:5;29989:2;29981:6;29977:15;29970:30;29785:222;:::o;30013:229::-;30153:34;30149:1;30141:6;30137:14;30130:58;30222:12;30217:2;30209:6;30205:15;30198:37;30013:229;:::o;30248:221::-;30388:34;30384:1;30376:6;30372:14;30365:58;30457:4;30452:2;30444:6;30440:15;30433:29;30248:221;:::o;30475:177::-;30615:29;30611:1;30603:6;30599:14;30592:53;30475:177;:::o;30658:::-;30798:29;30794:1;30786:6;30782:14;30775:53;30658:177;:::o;30841:180::-;30981:32;30977:1;30969:6;30965:14;30958:56;30841:180;:::o;31027:181::-;31167:33;31163:1;31155:6;31151:14;31144:57;31027:181;:::o;31214:227::-;31354:34;31350:1;31342:6;31338:14;31331:58;31423:10;31418:2;31410:6;31406:15;31399:35;31214:227;:::o;31447:220::-;31587:34;31583:1;31575:6;31571:14;31564:58;31656:3;31651:2;31643:6;31639:15;31632:28;31447:220;:::o;31673:182::-;31813:34;31809:1;31801:6;31797:14;31790:58;31673:182;:::o;31861:228::-;32001:34;31997:1;31989:6;31985:14;31978:58;32070:11;32065:2;32057:6;32053:15;32046:36;31861:228;:::o;32095:176::-;32235:28;32231:1;32223:6;32219:14;32212:52;32095:176;:::o;32277:178::-;32417:30;32413:1;32405:6;32401:14;32394:54;32277:178;:::o;32461:224::-;32601:34;32597:1;32589:6;32585:14;32578:58;32670:7;32665:2;32657:6;32653:15;32646:32;32461:224;:::o;32691:223::-;32831:34;32827:1;32819:6;32815:14;32808:58;32900:6;32895:2;32887:6;32883:15;32876:31;32691:223;:::o;32920:174::-;33060:26;33056:1;33048:6;33044:14;33037:50;32920:174;:::o;33100:231::-;33240:34;33236:1;33228:6;33224:14;33217:58;33309:14;33304:2;33296:6;33292:15;33285:39;33100:231;:::o;33337:173::-;33477:25;33473:1;33465:6;33461:14;33454:49;33337:173;:::o;33516:122::-;33589:24;33607:5;33589:24;:::i;:::-;33582:5;33579:35;33569:63;;33628:1;33625;33618:12;33569:63;33516:122;:::o;33644:116::-;33714:21;33729:5;33714:21;:::i;:::-;33707:5;33704:32;33694:60;;33750:1;33747;33740:12;33694:60;33644:116;:::o;33766:122::-;33839:24;33857:5;33839:24;:::i;:::-;33832:5;33829:35;33819:63;;33878:1;33875;33868:12;33819:63;33766:122;:::o
Swarm Source
ipfs://5db31bf8f99c0af638822b0ec0f294e6f5cd1903d6dce9a35e64ee7e694b78de
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.