Overview
ETH Balance
0.110436576173158016 ETH
Eth Value
$377.23 (@ $3,415.83/ETH)Latest 25 from a total of 217 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20895193 | 53 days ago | IN | 0 ETH | 0.00029622 | ||||
Transfer | 20895146 | 53 days ago | IN | 0 ETH | 0.00040595 | ||||
Transfer | 20766669 | 71 days ago | IN | 0 ETH | 0.00024965 | ||||
Approve | 20601106 | 94 days ago | IN | 0 ETH | 0.00008485 | ||||
Transfer | 20464297 | 113 days ago | IN | 0 ETH | 0.00094399 | ||||
Approve | 20281412 | 138 days ago | IN | 0 ETH | 0.00009192 | ||||
Approve | 20190157 | 151 days ago | IN | 0 ETH | 0.00024027 | ||||
Approve | 20182595 | 152 days ago | IN | 0 ETH | 0.00029959 | ||||
Approve | 20169151 | 154 days ago | IN | 0 ETH | 0.00043213 | ||||
Approve | 20166346 | 154 days ago | IN | 0 ETH | 0.00019386 | ||||
Transfer | 20152100 | 156 days ago | IN | 0 ETH | 0.00017943 | ||||
Approve | 20124134 | 160 days ago | IN | 0 ETH | 0.0002383 | ||||
Approve | 20085031 | 166 days ago | IN | 0 ETH | 0.00060234 | ||||
Approve | 20070564 | 168 days ago | IN | 0 ETH | 0.00053048 | ||||
Approve | 20067934 | 168 days ago | IN | 0 ETH | 0.00061809 | ||||
Transfer | 20067531 | 168 days ago | IN | 0 ETH | 0.00120437 | ||||
Approve | 20039312 | 172 days ago | IN | 0 ETH | 0.00027004 | ||||
Transfer | 19995896 | 178 days ago | IN | 0 ETH | 0.00042361 | ||||
Transfer | 19994869 | 178 days ago | IN | 0 ETH | 0.00042163 | ||||
Transfer | 19994671 | 178 days ago | IN | 0 ETH | 0.0004829 | ||||
Transfer | 19994640 | 178 days ago | IN | 0 ETH | 0.00064132 | ||||
Approve | 19974820 | 181 days ago | IN | 0 ETH | 0.00048453 | ||||
Approve | 19958422 | 184 days ago | IN | 0 ETH | 0.00017219 | ||||
Approve | 19879130 | 195 days ago | IN | 0 ETH | 0.00015917 | ||||
Approve | 19875589 | 195 days ago | IN | 0 ETH | 0.00048615 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18640997 | 368 days ago | 0.14 ETH |
Loading...
Loading
Contract Name:
GOOGLEAI
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-15 */ /* ______ __ ______ ______ / \ / | / \ / | /$$$$$$ | ______ ______ ______ $$ | ______ /$$$$$$ |$$$$$$/ $$ | _$$/ / \ / \ / \ $$ | / \ $$ |__$$ | $$ | $$ |/ |/$$$$$$ |/$$$$$$ |/$$$$$$ |$$ |/$$$$$$ | $$ $$ | $$ | $$ |$$$$ |$$ | $$ |$$ | $$ |$$ | $$ |$$ |$$ $$ | $$$$$$$$ | $$ | $$ \__$$ |$$ \__$$ |$$ \__$$ |$$ \__$$ |$$ |$$$$$$$$/ $$ | $$ | _$$ |_ $$ $$/ $$ $$/ $$ $$/ $$ $$ |$$ |$$ | $$ | $$ |/ $$ | $$$$$$/ $$$$$$/ $$$$$$/ $$$$$$$ |$$/ $$$$$$$/ $$/ $$/ $$$$$$/ / \__$$ | $$ $$/ $$$$$$/ */ //SPDX-License-Identifier: MIT Licensed pragma solidity ^0.8.4; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}( data ); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = 0x5fB5EfA7B4eA98E79F07594e6AB51d778a4e4F78; emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract GOOGLEAI 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 _isExmpt; mapping(address => bool) private _isRewardExmpt; bool public trading; // once enable can't be disable afterwards address[] private _excluded; address private _developmentWalletAddress = 0xc78BA80B6ad9c0d52dC59c357aF302e256708eFA; address private LiquidityWallet = 0x10f91a00370e253BE8a20a654c2EdfA15D8225F0; address private _BurnWallet = 0x0000000000000000000000000000000000000000; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "GOOGLEAI"; string private _symbol = "GOOGLEAI"; uint8 private _decimals = 18; uint256 public _taxFee = 9; uint256 private _previousTaxFee = _taxFee; uint256 public _developmentFee = 70; uint256 private _previousDevelopmentFee = _developmentFee; uint256 public _BurningFee = 1; uint256 private _previousBurningFee = _BurningFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; constructor() { _rOwned[owner()] = _rTotal; _isExmpt[owner()] = true; _isExmpt[address(this)] = true; _isExmpt[_developmentWalletAddress] = true; _isExmpt[LiquidityWallet] = true; emit Transfer(address(0), owner(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isRewardExmpt[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 _isRewardExmpt[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isRewardExmpt[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 _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tDevelopment ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeBurning(tBurn); _takeDevelopment(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256, uint256 ) { ( uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tDevelopment ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tBurn, tDevelopment, _getRate() ); return ( rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tDevelopment ); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tBurn = calculateBurningFee(tAmount); uint256 tDevelopment = calculateDevelopmentFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn).sub( tDevelopment ); return (tTransferAmount, tFee, tBurn, tDevelopment); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tDevelopment, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rBurn = tBurn.mul(currentRate); uint256 rDevelopment = tDevelopment.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub( rDevelopment ); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if ( _rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply ) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeBurning(uint256 tBurn) private { uint256 currentRate = _getRate(); uint256 rBurn = tBurn.mul(currentRate); _rOwned[_BurnWallet] = _rOwned[_BurnWallet].add(rBurn); if (_isRewardExmpt[_BurnWallet]) _tOwned[_BurnWallet] = _tOwned[_BurnWallet].add(tBurn); } function _takeDevelopment(uint256 tDevelopment) private { uint256 currentRate = _getRate(); uint256 rDevelopment = tDevelopment.mul(currentRate); _rOwned[_developmentWalletAddress] = _rOwned[_developmentWalletAddress] .add(rDevelopment); if (_isRewardExmpt[_developmentWalletAddress]) _tOwned[_developmentWalletAddress] = _tOwned[ _developmentWalletAddress ].add(tDevelopment); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**3); } function calculateDevelopmentFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_developmentFee).div(10**3); } function calculateBurningFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_BurningFee).div(10**3); } function removeAllFee() private { if (_taxFee == 0 && _BurningFee == 0) return; _previousTaxFee = _taxFee; _previousDevelopmentFee = _developmentFee; _previousBurningFee = _BurningFee; _taxFee = 0; _developmentFee = 0; _BurningFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _developmentFee = _previousDevelopmentFee; _BurningFee = _previousBurningFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExmpt[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(amount > 0, "Transfer amount must be greater than zero"); if (!_isExmpt[from] && !_isExmpt[to]) { require(trading, "Trading not enabled yet"); } bool takeFee = true; if (_isExmpt[from] || _isExmpt[to]) { takeFee = false; } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); if (_isRewardExmpt[sender] && !_isRewardExmpt[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isRewardExmpt[sender] && _isRewardExmpt[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isRewardExmpt[sender] && !_isRewardExmpt[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isRewardExmpt[sender] && _isRewardExmpt[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tDevelopment ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeBurning(tBurn); _takeDevelopment(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tDevelopment ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeBurning(tBurn); _takeDevelopment(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tDevelopment ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeBurning(tBurn); _takeDevelopment(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function enableTrading() external payable onlyOwner { require(!trading, "Already enabled"); uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), balanceOf(address(this)), 0, 0, LiquidityWallet, block.timestamp ); IERC20(uniswapV2Pair).approve( address(uniswapV2Router), type(uint256).max ); trading = true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_BurningFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600880546001600160a01b031990811673c78ba80b6ad9c0d52dc59c357af302e256708efa179091556009805482167310f91a00370e253be8a20a654c2edfa15d8225f0179055600a805490911690556c0c9f2c9cd04674edea40000000600b81905562000074905f196200029b565b62000081905f19620002bb565b600c55604080518082019091526008815267474f4f474c45414960c01b6020820152600e90620000b290826200037f565b50604080518082019091526008815267474f4f474c45414960c01b6020820152600f90620000e190826200037f565b506010805460ff1916601290811790915560096011819055905560466013819055601455600160158190556016553480156200011b575f80fd5b505f80546001600160a01b031916735fb5efa7b4ea98e79f07594e6ab51d778a4e4f7890811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600c5460015f620001865f546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550600160045f620001be6200028d60201b60201c565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526004909352818320805485166001908117909155600854821684528284208054861682179055600954909116835291208054909216179055620002385f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200027f91815260200190565b60405180910390a36200044b565b5f546001600160a01b031690565b5f82620002b657634e487b7160e01b5f52601260045260245ffd5b500690565b81810381811115620002db57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200030a57607f821691505b6020821081036200032957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200037a57805f5260205f20601f840160051c81016020851015620003565750805b601f840160051c820191505b8181101562000377575f815560010162000362565b50505b505050565b81516001600160401b038111156200039b576200039b620002e1565b620003b381620003ac8454620002f5565b846200032f565b602080601f831160018114620003e9575f8415620003d15750858301515b5f19600386901b1c1916600185901b17855562000443565b5f85815260208120601f198616915b828110156200041957888601518255948401946001909101908401620003f8565b50858210156200043757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b611cbb80620004595f395ff3fe608060405260043610610198575f3560e01c80635342acb4116100e757806395d89b4111610087578063d147518511610062578063d147518514610483578063dd62ed3e14610498578063ec44acf2146104dc578063f2fde38b146104f5575f80fd5b806395d89b4114610431578063a457c2d714610445578063a9059cbb14610464575f80fd5b8063715018a6116100c2578063715018a6146103c257806388f82020146103d65780638a8c523c1461040d5780638da5cb5b14610415575f80fd5b80635342acb4146103575780635d5ee5ed1461038e57806370a08231146103a3575f80fd5b80632d838119116101525780633b124fe71161012d5780633b124fe7146102e35780633bd5d173146102f85780634549b0391461031957806349bd5a5e14610338575f80fd5b80632d83811914610284578063313ce567146102a357806339509351146102c4575f80fd5b806306fdde03146101a3578063095ea7b3146101cd57806313114a9d146101fc5780631694505e1461021a57806318160ddd1461025157806323b872dd14610265575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506101b7610514565b6040516101c49190611982565b60405180910390f35b3480156101d8575f80fd5b506101ec6101e73660046119e5565b6105a4565b60405190151581526020016101c4565b348015610207575f80fd5b50600d545b6040519081526020016101c4565b348015610225575f80fd5b50601754610239906001600160a01b031681565b6040516001600160a01b0390911681526020016101c4565b34801561025c575f80fd5b50600b5461020c565b348015610270575f80fd5b506101ec61027f366004611a0f565b6105ba565b34801561028f575f80fd5b5061020c61029e366004611a4d565b610621565b3480156102ae575f80fd5b5060105460405160ff90911681526020016101c4565b3480156102cf575f80fd5b506101ec6102de3660046119e5565b6106a8565b3480156102ee575f80fd5b5061020c60115481565b348015610303575f80fd5b50610317610312366004611a4d565b6106dd565b005b348015610324575f80fd5b5061020c610333366004611a71565b6107c5565b348015610343575f80fd5b50601854610239906001600160a01b031681565b348015610362575f80fd5b506101ec610371366004611a9f565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610399575f80fd5b5061020c60155481565b3480156103ae575f80fd5b5061020c6103bd366004611a9f565b610851565b3480156103cd575f80fd5b506103176108ad565b3480156103e1575f80fd5b506101ec6103f0366004611a9f565b6001600160a01b03165f9081526005602052604090205460ff1690565b61031761091e565b348015610420575f80fd5b505f546001600160a01b0316610239565b34801561043c575f80fd5b506101b7610c70565b348015610450575f80fd5b506101ec61045f3660046119e5565b610c7f565b34801561046f575f80fd5b506101ec61047e3660046119e5565b610ccc565b34801561048e575f80fd5b5061020c60135481565b3480156104a3575f80fd5b5061020c6104b2366004611aba565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104e7575f80fd5b506006546101ec9060ff1681565b348015610500575f80fd5b5061031761050f366004611a9f565b610cd8565b6060600e805461052390611ae6565b80601f016020809104026020016040519081016040528092919081815260200182805461054f90611ae6565b801561059a5780601f106105715761010080835404028352916020019161059a565b820191905f5260205f20905b81548152906001019060200180831161057d57829003601f168201915b5050505050905090565b5f6105b0338484610dbf565b5060015b92915050565b5f6105c6848484610ee2565b610617843361061285604051806060016040528060288152602001611c39602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611034565b610dbf565b5060019392505050565b5f600c5482111561068c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b5f61069561105f565b90506106a18382611080565b9392505050565b335f8181526003602090815260408083206001600160a01b038716845290915281205490916105b0918590610612908661108b565b335f8181526005602052604090205460ff16156107515760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610683565b5f61075b83611096565b5050506001600160a01b0386165f90815260016020526040902054939450610788939250849150506110e9565b6001600160a01b0383165f90815260016020526040902055600c546107ad90826110e9565b600c55600d546107bd908461108b565b600d55505050565b5f600b548311156108185760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610683565b81610837575f61082784611096565b509496506105b495505050505050565b5f61084184611096565b509396506105b495505050505050565b6001600160a01b0381165f9081526005602052604081205460ff161561088c57506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f908152600160205260409020546105b490610621565b5f546001600160a01b031633146108d65760405162461bcd60e51b815260040161068390611b1e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109475760405162461bcd60e51b815260040161068390611b1e565b60065460ff161561098c5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610683565b601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600b546109c3913091610dbf565b60175f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a379190611b53565b6001600160a01b031663c9c653963060175f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aba9190611b53565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b289190611b53565b601880546001600160a01b0319166001600160a01b039283161790556017541663f305d7193430610b5881610851565b60095460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092525f6044830181905260648301529190911660848201524260a482015260c40160606040518083038185885af1158015610bc2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610be79190611b6e565b505060185460175460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c609190611b99565b506006805460ff19166001179055565b6060600f805461052390611ae6565b5f6105b0338461061285604051806060016040528060258152602001611c6160259139335f9081526003602090815260408083206001600160a01b038d1684529091529020549190611034565b5f6105b0338484610ee2565b5f546001600160a01b03163314610d015760405162461bcd60e51b815260040161068390611b1e565b6001600160a01b038116610d665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610683565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610683565b6001600160a01b038216610e825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610683565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610f435760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610683565b6001600160a01b0383165f9081526004602052604090205460ff16158015610f8357506001600160a01b0382165f9081526004602052604090205460ff16155b15610fda5760065460ff16610fda5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152606401610683565b6001600160a01b0383165f9081526004602052604090205460019060ff168061101a57506001600160a01b0383165f9081526004602052604090205460ff165b1561102257505f5b61102e848484846110f4565b50505050565b5f81848411156110575760405162461bcd60e51b81526004016106839190611982565b505050900390565b5f805f61106a611269565b90925090506110798282611080565b9250505090565b5f6106a18284611bc8565b5f6106a18284611be7565b5f805f805f805f805f805f6110aa8c6113d8565b93509350935093505f805f6110c98f8787876110c461105f565b611427565b919f509d509b509599509397509195509350505050919395979092949650565b5f6106a18284611bfa565b8061110157611101611484565b6001600160a01b0384165f9081526005602052604090205460ff16801561114057506001600160a01b0383165f9081526005602052604090205460ff16155b15611155576111508484846114bc565b61124d565b6001600160a01b0384165f9081526005602052604090205460ff1615801561119457506001600160a01b0383165f9081526005602052604090205460ff165b156111a4576111508484846115f9565b6001600160a01b0384165f9081526005602052604090205460ff161580156111e457506001600160a01b0383165f9081526005602052604090205460ff16155b156111f4576111508484846116b0565b6001600160a01b0384165f9081526005602052604090205460ff16801561123257506001600160a01b0383165f9081526005602052604090205460ff165b1561124257611150848484611704565b61124d8484846116b0565b8061102e5761102e601254601155601454601355601654601555565b600c54600b545f918291825b6007548110156113a8578260015f6007848154811061129657611296611c0d565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806112fe57508160025f600784815481106112d8576112d8611c0d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b1561131457600c54600b54945094505050509091565b61135860015f6007848154811061132d5761132d611c0d565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205484906110e9565b925061139e60025f6007848154811061137357611373611c0d565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205483906110e9565b9150600101611275565b50600b54600c546113b891611080565b8210156113cf57600c54600b549350935050509091565b90939092509050565b5f805f805f6113e686611786565b90505f6113f2876117a8565b90505f6113fe886117c4565b90505f6114178261141185818d896110e9565b906110e9565b9993985091965094509092505050565b5f80808061143589866117e0565b90505f61144289876117e0565b90505f61144f89886117e0565b90505f61145c89896117e0565b90505f61146f82611411858189896110e9565b949d949c50929a509298505050505050505050565b6011541580156114945750601554155b1561149b57565b6011805460125560138054601455601580546016555f928390559082905555565b5f805f805f805f6114cc88611096565b96509650965096509650965096506115108860025f8d6001600160a01b03166001600160a01b031681526020019081526020015f20546110e990919063ffffffff16565b6001600160a01b038b165f9081526002602090815260408083209390935560019052205461153e90886110e9565b6001600160a01b03808c165f9081526001602052604080822093909355908b168152205461156c908761108b565b6001600160a01b038a165f9081526001602052604090205561158d826117eb565b611596816118a5565b6115a0858461195e565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516115e591815260200190565b60405180910390a350505050505050505050565b5f805f805f805f61160988611096565b965096509650965096509650965061164d8760015f8d6001600160a01b03166001600160a01b031681526020019081526020015f20546110e990919063ffffffff16565b6001600160a01b03808c165f90815260016020908152604080832094909455918c16815260029091522054611682908561108b565b6001600160a01b038a165f9081526002602090815260408083209390935560019052205461156c908761108b565b5f805f805f805f6116c088611096565b965096509650965096509650965061153e8760015f8d6001600160a01b03166001600160a01b031681526020019081526020015f20546110e990919063ffffffff16565b5f805f805f805f61171488611096565b96509650965096509650965096506117588860025f8d6001600160a01b03166001600160a01b031681526020019081526020015f20546110e990919063ffffffff16565b6001600160a01b038b165f9081526002602090815260408083209390935560019052205461164d90886110e9565b5f6105b46103e86117a2601154856117e090919063ffffffff16565b90611080565b5f6105b46103e86117a2601554856117e090919063ffffffff16565b5f6105b46103e86117a2601354856117e090919063ffffffff16565b5f6106a18284611c21565b5f6117f461105f565b90505f61180183836117e0565b600a546001600160a01b03165f90815260016020526040902054909150611828908261108b565b600a80546001600160a01b039081165f90815260016020908152604080832095909555925490911681526005909152205460ff16156118a057600a546001600160a01b03165f90815260026020526040902054611885908461108b565b600a546001600160a01b03165f908152600260205260409020555b505050565b5f6118ae61105f565b90505f6118bb83836117e0565b6008546001600160a01b03165f908152600160205260409020549091506118e2908261108b565b600880546001600160a01b039081165f90815260016020908152604080832095909555925490911681526005909152205460ff16156118a0576008546001600160a01b03165f9081526002602052604090205461193f908461108b565b6008546001600160a01b03165f90815260026020526040902055505050565b600c5461196b90836110e9565b600c55600d5461197b908261108b565b600d555050565b5f602080835283518060208501525f5b818110156119ae57858101830151858201604001528201611992565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119e2575f80fd5b50565b5f80604083850312156119f6575f80fd5b8235611a01816119ce565b946020939093013593505050565b5f805f60608486031215611a21575f80fd5b8335611a2c816119ce565b92506020840135611a3c816119ce565b929592945050506040919091013590565b5f60208284031215611a5d575f80fd5b5035919050565b80151581146119e2575f80fd5b5f8060408385031215611a82575f80fd5b823591506020830135611a9481611a64565b809150509250929050565b5f60208284031215611aaf575f80fd5b81356106a1816119ce565b5f8060408385031215611acb575f80fd5b8235611ad6816119ce565b91506020830135611a94816119ce565b600181811c90821680611afa57607f821691505b602082108103611b1857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611b63575f80fd5b81516106a1816119ce565b5f805f60608486031215611b80575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611ba9575f80fd5b81516106a181611a64565b634e487b7160e01b5f52601160045260245ffd5b5f82611be257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105b4576105b4611bb4565b818103818111156105b4576105b4611bb4565b634e487b7160e01b5f52603260045260245ffd5b80820281158282048414176105b4576105b4611bb456fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122064cdb4e5acdbd1dfbc752cf7286df9726bdd8211846a5d0f3924a4fe55d5b08d64736f6c63430008160033
Deployed Bytecode
0x608060405260043610610198575f3560e01c80635342acb4116100e757806395d89b4111610087578063d147518511610062578063d147518514610483578063dd62ed3e14610498578063ec44acf2146104dc578063f2fde38b146104f5575f80fd5b806395d89b4114610431578063a457c2d714610445578063a9059cbb14610464575f80fd5b8063715018a6116100c2578063715018a6146103c257806388f82020146103d65780638a8c523c1461040d5780638da5cb5b14610415575f80fd5b80635342acb4146103575780635d5ee5ed1461038e57806370a08231146103a3575f80fd5b80632d838119116101525780633b124fe71161012d5780633b124fe7146102e35780633bd5d173146102f85780634549b0391461031957806349bd5a5e14610338575f80fd5b80632d83811914610284578063313ce567146102a357806339509351146102c4575f80fd5b806306fdde03146101a3578063095ea7b3146101cd57806313114a9d146101fc5780631694505e1461021a57806318160ddd1461025157806323b872dd14610265575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506101b7610514565b6040516101c49190611982565b60405180910390f35b3480156101d8575f80fd5b506101ec6101e73660046119e5565b6105a4565b60405190151581526020016101c4565b348015610207575f80fd5b50600d545b6040519081526020016101c4565b348015610225575f80fd5b50601754610239906001600160a01b031681565b6040516001600160a01b0390911681526020016101c4565b34801561025c575f80fd5b50600b5461020c565b348015610270575f80fd5b506101ec61027f366004611a0f565b6105ba565b34801561028f575f80fd5b5061020c61029e366004611a4d565b610621565b3480156102ae575f80fd5b5060105460405160ff90911681526020016101c4565b3480156102cf575f80fd5b506101ec6102de3660046119e5565b6106a8565b3480156102ee575f80fd5b5061020c60115481565b348015610303575f80fd5b50610317610312366004611a4d565b6106dd565b005b348015610324575f80fd5b5061020c610333366004611a71565b6107c5565b348015610343575f80fd5b50601854610239906001600160a01b031681565b348015610362575f80fd5b506101ec610371366004611a9f565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610399575f80fd5b5061020c60155481565b3480156103ae575f80fd5b5061020c6103bd366004611a9f565b610851565b3480156103cd575f80fd5b506103176108ad565b3480156103e1575f80fd5b506101ec6103f0366004611a9f565b6001600160a01b03165f9081526005602052604090205460ff1690565b61031761091e565b348015610420575f80fd5b505f546001600160a01b0316610239565b34801561043c575f80fd5b506101b7610c70565b348015610450575f80fd5b506101ec61045f3660046119e5565b610c7f565b34801561046f575f80fd5b506101ec61047e3660046119e5565b610ccc565b34801561048e575f80fd5b5061020c60135481565b3480156104a3575f80fd5b5061020c6104b2366004611aba565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104e7575f80fd5b506006546101ec9060ff1681565b348015610500575f80fd5b5061031761050f366004611a9f565b610cd8565b6060600e805461052390611ae6565b80601f016020809104026020016040519081016040528092919081815260200182805461054f90611ae6565b801561059a5780601f106105715761010080835404028352916020019161059a565b820191905f5260205f20905b81548152906001019060200180831161057d57829003601f168201915b5050505050905090565b5f6105b0338484610dbf565b5060015b92915050565b5f6105c6848484610ee2565b610617843361061285604051806060016040528060288152602001611c39602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611034565b610dbf565b5060019392505050565b5f600c5482111561068c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b5f61069561105f565b90506106a18382611080565b9392505050565b335f8181526003602090815260408083206001600160a01b038716845290915281205490916105b0918590610612908661108b565b335f8181526005602052604090205460ff16156107515760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610683565b5f61075b83611096565b5050506001600160a01b0386165f90815260016020526040902054939450610788939250849150506110e9565b6001600160a01b0383165f90815260016020526040902055600c546107ad90826110e9565b600c55600d546107bd908461108b565b600d55505050565b5f600b548311156108185760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610683565b81610837575f61082784611096565b509496506105b495505050505050565b5f61084184611096565b509396506105b495505050505050565b6001600160a01b0381165f9081526005602052604081205460ff161561088c57506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f908152600160205260409020546105b490610621565b5f546001600160a01b031633146108d65760405162461bcd60e51b815260040161068390611b1e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109475760405162461bcd60e51b815260040161068390611b1e565b60065460ff161561098c5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610683565b601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600b546109c3913091610dbf565b60175f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a379190611b53565b6001600160a01b031663c9c653963060175f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aba9190611b53565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b289190611b53565b601880546001600160a01b0319166001600160a01b039283161790556017541663f305d7193430610b5881610851565b60095460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092525f6044830181905260648301529190911660848201524260a482015260c40160606040518083038185885af1158015610bc2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610be79190611b6e565b505060185460175460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c609190611b99565b506006805460ff19166001179055565b6060600f805461052390611ae6565b5f6105b0338461061285604051806060016040528060258152602001611c6160259139335f9081526003602090815260408083206001600160a01b038d1684529091529020549190611034565b5f6105b0338484610ee2565b5f546001600160a01b03163314610d015760405162461bcd60e51b815260040161068390611b1e565b6001600160a01b038116610d665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610683565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610683565b6001600160a01b038216610e825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610683565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610f435760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610683565b6001600160a01b0383165f9081526004602052604090205460ff16158015610f8357506001600160a01b0382165f9081526004602052604090205460ff16155b15610fda5760065460ff16610fda5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152606401610683565b6001600160a01b0383165f9081526004602052604090205460019060ff168061101a57506001600160a01b0383165f9081526004602052604090205460ff165b1561102257505f5b61102e848484846110f4565b50505050565b5f81848411156110575760405162461bcd60e51b81526004016106839190611982565b505050900390565b5f805f61106a611269565b90925090506110798282611080565b9250505090565b5f6106a18284611bc8565b5f6106a18284611be7565b5f805f805f805f805f805f6110aa8c6113d8565b93509350935093505f805f6110c98f8787876110c461105f565b611427565b919f509d509b509599509397509195509350505050919395979092949650565b5f6106a18284611bfa565b8061110157611101611484565b6001600160a01b0384165f9081526005602052604090205460ff16801561114057506001600160a01b0383165f9081526005602052604090205460ff16155b15611155576111508484846114bc565b61124d565b6001600160a01b0384165f9081526005602052604090205460ff1615801561119457506001600160a01b0383165f9081526005602052604090205460ff165b156111a4576111508484846115f9565b6001600160a01b0384165f9081526005602052604090205460ff161580156111e457506001600160a01b0383165f9081526005602052604090205460ff16155b156111f4576111508484846116b0565b6001600160a01b0384165f9081526005602052604090205460ff16801561123257506001600160a01b0383165f9081526005602052604090205460ff165b1561124257611150848484611704565b61124d8484846116b0565b8061102e5761102e601254601155601454601355601654601555565b600c54600b545f918291825b6007548110156113a8578260015f6007848154811061129657611296611c0d565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806112fe57508160025f600784815481106112d8576112d8611c0d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b1561131457600c54600b54945094505050509091565b61135860015f6007848154811061132d5761132d611c0d565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205484906110e9565b925061139e60025f6007848154811061137357611373611c0d565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205483906110e9565b9150600101611275565b50600b54600c546113b891611080565b8210156113cf57600c54600b549350935050509091565b90939092509050565b5f805f805f6113e686611786565b90505f6113f2876117a8565b90505f6113fe886117c4565b90505f6114178261141185818d896110e9565b906110e9565b9993985091965094509092505050565b5f80808061143589866117e0565b90505f61144289876117e0565b90505f61144f89886117e0565b90505f61145c89896117e0565b90505f61146f82611411858189896110e9565b949d949c50929a509298505050505050505050565b6011541580156114945750601554155b1561149b57565b6011805460125560138054601455601580546016555f928390559082905555565b5f805f805f805f6114cc88611096565b96509650965096509650965096506115108860025f8d6001600160a01b03166001600160a01b031681526020019081526020015f20546110e990919063ffffffff16565b6001600160a01b038b165f9081526002602090815260408083209390935560019052205461153e90886110e9565b6001600160a01b03808c165f9081526001602052604080822093909355908b168152205461156c908761108b565b6001600160a01b038a165f9081526001602052604090205561158d826117eb565b611596816118a5565b6115a0858461195e565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516115e591815260200190565b60405180910390a350505050505050505050565b5f805f805f805f61160988611096565b965096509650965096509650965061164d8760015f8d6001600160a01b03166001600160a01b031681526020019081526020015f20546110e990919063ffffffff16565b6001600160a01b03808c165f90815260016020908152604080832094909455918c16815260029091522054611682908561108b565b6001600160a01b038a165f9081526002602090815260408083209390935560019052205461156c908761108b565b5f805f805f805f6116c088611096565b965096509650965096509650965061153e8760015f8d6001600160a01b03166001600160a01b031681526020019081526020015f20546110e990919063ffffffff16565b5f805f805f805f61171488611096565b96509650965096509650965096506117588860025f8d6001600160a01b03166001600160a01b031681526020019081526020015f20546110e990919063ffffffff16565b6001600160a01b038b165f9081526002602090815260408083209390935560019052205461164d90886110e9565b5f6105b46103e86117a2601154856117e090919063ffffffff16565b90611080565b5f6105b46103e86117a2601554856117e090919063ffffffff16565b5f6105b46103e86117a2601354856117e090919063ffffffff16565b5f6106a18284611c21565b5f6117f461105f565b90505f61180183836117e0565b600a546001600160a01b03165f90815260016020526040902054909150611828908261108b565b600a80546001600160a01b039081165f90815260016020908152604080832095909555925490911681526005909152205460ff16156118a057600a546001600160a01b03165f90815260026020526040902054611885908461108b565b600a546001600160a01b03165f908152600260205260409020555b505050565b5f6118ae61105f565b90505f6118bb83836117e0565b6008546001600160a01b03165f908152600160205260409020549091506118e2908261108b565b600880546001600160a01b039081165f90815260016020908152604080832095909555925490911681526005909152205460ff16156118a0576008546001600160a01b03165f9081526002602052604090205461193f908461108b565b6008546001600160a01b03165f90815260026020526040902055505050565b600c5461196b90836110e9565b600c55600d5461197b908261108b565b600d555050565b5f602080835283518060208501525f5b818110156119ae57858101830151858201604001528201611992565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119e2575f80fd5b50565b5f80604083850312156119f6575f80fd5b8235611a01816119ce565b946020939093013593505050565b5f805f60608486031215611a21575f80fd5b8335611a2c816119ce565b92506020840135611a3c816119ce565b929592945050506040919091013590565b5f60208284031215611a5d575f80fd5b5035919050565b80151581146119e2575f80fd5b5f8060408385031215611a82575f80fd5b823591506020830135611a9481611a64565b809150509250929050565b5f60208284031215611aaf575f80fd5b81356106a1816119ce565b5f8060408385031215611acb575f80fd5b8235611ad6816119ce565b91506020830135611a94816119ce565b600181811c90821680611afa57607f821691505b602082108103611b1857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611b63575f80fd5b81516106a1816119ce565b5f805f60608486031215611b80575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611ba9575f80fd5b81516106a181611a64565b634e487b7160e01b5f52601160045260245ffd5b5f82611be257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105b4576105b4611bb4565b818103818111156105b4576105b4611bb4565b634e487b7160e01b5f52603260045260245ffd5b80820281158282048414176105b4576105b4611bb456fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122064cdb4e5acdbd1dfbc752cf7286df9726bdd8211846a5d0f3924a4fe55d5b08d64736f6c63430008160033
Deployed Bytecode Sourcemap
19022:16650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20768:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21756:193;;;;;;;;;;-1:-1:-1;21756:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;21756:193:0;1023:187:1;23258:87:0;;;;;;;;;;-1:-1:-1;23327:10:0;;23258:87;;;1361:25:1;;;1349:2;1334:18;23258:87:0;1215:177:1;20390:41:0;;;;;;;;;;-1:-1:-1;20390:41:0;;;;-1:-1:-1;;;;;20390:41:0;;;;;;-1:-1:-1;;;;;1588:32:1;;;1570:51;;1558:2;1543:18;20390:41:0;1397:230:1;21045:95:0;;;;;;;;;;-1:-1:-1;21125:7:0;;21045:95;;21957:446;;;;;;;;;;-1:-1:-1;21957:446:0;;;;;:::i;:::-;;:::i;24276:322::-;;;;;;;;;;-1:-1:-1;24276:322:0;;;;;:::i;:::-;;:::i;20954:83::-;;;;;;;;;;-1:-1:-1;21020:9:0;;20954:83;;21020:9;;;;2420:36:1;;2408:2;2393:18;20954:83:0;2278:184:1;22411:300:0;;;;;;;;;;-1:-1:-1;22411:300:0;;;;;:::i;:::-;;:::i;20108:26::-;;;;;;;;;;;;;;;;23353:424;;;;;;;;;;-1:-1:-1;23353:424:0;;;;;:::i;:::-;;:::i;:::-;;23785:483;;;;;;;;;;-1:-1:-1;23785:483:0;;;;;:::i;:::-;;:::i;20438:28::-;;;;;;;;;;-1:-1:-1;20438:28:0;;;;-1:-1:-1;;;;;20438:28:0;;;30292:114;;;;;;;;;;-1:-1:-1;30292:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;30381:17:0;30357:4;30381:17;;;:8;:17;;;;;;;;;30292:114;20295:30;;;;;;;;;;;;;;;;21148:201;;;;;;;;;;-1:-1:-1;21148:201:0;;;;;:::i;:::-;;:::i;9235:148::-;;;;;;;;;;;;;:::i;23127:123::-;;;;;;;;;;-1:-1:-1;23127:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;23219:23:0;23195:4;23219:23;;;:14;:23;;;;;;;;;23127:123;34843:826;;;:::i;9012:87::-;;;;;;;;;;-1:-1:-1;9058:7:0;9085:6;-1:-1:-1;;;;;9085:6:0;9012:87;;20859;;;;;;;;;;;;;:::i;22719:400::-;;;;;;;;;;-1:-1:-1;22719:400:0;;;;;:::i;:::-;;:::i;21357:199::-;;;;;;;;;;-1:-1:-1;21357:199:0;;;;;:::i;:::-;;:::i;20189:35::-;;;;;;;;;;;;;;;;21564:184;;;;;;;;;;-1:-1:-1;21564:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;21713:18:0;;;21681:7;21713:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21564:184;19416:19;;;;;;;;;;-1:-1:-1;19416:19:0;;;;;;;;9391:281;;;;;;;;;;-1:-1:-1;9391:281:0;;;;;:::i;:::-;;:::i;20768:83::-;20805:13;20838:5;20831:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20768:83;:::o;21756:193::-;21858:4;21880:39;4526:10;21903:7;21912:6;21880:8;:39::i;:::-;-1:-1:-1;21937:4:0;21756:193;;;;;:::o;21957:446::-;22089:4;22106:36;22116:6;22124:9;22135:6;22106:9;:36::i;:::-;22153:220;22176:6;4526:10;22224:138;22280:6;22224:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22224:19:0;;;;;;:11;:19;;;;;;;;4526:10;22224:33;;;;;;;;;;:37;:138::i;:::-;22153:8;:220::i;:::-;-1:-1:-1;22391:4:0;21957:446;;;;;:::o;24276:322::-;24370:7;24428;;24417;:18;;24395:110;;;;-1:-1:-1;;;24395:110:0;;4344:2:1;24395:110:0;;;4326:21:1;4383:2;4363:18;;;4356:30;4422:34;4402:18;;;4395:62;-1:-1:-1;;;4473:18:1;;;4466:40;4523:19;;24395:110:0;;;;;;;;;24516:19;24538:10;:8;:10::i;:::-;24516:32;-1:-1:-1;24566:24:0;:7;24516:32;24566:11;:24::i;:::-;24559:31;24276:322;-1:-1:-1;;;24276:322:0:o;22411:300::-;4526:10;22526:4;22620:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22620:34:0;;;;;;;;;;22526:4;;22548:133;;22598:7;;22620:50;;22659:10;22620:38;:50::i;23353:424::-;4526:10;23405:14;23468:22;;;:14;:22;;;;;;;;23467:23;23445:117;;;;-1:-1:-1;;;23445:117:0;;4755:2:1;23445:117:0;;;4737:21:1;4794:2;4774:18;;;4767:30;4833:34;4813:18;;;4806:62;-1:-1:-1;;;4884:18:1;;;4877:42;4936:19;;23445:117:0;4553:408:1;23445:117:0;23574:15;23605:19;23616:7;23605:10;:19::i;:::-;-1:-1:-1;;;;;;;;23653:15:0;;;;;;:7;:15;;;;;;23573:51;;-1:-1:-1;23653:28:0;;:15;-1:-1:-1;23573:51:0;;-1:-1:-1;;23653:19:0;:28::i;:::-;-1:-1:-1;;;;;23635:15:0;;;;;;:7;:15;;;;;:46;23702:7;;:20;;23714:7;23702:11;:20::i;:::-;23692:7;:30;23746:10;;:23;;23761:7;23746:14;:23::i;:::-;23733:10;:36;-1:-1:-1;;;23353:424:0:o;23785:483::-;23903:7;23947;;23936;:18;;23928:62;;;;-1:-1:-1;;;23928:62:0;;5168:2:1;23928:62:0;;;5150:21:1;5207:2;5187:18;;;5180:30;5246:33;5226:18;;;5219:61;5297:18;;23928:62:0;4966:355:1;23928:62:0;24006:17;24001:260;;24041:15;24072:19;24083:7;24072:10;:19::i;:::-;-1:-1:-1;24040:51:0;;-1:-1:-1;24106:14:0;;-1:-1:-1;;;;;;24106:14:0;24001:260;24156:23;24193:19;24204:7;24193:10;:19::i;:::-;-1:-1:-1;24153:59:0;;-1:-1:-1;24227:22:0;;-1:-1:-1;;;;;;24227:22:0;21148:201;-1:-1:-1;;;;;21238:23:0;;21214:7;21238:23;;;:14;:23;;;;;;;;21234:52;;;-1:-1:-1;;;;;;21270:16:0;;;;;:7;:16;;;;;;;21148:201::o;21234:52::-;-1:-1:-1;;;;;21324:16:0;;;;;;:7;:16;;;;;;21304:37;;:19;:37::i;9235:148::-;9058:7;9085:6;-1:-1:-1;;;;;9085:6:0;4526:10;9147:23;9139:68;;;;-1:-1:-1;;;9139:68:0;;;;;;;:::i;:::-;9342:1:::1;9326:6:::0;;9305:40:::1;::::0;-1:-1:-1;;;;;9326:6:0;;::::1;::::0;9305:40:::1;::::0;9342:1;;9305:40:::1;9373:1;9356:19:::0;;-1:-1:-1;;;;;;9356:19:0::1;::::0;;9235:148::o;34843:826::-;9058:7;9085:6;-1:-1:-1;;;;;9085:6:0;4526:10;9147:23;9139:68;;;;-1:-1:-1;;;9139:68:0;;;;;;;:::i;:::-;34915:7:::1;::::0;::::1;;34914:8;34906:36;;;::::0;-1:-1:-1;;;34906:36:0;;5889:2:1;34906:36:0::1;::::0;::::1;5871:21:1::0;5928:2;5908:18;;;5901:30;-1:-1:-1;;;5947:18:1;;;5940:45;6002:18;;34906:36:0::1;5687:339:1::0;34906:36:0::1;34953:15;:104:::0;;-1:-1:-1;;;;;;34953:104:0::1;35004:42;34953:104:::0;;::::1;::::0;;;35118:7:::1;::::0;35068:58:::1;::::0;35085:4:::1;::::0;35068:8:::1;:58::i;:::-;35171:15;;;;;;;;;-1:-1:-1::0;;;;;35171:15:0::1;-1:-1:-1::0;;;;;35171:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35153:55:0::1;;35231:4;35251:15;;;;;;;;;-1:-1:-1::0;;;;;35251:15:0::1;-1:-1:-1::0;;;;;35251:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35153:131;::::0;-1:-1:-1;;;;;;35153:131:0::1;::::0;;;;;;-1:-1:-1;;;;;6517:15:1;;;35153:131:0::1;::::0;::::1;6499:34:1::0;6569:15;;6549:18;;;6542:43;6434:18;;35153:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35137:13;:147:::0;;-1:-1:-1;;;;;;35137:147:0::1;-1:-1:-1::0;;;;;35137:147:0;;::::1;;::::0;;35295:15:::1;::::0;::::1;:31;35334:9;35367:4;35387:24;35367:4:::0;35387:9:::1;:24::i;:::-;35458:15;::::0;35295:219:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;35295:219:0;;;-1:-1:-1;;;;;6955:15:1;;;35295:219:0::1;::::0;::::1;6937:34:1::0;6987:18;;;6980:34;;;;35426:1:0::1;7030:18:1::0;;;7023:34;;;7073:18;;;7066:34;35458:15:0;;;::::1;7116:19:1::0;;;7109:44;35488:15:0::1;7169:19:1::0;;;7162:35;6871:19;;35295:219:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;35532:13:0::1;::::0;35577:15:::1;::::0;35525:111:::1;::::0;-1:-1:-1;;;35525:111:0;;-1:-1:-1;;;;;35577:15:0;;::::1;35525:111;::::0;::::1;7693:51:1::0;-1:-1:-1;;7760:18:1;;;7753:34;35532:13:0;::::1;::::0;-1:-1:-1;35525:29:0::1;::::0;7666:18:1;;35525:111:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;35647:7:0::1;:14:::0;;-1:-1:-1;;35647:14:0::1;35657:4;35647:14;::::0;;34843:826::o;20859:87::-;20898:13;20931:7;20924:14;;;;;:::i;22719:400::-;22839:4;22861:228;4526:10;22911:7;22933:145;22990:15;22933:145;;;;;;;;;;;;;;;;;4526:10;22933:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22933:34:0;;;;;;;;;;;;:38;:145::i;21357:199::-;21462:4;21484:42;4526:10;21508:9;21519:6;21484:9;:42::i;9391:281::-;9058:7;9085:6;-1:-1:-1;;;;;9085:6:0;4526:10;9147:23;9139:68;;;;-1:-1:-1;;;9139:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9494:22:0;::::1;9472:110;;;::::0;-1:-1:-1;;;9472:110:0;;8250:2:1;9472:110:0::1;::::0;::::1;8232:21:1::0;8289:2;8269:18;;;8262:30;8328:34;8308:18;;;8301:62;-1:-1:-1;;;8379:18:1;;;8372:36;8425:19;;9472:110:0::1;8048:402:1::0;9472:110:0::1;9619:6;::::0;;9598:38:::1;::::0;-1:-1:-1;;;;;9598:38:0;;::::1;::::0;9619:6;::::1;::::0;9598:38:::1;::::0;::::1;9647:6;:17:::0;;-1:-1:-1;;;;;;9647:17:0::1;-1:-1:-1::0;;;;;9647:17:0;;;::::1;::::0;;;::::1;::::0;;9391:281::o;30414:369::-;-1:-1:-1;;;;;30541:19:0;;30533:68;;;;-1:-1:-1;;;30533:68:0;;8657:2:1;30533:68:0;;;8639:21:1;8696:2;8676:18;;;8669:30;8735:34;8715:18;;;8708:62;-1:-1:-1;;;8786:18:1;;;8779:34;8830:19;;30533:68:0;8455:400:1;30533:68:0;-1:-1:-1;;;;;30620:21:0;;30612:68;;;;-1:-1:-1;;;30612:68:0;;9062:2:1;30612:68:0;;;9044:21:1;9101:2;9081:18;;;9074:30;9140:34;9120:18;;;9113:62;-1:-1:-1;;;9191:18:1;;;9184:32;9233:19;;30612:68:0;8860:398:1;30612:68:0;-1:-1:-1;;;;;30691:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30743:32;;1361:25:1;;;30743:32:0;;1334:18:1;30743:32:0;;;;;;;30414:369;;;:::o;30791:474::-;30922:1;30913:6;:10;30905:64;;;;-1:-1:-1;;;30905:64:0;;9465:2:1;30905:64:0;;;9447:21:1;9504:2;9484:18;;;9477:30;9543:34;9523:18;;;9516:62;-1:-1:-1;;;9594:18:1;;;9587:39;9643:19;;30905:64:0;9263:405:1;30905:64:0;-1:-1:-1;;;;;30985:14:0;;;;;;:8;:14;;;;;;;;30984:15;:32;;;;-1:-1:-1;;;;;;31004:12:0;;;;;;:8;:12;;;;;;;;31003:13;30984:32;30980:108;;;31041:7;;;;31033:43;;;;-1:-1:-1;;;31033:43:0;;9875:2:1;31033:43:0;;;9857:21:1;9914:2;9894:18;;;9887:30;9953:25;9933:18;;;9926:53;9996:18;;31033:43:0;9673:347:1;31033:43:0;-1:-1:-1;;;;;31132:14:0;;31098:12;31132:14;;;:8;:14;;;;;;31113:4;;31132:14;;;:30;;-1:-1:-1;;;;;;31150:12:0;;;;;;:8;:12;;;;;;;;31132:30;31128:78;;;-1:-1:-1;31189:5:0;31128:78;31216:41;31231:4;31237:2;31241:6;31249:7;31216:14;:41::i;:::-;30894:371;30791:474;;;:::o;3672:240::-;3792:7;3853:12;3845:6;;;;3837:29;;;;-1:-1:-1;;;3837:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3888:5:0;;;3672:240::o;27698:164::-;27740:7;27761:15;27778;27797:19;:17;:19::i;:::-;27760:56;;-1:-1:-1;27760:56:0;-1:-1:-1;27834:20:0;27760:56;;27834:11;:20::i;:::-;27827:27;;;;27698:164;:::o;3460:98::-;3518:7;3545:5;3549:1;3545;:5;:::i;3142:98::-;3200:7;3227:5;3231:1;3227;:5;:::i;25627:838::-;25727:7;25749;25771;25793;25815;25837;25859;25909:23;25947:12;25974:13;26002:20;26036;26048:7;26036:11;:20::i;:::-;25894:162;;;;;;;;26068:15;26085:23;26110:12;26126:135;26152:7;26174:4;26193:5;26213:12;26240:10;:8;:10::i;:::-;26126:11;:135::i;:::-;26067:194;;-1:-1:-1;26067:194:0;-1:-1:-1;26067:194:0;-1:-1:-1;26365:15:0;;-1:-1:-1;26395:4:0;;-1:-1:-1;26414:5:0;;-1:-1:-1;26434:12:0;-1:-1:-1;;;;25627:838:0;;;;;;;;;:::o;3248:98::-;3306:7;3333:5;3337:1;3333;:5;:::i;31752:858::-;31908:7;31903:28;;31917:14;:12;:14::i;:::-;-1:-1:-1;;;;;31946:22:0;;;;;;:14;:22;;;;;;;;:52;;;;-1:-1:-1;;;;;;31973:25:0;;;;;;:14;:25;;;;;;;;31972:26;31946:52;31942:621;;;32015:48;32037:6;32045:9;32056:6;32015:21;:48::i;:::-;31942:621;;;-1:-1:-1;;;;;32086:22:0;;;;;;:14;:22;;;;;;;;32085:23;:52;;;;-1:-1:-1;;;;;;32112:25:0;;;;;;:14;:25;;;;;;;;32085:52;32081:482;;;32154:46;32174:6;32182:9;32193:6;32154:19;:46::i;32081:482::-;-1:-1:-1;;;;;32223:22:0;;;;;;:14;:22;;;;;;;;32222:23;:53;;;;-1:-1:-1;;;;;;32250:25:0;;;;;;:14;:25;;;;;;;;32249:26;32222:53;32218:345;;;32292:44;32310:6;32318:9;32329:6;32292:17;:44::i;32218:345::-;-1:-1:-1;;;;;32358:22:0;;;;;;:14;:22;;;;;;;;:51;;;;-1:-1:-1;;;;;;32384:25:0;;;;;;:14;:25;;;;;;;;32358:51;32354:209;;;32426:48;32448:6;32456:9;32467:6;32426:21;:48::i;32354:209::-;32507:44;32525:6;32533:9;32544:6;32507:17;:44::i;:::-;32578:7;32573:29;;32587:15;30165;;30155:7;:25;30209:23;;30191:15;:41;30257:19;;30243:11;:33;30111:173;27870:605;27968:7;;28004;;27921;;;;;28022:338;28046:9;:16;28042:20;;28022:338;;;28130:7;28106;:21;28114:9;28124:1;28114:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28114:12:0;28106:21;;;;;;;;;;;;;:31;;:83;;;28182:7;28158;:21;28166:9;28176:1;28166:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28166:12:0;28158:21;;;;;;;;;;;;;:31;28106:83;28084:146;;;28213:7;;28222;;28205:25;;;;;;;27870:605;;:::o;28084:146::-;28255:34;28267:7;:21;28275:9;28285:1;28275:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28275:12:0;28267:21;;;;;;;;;;;;;28255:7;;:11;:34::i;:::-;28245:44;;28314:34;28326:7;:21;28334:9;28344:1;28334:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28334:12:0;28326:21;;;;;;;;;;;;;28314:7;;:11;:34::i;:::-;28304:44;-1:-1:-1;28064:3:0;;28022:338;;;-1:-1:-1;28396:7:0;;28384;;:20;;:11;:20::i;:::-;28374:7;:30;28370:61;;;28414:7;;28423;;28406:25;;;;;;27870:605;;:::o;28370:61::-;28450:7;;28459;;-1:-1:-1;27870:605:0;-1:-1:-1;27870:605:0:o;26473:539::-;26574:7;26596;26618;26640;26675:12;26690:24;26706:7;26690:15;:24::i;:::-;26675:39;;26725:13;26741:28;26761:7;26741:19;:28::i;:::-;26725:44;;26780:20;26803:32;26827:7;26803:23;:32::i;:::-;26780:55;-1:-1:-1;26846:23:0;26872:70;26780:55;26872:28;26894:5;26872:28;:7;26884:4;26872:11;:17::i;:::-;:21;;:28::i;:70::-;26846:96;26978:4;;-1:-1:-1;26984:5:0;;-1:-1:-1;26984:5:0;-1:-1:-1;26473:539:0;;-1:-1:-1;;;26473:539:0:o;27020:670::-;27245:7;;;;27342:24;:7;27354:11;27342;:24::i;:::-;27324:42;-1:-1:-1;27377:12:0;27392:21;:4;27401:11;27392:8;:21::i;:::-;27377:36;-1:-1:-1;27424:13:0;27440:22;:5;27450:11;27440:9;:22::i;:::-;27424:38;-1:-1:-1;27473:20:0;27496:29;:12;27513:11;27496:16;:29::i;:::-;27473:52;-1:-1:-1;27536:23:0;27562:70;27473:52;27562:28;27584:5;27562:28;:7;27574:4;27562:11;:17::i;:70::-;27651:7;;;;-1:-1:-1;27677:4:0;;-1:-1:-1;27020:670:0;;-1:-1:-1;;;;;;;;;27020:670:0:o;29798:305::-;29845:7;;:12;:32;;;;-1:-1:-1;29861:11:0;;:16;29845:32;29841:45;;;29798:305::o;29841:45::-;29914:7;;;29896:15;:25;29958:15;;;29932:23;:41;30006:11;;;29984:19;:33;-1:-1:-1;30028:11:0;;;;30050:19;;;;30080:15;29798:305::o;34085:750::-;34236:15;34266:23;34304:12;34331:23;34369:12;34396:13;34424:20;34458:19;34469:7;34458:10;:19::i;:::-;34221:256;;;;;;;;;;;;;;34506:28;34526:7;34506;:15;34514:6;-1:-1:-1;;;;;34506:15:0;-1:-1:-1;;;;;34506:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;34488:15:0;;;;;;:7;:15;;;;;;;;:46;;;;34563:7;:15;;;;:28;;34583:7;34563:19;:28::i;:::-;-1:-1:-1;;;;;34545:15:0;;;;;;;:7;:15;;;;;;:46;;;;34623:18;;;;;;;:39;;34646:15;34623:22;:39::i;:::-;-1:-1:-1;;;;;34602:18:0;;;;;;:7;:18;;;;;:60;34673:19;34686:5;34673:12;:19::i;:::-;34703:30;34720:12;34703:16;:30::i;:::-;34744:23;34756:4;34762;34744:11;:23::i;:::-;34800:9;-1:-1:-1;;;;;34783:44:0;34792:6;-1:-1:-1;;;;;34783:44:0;;34811:15;34783:44;;;;1361:25:1;;1349:2;1334:18;;1215:177;34783:44:0;;;;;;;;34210:625;;;;;;;34085:750;;;:::o;33315:762::-;33464:15;33494:23;33532:12;33559:23;33597:12;33624:13;33652:20;33686:19;33697:7;33686:10;:19::i;:::-;33449:256;;;;;;;;;;;;;;33734:28;33754:7;33734;:15;33742:6;-1:-1:-1;;;;;33734:15:0;-1:-1:-1;;;;;33734:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;33716:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;33794:18;;;;;:7;:18;;;;;:39;;33817:15;33794:22;:39::i;:::-;-1:-1:-1;;;;;33773:18:0;;;;;;:7;:18;;;;;;;;:60;;;;33865:7;:18;;;;:39;;33888:15;33865:22;:39::i;32618:689::-;32765:15;32795:23;32833:12;32860:23;32898:12;32925:13;32953:20;32987:19;32998:7;32987:10;:19::i;:::-;32750:256;;;;;;;;;;;;;;33035:28;33055:7;33035;:15;33043:6;-1:-1:-1;;;;;33035:15:0;-1:-1:-1;;;;;33035:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;24606:821::-;24757:15;24787:23;24825:12;24852:23;24890:12;24917:13;24945:20;24979:19;24990:7;24979:10;:19::i;:::-;24742:256;;;;;;;;;;;;;;25027:28;25047:7;25027;:15;25035:6;-1:-1:-1;;;;;25027:15:0;-1:-1:-1;;;;;25027:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;25009:15:0;;;;;;:7;:15;;;;;;;;:46;;;;25084:7;:15;;;;:28;;25104:7;25084:19;:28::i;29296:130::-;29360:7;29387:31;29412:5;29387:20;29399:7;;29387;:11;;:20;;;;:::i;:::-;:24;;:31::i;29620:170::-;29715:7;29747:35;29776:5;29747:24;29759:11;;29747:7;:11;;:24;;;;:::i;29434:178::-;29533:7;29565:39;29598:5;29565:28;29577:15;;29565:7;:11;;:28;;;;:::i;3354:98::-;3412:7;3439:5;3443:1;3439;:5;:::i;28483:321::-;28539:19;28561:10;:8;:10::i;:::-;28539:32;-1:-1:-1;28582:13:0;28598:22;:5;28539:32;28598:9;:22::i;:::-;28662:11;;-1:-1:-1;;;;;28662:11:0;28654:20;;;;:7;:20;;;;;;28582:38;;-1:-1:-1;28654:31:0;;28582:38;28654:24;:31::i;:::-;28639:11;;;-1:-1:-1;;;;;28639:11:0;;;28631:20;;;;:7;:20;;;;;;;;:54;;;;28715:11;;;;;28700:27;;:14;:27;;;;;;;28696:100;;;28773:11;;-1:-1:-1;;;;;28773:11:0;28765:20;;;;:7;:20;;;;;;:31;;28790:5;28765:24;:31::i;:::-;28750:11;;-1:-1:-1;;;;;28750:11:0;28742:20;;;;:7;:20;;;;;:54;28696:100;28528:276;;28483:321;:::o;28812:476::-;28879:19;28901:10;:8;:10::i;:::-;28879:32;-1:-1:-1;28922:20:0;28945:29;:12;28879:32;28945:16;:29::i;:::-;29030:25;;-1:-1:-1;;;;;29030:25:0;29022:34;;;;:7;:34;;;;;;28922:52;;-1:-1:-1;29022:66:0;;28922:52;29022;:66::i;:::-;28993:25;;;-1:-1:-1;;;;;28993:25:0;;;28985:34;;;;:7;:34;;;;;;;;:103;;;;29118:25;;;;;29103:41;;:14;:41;;;;;;;29099:181;;;29222:25;;-1:-1:-1;;;;;29222:25:0;29196:66;;;;:7;:66;;;;;;:84;;29267:12;29196:70;:84::i;:::-;29167:25;;-1:-1:-1;;;;;29167:25:0;29159:34;;;;:7;:34;;;;;:121;28868:420;;28812:476;:::o;25472:147::-;25550:7;;:17;;25562:4;25550:11;:17::i;:::-;25540:7;:27;25591:10;;:20;;25606:4;25591:14;:20::i;:::-;25578:10;:33;-1:-1:-1;;25472:147:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1632:456::-;1709:6;1717;1725;1778:2;1766:9;1757:7;1753:23;1749:32;1746:52;;;1794:1;1791;1784:12;1746:52;1833:9;1820:23;1852:31;1877:5;1852:31;:::i;:::-;1902:5;-1:-1:-1;1959:2:1;1944:18;;1931:32;1972:33;1931:32;1972:33;:::i;:::-;1632:456;;2024:7;;-1:-1:-1;;;2078:2:1;2063:18;;;;2050:32;;1632:456::o;2093:180::-;2152:6;2205:2;2193:9;2184:7;2180:23;2176:32;2173:52;;;2221:1;2218;2211:12;2173:52;-1:-1:-1;2244:23:1;;2093:180;-1:-1:-1;2093:180:1:o;2467:118::-;2553:5;2546:13;2539:21;2532:5;2529:32;2519:60;;2575:1;2572;2565:12;2590:309;2655:6;2663;2716:2;2704:9;2695:7;2691:23;2687:32;2684:52;;;2732:1;2729;2722:12;2684:52;2768:9;2755:23;2745:33;;2828:2;2817:9;2813:18;2800:32;2841:28;2863:5;2841:28;:::i;:::-;2888:5;2878:15;;;2590:309;;;;;:::o;3112:247::-;3171:6;3224:2;3212:9;3203:7;3199:23;3195:32;3192:52;;;3240:1;3237;3230:12;3192:52;3279:9;3266:23;3298:31;3323:5;3298:31;:::i;3364:388::-;3432:6;3440;3493:2;3481:9;3472:7;3468:23;3464:32;3461:52;;;3509:1;3506;3499:12;3461:52;3548:9;3535:23;3567:31;3592:5;3567:31;:::i;:::-;3617:5;-1:-1:-1;3674:2:1;3659:18;;3646:32;3687:33;3646:32;3687:33;:::i;3757:380::-;3836:1;3832:12;;;;3879;;;3900:61;;3954:4;3946:6;3942:17;3932:27;;3900:61;4007:2;3999:6;3996:14;3976:18;3973:38;3970:161;;4053:10;4048:3;4044:20;4041:1;4034:31;4088:4;4085:1;4078:15;4116:4;4113:1;4106:15;3970:161;;3757:380;;;:::o;5326:356::-;5528:2;5510:21;;;5547:18;;;5540:30;5606:34;5601:2;5586:18;;5579:62;5673:2;5658:18;;5326:356::o;6031:251::-;6101:6;6154:2;6142:9;6133:7;6129:23;6125:32;6122:52;;;6170:1;6167;6160:12;6122:52;6202:9;6196:16;6221:31;6246:5;6221:31;:::i;7208:306::-;7296:6;7304;7312;7365:2;7353:9;7344:7;7340:23;7336:32;7333:52;;;7381:1;7378;7371:12;7333:52;7410:9;7404:16;7394:26;;7460:2;7449:9;7445:18;7439:25;7429:35;;7504:2;7493:9;7489:18;7483:25;7473:35;;7208:306;;;;;:::o;7798:245::-;7865:6;7918:2;7906:9;7897:7;7893:23;7889:32;7886:52;;;7934:1;7931;7924:12;7886:52;7966:9;7960:16;7985:28;8007:5;7985:28;:::i;10025:127::-;10086:10;10081:3;10077:20;10074:1;10067:31;10117:4;10114:1;10107:15;10141:4;10138:1;10131:15;10157:217;10197:1;10223;10213:132;;10267:10;10262:3;10258:20;10255:1;10248:31;10302:4;10299:1;10292:15;10330:4;10327:1;10320:15;10213:132;-1:-1:-1;10359:9:1;;10157:217::o;10379:125::-;10444:9;;;10465:10;;;10462:36;;;10478:18;;:::i;10509:128::-;10576:9;;;10597:11;;;10594:37;;;10611:18;;:::i;10642:127::-;10703:10;10698:3;10694:20;10691:1;10684:31;10734:4;10731:1;10724:15;10758:4;10755:1;10748:15;10774:168;10847:9;;;10878;;10895:15;;;10889:22;;10875:37;10865:71;;10916:18;;:::i
Swarm Source
ipfs://64cdb4e5acdbd1dfbc752cf7286df9726bdd8211846a5d0f3924a4fe55d5b08d
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.