ERC-20
Overview
Max Total Supply
97,612,641.592236299 BLFT
Holders
29
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
221,527.954658154 BLFTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BLUFF
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-15 */ /** *Submitted for verification at Etherscan.io on 2021-04-15 */ /** *Submitted for verification at BscScan.com on 2021-04-13 */ /* BLUFF is a deflationary token with evolutive tax redistribution over time. */ pragma solidity ^0.6.12; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } 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; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { 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); } 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"); } 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"); 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"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { 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; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } //Added function // 1 minute = 60 // 1h 3600 // 24h 86400 // 1w 604800 function getTime() public view returns (uint256) { return now; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(now > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; 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 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 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; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BLUFF 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; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100 * 10**6 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _tBurnTotal; uint256 private _tDonationTotal; string private _name = "BLUFF"; string private _symbol = "BLFT"; uint8 private _decimals = 9; uint256 public _taxFee = 3; uint256 private _previousTaxFee = _taxFee; uint256 public _burnFee = 2; uint256 private _previousBurnFee = _burnFee; uint256 public _donationFee = 0; uint256 private _previousDonationFee = _donationFee; uint256 public _maxTxAmount = 2 * 10**6 * 10**9; uint256 private minimumTokensBeforeSwap = 5 * 10**4 * 10**9; address payable public charityAddress = 0x267Df8E44d6a227ff79fB1e2e87Ed8AA1C0dcbCb; // Charity Address IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; event RewardLiquidityProviders(uint256 tokenAmount); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () public { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function totalBurn() public view returns (uint256) { return _tBurnTotal; } function totalDonationETH() public view returns (uint256) { // ETH has 18 decimals! return _tDonationTotal; } function minimumTokensBeforeSwapAmount() public view returns (uint256) { return minimumTokensBeforeSwap; } 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 _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if ( overMinimumTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { swapTokensForEth(contractTokenBalance); _tDonationTotal = _tDonationTotal.add(address(this).balance); TransferCharityETH(charityAddress, address(this).balance); } 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), // The contract block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _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, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 rBurn, uint256 tFee, uint256 tBurn) private { _rTotal = _rTotal.sub(rFee).sub(rBurn); _tFeeTotal = _tFeeTotal.add(tFee); _tBurnTotal = _tBurnTotal.add(tBurn); _tTotal = _tTotal.sub(tBurn); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tBurn, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tBurn = calculateBurnFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn).sub(tLiquidity); return (tTransferAmount, tFee, tBurn, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rBurn = tBurn.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).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 calculateBurnFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_burnFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_donationFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _burnFee == 0 && _donationFee == 0) return; _previousTaxFee = _taxFee; _previousBurnFee = _burnFee; _previousDonationFee = _donationFee; _taxFee = 0; _burnFee = 0; _donationFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _burnFee = _previousBurnFee; _donationFee = _previousDonationFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setBurnFeePercent(uint256 burnFee) external onlyOwner() { _burnFee = burnFee; } function setDonationFeePercent(uint256 DonationFee) external onlyOwner() { _donationFee = DonationFee; } function setMaxTxPercent(uint256 maxTxPercent, uint256 maxTxDecimals) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**(uint256(maxTxDecimals) + 2) ); } function setNumTokensSellToAddToLiquidity(uint256 _minimumTokensBeforeSwap) external onlyOwner() { minimumTokensBeforeSwap = _minimumTokensBeforeSwap; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function TransferCharityETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_donationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"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":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"DonationFee","type":"uint256"}],"name":"setDonationFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"},{"internalType":"uint256","name":"maxTxDecimals","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDonationETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
67016345785d8a000060095567012a74c07c69ffff19600a55610100604052600560c08190526421262aa32360d91b60e09081526200004291600e9190620003d2565b50604080518082019091526004808252631093119560e21b60209092019182526200007091600f91620003d2565b506010805460ff1916600917905560036011819055601255600260138190556014556000601581905560165566071afd498d0000601755652d79883d20006018556019805460ff60a81b196001600160a01b031990911673267df8e44d6a227ff79fb1e2e87ed8aa1c0dcbcb17169055348015620000ed57600080fd5b506000620000fa620003bf565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600a546003600062000155620003bf565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001cc57600080fd5b505afa158015620001e1573d6000803e3d6000fd5b505050506040513d6020811015620001f857600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200024957600080fd5b505afa1580156200025e573d6000803e3d6000fd5b505050506040513d60208110156200027557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002c857600080fd5b505af1158015620002dd573d6000803e3d6000fd5b505050506040513d6020811015620002f457600080fd5b50516001600160601b0319606091821b811660a0529082901b1660805260016006600062000321620003c3565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260069092529020805490911660011790556200036b620003bf565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a3506200046e565b3390565b6000546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200041557805160ff191683800117855562000445565b8280016001018555821562000445579182015b828111156200044557825182559160200191906001019062000428565b506200045392915062000457565b5090565b5b8082111562000453576000815560010162000458565b60805160601c60a05160601c612c77620004ac600039806110785280611bcf525080610ad15280612373528061242b52806124525250612c776000f3fe6080604052600436106102765760003560e01c8063557ed1ba1161014f578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e146108ae578063ea2f0b37146108e9578063f0f165af1461091c578063f13b01f214610946578063f2fde38b14610970578063faf38f62146109a35761027d565b8063a9059cbb146107cb578063afcf2fc414610804578063c0b0fda214610819578063c49b9a801461082e578063cea269581461085a578063dd467064146108845761027d565b806388f820201161011357806388f820201461070b5780638da5cb5b1461073e57806395d89b4114610753578063a073d37f14610768578063a457c2d71461077d578063a69df4b5146107b65761027d565b8063557ed1ba14610684578063602bc62b1461069957806370a08231146106ae578063715018a6146106e15780637d1db4a5146106f65761027d565b80633b124fe7116101e85780634549b039116101ac5780634549b039146105ad57806349bd5a5e146105df5780634a74bb02146105f457806352390c02146106095780635342acb41461063c57806353fdfe3a1461066f5761027d565b80633b124fe7146104f65780633bd5d1731461050b5780633c9f861d146105355780633f3cf56c1461054a578063437823ec1461057a5761027d565b806318160ddd1161023a57806318160ddd146103dd57806323b872dd146103f25780632d83811914610435578063313ce5671461045f5780633685d4191461048a57806339509351146104bd5761027d565b8063061c82d01461028257806306fdde03146102ae578063095ea7b31461033857806313114a9d146103855780631694505e146103ac5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102ac600480360360208110156102a557600080fd5b50356109b8565b005b3480156102ba57600080fd5b506102c3610a15565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102fd5781810151838201526020016102e5565b50505050905090810190601f16801561032a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034457600080fd5b506103716004803603604081101561035b57600080fd5b506001600160a01b038135169060200135610aab565b604080519115158252519081900360200190f35b34801561039157600080fd5b5061039a610ac9565b60408051918252519081900360200190f35b3480156103b857600080fd5b506103c1610acf565b604080516001600160a01b039092168252519081900360200190f35b3480156103e957600080fd5b5061039a610af3565b3480156103fe57600080fd5b506103716004803603606081101561041557600080fd5b506001600160a01b03813581169160208101359091169060400135610af9565b34801561044157600080fd5b5061039a6004803603602081101561045857600080fd5b5035610b80565b34801561046b57600080fd5b50610474610be2565b6040805160ff9092168252519081900360200190f35b34801561049657600080fd5b506102ac600480360360208110156104ad57600080fd5b50356001600160a01b0316610beb565b3480156104c957600080fd5b50610371600480360360408110156104e057600080fd5b506001600160a01b038135169060200135610dac565b34801561050257600080fd5b5061039a610dfa565b34801561051757600080fd5b506102ac6004803603602081101561052e57600080fd5b5035610e00565b34801561054157600080fd5b5061039a610edc565b34801561055657600080fd5b506102ac6004803603604081101561056d57600080fd5b5080359060200135610ee2565b34801561058657600080fd5b506102ac6004803603602081101561059d57600080fd5b50356001600160a01b0316610f66565b3480156105b957600080fd5b5061039a600480360360408110156105d057600080fd5b50803590602001351515610fe2565b3480156105eb57600080fd5b506103c1611076565b34801561060057600080fd5b5061037161109a565b34801561061557600080fd5b506102ac6004803603602081101561062c57600080fd5b50356001600160a01b03166110aa565b34801561064857600080fd5b506103716004803603602081101561065f57600080fd5b50356001600160a01b0316611230565b34801561067b57600080fd5b5061039a61124e565b34801561069057600080fd5b5061039a611254565b3480156106a557600080fd5b5061039a611258565b3480156106ba57600080fd5b5061039a600480360360208110156106d157600080fd5b50356001600160a01b031661125e565b3480156106ed57600080fd5b506102ac6112c0565b34801561070257600080fd5b5061039a611350565b34801561071757600080fd5b506103716004803603602081101561072e57600080fd5b50356001600160a01b0316611356565b34801561074a57600080fd5b506103c1611374565b34801561075f57600080fd5b506102c3611383565b34801561077457600080fd5b5061039a6113e4565b34801561078957600080fd5b50610371600480360360408110156107a057600080fd5b506001600160a01b0381351690602001356113ea565b3480156107c257600080fd5b506102ac611452565b3480156107d757600080fd5b50610371600480360360408110156107ee57600080fd5b506001600160a01b038135169060200135611540565b34801561081057600080fd5b506103c1611554565b34801561082557600080fd5b5061039a611563565b34801561083a57600080fd5b506102ac6004803603602081101561085157600080fd5b50351515611569565b34801561086657600080fd5b506102ac6004803603602081101561087d57600080fd5b5035611614565b34801561089057600080fd5b506102ac600480360360208110156108a757600080fd5b5035611671565b3480156108ba57600080fd5b5061039a600480360360408110156108d157600080fd5b506001600160a01b038135811691602001351661170f565b3480156108f557600080fd5b506102ac6004803603602081101561090c57600080fd5b50356001600160a01b031661173a565b34801561092857600080fd5b506102ac6004803603602081101561093f57600080fd5b50356117b3565b34801561095257600080fd5b506102ac6004803603602081101561096957600080fd5b5035611810565b34801561097c57600080fd5b506102ac6004803603602081101561099357600080fd5b50356001600160a01b031661186d565b3480156109af57600080fd5b5061039a611953565b6109c0611959565b6000546001600160a01b03908116911614610a10576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b601155565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610aa15780601f10610a7657610100808354040283529160200191610aa1565b820191906000526020600020905b815481529060010190602001808311610a8457829003601f168201915b5050505050905090565b6000610abf610ab8611959565b848461195d565b5060015b92915050565b600b5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60095490565b6000610b06848484611a49565b610b7684610b12611959565b610b7185604051806060016040528060288152602001612af4602891396001600160a01b038a16600090815260056020526040812090610b50611959565b6001600160a01b031681526020810191909152604001600020549190611c8b565b61195d565b5060019392505050565b6000600a54821115610bc35760405162461bcd60e51b815260040180806020018281038252602a815260200180612a39602a913960400191505060405180910390fd5b6000610bcd611d22565b9050610bd98382611d45565b9150505b919050565b60105460ff1690565b610bf3611959565b6000546001600160a01b03908116911614610c43576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610cb0576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015610da857816001600160a01b031660088281548110610cd457fe5b6000918252602090912001546001600160a01b03161415610da057600880546000198101908110610d0157fe5b600091825260209091200154600880546001600160a01b039092169183908110610d2757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610d7957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610da8565b600101610cb3565b5050565b6000610abf610db9611959565b84610b718560056000610dca611959565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611d8e565b60115481565b6000610e0a611959565b6001600160a01b03811660009081526007602052604090205490915060ff1615610e655760405162461bcd60e51b815260040180806020018281038252602c815260200180612bce602c913960400191505060405180910390fd5b6000610e7083611de8565b5050506001600160a01b038616600090815260036020526040902054939450610e9e93925084915050611e43565b6001600160a01b038316600090815260036020526040902055600a54610ec49082611e43565b600a55600b54610ed49084611d8e565b600b55505050565b600c5490565b610eea611959565b6000546001600160a01b03908116911614610f3a576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b610f5f81600201600a0a610f5984600954611e8590919063ffffffff16565b90611d45565b6017555050565b610f6e611959565b6000546001600160a01b03908116911614610fbe576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b600060095483111561103b576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161105b57600061104b84611de8565b50949650610ac395505050505050565b600061106684611de8565b50939650610ac395505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601954600160a81b900460ff1681565b6110b2611959565b6000546001600160a01b03908116911614611102576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff1615611170576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156111ca576001600160a01b0381166000908152600360205260409020546111b090610b80565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b600d5490565b4290565b60025490565b6001600160a01b03811660009081526007602052604081205460ff161561129e57506001600160a01b038116600090815260046020526040902054610bdd565b6001600160a01b038216600090815260036020526040902054610ac390610b80565b6112c8611959565b6000546001600160a01b03908116911614611318576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020612b3c833981519152908390a3600080546001600160a01b0319169055565b60175481565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610aa15780601f10610a7657610100808354040283529160200191610aa1565b60185490565b6000610abf6113f7611959565b84610b7185604051806060016040528060258152602001612c1d6025913960056000611421611959565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611c8b565b6001546001600160a01b0316331461149b5760405162461bcd60e51b8152600401808060200182810382526023815260200180612bfa6023913960400191505060405180910390fd5b60025442116114f1576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b039384169390911691600080516020612b3c83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610abf61154d611959565b8484611a49565b6019546001600160a01b031681565b60135481565b611571611959565b6000546001600160a01b039081169116146115c1576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b60198054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b61161c611959565b6000546001600160a01b0390811691161461166c576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b601355565b611679611959565b6000546001600160a01b039081169116146116c9576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b038416179091551681554282016002556040518190600080516020612b3c833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611742611959565b6000546001600160a01b03908116911614611792576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19169055565b6117bb611959565b6000546001600160a01b0390811691161461180b576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b601855565b611818611959565b6000546001600160a01b03908116911614611868576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b601555565b611875611959565b6000546001600160a01b039081169116146118c5576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03811661190a5760405162461bcd60e51b8152600401808060200182810382526026815260200180612a636026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020612b3c83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60155481565b3390565b6001600160a01b0383166119a25760405162461bcd60e51b8152600401808060200182810382526024815260200180612baa6024913960400191505060405180910390fd5b6001600160a01b0382166119e75760405162461bcd60e51b8152600401808060200182810382526022815260200180612a896022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611a8e5760405162461bcd60e51b8152600401808060200182810382526025815260200180612b856025913960400191505060405180910390fd5b6001600160a01b038216611ad35760405162461bcd60e51b8152600401808060200182810382526023815260200180612a166023913960400191505060405180910390fd5b60008111611b125760405162461bcd60e51b8152600401808060200182810382526029815260200180612b5c6029913960400191505060405180910390fd5b611b1a611374565b6001600160a01b0316836001600160a01b031614158015611b545750611b3e611374565b6001600160a01b0316826001600160a01b031614155b15611b9a57601754811115611b9a5760405162461bcd60e51b8152600401808060200182810382526028815260200180612aab6028913960400191505060405180910390fd5b6000611ba53061125e565b60185490915081108015908190611bc65750601954600160a01b900460ff16155b8015611c0457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611c195750601954600160a81b900460ff165b15611c2c576018549150611c2c82611ede565b6001600160a01b03851660009081526006602052604090205460019060ff1680611c6e57506001600160a01b03851660009081526006602052604090205460ff165b15611c77575060005b611c8386868684611f30565b505050505050565b60008184841115611d1a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cdf578181015183820152602001611cc7565b50505050905090810190601f168015611d0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000611d2f6120a4565b9092509050611d3e8282611d45565b9250505090565b6000611d8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612207565b9392505050565b600082820183811015611d87576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806000806000806000806000806000611e028c61226c565b93509350935093506000806000611e238f878787611e1e611d22565b6122c1565b919f509d509b509599509397509195509350505050919395979092949650565b6000611d8783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c8b565b600082611e9457506000610ac3565b82820282848281611ea157fe5b0414611d875760405162461bcd60e51b8152600401808060200182810382526021815260200180612ad36021913960400191505060405180910390fd5b6019805460ff60a01b1916600160a01b179055611efa81612323565b600d54611f079047611d8e565b600d55601954611f20906001600160a01b031647612532565b506019805460ff60a01b19169055565b80611f3d57611f3d61256d565b6001600160a01b03841660009081526007602052604090205460ff168015611f7e57506001600160a01b03831660009081526007602052604090205460ff16155b15611f9357611f8e8484846125b6565b612091565b6001600160a01b03841660009081526007602052604090205460ff16158015611fd457506001600160a01b03831660009081526007602052604090205460ff165b15611fe457611f8e848484612704565b6001600160a01b03841660009081526007602052604090205460ff1615801561202657506001600160a01b03831660009081526007602052604090205460ff16155b1561203657611f8e8484846127d2565b6001600160a01b03841660009081526007602052604090205460ff16801561207657506001600160a01b03831660009081526007602052604090205460ff165b1561208657611f8e84848461283b565b6120918484846127d2565b8061209e5761209e6128d3565b50505050565b600a546009546000918291825b6008548110156121d5578260036000600884815481106120cd57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612132575081600460006008848154811061210b57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561214957600a5460095494509450505050612203565b612189600360006008848154811061215d57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611e43565b92506121cb600460006008848154811061219f57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611e43565b91506001016120b1565b50600954600a546121e591611d45565b8210156121fd57600a54600954935093505050612203565b90925090505b9091565b600081836122565760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611cdf578181015183820152602001611cc7565b50600083858161226257fe5b0495945050505050565b600080600080600061227d866128e7565b9050600061228a87612903565b905060006122978861291f565b905060006122b1826122ab85818d89611e43565b90611e43565b9993985091965094509092505050565b60008080806122d08986611e85565b905060006122de8987611e85565b905060006122ec8988611e85565b905060006122fa8989611e85565b9050600061230e826122ab85818989611e43565b949d949c50929a509298505050505050505050565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061235157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ca57600080fd5b505afa1580156123de573d6000803e3d6000fd5b505050506040513d60208110156123f457600080fd5b505181518290600190811061240557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612450307f00000000000000000000000000000000000000000000000000000000000000008461195d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156124f55781810151838201526020016124dd565b505050509050019650505050505050600060405180830381600087803b15801561251e57600080fd5b505af1158015611c83573d6000803e3d6000fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612568573d6000803e3d6000fd5b505050565b60115415801561257d5750601354155b80156125895750601554155b15612593576125b4565b60118054601255601380546014556015805460165560009283905590829055555b565b60006125c0611d22565b905060008060008060008060006125d689611de8565b965096509650965096509650965060006125f98984611e8590919063ffffffff16565b6001600160a01b038d1660009081526004602052604090205490915061261f908b611e43565b6001600160a01b038d1660009081526004602090815260408083209390935560039052205461264e9089611e43565b6001600160a01b03808e1660009081526003602052604080822093909355908d168152205461267d9088611d8e565b6001600160a01b038c1660009081526003602052604090205561269f8261293b565b6126ab868286866129c3565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b600061270e611d22565b9050600080600080600080600061272489611de8565b965096509650965096509650965060006127478984611e8590919063ffffffff16565b6001600160a01b038d1660009081526003602052604090205490915061276d9089611e43565b6001600160a01b03808e16600090815260036020908152604080832094909455918e168152600490915220546127a39086611d8e565b6001600160a01b038c1660009081526004602090815260408083209390935560039052205461267d9088611d8e565b60006127dc611d22565b905060008060008060008060006127f289611de8565b965096509650965096509650965060006128158984611e8590919063ffffffff16565b6001600160a01b038d1660009081526003602052604090205490915061264e9089611e43565b6000612845611d22565b9050600080600080600080600061285b89611de8565b9650965096509650965096509650600061287e8984611e8590919063ffffffff16565b6001600160a01b038d166000908152600460205260409020549091506128a4908b611e43565b6001600160a01b038d1660009081526004602090815260408083209390935560039052205461276d9089611e43565b601254601155601454601355601654601555565b6000610ac36064610f5960115485611e8590919063ffffffff16565b6000610ac36064610f5960135485611e8590919063ffffffff16565b6000610ac36064610f5960155485611e8590919063ffffffff16565b6000612945611d22565b905060006129538383611e85565b306000908152600360205260409020549091506129709082611d8e565b3060009081526003602090815260408083209390935560079052205460ff161561256857306000908152600460205260409020546129ae9084611d8e565b30600090815260046020526040902055505050565b6129dc836122ab86600a54611e4390919063ffffffff16565b600a55600b546129ec9083611d8e565b600b55600c546129fc9082611d8e565b600c55600954612a0c9082611e43565b6009555050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204123b3d58eb0971e8f1ae55c96f4e9468ea5b38cdb232583d985f98447fa9e5964736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106102765760003560e01c8063557ed1ba1161014f578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e146108ae578063ea2f0b37146108e9578063f0f165af1461091c578063f13b01f214610946578063f2fde38b14610970578063faf38f62146109a35761027d565b8063a9059cbb146107cb578063afcf2fc414610804578063c0b0fda214610819578063c49b9a801461082e578063cea269581461085a578063dd467064146108845761027d565b806388f820201161011357806388f820201461070b5780638da5cb5b1461073e57806395d89b4114610753578063a073d37f14610768578063a457c2d71461077d578063a69df4b5146107b65761027d565b8063557ed1ba14610684578063602bc62b1461069957806370a08231146106ae578063715018a6146106e15780637d1db4a5146106f65761027d565b80633b124fe7116101e85780634549b039116101ac5780634549b039146105ad57806349bd5a5e146105df5780634a74bb02146105f457806352390c02146106095780635342acb41461063c57806353fdfe3a1461066f5761027d565b80633b124fe7146104f65780633bd5d1731461050b5780633c9f861d146105355780633f3cf56c1461054a578063437823ec1461057a5761027d565b806318160ddd1161023a57806318160ddd146103dd57806323b872dd146103f25780632d83811914610435578063313ce5671461045f5780633685d4191461048a57806339509351146104bd5761027d565b8063061c82d01461028257806306fdde03146102ae578063095ea7b31461033857806313114a9d146103855780631694505e146103ac5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102ac600480360360208110156102a557600080fd5b50356109b8565b005b3480156102ba57600080fd5b506102c3610a15565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102fd5781810151838201526020016102e5565b50505050905090810190601f16801561032a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034457600080fd5b506103716004803603604081101561035b57600080fd5b506001600160a01b038135169060200135610aab565b604080519115158252519081900360200190f35b34801561039157600080fd5b5061039a610ac9565b60408051918252519081900360200190f35b3480156103b857600080fd5b506103c1610acf565b604080516001600160a01b039092168252519081900360200190f35b3480156103e957600080fd5b5061039a610af3565b3480156103fe57600080fd5b506103716004803603606081101561041557600080fd5b506001600160a01b03813581169160208101359091169060400135610af9565b34801561044157600080fd5b5061039a6004803603602081101561045857600080fd5b5035610b80565b34801561046b57600080fd5b50610474610be2565b6040805160ff9092168252519081900360200190f35b34801561049657600080fd5b506102ac600480360360208110156104ad57600080fd5b50356001600160a01b0316610beb565b3480156104c957600080fd5b50610371600480360360408110156104e057600080fd5b506001600160a01b038135169060200135610dac565b34801561050257600080fd5b5061039a610dfa565b34801561051757600080fd5b506102ac6004803603602081101561052e57600080fd5b5035610e00565b34801561054157600080fd5b5061039a610edc565b34801561055657600080fd5b506102ac6004803603604081101561056d57600080fd5b5080359060200135610ee2565b34801561058657600080fd5b506102ac6004803603602081101561059d57600080fd5b50356001600160a01b0316610f66565b3480156105b957600080fd5b5061039a600480360360408110156105d057600080fd5b50803590602001351515610fe2565b3480156105eb57600080fd5b506103c1611076565b34801561060057600080fd5b5061037161109a565b34801561061557600080fd5b506102ac6004803603602081101561062c57600080fd5b50356001600160a01b03166110aa565b34801561064857600080fd5b506103716004803603602081101561065f57600080fd5b50356001600160a01b0316611230565b34801561067b57600080fd5b5061039a61124e565b34801561069057600080fd5b5061039a611254565b3480156106a557600080fd5b5061039a611258565b3480156106ba57600080fd5b5061039a600480360360208110156106d157600080fd5b50356001600160a01b031661125e565b3480156106ed57600080fd5b506102ac6112c0565b34801561070257600080fd5b5061039a611350565b34801561071757600080fd5b506103716004803603602081101561072e57600080fd5b50356001600160a01b0316611356565b34801561074a57600080fd5b506103c1611374565b34801561075f57600080fd5b506102c3611383565b34801561077457600080fd5b5061039a6113e4565b34801561078957600080fd5b50610371600480360360408110156107a057600080fd5b506001600160a01b0381351690602001356113ea565b3480156107c257600080fd5b506102ac611452565b3480156107d757600080fd5b50610371600480360360408110156107ee57600080fd5b506001600160a01b038135169060200135611540565b34801561081057600080fd5b506103c1611554565b34801561082557600080fd5b5061039a611563565b34801561083a57600080fd5b506102ac6004803603602081101561085157600080fd5b50351515611569565b34801561086657600080fd5b506102ac6004803603602081101561087d57600080fd5b5035611614565b34801561089057600080fd5b506102ac600480360360208110156108a757600080fd5b5035611671565b3480156108ba57600080fd5b5061039a600480360360408110156108d157600080fd5b506001600160a01b038135811691602001351661170f565b3480156108f557600080fd5b506102ac6004803603602081101561090c57600080fd5b50356001600160a01b031661173a565b34801561092857600080fd5b506102ac6004803603602081101561093f57600080fd5b50356117b3565b34801561095257600080fd5b506102ac6004803603602081101561096957600080fd5b5035611810565b34801561097c57600080fd5b506102ac6004803603602081101561099357600080fd5b50356001600160a01b031661186d565b3480156109af57600080fd5b5061039a611953565b6109c0611959565b6000546001600160a01b03908116911614610a10576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b601155565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610aa15780601f10610a7657610100808354040283529160200191610aa1565b820191906000526020600020905b815481529060010190602001808311610a8457829003601f168201915b5050505050905090565b6000610abf610ab8611959565b848461195d565b5060015b92915050565b600b5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60095490565b6000610b06848484611a49565b610b7684610b12611959565b610b7185604051806060016040528060288152602001612af4602891396001600160a01b038a16600090815260056020526040812090610b50611959565b6001600160a01b031681526020810191909152604001600020549190611c8b565b61195d565b5060019392505050565b6000600a54821115610bc35760405162461bcd60e51b815260040180806020018281038252602a815260200180612a39602a913960400191505060405180910390fd5b6000610bcd611d22565b9050610bd98382611d45565b9150505b919050565b60105460ff1690565b610bf3611959565b6000546001600160a01b03908116911614610c43576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610cb0576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015610da857816001600160a01b031660088281548110610cd457fe5b6000918252602090912001546001600160a01b03161415610da057600880546000198101908110610d0157fe5b600091825260209091200154600880546001600160a01b039092169183908110610d2757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610d7957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610da8565b600101610cb3565b5050565b6000610abf610db9611959565b84610b718560056000610dca611959565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611d8e565b60115481565b6000610e0a611959565b6001600160a01b03811660009081526007602052604090205490915060ff1615610e655760405162461bcd60e51b815260040180806020018281038252602c815260200180612bce602c913960400191505060405180910390fd5b6000610e7083611de8565b5050506001600160a01b038616600090815260036020526040902054939450610e9e93925084915050611e43565b6001600160a01b038316600090815260036020526040902055600a54610ec49082611e43565b600a55600b54610ed49084611d8e565b600b55505050565b600c5490565b610eea611959565b6000546001600160a01b03908116911614610f3a576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b610f5f81600201600a0a610f5984600954611e8590919063ffffffff16565b90611d45565b6017555050565b610f6e611959565b6000546001600160a01b03908116911614610fbe576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b600060095483111561103b576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161105b57600061104b84611de8565b50949650610ac395505050505050565b600061106684611de8565b50939650610ac395505050505050565b7f00000000000000000000000036c1e71c6f0e93e468b63b78e017504ca099fdd381565b601954600160a81b900460ff1681565b6110b2611959565b6000546001600160a01b03908116911614611102576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff1615611170576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156111ca576001600160a01b0381166000908152600360205260409020546111b090610b80565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b600d5490565b4290565b60025490565b6001600160a01b03811660009081526007602052604081205460ff161561129e57506001600160a01b038116600090815260046020526040902054610bdd565b6001600160a01b038216600090815260036020526040902054610ac390610b80565b6112c8611959565b6000546001600160a01b03908116911614611318576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020612b3c833981519152908390a3600080546001600160a01b0319169055565b60175481565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610aa15780601f10610a7657610100808354040283529160200191610aa1565b60185490565b6000610abf6113f7611959565b84610b7185604051806060016040528060258152602001612c1d6025913960056000611421611959565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611c8b565b6001546001600160a01b0316331461149b5760405162461bcd60e51b8152600401808060200182810382526023815260200180612bfa6023913960400191505060405180910390fd5b60025442116114f1576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b039384169390911691600080516020612b3c83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610abf61154d611959565b8484611a49565b6019546001600160a01b031681565b60135481565b611571611959565b6000546001600160a01b039081169116146115c1576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b60198054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b61161c611959565b6000546001600160a01b0390811691161461166c576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b601355565b611679611959565b6000546001600160a01b039081169116146116c9576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b038416179091551681554282016002556040518190600080516020612b3c833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611742611959565b6000546001600160a01b03908116911614611792576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19169055565b6117bb611959565b6000546001600160a01b0390811691161461180b576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b601855565b611818611959565b6000546001600160a01b03908116911614611868576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b601555565b611875611959565b6000546001600160a01b039081169116146118c5576040805162461bcd60e51b81526020600482018190526024820152600080516020612b1c833981519152604482015290519081900360640190fd5b6001600160a01b03811661190a5760405162461bcd60e51b8152600401808060200182810382526026815260200180612a636026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020612b3c83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60155481565b3390565b6001600160a01b0383166119a25760405162461bcd60e51b8152600401808060200182810382526024815260200180612baa6024913960400191505060405180910390fd5b6001600160a01b0382166119e75760405162461bcd60e51b8152600401808060200182810382526022815260200180612a896022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611a8e5760405162461bcd60e51b8152600401808060200182810382526025815260200180612b856025913960400191505060405180910390fd5b6001600160a01b038216611ad35760405162461bcd60e51b8152600401808060200182810382526023815260200180612a166023913960400191505060405180910390fd5b60008111611b125760405162461bcd60e51b8152600401808060200182810382526029815260200180612b5c6029913960400191505060405180910390fd5b611b1a611374565b6001600160a01b0316836001600160a01b031614158015611b545750611b3e611374565b6001600160a01b0316826001600160a01b031614155b15611b9a57601754811115611b9a5760405162461bcd60e51b8152600401808060200182810382526028815260200180612aab6028913960400191505060405180910390fd5b6000611ba53061125e565b60185490915081108015908190611bc65750601954600160a01b900460ff16155b8015611c0457507f00000000000000000000000036c1e71c6f0e93e468b63b78e017504ca099fdd36001600160a01b0316856001600160a01b031614155b8015611c195750601954600160a81b900460ff165b15611c2c576018549150611c2c82611ede565b6001600160a01b03851660009081526006602052604090205460019060ff1680611c6e57506001600160a01b03851660009081526006602052604090205460ff165b15611c77575060005b611c8386868684611f30565b505050505050565b60008184841115611d1a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cdf578181015183820152602001611cc7565b50505050905090810190601f168015611d0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000611d2f6120a4565b9092509050611d3e8282611d45565b9250505090565b6000611d8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612207565b9392505050565b600082820183811015611d87576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806000806000806000806000806000611e028c61226c565b93509350935093506000806000611e238f878787611e1e611d22565b6122c1565b919f509d509b509599509397509195509350505050919395979092949650565b6000611d8783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c8b565b600082611e9457506000610ac3565b82820282848281611ea157fe5b0414611d875760405162461bcd60e51b8152600401808060200182810382526021815260200180612ad36021913960400191505060405180910390fd5b6019805460ff60a01b1916600160a01b179055611efa81612323565b600d54611f079047611d8e565b600d55601954611f20906001600160a01b031647612532565b506019805460ff60a01b19169055565b80611f3d57611f3d61256d565b6001600160a01b03841660009081526007602052604090205460ff168015611f7e57506001600160a01b03831660009081526007602052604090205460ff16155b15611f9357611f8e8484846125b6565b612091565b6001600160a01b03841660009081526007602052604090205460ff16158015611fd457506001600160a01b03831660009081526007602052604090205460ff165b15611fe457611f8e848484612704565b6001600160a01b03841660009081526007602052604090205460ff1615801561202657506001600160a01b03831660009081526007602052604090205460ff16155b1561203657611f8e8484846127d2565b6001600160a01b03841660009081526007602052604090205460ff16801561207657506001600160a01b03831660009081526007602052604090205460ff165b1561208657611f8e84848461283b565b6120918484846127d2565b8061209e5761209e6128d3565b50505050565b600a546009546000918291825b6008548110156121d5578260036000600884815481106120cd57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612132575081600460006008848154811061210b57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561214957600a5460095494509450505050612203565b612189600360006008848154811061215d57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611e43565b92506121cb600460006008848154811061219f57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611e43565b91506001016120b1565b50600954600a546121e591611d45565b8210156121fd57600a54600954935093505050612203565b90925090505b9091565b600081836122565760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611cdf578181015183820152602001611cc7565b50600083858161226257fe5b0495945050505050565b600080600080600061227d866128e7565b9050600061228a87612903565b905060006122978861291f565b905060006122b1826122ab85818d89611e43565b90611e43565b9993985091965094509092505050565b60008080806122d08986611e85565b905060006122de8987611e85565b905060006122ec8988611e85565b905060006122fa8989611e85565b9050600061230e826122ab85818989611e43565b949d949c50929a509298505050505050505050565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061235157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ca57600080fd5b505afa1580156123de573d6000803e3d6000fd5b505050506040513d60208110156123f457600080fd5b505181518290600190811061240557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612450307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461195d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156124f55781810151838201526020016124dd565b505050509050019650505050505050600060405180830381600087803b15801561251e57600080fd5b505af1158015611c83573d6000803e3d6000fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612568573d6000803e3d6000fd5b505050565b60115415801561257d5750601354155b80156125895750601554155b15612593576125b4565b60118054601255601380546014556015805460165560009283905590829055555b565b60006125c0611d22565b905060008060008060008060006125d689611de8565b965096509650965096509650965060006125f98984611e8590919063ffffffff16565b6001600160a01b038d1660009081526004602052604090205490915061261f908b611e43565b6001600160a01b038d1660009081526004602090815260408083209390935560039052205461264e9089611e43565b6001600160a01b03808e1660009081526003602052604080822093909355908d168152205461267d9088611d8e565b6001600160a01b038c1660009081526003602052604090205561269f8261293b565b6126ab868286866129c3565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b600061270e611d22565b9050600080600080600080600061272489611de8565b965096509650965096509650965060006127478984611e8590919063ffffffff16565b6001600160a01b038d1660009081526003602052604090205490915061276d9089611e43565b6001600160a01b03808e16600090815260036020908152604080832094909455918e168152600490915220546127a39086611d8e565b6001600160a01b038c1660009081526004602090815260408083209390935560039052205461267d9088611d8e565b60006127dc611d22565b905060008060008060008060006127f289611de8565b965096509650965096509650965060006128158984611e8590919063ffffffff16565b6001600160a01b038d1660009081526003602052604090205490915061264e9089611e43565b6000612845611d22565b9050600080600080600080600061285b89611de8565b9650965096509650965096509650600061287e8984611e8590919063ffffffff16565b6001600160a01b038d166000908152600460205260409020549091506128a4908b611e43565b6001600160a01b038d1660009081526004602090815260408083209390935560039052205461276d9089611e43565b601254601155601454601355601654601555565b6000610ac36064610f5960115485611e8590919063ffffffff16565b6000610ac36064610f5960135485611e8590919063ffffffff16565b6000610ac36064610f5960155485611e8590919063ffffffff16565b6000612945611d22565b905060006129538383611e85565b306000908152600360205260409020549091506129709082611d8e565b3060009081526003602090815260408083209390935560079052205460ff161561256857306000908152600460205260409020546129ae9084611d8e565b30600090815260046020526040902055505050565b6129dc836122ab86600a54611e4390919063ffffffff16565b600a55600b546129ec9083611d8e565b600b55600c546129fc9082611d8e565b600c55600954612a0c9082611e43565b6009555050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204123b3d58eb0971e8f1ae55c96f4e9468ea5b38cdb232583d985f98447fa9e5964736f6c634300060c0033
Deployed Bytecode Sourcemap
15414:18514:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32760:98;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32760:98:0;;:::i;:::-;;17895:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18807:161;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18807:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19928:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16770:51;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;16770:51:0;;;;;;;;;;;;;;18172:95;;;;;;;;;;;;;:::i;18976:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18976:313:0;;;;;;;;;;;;;;;;;:::i;21232:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21232:253:0;;:::i;18081:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21948:479;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21948:479:0;-1:-1:-1;;;;;21948:479:0;;:::i;19297:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19297:218:0;;;;;;;;:::i;16240:26::-;;;;;;;;;;;;;:::i;20396:378::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20396:378:0;;:::i;20027:88::-;;;;;;;;;;;;;:::i;33114:212::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33114:212:0;;;;;;;:::i;32515:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32515:111:0;-1:-1:-1;;;;;32515:111:0;;:::i;20786:438::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20786:438:0;;;;;;;;;:::i;16828:38::-;;;;;;;;;;;;;:::i;16907:41::-;;;;;;;;;;;;;:::i;21493:447::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21493:447:0;-1:-1:-1;;;;;21493:447:0;;:::i;32380:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32380:123:0;-1:-1:-1;;;;;32380:123:0;;:::i;20127:133::-;;;;;;;;;;;;;:::i;6838:78::-;;;;;;;;;;;;;:::i;6634:90::-;;;;;;;;;;;;;:::i;18275:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18275:198:0;-1:-1:-1;;;;;18275:198:0;;:::i;6226:148::-;;;;;;;;;;;;;:::i;16525:47::-;;;;;;;;;;;;;:::i;19800:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19800:120:0;-1:-1:-1;;;;;19800:120:0;;:::i;6012:79::-;;;;;;;;;;;;;:::i;17986:87::-;;;;;;;;;;;;;:::i;20268:120::-;;;;;;;;;;;;;:::i;19523:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19523:269:0;;;;;;;;:::i;7150:293::-;;;;;;;;;;;;;:::i;18481:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18481:167:0;;;;;;;;:::i;16652:82::-;;;;;;;;;;;;;:::i;16327:27::-;;;;;;;;;;;;;:::i;33508:171::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33508:171:0;;;;:::i;32870:102::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32870:102:0;;:::i;6924:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6924:214:0;;:::i;18656:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18656:143:0;;;;;;;;;;:::i;32638:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32638:110:0;-1:-1:-1;;;;;32638:110:0;;:::i;33334:166::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33334:166:0;;:::i;32984:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32984:118:0;;:::i;6382:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6382:244:0;-1:-1:-1;;;;;6382:244:0;;:::i;16423:31::-;;;;;;;;;;;;;:::i;32760:98::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;32834:7:::1;:16:::0;32760:98::o;17895:83::-;17965:5;17958:12;;;;;;;;-1:-1:-1;;17958:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17932:13;;17958:12;;17965:5;;17958:12;;17965:5;17958:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17895:83;:::o;18807:161::-;18882:4;18899:39;18908:12;:10;:12::i;:::-;18922:7;18931:6;18899:8;:39::i;:::-;-1:-1:-1;18956:4:0;18807:161;;;;;:::o;19928:87::-;19997:10;;19928:87;:::o;16770:51::-;;;:::o;18172:95::-;18252:7;;18172:95;:::o;18976:313::-;19074:4;19091:36;19101:6;19109:9;19120:6;19091:9;:36::i;:::-;19138:121;19147:6;19155:12;:10;:12::i;:::-;19169:89;19207:6;19169:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19169:19:0;;;;;;:11;:19;;;;;;19189:12;:10;:12::i;:::-;-1:-1:-1;;;;;19169:33:0;;;;;;;;;;;;-1:-1:-1;19169:33:0;;;:89;:37;:89::i;:::-;19138:8;:121::i;:::-;-1:-1:-1;19277:4:0;18976:313;;;;;:::o;21232:253::-;21298:7;21337;;21326;:18;;21318:73;;;;-1:-1:-1;;;21318:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21402:19;21425:10;:8;:10::i;:::-;21402:33;-1:-1:-1;21453:24:0;:7;21402:33;21453:11;:24::i;:::-;21446:31;;;21232:253;;;;:::o;18081:83::-;18147:9;;;;18081:83;:::o;21948:479::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22030:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22022:60;;;::::0;;-1:-1:-1;;;22022:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22098:9;22093:327;22117:9;:16:::0;22113:20;::::1;22093:327;;;22175:7;-1:-1:-1::0;;;;;22159:23:0::1;:9;22169:1;22159:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22159:12:0::1;:23;22155:254;;;22218:9;22228:16:::0;;-1:-1:-1;;22228:20:0;;;22218:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;22203:9:::1;:12:::0;;-1:-1:-1;;;;;22218:31:0;;::::1;::::0;22213:1;;22203:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22203:46:0::1;-1:-1:-1::0;;;;;22203:46:0;;::::1;;::::0;;22268:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22307:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22307:28:0::1;::::0;;22354:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22354:15:0;;;;;-1:-1:-1;;;;;;22354:15:0::1;::::0;;;;;22388:5:::1;;22155:254;22135:3;;22093:327;;;;21948:479:::0;:::o;19297:218::-;19385:4;19402:83;19411:12;:10;:12::i;:::-;19425:7;19434:50;19473:10;19434:11;:25;19446:12;:10;:12::i;:::-;-1:-1:-1;;;;;19434:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;19434:25:0;;;:34;;;;;;;;;;;:38;:50::i;16240:26::-;;;;:::o;20396:378::-;20448:14;20465:12;:10;:12::i;:::-;-1:-1:-1;;;;;20497:19:0;;;;;;:11;:19;;;;;;20448:29;;-1:-1:-1;20497:19:0;;20496:20;20488:77;;;;-1:-1:-1;;;20488:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20577:15;20602:19;20613:7;20602:10;:19::i;:::-;-1:-1:-1;;;;;;;;20650:15:0;;;;;;:7;:15;;;;;;20576:45;;-1:-1:-1;20650:28:0;;:15;-1:-1:-1;20576:45:0;;-1:-1:-1;;20650:19:0;:28::i;:::-;-1:-1:-1;;;;;20632:15:0;;;;;;:7;:15;;;;;:46;20699:7;;:20;;20711:7;20699:11;:20::i;:::-;20689:7;:30;20743:10;;:23;;20758:7;20743:14;:23::i;:::-;20730:10;:36;-1:-1:-1;;;20396:378:0:o;20027:88::-;20096:11;;20027:88;:::o;33114:212::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;33231:87:::1;33288:13;33305:1;33280:26;33275:2;:32;33231:25;33243:12;33231:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:87::i;:::-;33216:12;:102:::0;-1:-1:-1;;33114:212:0:o;32515:111::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32584:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;32584:34:0::1;32614:4;32584:34;::::0;;32515:111::o;20786:438::-;20876:7;20915;;20904;:18;;20896:62;;;;;-1:-1:-1;;;20896:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20974:17;20969:248;;21009:15;21034:19;21045:7;21034:10;:19::i;:::-;-1:-1:-1;21008:45:0;;-1:-1:-1;21068:14:0;;-1:-1:-1;;;;;;21068:14:0;20969:248;21117:23;21149:19;21160:7;21149:10;:19::i;:::-;-1:-1:-1;21115:53:0;;-1:-1:-1;21183:22:0;;-1:-1:-1;;;;;;21183:22:0;16828:38;;;:::o;16907:41::-;;;-1:-1:-1;;;16907:41:0;;;;;:::o;21493:447::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21690:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21689:21;21681:61;;;::::0;;-1:-1:-1;;;21681:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;21756:16:0;::::1;21775:1;21756:16:::0;;;:7:::1;:16;::::0;;;;;:20;21753:108:::1;;-1:-1:-1::0;;;;;21832:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;21812:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;21793:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;21753:108:::1;-1:-1:-1::0;;;;;21871:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;21871:27:0::1;21894:4;21871:27:::0;;::::1;::::0;;;21909:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;21909:23:0::1;::::0;;::::1;::::0;;21493:447::o;32380:123::-;-1:-1:-1;;;;;32468:27:0;32444:4;32468:27;;;:18;:27;;;;;;;;;32380:123::o;20127:133::-;20237:15;;20127:133;:::o;6838:78::-;6905:3;6838:78;:::o;6634:90::-;6707:9;;6634:90;:::o;18275:198::-;-1:-1:-1;;;;;18365:20:0;;18341:7;18365:20;;;:11;:20;;;;;;;;18361:49;;;-1:-1:-1;;;;;;18394:16:0;;;;;;:7;:16;;;;;;18387:23;;18361:49;-1:-1:-1;;;;;18448:16:0;;;;;;:7;:16;;;;;;18428:37;;:19;:37::i;6226:148::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;6333:1:::1;6317:6:::0;;6296:40:::1;::::0;-1:-1:-1;;;;;6317:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6296:40:0;6333:1;;6296:40:::1;6364:1;6347:19:::0;;-1:-1:-1;;;;;;6347:19:0::1;::::0;;6226:148::o;16525:47::-;;;;:::o;19800:120::-;-1:-1:-1;;;;;19892:20:0;19868:4;19892:20;;;:11;:20;;;;;;;;;19800:120::o;6012:79::-;6050:7;6077:6;-1:-1:-1;;;;;6077:6:0;6012:79;:::o;17986:87::-;18058:7;18051:14;;;;;;;;-1:-1:-1;;18051:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18025:13;;18051:14;;18058:7;;18051:14;;18058:7;18051:14;;;;;;;;;;;;;;;;;;;;;;;;20268:120;20357:23;;20268:120;:::o;19523:269::-;19616:4;19633:129;19642:12;:10;:12::i;:::-;19656:7;19665:96;19704:15;19665:96;;;;;;;;;;;;;;;;;:11;:25;19677:12;:10;:12::i;:::-;-1:-1:-1;;;;;19665:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;19665:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;7150:293::-;7202:14;;-1:-1:-1;;;;;7202:14:0;7220:10;7202:28;7194:76;;;;-1:-1:-1;;;7194:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7295:9;;7289:3;:15;7281:60;;;;;-1:-1:-1;;;7281:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7386:14;;;7378:6;;7357:44;;-1:-1:-1;;;;;7386:14:0;;;;7378:6;;;;-1:-1:-1;;;;;;;;;;;7357:44:0;;7421:14;;;7412:23;;-1:-1:-1;;;;;;7412:23:0;-1:-1:-1;;;;;7421:14:0;;;7412:23;;;;;;7150:293::o;18481:167::-;18559:4;18576:42;18586:12;:10;:12::i;:::-;18600:9;18611:6;18576:9;:42::i;16652:82::-;;;-1:-1:-1;;;;;16652:82:0;;:::o;16327:27::-;;;;:::o;33508:171::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;33585:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;33585:32:0;::::1;-1:-1:-1::0;;;;33585:32:0;;::::1;::::0;;;::::1;::::0;;;33633:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;33508:171:::0;:::o;32870:102::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;32946:8:::1;:18:::0;32870:102::o;6924:214::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;7005:6:::1;::::0;;;6988:23;;-1:-1:-1;;;;;;6988:23:0;;::::1;-1:-1:-1::0;;;;;7005:6:0;::::1;6988:23;::::0;;;7022:19:::1;::::0;;7064:3:::1;:10:::0;::::1;7052:9;:22:::0;7090:40:::1;::::0;7005:6;;-1:-1:-1;;;;;;;;;;;7090:40:0;7005:6;;7090:40:::1;6924:214:::0;:::o;18656:143::-;-1:-1:-1;;;;;18764:18:0;;;18737:7;18764:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18656:143::o;32638:110::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32705:27:0::1;32735:5;32705:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;32705:35:0::1;::::0;;32638:110::o;33334:166::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;33442:23:::1;:50:::0;33334:166::o;32984:118::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;33068:12:::1;:26:::0;32984:118::o;6382:244::-;6149:12;:10;:12::i;:::-;6139:6;;-1:-1:-1;;;;;6139:6:0;;;:22;;;6131:67;;;;;-1:-1:-1;;;6131:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6131:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6471:22:0;::::1;6463:73;;;;-1:-1:-1::0;;;6463:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6573:6;::::0;;6552:38:::1;::::0;-1:-1:-1;;;;;6552:38:0;;::::1;::::0;6573:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6552:38:0;::::1;6601:6;:17:::0;;-1:-1:-1;;;;;;6601:17:0::1;-1:-1:-1::0;;;;;6601:17:0;;;::::1;::::0;;;::::1;::::0;;6382:244::o;16423:31::-;;;;:::o;300:106::-;388:10;300:106;:::o;22435:337::-;-1:-1:-1;;;;;22528:19:0;;22520:68;;;;-1:-1:-1;;;22520:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22607:21:0;;22599:68;;;;-1:-1:-1;;;22599:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22680:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22732:32;;;;;;;;;;;;;;;;;22435:337;;;:::o;22780:1233::-;-1:-1:-1;;;;;22902:18:0;;22894:68;;;;-1:-1:-1;;;22894:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22981:16:0;;22973:64;;;;-1:-1:-1;;;22973:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23065:1;23056:6;:10;23048:64;;;;-1:-1:-1;;;23048:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23134:7;:5;:7::i;:::-;-1:-1:-1;;;;;23126:15:0;:4;-1:-1:-1;;;;;23126:15:0;;;:32;;;;;23151:7;:5;:7::i;:::-;-1:-1:-1;;;;;23145:13:0;:2;-1:-1:-1;;;;;23145:13:0;;;23126:32;23123:125;;;23191:12;;23181:6;:22;;23173:75;;;;-1:-1:-1;;;23173:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23263:28;23294:24;23312:4;23294:9;:24::i;:::-;23384:23;;23263:55;;-1:-1:-1;23360:47:0;;;;;;;23436:57;;-1:-1:-1;23477:16:0;;-1:-1:-1;;;23477:16:0;;;;23476:17;23436:57;:95;;;;;23518:13;-1:-1:-1;;;;;23510:21:0;:4;-1:-1:-1;;;;;23510:21:0;;;23436:95;:133;;;;-1:-1:-1;23548:21:0;;-1:-1:-1;;;23548:21:0;;;;23436:133;23418:287;;;23619:23;;23596:46;;23657:36;23672:20;23657:14;:36::i;:::-;-1:-1:-1;;;;;23854:24:0;;23727:12;23854:24;;;:18;:24;;;;;;23742:4;;23854:24;;;:50;;-1:-1:-1;;;;;;23882:22:0;;;;;;:18;:22;;;;;;;;23854:50;23851:96;;;-1:-1:-1;23930:5:0;23851:96;23967:38;23982:4;23987:2;23990:6;23997:7;23967:14;:38::i;:::-;22780:1233;;;;;;:::o;1702:192::-;1788:7;1824:12;1816:6;;;;1808:29;;;;-1:-1:-1;;;1808:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1860:5:0;;;1702:192::o;30253:163::-;30294:7;30315:15;30332;30351:19;:17;:19::i;:::-;30314:56;;-1:-1:-1;30314:56:0;-1:-1:-1;30388:20:0;30314:56;;30388:11;:20::i;:::-;30381:27;;;;30253:163;:::o;2162:132::-;2220:7;2247:39;2251:1;2254;2247:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2240:46;2162:132;-1:-1:-1;;;2162:132:0:o;1369:181::-;1427:7;1459:5;;;1483:6;;;;1475:46;;;;;-1:-1:-1;;;1475:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;28859:457;28918:7;28927;28936;28945;28954;28963;28972;28993:23;29018:12;29032:13;29047:18;29069:20;29081:7;29069:11;:20::i;:::-;28992:97;;;;;;;;29101:15;29118:23;29143:12;29159:57;29171:7;29180:4;29186:5;29193:10;29205;:8;:10::i;:::-;29159:11;:57::i;:::-;29100:116;;-1:-1:-1;29100:116:0;-1:-1:-1;29100:116:0;-1:-1:-1;29267:15:0;;-1:-1:-1;29284:4:0;;-1:-1:-1;29290:5:0;;-1:-1:-1;29297:10:0;-1:-1:-1;;;;28859:457:0;;;;;;;;;:::o;1558:136::-;1616:7;1643:43;1647:1;1650;1643:43;;;;;;;;;;;;;;;;;:3;:43::i;1902:250::-;1960:7;1984:6;1980:47;;-1:-1:-1;2014:1:0;2007:8;;1980:47;2051:5;;;2055:1;2051;:5;:1;2075:5;;;;;:10;2067:56;;;;-1:-1:-1;;;2067:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24021:271;17245:16;:23;;-1:-1:-1;;;;17245:23:0;-1:-1:-1;;;17245:23:0;;;24106:38:::1;24123:20:::0;24106:16:::1;:38::i;:::-;24174:15;::::0;:42:::1;::::0;24194:21:::1;24174:19;:42::i;:::-;24156:15;:60:::0;24246:14:::1;::::0;24227:57:::1;::::0;-1:-1:-1;;;;;24246:14:0::1;24262:21;24227:18;:57::i;:::-;-1:-1:-1::0;17291:16:0;:24;;-1:-1:-1;;;;17291:24:0;;;24021:271::o;24915:834::-;25026:7;25022:40;;25048:14;:12;:14::i;:::-;-1:-1:-1;;;;;25087:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;25111:22:0;;;;;;:11;:22;;;;;;;;25110:23;25087:46;25083:597;;;25150:48;25172:6;25180:9;25191:6;25150:21;:48::i;:::-;25083:597;;;-1:-1:-1;;;;;25221:19:0;;;;;;:11;:19;;;;;;;;25220:20;:46;;;;-1:-1:-1;;;;;;25244:22:0;;;;;;:11;:22;;;;;;;;25220:46;25216:464;;;25283:46;25303:6;25311:9;25322:6;25283:19;:46::i;25216:464::-;-1:-1:-1;;;;;25352:19:0;;;;;;:11;:19;;;;;;;;25351:20;:47;;;;-1:-1:-1;;;;;;25376:22:0;;;;;;:11;:22;;;;;;;;25375:23;25351:47;25347:333;;;25415:44;25433:6;25441:9;25452:6;25415:17;:44::i;25347:333::-;-1:-1:-1;;;;;25481:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;25504:22:0;;;;;;:11;:22;;;;;;;;25481:45;25477:203;;;25543:48;25565:6;25573:9;25584:6;25543:21;:48::i;25477:203::-;25624:44;25642:6;25650:9;25661:6;25624:17;:44::i;:::-;25704:7;25700:41;;25726:15;:13;:15::i;:::-;24915:834;;;;:::o;30424:561::-;30521:7;;30557;;30474;;;;;30581:289;30605:9;:16;30601:20;;30581:289;;;30671:7;30647;:21;30655:9;30665:1;30655:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30655:12:0;30647:21;;;;;;;;;;;;;:31;;:66;;;30706:7;30682;:21;30690:9;30700:1;30690:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30690:12:0;30682:21;;;;;;;;;;;;;:31;30647:66;30643:97;;;30723:7;;30732;;30715:25;;;;;;;;;30643:97;30765:34;30777:7;:21;30785:9;30795:1;30785:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30785:12:0;30777:21;;;;;;;;;;;;;30765:7;;:11;:34::i;:::-;30755:44;;30824:34;30836:7;:21;30844:9;30854:1;30844:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30844:12:0;30836:21;;;;;;;;;;;;;30824:7;;:11;:34::i;:::-;30814:44;-1:-1:-1;30623:3:0;;30581:289;;;-1:-1:-1;30906:7:0;;30894;;:20;;:11;:20::i;:::-;30884:7;:30;30880:61;;;30924:7;;30933;;30916:25;;;;;;;;30880:61;30960:7;;-1:-1:-1;30969:7:0;-1:-1:-1;30424:561:0;;;:::o;2302:278::-;2388:7;2423:12;2416:5;2408:28;;;;-1:-1:-1;;;2408:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:9;2463:1;2459;:5;;;;;;;2302:278;-1:-1:-1;;;;;2302:278:0:o;29324:409::-;29384:7;29393;29402;29411;29431:12;29446:24;29462:7;29446:15;:24::i;:::-;29431:39;;29481:13;29497:25;29514:7;29497:16;:25::i;:::-;29481:41;;29533:18;29554:30;29576:7;29554:21;:30::i;:::-;29533:51;-1:-1:-1;29595:23:0;29621:44;29533:51;29621:28;29643:5;29621:28;:7;29633:4;29621:11;:17::i;:::-;:21;;:28::i;:44::-;29595:70;29701:4;;-1:-1:-1;29707:5:0;;-1:-1:-1;29707:5:0;-1:-1:-1;29324:409:0;;-1:-1:-1;;;29324:409:0:o;29741:504::-;29871:7;;;;29927:24;:7;29939:11;29927;:24::i;:::-;29909:42;-1:-1:-1;29962:12:0;29977:21;:4;29986:11;29977:8;:21::i;:::-;29962:36;-1:-1:-1;30009:13:0;30025:22;:5;30035:11;30025:9;:22::i;:::-;30009:38;-1:-1:-1;30058:18:0;30079:27;:10;30094:11;30079:14;:27::i;:::-;30058:48;-1:-1:-1;30117:23:0;30143:44;30058:48;30143:28;30165:5;30143:28;:7;30155:4;30143:11;:17::i;:44::-;30206:7;;;;-1:-1:-1;30232:4:0;;-1:-1:-1;29741:504:0;;-1:-1:-1;;;;;;;;;29741:504:0:o;24300:605::-;24450:16;;;24464:1;24450:16;;;24426:21;24450:16;;;;;24426:21;24450:16;;;;;;;;;;-1:-1:-1;24450:16:0;24426:40;;24495:4;24477;24482:1;24477:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;24477:23:0;;;-1:-1:-1;;;;;24477:23:0;;;;;24521:15;-1:-1:-1;;;;;24521:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24521:22:0;24511:7;;:4;;24516:1;;24511:7;;;;;;;;;;;:32;-1:-1:-1;;;;;24511:32:0;;;-1:-1:-1;;;;;24511:32:0;;;;;24556:62;24573:4;24588:15;24606:11;24556:8;:62::i;:::-;24657:15;-1:-1:-1;;;;;24657:66:0;;24738:11;24764:1;24808:4;24835;24871:15;24657:240;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24657:240:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33697:124;33787:26;;-1:-1:-1;;;;;33787:18:0;;;:26;;;;;33806:6;;33787:26;;;;33806:6;33787:18;:26;;;;;;;;;;;;;;;;;;;;;33697:124;;:::o;31875:324::-;31921:7;;:12;:29;;;;-1:-1:-1;31937:8:0;;:13;31921:29;:50;;;;-1:-1:-1;31954:12:0;;:17;31921:50;31918:62;;;31973:7;;31918:62;32018:7;;;32000:15;:25;32055:8;;;32036:16;:27;32097:12;;;32074:20;:35;-1:-1:-1;32130:11:0;;;;32152:12;;;;32175:16;31875:324;:::o;27107:689::-;27209:19;27232:10;:8;:10::i;:::-;27209:33;;27254:15;27271:23;27296:12;27310:23;27335:12;27349:13;27364:18;27386:19;27397:7;27386:10;:19::i;:::-;27253:152;;;;;;;;;;;;;;27416:13;27433:22;27443:11;27433:5;:9;;:22;;;;:::i;:::-;-1:-1:-1;;;;;27484:15:0;;;;;;:7;:15;;;;;;27416:39;;-1:-1:-1;27484:28:0;;27504:7;27484:19;:28::i;:::-;-1:-1:-1;;;;;27466:15:0;;;;;;:7;:15;;;;;;;;:46;;;;27541:7;:15;;;;:28;;27561:7;27541:19;:28::i;:::-;-1:-1:-1;;;;;27523:15:0;;;;;;;:7;:15;;;;;;:46;;;;27601:18;;;;;;;:39;;27624:15;27601:22;:39::i;:::-;-1:-1:-1;;;;;27580:18:0;;;;;;:7;:18;;;;;:60;27654:26;27669:10;27654:14;:26::i;:::-;27691:37;27703:4;27709:5;27716:4;27722:5;27691:11;:37::i;:::-;27761:9;-1:-1:-1;;;;;27744:44:0;27753:6;-1:-1:-1;;;;;27744:44:0;;27772:15;27744:44;;;;;;;;;;;;;;;;;;27107:689;;;;;;;;;;;;:::o;26390:709::-;26490:19;26513:10;:8;:10::i;:::-;26490:33;;26535:15;26552:23;26577:12;26591:23;26616:12;26630:13;26645:18;26667:19;26678:7;26667:10;:19::i;:::-;26534:152;;;;;;;;;;;;;;26697:13;26714:22;26724:11;26714:5;:9;;:22;;;;:::i;:::-;-1:-1:-1;;;;;26765:15:0;;;;;;:7;:15;;;;;;26697:39;;-1:-1:-1;26765:28:0;;26785:7;26765:19;:28::i;:::-;-1:-1:-1;;;;;26747:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;26825:18;;;;;:7;:18;;;;;:39;;26848:15;26825:22;:39::i;:::-;-1:-1:-1;;;;;26804:18:0;;;;;;:7;:18;;;;;;;;:60;;;;26896:7;:18;;;;:39;;26919:15;26896:22;:39::i;25757:625::-;25855:19;25878:10;:8;:10::i;:::-;25855:33;;25900:15;25917:23;25942:12;25956:23;25981:12;25995:13;26010:18;26032:19;26043:7;26032:10;:19::i;:::-;25899:152;;;;;;;;;;;;;;26062:13;26079:22;26089:11;26079:5;:9;;:22;;;;:::i;:::-;-1:-1:-1;;;;;26130:15:0;;;;;;:7;:15;;;;;;26062:39;;-1:-1:-1;26130:28:0;;26150:7;26130:19;:28::i;27804:765::-;27906:19;27929:10;:8;:10::i;:::-;27906:33;;27951:15;27968:23;27993:12;28007:23;28032:12;28046:13;28061:18;28083:19;28094:7;28083:10;:19::i;:::-;27950:152;;;;;;;;;;;;;;28113:13;28130:22;28140:11;28130:5;:9;;:22;;;;:::i;:::-;-1:-1:-1;;;;;28181:15:0;;;;;;:7;:15;;;;;;28113:39;;-1:-1:-1;28181:28:0;;28201:7;28181:19;:28::i;:::-;-1:-1:-1;;;;;28163:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28238:7;:15;;;;:28;;28258:7;28238:19;:28::i;32211:161::-;32265:15;;32255:7;:25;32302:16;;32291:8;:27;32344:20;;32329:12;:35;32211:161::o;31364:154::-;31428:7;31455:55;31494:5;31455:20;31467:7;;31455;:11;;:20;;;;:::i;31530:156::-;31595:7;31622:56;31662:5;31622:21;31634:8;;31622:7;:11;;:21;;;;:::i;31698:165::-;31768:7;31795:60;31839:5;31795:25;31807:12;;31795:7;:11;;:25;;;;:::i;30997:355::-;31060:19;31083:10;:8;:10::i;:::-;31060:33;-1:-1:-1;31104:18:0;31125:27;:10;31060:33;31125:14;:27::i;:::-;31204:4;31188:22;;;;:7;:22;;;;;;31104:48;;-1:-1:-1;31188:38:0;;31104:48;31188:26;:38::i;:::-;31179:4;31163:22;;;;:7;:22;;;;;;;;:63;;;;31240:11;:26;;;;;;31237:107;;;31322:4;31306:22;;;;:7;:22;;;;;;:38;;31333:10;31306:26;:38::i;:::-;31297:4;31281:22;;;;:7;:22;;;;;:63;30997:355;;;:::o;28577:274::-;28685:28;28707:5;28685:17;28697:4;28685:7;;:11;;:17;;;;:::i;:28::-;28675:7;:38;28737:10;;:20;;28752:4;28737:14;:20::i;:::-;28724:10;:33;28782:11;;:22;;28798:5;28782:15;:22::i;:::-;28768:11;:36;28825:7;;:18;;28837:5;28825:11;:18::i;:::-;28815:7;:28;-1:-1:-1;;;;28577:274:0:o
Swarm Source
ipfs://4123b3d58eb0971e8f1ae55c96f4e9468ea5b38cdb232583d985f98447fa9e59
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.