ERC-20
Overview
Max Total Supply
119,700,000 FUTURE
Holders
12
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
118,734,516.173562594964661992 FUTUREValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FUTURECOIN
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-02 */ /** *Submitted for verification at BscScan.com on 2021-11-12 */ pragma solidity ^0.8.0; // SPDX-License-Identifier: Unlicensed interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be 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; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract FUTURECOIN 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 = 119700000 * 10**18; // 119.7 Million uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private constant _name = "FUTURECOIN"; string private constant _symbol = "FUTURE"; uint8 private constant _decimals = 18; uint256 public _taxFee = 0; // 4 -> 0.4% or 40 means 4% uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 0; // 4 -> 0.4% or 40 means 4% uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _charityFee = 0; uint256 private _previousCharityFee = _charityFee; uint256 public _teamFee = 0; // 3 -> 0.3% or 30 means 3% uint256 private _previousTeamFee = _teamFee; address public _charityWallet; address public _teamWallet; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = 500000 * 10**18; // 500k uint256 private constant numTokensSellToAddToLiquidity = 50000 * 10**18; struct TValues { uint256 tTransferAmount; uint256 tFee; uint256 tLiquidity; uint256 tCharity; uint256 tTeam; } struct FeeValues { uint256 rAmount; uint256 rTransferAmount; uint256 rFee; uint256 tTransferAmount; uint256 tFee; uint256 tLiquidity; uint256 tCharity; uint256 tTeam; uint256 rCharity; uint256 rTeam; } event Burn(address indexed sender, uint256 amount, address indexed to); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event SetCharityWallet(address owner, address newCharityWallet); event SetTeamWallet(address owner, address newTeamWallet); event CharityAmount(address user, uint256 amount); event TeamAmount(address user, uint256 amount); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor(address charityWallet, address teamWallet) { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _charityWallet = charityWallet; _teamWallet = teamWallet; excludeFromReward(charityWallet); excludeFromReward(teamWallet); emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isExcluded[sender], "Excluded addresses cannot call this function" ); FeeValues memory feeValues = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(feeValues.rAmount); _rTotal = _rTotal.sub(feeValues.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) { return _getValues(tAmount).rAmount; } else { return _getValues(tAmount).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 burn(uint256 amount) public onlyOwner returns (bool) { address callerAddress = _msgSender(); require( amount > _tOwned[callerAddress], "ERC20: burn amount exceeds balance" ); uint256 tAmount = amount; uint256 rAmount = tAmount.mul(_getRate()); _tokenTransfer(callerAddress, address(0), amount, false); _tTotal = _tTotal.sub(tAmount); _rTotal = _rTotal.sub(rAmount); emit Transfer(owner(), address(0), amount); return true; } function excludeFromReward(address account) public onlyOwner { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { FeeValues memory feeValues = _getValues(tAmount); _tOwned[_charityWallet] = _tOwned[_charityWallet].add( feeValues.tCharity ); _tOwned[_teamWallet] = _tOwned[_teamWallet].add(feeValues.tTeam); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(feeValues.rAmount); _tOwned[recipient] = _tOwned[recipient].add(feeValues.tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(feeValues.rTransferAmount); _takeLiquidity(feeValues.tLiquidity); _reflectFee( feeValues.rCharity, feeValues.rTeam, feeValues.rFee, feeValues.tFee ); emit Transfer(sender, recipient, feeValues.tTransferAmount); emit CharityAmount(msg.sender, feeValues.tCharity); emit TeamAmount(msg.sender, feeValues.tTeam); } 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 setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner { _liquidityFee = liquidityFee; } function setCharityFeePercentage(uint256 charityFee) external onlyOwner { _charityFee = charityFee; } function setTeamFeePercentage(uint256 teamFee) external onlyOwner { _teamFee = teamFee; } function setCharityWallet(address charityWallet) external onlyOwner { require( charityWallet != address(0), "FTC :: charity wallet not a zero address" ); _charityWallet = charityWallet; excludeFromReward(charityWallet); emit SetCharityWallet(msg.sender, charityWallet); } function setTeamWallet(address teamWallet) external onlyOwner { require( teamWallet != address(0), "FTC :: team wallet not a zero address" ); _teamWallet = teamWallet; excludeFromReward(teamWallet); emit SetTeamWallet(msg.sender, teamWallet); } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner { _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function withdraw() public onlyOwner { require( address(this).balance > 0, "No BNB stored at the contract address" ); payable(owner()).transfer(address(this).balance); } //to receive ETH from uniswapV2Router when swapping receive() external payable {} function _reflectFee( uint256 rCharity, uint256 rTeam, uint256 rFee, uint256 tFee ) private { _rTotal = _rTotal.sub(rFee).sub(rCharity).sub(rTeam); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (FeeValues memory) { TValues memory tValues = _getTValues(tAmount); ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 rCharity, uint256 rTeam ) = _getRValues( tAmount, tValues.tFee, tValues.tLiquidity, tValues.tCharity, tValues.tTeam, _getRate() ); return FeeValues({ rAmount: rAmount, rTransferAmount: rTransferAmount, rFee: rFee, tTransferAmount: tValues.tTransferAmount, tFee: tValues.tFee, tLiquidity: tValues.tLiquidity, tCharity: tValues.tCharity, tTeam: tValues.tTeam, rCharity: rCharity, rTeam: rTeam }); } function _getTValues(uint256 tAmount) private view returns (TValues memory) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tcharity = tAmount.mul(_charityFee).div(1000); uint256 tteam = tAmount.mul(_teamFee).div(1000); uint256 tTransferAmount = tAmount .sub(tFee) .sub(tLiquidity) .sub(tcharity) .sub(tteam); TValues memory tValues = TValues({ tTransferAmount: tTransferAmount, tFee: tFee, tLiquidity: tLiquidity, tCharity: tcharity, tTeam: tteam }); return tValues; } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tcharity, uint256 tteam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rCharity = tcharity.mul(currentRate); uint256 rTeam = tteam.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount .sub(rFee) .sub(rLiquidity) .sub(rCharity) .sub(rTeam); return (rAmount, rTransferAmount, rFee, rCharity, rTeam); } 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**3); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**3); } function removeAllFee() private { if ( _taxFee == 0 && _liquidityFee == 0 && _charityFee == 0 && _teamFee == 0 ) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _previousCharityFee = _charityFee; _previousTeamFee = _teamFee; _taxFee = 0; _liquidityFee = 0; _charityFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _charityFee = _previousCharityFee; _teamFee = _previousTeamFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) require( amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount." ); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); emit Transfer(address(this), uniswapV2Pair, tokenAmount); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); 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]) { _transferBothExcluded(sender, recipient, amount); } else { // !_isExcluded[sender] && !_isExcluded[recipient] _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { FeeValues memory feeValues = _getValues(tAmount); _tOwned[_charityWallet] = _tOwned[_charityWallet].add( feeValues.tCharity ); _tOwned[_teamWallet] = _tOwned[_teamWallet].add(feeValues.tTeam); _rOwned[sender] = _rOwned[sender].sub(feeValues.rAmount); _rOwned[recipient] = _rOwned[recipient].add(feeValues.rTransferAmount); _takeLiquidity(feeValues.tLiquidity); _reflectFee( feeValues.rCharity, feeValues.rTeam, feeValues.rFee, feeValues.tFee ); emit Transfer(sender, recipient, feeValues.tTransferAmount); emit CharityAmount(msg.sender, feeValues.tCharity); emit TeamAmount(msg.sender, feeValues.tTeam); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { FeeValues memory feeValues = _getValues(tAmount); _tOwned[_charityWallet] = _tOwned[_charityWallet].add( feeValues.tCharity ); _tOwned[_teamWallet] = _tOwned[_teamWallet].add(feeValues.tTeam); _rOwned[sender] = _rOwned[sender].sub(feeValues.rAmount); _tOwned[recipient] = _tOwned[recipient].add(feeValues.tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(feeValues.rTransferAmount); _takeLiquidity(feeValues.tLiquidity); _reflectFee( feeValues.rCharity, feeValues.rTeam, feeValues.rFee, feeValues.tFee ); emit Transfer(sender, recipient, feeValues.tTransferAmount); emit CharityAmount(msg.sender, feeValues.tCharity); emit TeamAmount(msg.sender, feeValues.tTeam); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { FeeValues memory feeValues = _getValues(tAmount); _tOwned[_charityWallet] = _tOwned[_charityWallet].add( feeValues.tCharity ); _tOwned[_teamWallet] = _tOwned[_teamWallet].add(feeValues.tTeam); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(feeValues.rAmount); _rOwned[recipient] = _rOwned[recipient].add(feeValues.rTransferAmount); _takeLiquidity(feeValues.tLiquidity); _reflectFee( feeValues.rCharity, feeValues.rTeam, feeValues.rFee, feeValues.tFee ); emit Transfer(sender, recipient, feeValues.tTransferAmount); emit CharityAmount(msg.sender, feeValues.tCharity); emit TeamAmount(msg.sender, feeValues.tTeam); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"charityWallet","type":"address"},{"internalType":"address","name":"teamWallet","type":"address"}],"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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CharityAmount","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":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"newCharityWallet","type":"address"}],"name":"SetCharityWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"newTeamWallet","type":"address"}],"name":"SetTeamWallet","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":"tokensIntoLiquidity","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":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TeamAmount","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":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"charityFee","type":"uint256"}],"name":"setCharityFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"charityWallet","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"setTeamFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"teamWallet","type":"address"}],"name":"setTeamWallet","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":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526a63037600986b829480000060078190556200002390600019620009df565b6200003190600019620009a7565b6008556000600a819055600b819055600c819055600d819055600e819055600f81905560108190556011556013805460ff60a81b1916600160a81b1790556969e10de76676d08000006014553480156200008a57600080fd5b506040516200396a3803806200396a833981016040819052620000ad9162000900565b620000b83362000356565b6008543360009081526001602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200011a57600080fd5b505afa1580156200012f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001559190620008e2565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019e57600080fd5b505afa158015620001b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d99190620008e2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d9190620008e2565b6001600160601b0319606091821b811660a0529082901b16608052600160046000620002916000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600490935291208054909216600117909155601280548583166001600160a01b03199182161790915560138054928516929091169190911790556200030783620003a6565b6200031282620003a6565b60075460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505062000a38565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620004065760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620004715760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620003fd565b6001600160a01b03811660009081526001602052604090205415620004ce576001600160a01b038116600090815260016020526040902054620004b49062000534565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b60006008548211156200059d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620003fd565b6000620005a9620005cc565b9050620005c58184620005ff60201b620015b71790919060201c565b9392505050565b60008080620005da62000649565b91509150620005f88183620005ff60201b620015b71790919060201c565b9250505090565b6000620005c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200080960201b60201c565b6008546007546000918291825b600654811015620007c9578260016000600684815481106200067c576200067c62000a22565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180620006eb5750816002600060068481548110620006c457620006c462000a22565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200070257600854600754945094505050509091565b62000759600160006006848154811062000720576200072062000a22565b60009182526020808320909101546001600160a01b031683528281019390935260409091019020548591620015f962000845821b17901c565b9250620007b2600260006006848154811062000779576200077962000a22565b60009182526020808320909101546001600160a01b031683528281019390935260409091019020548491620015f962000845821b17901c565b915080620007c081620009c1565b91505062000656565b50620007e8600754600854620005ff60201b620015b71790919060201c565b82101562000800576008546007549350935050509091565b90939092509050565b600081836200082d5760405162461bcd60e51b8152600401620003fd919062000938565b5060006200083c848662000990565b95945050505050565b6000620005c583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200088f60201b60201c565b60008184841115620008b65760405162461bcd60e51b8152600401620003fd919062000938565b5060006200083c8486620009a7565b80516001600160a01b0381168114620008dd57600080fd5b919050565b600060208284031215620008f557600080fd5b620005c582620008c5565b600080604083850312156200091457600080fd5b6200091f83620008c5565b91506200092f60208401620008c5565b90509250929050565b600060208083528351808285015260005b81811015620009675785810183015185820160400152820162000949565b818111156200097a576000604083870101525b50601f01601f1916929092016040019392505050565b600082620009a257620009a262000a0c565b500490565b600082821015620009bc57620009bc620009f6565b500390565b6000600019821415620009d857620009d8620009f6565b5060010190565b600082620009f157620009f162000a0c565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60805160601c60a05160601c612ed562000a956000396000818161059d0152818161196501526129a901526000818161037f01528181612719015281816127e10152818161281d0152818161288f01526128b60152612ed56000f3fe60806040526004361061026b5760003560e01c80634549b039116101445780638ee88c53116100b6578063c49b9a801161007a578063c49b9a8014610796578063d543dbeb146107b6578063dd62ed3e146107d6578063ea2f0b371461081c578063f2c19d671461083c578063f2fde38b1461085c57600080fd5b80638ee88c53146106f157806395d89b41146107115780639eb942e514610740578063a457c2d714610756578063a9059cbb1461077657600080fd5b80636bc87c3a116101085780636bc87c3a1461063957806370a082311461064f578063715018a61461066f5780637d1db4a51461068457806388f820201461069a5780638da5cb5b146106d357600080fd5b80634549b0391461056b57806349bd5a5e1461058b5780634a74bb02146105bf57806352390c02146105e05780635342acb41461060057600080fd5b8063313ce567116101dd5780633bd5d173116101a15780633bd5d173146104c05780633ccfd60b146104e057806340f8007a146104f557806342966c681461050b578063437823ec1461052b57806343a189091461054b57600080fd5b8063313ce5671461042e5780633685d4191461044a57806337e294d51461046a578063395093511461048a5780633b124fe7146104aa57600080fd5b80631525ff7d1161022f5780631525ff7d1461034d5780631694505e1461036d57806318160ddd146103b957806323b872dd146103ce5780632d838119146103ee57806330563bd71461040e57600080fd5b8063061c82d01461027757806306fdde0314610299578063095ea7b3146102de5780630e7251e31461030e57806313114a9d1461032e57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b50610297610292366004612c02565b61087c565b005b3480156102a557600080fd5b5060408051808201909152600a815269232aaa2aa922a1a7a4a760b11b60208201525b6040516102d59190612c75565b60405180910390f35b3480156102ea57600080fd5b506102fe6102f9366004612bbb565b6108b4565b60405190151581526020016102d5565b34801561031a57600080fd5b50610297610329366004612c02565b6108cb565b34801561033a57600080fd5b506009545b6040519081526020016102d5565b34801561035957600080fd5b50610297610368366004612b07565b6108fa565b34801561037957600080fd5b506103a17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102d5565b3480156103c557600080fd5b5060075461033f565b3480156103da57600080fd5b506102fe6103e9366004612b7a565b6109f1565b3480156103fa57600080fd5b5061033f610409366004612c02565b610a5a565b34801561041a57600080fd5b50610297610429366004612b07565b610ade565b34801561043a57600080fd5b50604051601281526020016102d5565b34801561045657600080fd5b50610297610465366004612b07565b610bd1565b34801561047657600080fd5b506013546103a1906001600160a01b031681565b34801561049657600080fd5b506102fe6104a5366004612bbb565b610d88565b3480156104b657600080fd5b5061033f600a5481565b3480156104cc57600080fd5b506102976104db366004612c02565b610dbe565b3480156104ec57600080fd5b50610297610ea5565b34801561050157600080fd5b5061033f600e5481565b34801561051757600080fd5b506102fe610526366004612c02565b610f6a565b34801561053757600080fd5b50610297610546366004612b07565b61109f565b34801561055757600080fd5b506012546103a1906001600160a01b031681565b34801561057757600080fd5b5061033f610586366004612c1b565b6110ed565b34801561059757600080fd5b506103a17f000000000000000000000000000000000000000000000000000000000000000081565b3480156105cb57600080fd5b506013546102fe90600160a81b900460ff1681565b3480156105ec57600080fd5b506102976105fb366004612b07565b61116b565b34801561060c57600080fd5b506102fe61061b366004612b07565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561064557600080fd5b5061033f600c5481565b34801561065b57600080fd5b5061033f61066a366004612b07565b6112be565b34801561067b57600080fd5b5061029761131d565b34801561069057600080fd5b5061033f60145481565b3480156106a657600080fd5b506102fe6106b5366004612b07565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106df57600080fd5b506000546001600160a01b03166103a1565b3480156106fd57600080fd5b5061029761070c366004612c02565b611353565b34801561071d57600080fd5b5060408051808201909152600681526546555455524560d01b60208201526102c8565b34801561074c57600080fd5b5061033f60105481565b34801561076257600080fd5b506102fe610771366004612bbb565b611382565b34801561078257600080fd5b506102fe610791366004612bbb565b6113d1565b3480156107a257600080fd5b506102976107b1366004612be7565b6113de565b3480156107c257600080fd5b506102976107d1366004612c02565b611455565b3480156107e257600080fd5b5061033f6107f1366004612b41565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561082857600080fd5b50610297610837366004612b07565b6114a5565b34801561084857600080fd5b50610297610857366004612c02565b6114f0565b34801561086857600080fd5b50610297610877366004612b07565b61151f565b6000546001600160a01b031633146108af5760405162461bcd60e51b81526004016108a690612cca565b60405180910390fd5b600a55565b60006108c133848461163b565b5060015b92915050565b6000546001600160a01b031633146108f55760405162461bcd60e51b81526004016108a690612cca565b600e55565b6000546001600160a01b031633146109245760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b0381166109885760405162461bcd60e51b815260206004820152602560248201527f465443203a3a207465616d2077616c6c6574206e6f742061207a65726f206164604482015264647265737360d81b60648201526084016108a6565b601380546001600160a01b0319166001600160a01b0383161790556109ac8161116b565b604080513381526001600160a01b03831660208201527fc4775d013f53eff3cd16df56552e9fcbb84ca0c1cb2553aab6387c6b19c8f6b291015b60405180910390a150565b60006109fe84848461175f565b610a508433610a4b85604051806060016040528060288152602001612e53602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611a29565b61163b565b5060019392505050565b6000600854821115610ac15760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108a6565b6000610acb611a63565b9050610ad783826115b7565b9392505050565b6000546001600160a01b03163314610b085760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b038116610b6f5760405162461bcd60e51b815260206004820152602860248201527f465443203a3a20636861726974792077616c6c6574206e6f742061207a65726f604482015267206164647265737360c01b60648201526084016108a6565b601280546001600160a01b0319166001600160a01b038316179055610b938161116b565b604080513381526001600160a01b03831660208201527f4bbab2c7903c2ce19a641879a0d9eef91264b513aac38fbad32bdfc4a467e0cc91016109e6565b6000546001600160a01b03163314610bfb5760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b03811660009081526005602052604090205460ff16610c635760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108a6565b60005b600654811015610d8457816001600160a01b031660068281548110610c8d57610c8d612e27565b6000918252602090912001546001600160a01b03161415610d725760068054610cb890600190612dc9565b81548110610cc857610cc8612e27565b600091825260209091200154600680546001600160a01b039092169183908110610cf457610cf4612e27565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610d4c57610d4c612e11565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d7c81612de0565b915050610c66565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108c1918590610a4b9086611a86565b3360008181526005602052604090205460ff1615610e335760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108a6565b6000610e3e83611ae5565b80516001600160a01b038416600090815260016020526040902054919250610e6691906115f9565b6001600160a01b0383166000908152600160205260409020558051600854610e8d916115f9565b600855600954610e9d9084611a86565b600955505050565b6000546001600160a01b03163314610ecf5760405162461bcd60e51b81526004016108a690612cca565b60004711610f2d5760405162461bcd60e51b815260206004820152602560248201527f4e6f20424e422073746f7265642061742074686520636f6e7472616374206164604482015264647265737360d81b60648201526084016108a6565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610f67573d6000803e3d6000fd5b50565b600080546001600160a01b03163314610f955760405162461bcd60e51b81526004016108a690612cca565b336000818152600260205260409020548311610ffe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108a6565b82600061101361100c611a63565b8390611be6565b9050611023836000876000611c65565b60075461103090836115f9565b60075560085461104090826115f9565b600855600080546001600160a01b03166001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161108a91815260200190565b60405180910390a3600193505050505b919050565b6000546001600160a01b031633146110c95760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b60006007548311156111415760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108a6565b816111575761114f83611ae5565b5190506108c5565b61116083611ae5565b6020015190506108c5565b6000546001600160a01b031633146111955760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b03811660009081526005602052604090205460ff16156111fe5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108a6565b6001600160a01b03811660009081526001602052604090205415611258576001600160a01b03811660009081526001602052604090205461123e90610a5a565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff16156112fb57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546108c590610a5a565b6000546001600160a01b031633146113475760405162461bcd60e51b81526004016108a690612cca565b6113516000611d9c565b565b6000546001600160a01b0316331461137d5760405162461bcd60e51b81526004016108a690612cca565b600c55565b60006108c13384610a4b85604051806060016040528060258152602001612e7b602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611a29565b60006108c133848461175f565b6000546001600160a01b031633146114085760405162461bcd60e51b81526004016108a690612cca565b60138054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906109e690831515815260200190565b6000546001600160a01b0316331461147f5760405162461bcd60e51b81526004016108a690612cca565b61149f606461149983600754611be690919063ffffffff16565b906115b7565b60145550565b6000546001600160a01b031633146114cf5760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461151a5760405162461bcd60e51b81526004016108a690612cca565b601055565b6000546001600160a01b031633146115495760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b0381166115ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a6565b610f6781611d9c565b6000610ad783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dec565b6000610ad783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a29565b6001600160a01b03831661169d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a6565b6001600160a01b0382166116fe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117c35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a6565b6001600160a01b0382166118255760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a6565b600081116118875760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a6565b6000546001600160a01b038481169116148015906118b357506000546001600160a01b03838116911614155b1561191b5760145481111561191b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108a6565b6000611926306112be565b9050601454811061193657506014545b690a968163f0a57b4000008110801590819061195c5750601354600160a01b900460ff16155b801561199a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156119af5750601354600160a81b900460ff165b156119ca57690a968163f0a57b40000091506119ca82611e1a565b6001600160a01b03851660009081526004602052604090205460019060ff1680611a0c57506001600160a01b03851660009081526004602052604090205460ff165b15611a15575060005b611a2186868684611c65565b505050505050565b60008184841115611a4d5760405162461bcd60e51b81526004016108a69190612c75565b506000611a5a8486612dc9565b95945050505050565b6000806000611a70611ec1565b9092509050611a7f82826115b7565b9250505090565b600080611a938385612d70565b905083811015610ad75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108a6565b611b3b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000611b4683612043565b90506000806000806000611b75888760200151886040015189606001518a60800151611b70611a63565b612117565b945094509450945094506040518061014001604052808681526020018581526020018481526020018760000151815260200187602001518152602001876040015181526020018760600151815260200187608001518152602001838152602001828152509650505050505050919050565b600082611bf5575060006108c5565b6000611c018385612daa565b905082611c0e8583612d88565b14610ad75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108a6565b80611c7257611c72612194565b6001600160a01b03841660009081526005602052604090205460ff168015611cb357506001600160a01b03831660009081526005602052604090205460ff16155b15611cc857611cc38484846121ef565b611d74565b6001600160a01b03841660009081526005602052604090205460ff16158015611d0957506001600160a01b03831660009081526005602052604090205460ff165b15611d1957611cc3848484612418565b6001600160a01b03841660009081526005602052604090205460ff168015611d5957506001600160a01b03831660009081526005602052604090205460ff165b15611d6957611cc3848484612539565b611d74848484612612565b80611d9657611d96600b54600a55600d54600c55600f54600e55601154601055565b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183611e0d5760405162461bcd60e51b81526004016108a69190612c75565b506000611a5a8486612d88565b6013805460ff60a01b1916600160a01b1790556000611e3a8260026115b7565b90506000611e4883836115f9565b905047611e54836126c2565b6000611e6047836115f9565b9050611e6c8382612889565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506013805460ff60a01b19169055505050565b6008546007546000918291825b60065481101561201357826001600060068481548110611ef057611ef0612e27565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611f5b5750816002600060068481548110611f3457611f34612e27565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611f7157600854600754945094505050509091565b611fb76001600060068481548110611f8b57611f8b612e27565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115f9565b9250611fff6002600060068481548110611fd357611fd3612e27565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115f9565b91508061200b81612de0565b915050611ece565b50600754600854612023916115b7565b82101561203a576008546007549350935050509091565b90939092509050565b6120756040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000612080836129fe565b9050600061208d84612a1b565b905060006120ac6103e8611499600e5488611be690919063ffffffff16565b905060006120cb6103e861149960105489611be690919063ffffffff16565b905060006120e7826120e1858188818d8c6115f9565b906115f9565b6040805160a081018252918252602082019690965294850193909352606084019190915260808301525092915050565b600080808080806121288c88611be6565b905060006121368c89611be6565b905060006121448b8a611be6565b905060006121528b8b611be6565b905060006121608e8c611be6565b90506000612176836120e1868186818c8c6115f9565b959a5094985092965090945092505050965096509650965096915050565b600a541580156121a45750600c54155b80156121b05750600e54155b80156121bc5750601054155b156121c357565b600a8054600b55600c8054600d55600e8054600f55601080546011556000938490559183905582905555565b60006121fa82611ae5565b60c08101516012546001600160a01b03166000908152600260205260409020549192506122279190611a86565b6012546001600160a01b039081166000908152600260205260408082209390935560e08401516013549092168152919091205461226391611a86565b6013546001600160a01b03908116600090815260026020526040808220939093559086168152205461229590836115f9565b6001600160a01b03851660009081526002602090815260408083209390935583516001909152919020546122c8916115f9565b6001600160a01b03808616600090815260016020908152604080832094909455840151918616815291909120546122fe91611a86565b6001600160a01b03841660009081526001602052604090205560a081015161232590612a38565b61234381610100015182610120015183604001518460800151612ac1565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836060015160405161238c91815260200190565b60405180910390a360c08101516040805133815260208101929092527f8147814d85039d3b45717ecaa3c45a356de100614056d077a0898439a7677284910160405180910390a160e08101516040805133815260208101929092527f46e679a285e8d3c8883c2efaaac4ce686062ac29fbcbf04a415338be01e4493a910160405180910390a150505050565b600061242382611ae5565b60c08101516012546001600160a01b03166000908152600260205260409020549192506124509190611a86565b6012546001600160a01b039081166000908152600260205260408082209390935560e08401516013549092168152919091205461248c91611a86565b6013546001600160a01b03908116600090815260026020908152604080832094909455845192881682526001905291909120546124c8916115f9565b6001600160a01b038086166000908152600160209081526040808320949094556060850151928716825260029052919091205461250491611a86565b6001600160a01b038416600090815260026020908152604080832093909355838101516001909152919020546122fe91611a86565b600061254482611ae5565b60c08101516012546001600160a01b03166000908152600260205260409020549192506125719190611a86565b6012546001600160a01b039081166000908152600260205260408082209390935560e0840151601354909216815291909120546125ad91611a86565b6013546001600160a01b0390811660009081526002602052604080822093909355908616815220546125df90836115f9565b6001600160a01b03851660009081526002602090815260408083209390935583516001909152919020546124c8916115f9565b600061261d82611ae5565b60c08101516012546001600160a01b031660009081526002602052604090205491925061264a9190611a86565b6012546001600160a01b039081166000908152600260205260408082209390935560e08401516013549092168152919091205461268691611a86565b6013546001600160a01b03908116600090815260026020908152604080832094909455845192881682526001905291909120546122c8916115f9565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126f7576126f7612e27565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a89190612b24565b816001815181106127bb576127bb612e27565b60200260200101906001600160a01b031690816001600160a01b031681525050612806307f00000000000000000000000000000000000000000000000000000000000000008461163b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061285b908590600090869030904290600401612cff565b600060405180830381600087803b15801561287557600080fd5b505af1158015611a21573d6000803e3d6000fd5b6128b4307f00000000000000000000000000000000000000000000000000000000000000008461163b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806128fb6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561295e57600080fd5b505af1158015612972573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129979190612c47565b50506040518381526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006108c56103e8611499600a5485611be690919063ffffffff16565b60006108c56103e8611499600c5485611be690919063ffffffff16565b6000612a42611a63565b90506000612a508383611be6565b30600090815260016020526040902054909150612a6d9082611a86565b3060009081526001602090815260408083209390935560059052205460ff1615612abc5730600090815260026020526040902054612aab9084611a86565b306000908152600260205260409020555b505050565b612ade836120e1866120e1866008546115f990919063ffffffff16565b600855600954612aee9082611a86565b60095550505050565b8035801515811461109a57600080fd5b600060208284031215612b1957600080fd5b8135610ad781612e3d565b600060208284031215612b3657600080fd5b8151610ad781612e3d565b60008060408385031215612b5457600080fd5b8235612b5f81612e3d565b91506020830135612b6f81612e3d565b809150509250929050565b600080600060608486031215612b8f57600080fd5b8335612b9a81612e3d565b92506020840135612baa81612e3d565b929592945050506040919091013590565b60008060408385031215612bce57600080fd5b8235612bd981612e3d565b946020939093013593505050565b600060208284031215612bf957600080fd5b610ad782612af7565b600060208284031215612c1457600080fd5b5035919050565b60008060408385031215612c2e57600080fd5b82359150612c3e60208401612af7565b90509250929050565b600080600060608486031215612c5c57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612ca257858101830151858201604001528201612c86565b81811115612cb4576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d4f5784516001600160a01b031683529383019391830191600101612d2a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612d8357612d83612dfb565b500190565b600082612da557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612dc457612dc4612dfb565b500290565b600082821015612ddb57612ddb612dfb565b500390565b6000600019821415612df457612df4612dfb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610f6757600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201e1518cfec339265002a5aaa8833903ab0c0042cb27c985750eae80bd316e10f64736f6c6343000807003300000000000000000000000012b731c171c62ae93f9cfb05607d7214187d3fd4000000000000000000000000bb991b59df9a08008c11f8b8dbb9dc9c0c5002d6
Deployed Bytecode
0x60806040526004361061026b5760003560e01c80634549b039116101445780638ee88c53116100b6578063c49b9a801161007a578063c49b9a8014610796578063d543dbeb146107b6578063dd62ed3e146107d6578063ea2f0b371461081c578063f2c19d671461083c578063f2fde38b1461085c57600080fd5b80638ee88c53146106f157806395d89b41146107115780639eb942e514610740578063a457c2d714610756578063a9059cbb1461077657600080fd5b80636bc87c3a116101085780636bc87c3a1461063957806370a082311461064f578063715018a61461066f5780637d1db4a51461068457806388f820201461069a5780638da5cb5b146106d357600080fd5b80634549b0391461056b57806349bd5a5e1461058b5780634a74bb02146105bf57806352390c02146105e05780635342acb41461060057600080fd5b8063313ce567116101dd5780633bd5d173116101a15780633bd5d173146104c05780633ccfd60b146104e057806340f8007a146104f557806342966c681461050b578063437823ec1461052b57806343a189091461054b57600080fd5b8063313ce5671461042e5780633685d4191461044a57806337e294d51461046a578063395093511461048a5780633b124fe7146104aa57600080fd5b80631525ff7d1161022f5780631525ff7d1461034d5780631694505e1461036d57806318160ddd146103b957806323b872dd146103ce5780632d838119146103ee57806330563bd71461040e57600080fd5b8063061c82d01461027757806306fdde0314610299578063095ea7b3146102de5780630e7251e31461030e57806313114a9d1461032e57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b50610297610292366004612c02565b61087c565b005b3480156102a557600080fd5b5060408051808201909152600a815269232aaa2aa922a1a7a4a760b11b60208201525b6040516102d59190612c75565b60405180910390f35b3480156102ea57600080fd5b506102fe6102f9366004612bbb565b6108b4565b60405190151581526020016102d5565b34801561031a57600080fd5b50610297610329366004612c02565b6108cb565b34801561033a57600080fd5b506009545b6040519081526020016102d5565b34801561035957600080fd5b50610297610368366004612b07565b6108fa565b34801561037957600080fd5b506103a17f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102d5565b3480156103c557600080fd5b5060075461033f565b3480156103da57600080fd5b506102fe6103e9366004612b7a565b6109f1565b3480156103fa57600080fd5b5061033f610409366004612c02565b610a5a565b34801561041a57600080fd5b50610297610429366004612b07565b610ade565b34801561043a57600080fd5b50604051601281526020016102d5565b34801561045657600080fd5b50610297610465366004612b07565b610bd1565b34801561047657600080fd5b506013546103a1906001600160a01b031681565b34801561049657600080fd5b506102fe6104a5366004612bbb565b610d88565b3480156104b657600080fd5b5061033f600a5481565b3480156104cc57600080fd5b506102976104db366004612c02565b610dbe565b3480156104ec57600080fd5b50610297610ea5565b34801561050157600080fd5b5061033f600e5481565b34801561051757600080fd5b506102fe610526366004612c02565b610f6a565b34801561053757600080fd5b50610297610546366004612b07565b61109f565b34801561055757600080fd5b506012546103a1906001600160a01b031681565b34801561057757600080fd5b5061033f610586366004612c1b565b6110ed565b34801561059757600080fd5b506103a17f000000000000000000000000240d54888a2b7f05cf7d68d609cc83899591cd8b81565b3480156105cb57600080fd5b506013546102fe90600160a81b900460ff1681565b3480156105ec57600080fd5b506102976105fb366004612b07565b61116b565b34801561060c57600080fd5b506102fe61061b366004612b07565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561064557600080fd5b5061033f600c5481565b34801561065b57600080fd5b5061033f61066a366004612b07565b6112be565b34801561067b57600080fd5b5061029761131d565b34801561069057600080fd5b5061033f60145481565b3480156106a657600080fd5b506102fe6106b5366004612b07565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106df57600080fd5b506000546001600160a01b03166103a1565b3480156106fd57600080fd5b5061029761070c366004612c02565b611353565b34801561071d57600080fd5b5060408051808201909152600681526546555455524560d01b60208201526102c8565b34801561074c57600080fd5b5061033f60105481565b34801561076257600080fd5b506102fe610771366004612bbb565b611382565b34801561078257600080fd5b506102fe610791366004612bbb565b6113d1565b3480156107a257600080fd5b506102976107b1366004612be7565b6113de565b3480156107c257600080fd5b506102976107d1366004612c02565b611455565b3480156107e257600080fd5b5061033f6107f1366004612b41565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561082857600080fd5b50610297610837366004612b07565b6114a5565b34801561084857600080fd5b50610297610857366004612c02565b6114f0565b34801561086857600080fd5b50610297610877366004612b07565b61151f565b6000546001600160a01b031633146108af5760405162461bcd60e51b81526004016108a690612cca565b60405180910390fd5b600a55565b60006108c133848461163b565b5060015b92915050565b6000546001600160a01b031633146108f55760405162461bcd60e51b81526004016108a690612cca565b600e55565b6000546001600160a01b031633146109245760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b0381166109885760405162461bcd60e51b815260206004820152602560248201527f465443203a3a207465616d2077616c6c6574206e6f742061207a65726f206164604482015264647265737360d81b60648201526084016108a6565b601380546001600160a01b0319166001600160a01b0383161790556109ac8161116b565b604080513381526001600160a01b03831660208201527fc4775d013f53eff3cd16df56552e9fcbb84ca0c1cb2553aab6387c6b19c8f6b291015b60405180910390a150565b60006109fe84848461175f565b610a508433610a4b85604051806060016040528060288152602001612e53602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611a29565b61163b565b5060019392505050565b6000600854821115610ac15760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108a6565b6000610acb611a63565b9050610ad783826115b7565b9392505050565b6000546001600160a01b03163314610b085760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b038116610b6f5760405162461bcd60e51b815260206004820152602860248201527f465443203a3a20636861726974792077616c6c6574206e6f742061207a65726f604482015267206164647265737360c01b60648201526084016108a6565b601280546001600160a01b0319166001600160a01b038316179055610b938161116b565b604080513381526001600160a01b03831660208201527f4bbab2c7903c2ce19a641879a0d9eef91264b513aac38fbad32bdfc4a467e0cc91016109e6565b6000546001600160a01b03163314610bfb5760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b03811660009081526005602052604090205460ff16610c635760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108a6565b60005b600654811015610d8457816001600160a01b031660068281548110610c8d57610c8d612e27565b6000918252602090912001546001600160a01b03161415610d725760068054610cb890600190612dc9565b81548110610cc857610cc8612e27565b600091825260209091200154600680546001600160a01b039092169183908110610cf457610cf4612e27565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610d4c57610d4c612e11565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d7c81612de0565b915050610c66565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108c1918590610a4b9086611a86565b3360008181526005602052604090205460ff1615610e335760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108a6565b6000610e3e83611ae5565b80516001600160a01b038416600090815260016020526040902054919250610e6691906115f9565b6001600160a01b0383166000908152600160205260409020558051600854610e8d916115f9565b600855600954610e9d9084611a86565b600955505050565b6000546001600160a01b03163314610ecf5760405162461bcd60e51b81526004016108a690612cca565b60004711610f2d5760405162461bcd60e51b815260206004820152602560248201527f4e6f20424e422073746f7265642061742074686520636f6e7472616374206164604482015264647265737360d81b60648201526084016108a6565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610f67573d6000803e3d6000fd5b50565b600080546001600160a01b03163314610f955760405162461bcd60e51b81526004016108a690612cca565b336000818152600260205260409020548311610ffe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108a6565b82600061101361100c611a63565b8390611be6565b9050611023836000876000611c65565b60075461103090836115f9565b60075560085461104090826115f9565b600855600080546001600160a01b03166001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161108a91815260200190565b60405180910390a3600193505050505b919050565b6000546001600160a01b031633146110c95760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b60006007548311156111415760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108a6565b816111575761114f83611ae5565b5190506108c5565b61116083611ae5565b6020015190506108c5565b6000546001600160a01b031633146111955760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b03811660009081526005602052604090205460ff16156111fe5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108a6565b6001600160a01b03811660009081526001602052604090205415611258576001600160a01b03811660009081526001602052604090205461123e90610a5a565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff16156112fb57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546108c590610a5a565b6000546001600160a01b031633146113475760405162461bcd60e51b81526004016108a690612cca565b6113516000611d9c565b565b6000546001600160a01b0316331461137d5760405162461bcd60e51b81526004016108a690612cca565b600c55565b60006108c13384610a4b85604051806060016040528060258152602001612e7b602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611a29565b60006108c133848461175f565b6000546001600160a01b031633146114085760405162461bcd60e51b81526004016108a690612cca565b60138054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906109e690831515815260200190565b6000546001600160a01b0316331461147f5760405162461bcd60e51b81526004016108a690612cca565b61149f606461149983600754611be690919063ffffffff16565b906115b7565b60145550565b6000546001600160a01b031633146114cf5760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461151a5760405162461bcd60e51b81526004016108a690612cca565b601055565b6000546001600160a01b031633146115495760405162461bcd60e51b81526004016108a690612cca565b6001600160a01b0381166115ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a6565b610f6781611d9c565b6000610ad783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dec565b6000610ad783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a29565b6001600160a01b03831661169d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a6565b6001600160a01b0382166116fe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117c35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a6565b6001600160a01b0382166118255760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a6565b600081116118875760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a6565b6000546001600160a01b038481169116148015906118b357506000546001600160a01b03838116911614155b1561191b5760145481111561191b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108a6565b6000611926306112be565b9050601454811061193657506014545b690a968163f0a57b4000008110801590819061195c5750601354600160a01b900460ff16155b801561199a57507f000000000000000000000000240d54888a2b7f05cf7d68d609cc83899591cd8b6001600160a01b0316856001600160a01b031614155b80156119af5750601354600160a81b900460ff165b156119ca57690a968163f0a57b40000091506119ca82611e1a565b6001600160a01b03851660009081526004602052604090205460019060ff1680611a0c57506001600160a01b03851660009081526004602052604090205460ff165b15611a15575060005b611a2186868684611c65565b505050505050565b60008184841115611a4d5760405162461bcd60e51b81526004016108a69190612c75565b506000611a5a8486612dc9565b95945050505050565b6000806000611a70611ec1565b9092509050611a7f82826115b7565b9250505090565b600080611a938385612d70565b905083811015610ad75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108a6565b611b3b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000611b4683612043565b90506000806000806000611b75888760200151886040015189606001518a60800151611b70611a63565b612117565b945094509450945094506040518061014001604052808681526020018581526020018481526020018760000151815260200187602001518152602001876040015181526020018760600151815260200187608001518152602001838152602001828152509650505050505050919050565b600082611bf5575060006108c5565b6000611c018385612daa565b905082611c0e8583612d88565b14610ad75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108a6565b80611c7257611c72612194565b6001600160a01b03841660009081526005602052604090205460ff168015611cb357506001600160a01b03831660009081526005602052604090205460ff16155b15611cc857611cc38484846121ef565b611d74565b6001600160a01b03841660009081526005602052604090205460ff16158015611d0957506001600160a01b03831660009081526005602052604090205460ff165b15611d1957611cc3848484612418565b6001600160a01b03841660009081526005602052604090205460ff168015611d5957506001600160a01b03831660009081526005602052604090205460ff165b15611d6957611cc3848484612539565b611d74848484612612565b80611d9657611d96600b54600a55600d54600c55600f54600e55601154601055565b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183611e0d5760405162461bcd60e51b81526004016108a69190612c75565b506000611a5a8486612d88565b6013805460ff60a01b1916600160a01b1790556000611e3a8260026115b7565b90506000611e4883836115f9565b905047611e54836126c2565b6000611e6047836115f9565b9050611e6c8382612889565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506013805460ff60a01b19169055505050565b6008546007546000918291825b60065481101561201357826001600060068481548110611ef057611ef0612e27565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611f5b5750816002600060068481548110611f3457611f34612e27565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611f7157600854600754945094505050509091565b611fb76001600060068481548110611f8b57611f8b612e27565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115f9565b9250611fff6002600060068481548110611fd357611fd3612e27565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115f9565b91508061200b81612de0565b915050611ece565b50600754600854612023916115b7565b82101561203a576008546007549350935050509091565b90939092509050565b6120756040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000612080836129fe565b9050600061208d84612a1b565b905060006120ac6103e8611499600e5488611be690919063ffffffff16565b905060006120cb6103e861149960105489611be690919063ffffffff16565b905060006120e7826120e1858188818d8c6115f9565b906115f9565b6040805160a081018252918252602082019690965294850193909352606084019190915260808301525092915050565b600080808080806121288c88611be6565b905060006121368c89611be6565b905060006121448b8a611be6565b905060006121528b8b611be6565b905060006121608e8c611be6565b90506000612176836120e1868186818c8c6115f9565b959a5094985092965090945092505050965096509650965096915050565b600a541580156121a45750600c54155b80156121b05750600e54155b80156121bc5750601054155b156121c357565b600a8054600b55600c8054600d55600e8054600f55601080546011556000938490559183905582905555565b60006121fa82611ae5565b60c08101516012546001600160a01b03166000908152600260205260409020549192506122279190611a86565b6012546001600160a01b039081166000908152600260205260408082209390935560e08401516013549092168152919091205461226391611a86565b6013546001600160a01b03908116600090815260026020526040808220939093559086168152205461229590836115f9565b6001600160a01b03851660009081526002602090815260408083209390935583516001909152919020546122c8916115f9565b6001600160a01b03808616600090815260016020908152604080832094909455840151918616815291909120546122fe91611a86565b6001600160a01b03841660009081526001602052604090205560a081015161232590612a38565b61234381610100015182610120015183604001518460800151612ac1565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836060015160405161238c91815260200190565b60405180910390a360c08101516040805133815260208101929092527f8147814d85039d3b45717ecaa3c45a356de100614056d077a0898439a7677284910160405180910390a160e08101516040805133815260208101929092527f46e679a285e8d3c8883c2efaaac4ce686062ac29fbcbf04a415338be01e4493a910160405180910390a150505050565b600061242382611ae5565b60c08101516012546001600160a01b03166000908152600260205260409020549192506124509190611a86565b6012546001600160a01b039081166000908152600260205260408082209390935560e08401516013549092168152919091205461248c91611a86565b6013546001600160a01b03908116600090815260026020908152604080832094909455845192881682526001905291909120546124c8916115f9565b6001600160a01b038086166000908152600160209081526040808320949094556060850151928716825260029052919091205461250491611a86565b6001600160a01b038416600090815260026020908152604080832093909355838101516001909152919020546122fe91611a86565b600061254482611ae5565b60c08101516012546001600160a01b03166000908152600260205260409020549192506125719190611a86565b6012546001600160a01b039081166000908152600260205260408082209390935560e0840151601354909216815291909120546125ad91611a86565b6013546001600160a01b0390811660009081526002602052604080822093909355908616815220546125df90836115f9565b6001600160a01b03851660009081526002602090815260408083209390935583516001909152919020546124c8916115f9565b600061261d82611ae5565b60c08101516012546001600160a01b031660009081526002602052604090205491925061264a9190611a86565b6012546001600160a01b039081166000908152600260205260408082209390935560e08401516013549092168152919091205461268691611a86565b6013546001600160a01b03908116600090815260026020908152604080832094909455845192881682526001905291909120546122c8916115f9565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126f7576126f7612e27565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a89190612b24565b816001815181106127bb576127bb612e27565b60200260200101906001600160a01b031690816001600160a01b031681525050612806307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461163b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061285b908590600090869030904290600401612cff565b600060405180830381600087803b15801561287557600080fd5b505af1158015611a21573d6000803e3d6000fd5b6128b4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461163b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806128fb6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561295e57600080fd5b505af1158015612972573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129979190612c47565b50506040518381526001600160a01b037f000000000000000000000000240d54888a2b7f05cf7d68d609cc83899591cd8b16915030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006108c56103e8611499600a5485611be690919063ffffffff16565b60006108c56103e8611499600c5485611be690919063ffffffff16565b6000612a42611a63565b90506000612a508383611be6565b30600090815260016020526040902054909150612a6d9082611a86565b3060009081526001602090815260408083209390935560059052205460ff1615612abc5730600090815260026020526040902054612aab9084611a86565b306000908152600260205260409020555b505050565b612ade836120e1866120e1866008546115f990919063ffffffff16565b600855600954612aee9082611a86565b60095550505050565b8035801515811461109a57600080fd5b600060208284031215612b1957600080fd5b8135610ad781612e3d565b600060208284031215612b3657600080fd5b8151610ad781612e3d565b60008060408385031215612b5457600080fd5b8235612b5f81612e3d565b91506020830135612b6f81612e3d565b809150509250929050565b600080600060608486031215612b8f57600080fd5b8335612b9a81612e3d565b92506020840135612baa81612e3d565b929592945050506040919091013590565b60008060408385031215612bce57600080fd5b8235612bd981612e3d565b946020939093013593505050565b600060208284031215612bf957600080fd5b610ad782612af7565b600060208284031215612c1457600080fd5b5035919050565b60008060408385031215612c2e57600080fd5b82359150612c3e60208401612af7565b90509250929050565b600080600060608486031215612c5c57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612ca257858101830151858201604001528201612c86565b81811115612cb4576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d4f5784516001600160a01b031683529383019391830191600101612d2a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612d8357612d83612dfb565b500190565b600082612da557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612dc457612dc4612dfb565b500290565b600082821015612ddb57612ddb612dfb565b500390565b6000600019821415612df457612df4612dfb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610f6757600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201e1518cfec339265002a5aaa8833903ab0c0042cb27c985750eae80bd316e10f64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000012b731c171c62ae93f9cfb05607d7214187d3fd4000000000000000000000000bb991b59df9a08008c11f8b8dbb9dc9c0c5002d6
-----Decoded View---------------
Arg [0] : charityWallet (address): 0x12B731C171C62AE93f9CFB05607d7214187d3Fd4
Arg [1] : teamWallet (address): 0xBB991b59DF9A08008C11F8b8dbb9dC9c0c5002d6
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000012b731c171c62ae93f9cfb05607d7214187d3fd4
Arg [1] : 000000000000000000000000bb991b59df9a08008c11f8b8dbb9dc9c0c5002d6
Deployed Bytecode Sourcemap
28219:25341:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38419:96;;;;;;;;;;-1:-1:-1;38419:96:0;;;;;:::i;:::-;;:::i;:::-;;31871:83;;;;;;;;;;-1:-1:-1;31941:5:0;;;;;;;;;;;;-1:-1:-1;;;31941:5:0;;;;31871:83;;;;;;;:::i;:::-;;;;;;;;32856:193;;;;;;;;;;-1:-1:-1;32856:193:0;;;;;:::i;:::-;;:::i;:::-;;;4368:14:1;;4361:22;4343:41;;4331:2;4316:18;32856:193:0;4203:187:1;38651:115:0;;;;;;;;;;-1:-1:-1;38651:115:0;;;;;:::i;:::-;;:::i;34355:87::-;;;;;;;;;;-1:-1:-1;34424:10:0;;34355:87;;;12505:25:1;;;12493:2;12478:18;34355:87:0;12359:177:1;39242:322:0;;;;;;;;;;-1:-1:-1;39242:322:0;;;;;:::i;:::-;;:::i;29538:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2959:32:1;;;2941:51;;2929:2;2914:18;29538:51:0;2795:203:1;32148:95:0;;;;;;;;;;-1:-1:-1;32228:7:0;;32148:95;;33057:446;;;;;;;;;;-1:-1:-1;33057:446:0;;;;;:::i;:::-;;:::i;35287:322::-;;;;;;;;;;-1:-1:-1;35287:322:0;;;;;:::i;:::-;;:::i;38885:349::-;;;;;;;;;;-1:-1:-1;38885:349:0;;;;;:::i;:::-;;:::i;32057:83::-;;;;;;;;;;-1:-1:-1;32057:83:0;;29007:2;13992:36:1;;13980:2;13965:18;32057:83:0;13850:184:1;36641:477:0;;;;;;;;;;-1:-1:-1;36641:477:0;;;;;:::i;:::-;;:::i;29503:26::-;;;;;;;;;;-1:-1:-1;29503:26:0;;;;-1:-1:-1;;;;;29503:26:0;;;33511:300;;;;;;;;;;-1:-1:-1;33511:300:0;;;;;:::i;:::-;;:::i;29018:26::-;;;;;;;;;;;;;;;;34450:438;;;;;;;;;;-1:-1:-1;34450:438:0;;;;;:::i;:::-;;:::i;39895:227::-;;;;;;;;;;;;;:::i;29258:30::-;;;;;;;;;;;;;;;;35617:562;;;;;;;;;;-1:-1:-1;35617:562:0;;;;;:::i;:::-;;:::i;38182:111::-;;;;;;;;;;-1:-1:-1;38182:111:0;;;;;:::i;:::-;;:::i;29467:29::-;;;;;;;;;;-1:-1:-1;29467:29:0;;;;-1:-1:-1;;;;;29467:29:0;;;34896:383;;;;;;;;;;-1:-1:-1;34896:383:0;;;;;:::i;:::-;;:::i;29596:38::-;;;;;;;;;;;;;;;29671:40;;;;;;;;;;-1:-1:-1;29671:40:0;;;;-1:-1:-1;;;29671:40:0;;;;;;36187:446;;;;;;;;;;-1:-1:-1;36187:446:0;;;;;:::i;:::-;;:::i;45304:124::-;;;;;;;;;;-1:-1:-1;45304:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;45393:27:0;45369:4;45393:27;;;:18;:27;;;;;;;;;45304:124;29129:32;;;;;;;;;;;;;;;;32251:198;;;;;;;;;;-1:-1:-1;32251:198:0;;;;;:::i;:::-;;:::i;18022:103::-;;;;;;;;;;;;;:::i;29720:45::-;;;;;;;;;;;;;;;;34227:120;;;;;;;;;;-1:-1:-1;34227:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;34319:20:0;34295:4;34319:20;;;:11;:20;;;;;;;;;34227:120;17371:87;;;;;;;;;;-1:-1:-1;17417:7:0;17444:6;-1:-1:-1;;;;;17444:6:0;17371:87;;38523:120;;;;;;;;;;-1:-1:-1;38523:120:0;;;;;:::i;:::-;;:::i;31962:87::-;;;;;;;;;;-1:-1:-1;32034:7:0;;;;;;;;;;;;-1:-1:-1;;;32034:7:0;;;;31962:87;;29353:27;;;;;;;;;;;;;;;;33819:400;;;;;;;;;;-1:-1:-1;33819:400:0;;;;;:::i;:::-;;:::i;32457:199::-;;;;;;;;;;-1:-1:-1;32457:199:0;;;;;:::i;:::-;;:::i;39716:171::-;;;;;;;;;;-1:-1:-1;39716:171:0;;;;;:::i;:::-;;:::i;39572:136::-;;;;;;;;;;-1:-1:-1;39572:136:0;;;;;:::i;:::-;;:::i;32664:184::-;;;;;;;;;;-1:-1:-1;32664:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;32813:18:0;;;32781:7;32813:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32664:184;38301:110;;;;;;;;;;-1:-1:-1;38301:110:0;;;;;:::i;:::-;;:::i;38774:103::-;;;;;;;;;;-1:-1:-1;38774:103:0;;;;;:::i;:::-;;:::i;18280:238::-;;;;;;;;;;-1:-1:-1;18280:238:0;;;;;:::i;:::-;;:::i;38419:96::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;;;;;;;;;38491:7:::1;:16:::0;38419:96::o;32856:193::-;32958:4;32980:39;7753:10;33003:7;33012:6;32980:8;:39::i;:::-;-1:-1:-1;33037:4:0;32856:193;;;;;:::o;38651:115::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;38734:11:::1;:24:::0;38651:115::o;39242:322::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39337:24:0;::::1;39315:111;;;::::0;-1:-1:-1;;;39315:111:0;;8940:2:1;39315:111:0::1;::::0;::::1;8922:21:1::0;8979:2;8959:18;;;8952:30;9018:34;8998:18;;;8991:62;-1:-1:-1;;;9069:18:1;;;9062:35;9114:19;;39315:111:0::1;8738:401:1::0;39315:111:0::1;39437:11;:24:::0;;-1:-1:-1;;;;;;39437:24:0::1;-1:-1:-1::0;;;;;39437:24:0;::::1;;::::0;;39472:29:::1;39437:24:::0;39472:17:::1;:29::i;:::-;39519:37;::::0;;39533:10:::1;3215:34:1::0;;-1:-1:-1;;;;;3285:15:1;;3280:2;3265:18;;3258:43;39519:37:0::1;::::0;3150:18:1;39519:37:0::1;;;;;;;;39242:322:::0;:::o;33057:446::-;33189:4;33206:36;33216:6;33224:9;33235:6;33206:9;:36::i;:::-;33253:220;33276:6;7753:10;33324:138;33380:6;33324:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33324:19:0;;;;;;:11;:19;;;;;;;;7753:10;33324:33;;;;;;;;;;:37;:138::i;:::-;33253:8;:220::i;:::-;-1:-1:-1;33491:4:0;33057:446;;;;;:::o;35287:322::-;35381:7;35439;;35428;:18;;35406:110;;;;-1:-1:-1;;;35406:110:0;;6647:2:1;35406:110:0;;;6629:21:1;6686:2;6666:18;;;6659:30;6725:34;6705:18;;;6698:62;-1:-1:-1;;;6776:18:1;;;6769:40;6826:19;;35406:110:0;6445:406:1;35406:110:0;35527:19;35549:10;:8;:10::i;:::-;35527:32;-1:-1:-1;35577:24:0;:7;35527:32;35577:11;:24::i;:::-;35570:31;35287:322;-1:-1:-1;;;35287:322:0:o;38885:349::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38986:27:0;::::1;38964:117;;;::::0;-1:-1:-1;;;38964:117:0;;10518:2:1;38964:117:0::1;::::0;::::1;10500:21:1::0;10557:2;10537:18;;;10530:30;10596:34;10576:18;;;10569:62;-1:-1:-1;;;10647:18:1;;;10640:38;10695:19;;38964:117:0::1;10316:404:1::0;38964:117:0::1;39092:14;:30:::0;;-1:-1:-1;;;;;;39092:30:0::1;-1:-1:-1::0;;;;;39092:30:0;::::1;;::::0;;39133:32:::1;39092:30:::0;39133:17:::1;:32::i;:::-;39183:43;::::0;;39200:10:::1;3215:34:1::0;;-1:-1:-1;;;;;3285:15:1;;3280:2;3265:18;;3258:43;39183::0::1;::::0;3150:18:1;39183:43:0::1;3003:304:1::0;36641:477:0;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36721:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36713:60;;;::::0;-1:-1:-1;;;36713:60:0;;8224:2:1;36713:60:0::1;::::0;::::1;8206:21:1::0;8263:2;8243:18;;;8236:30;8302:29;8282:18;;;8275:57;8349:18;;36713:60:0::1;8022:351:1::0;36713:60:0::1;36789:9;36784:327;36808:9;:16:::0;36804:20;::::1;36784:327;;;36866:7;-1:-1:-1::0;;;;;36850:23:0::1;:9;36860:1;36850:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;36850:12:0::1;:23;36846:254;;;36909:9;36919:16:::0;;:20:::1;::::0;36938:1:::1;::::0;36919:20:::1;:::i;:::-;36909:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;36894:9:::1;:12:::0;;-1:-1:-1;;;;;36909:31:0;;::::1;::::0;36904:1;;36894:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;36894:46:0::1;-1:-1:-1::0;;;;;36894:46:0;;::::1;;::::0;;36959:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;36998:11:::1;:20:::0;;;;:28;;-1:-1:-1;;36998:28:0::1;::::0;;37045:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;37045:15:0;;;;;-1:-1:-1;;;;;;37045:15:0::1;::::0;;;;;36784:327:::1;36641:477:::0;:::o;36846:254::-:1;36826:3:::0;::::1;::::0;::::1;:::i;:::-;;;;36784:327;;;;36641:477:::0;:::o;33511:300::-;7753:10;33626:4;33720:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33720:34:0;;;;;;;;;;33626:4;;33648:133;;33698:7;;33720:50;;33759:10;33720:38;:50::i;34450:438::-;7753:10;34502:14;34565:19;;;:11;:19;;;;;;;;34564:20;34542:114;;;;-1:-1:-1;;;34542:114:0;;12148:2:1;34542:114:0;;;12130:21:1;12187:2;12167:18;;;12160:30;12226:34;12206:18;;;12199:62;-1:-1:-1;;;12277:18:1;;;12270:42;12329:19;;34542:114:0;11946:408:1;34542:114:0;34667:26;34696:19;34707:7;34696:10;:19::i;:::-;34764:17;;-1:-1:-1;;;;;34744:15:0;;34764:17;34744:15;;;:7;:15;;;;;;34667:48;;-1:-1:-1;34744:38:0;;:15;:19;:38::i;:::-;-1:-1:-1;;;;;34726:15:0;;;;;;:7;:15;;;;;:56;34815:17;;34803:7;;:30;;:11;:30::i;:::-;34793:7;:40;34857:10;;:23;;34872:7;34857:14;:23::i;:::-;34844:10;:36;-1:-1:-1;;;34450:438:0:o;39895:227::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;39989:1:::1;39965:21;:25;39943:112;;;::::0;-1:-1:-1;;;39943:112:0;;6241:2:1;39943:112:0::1;::::0;::::1;6223:21:1::0;6280:2;6260:18;;;6253:30;6319:34;6299:18;;;6292:62;-1:-1:-1;;;6370:18:1;;;6363:35;6415:19;;39943:112:0::1;6039:401:1::0;39943:112:0::1;17417:7:::0;17444:6;;40066:48:::1;::::0;-1:-1:-1;;;;;17444:6:0;;;;40092:21:::1;40066:48:::0;::::1;;;::::0;40092:21;;40066:48;17417:7;40066:48;40092:21;17444:6;40066:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;39895:227::o:0;35617:562::-;35673:4;17444:6;;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;7753:10;35690:21:::1;35768:22:::0;;;:7:::1;:22;::::0;;;;;35759:31;::::1;35737:115;;;::::0;-1:-1:-1;;;35737:115:0;;5838:2:1;35737:115:0::1;::::0;::::1;5820:21:1::0;5877:2;5857:18;;;5850:30;5916:34;5896:18;;;5889:62;-1:-1:-1;;;5967:18:1;;;5960:32;6009:19;;35737:115:0::1;5636:398:1::0;35737:115:0::1;35881:6:::0;35863:15:::1;35916:23;35928:10;:8;:10::i;:::-;35916:7:::0;;:11:::1;:23::i;:::-;35898:41;;35952:56;35967:13;35990:1;35994:6;36002:5;35952:14;:56::i;:::-;36031:7;::::0;:20:::1;::::0;36043:7;36031:11:::1;:20::i;:::-;36021:7;:30:::0;36072:7:::1;::::0;:20:::1;::::0;36084:7;36072:11:::1;:20::i;:::-;36062:7;:30:::0;36136:1:::1;17444:6:::0;;-1:-1:-1;;;;;17444:6:0;-1:-1:-1;;;;;36110:37:0::1;;36140:6;36110:37;;;;12505:25:1::0;;12493:2;12478:18;;12359:177;36110:37:0::1;;;;;;;;36167:4;36160:11;;;;;17662:1;35617:562:::0;;;:::o;38182:111::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38251:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;38251:34:0::1;38281:4;38251:34;::::0;;38182:111::o;34896:383::-;35014:7;35058;;35047;:18;;35039:62;;;;-1:-1:-1;;;35039:62:0;;8580:2:1;35039:62:0;;;8562:21:1;8619:2;8599:18;;;8592:30;8658:33;8638:18;;;8631:61;8709:18;;35039:62:0;8378:355:1;35039:62:0;35117:17;35112:160;;35158:19;35169:7;35158:10;:19::i;:::-;:27;;-1:-1:-1;35151:34:0;;35112:160;35225:19;35236:7;35225:10;:19::i;:::-;:35;;;35218:42;;;;36187:446;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36382:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36381:21;36373:61;;;::::0;-1:-1:-1;;;36373:61:0;;8224:2:1;36373:61:0::1;::::0;::::1;8206:21:1::0;8263:2;8243:18;;;8236:30;8302:29;8282:18;;;8275:57;8349:18;;36373:61:0::1;8022:351:1::0;36373:61:0::1;-1:-1:-1::0;;;;;36449:16:0;::::1;36468:1;36449:16:::0;;;:7:::1;:16;::::0;;;;;:20;36445:109:::1;;-1:-1:-1::0;;;;;36525:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;36505:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;36486:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;36445:109:::1;-1:-1:-1::0;;;;;36564:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;36564:27:0::1;36587:4;36564:27:::0;;::::1;::::0;;;36602:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;36602:23:0::1;::::0;;::::1;::::0;;36187:446::o;32251:198::-;-1:-1:-1;;;;;32341:20:0;;32317:7;32341:20;;;:11;:20;;;;;;;;32337:49;;;-1:-1:-1;;;;;;32370:16:0;;;;;:7;:16;;;;;;;32251:198::o;32337:49::-;-1:-1:-1;;;;;32424:16:0;;;;;;:7;:16;;;;;;32404:37;;:19;:37::i;18022:103::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;18087:30:::1;18114:1;18087:18;:30::i;:::-;18022:103::o:0;38523:120::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;38607:13:::1;:28:::0;38523:120::o;33819:400::-;33939:4;33961:228;7753:10;34011:7;34033:145;34090:15;34033:145;;;;;;;;;;;;;;;;;7753:10;34033:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;34033:34:0;;;;;;;;;;;;:38;:145::i;32457:199::-;32562:4;32584:42;7753:10;32608:9;32619:6;32584:9;:42::i;39716:171::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;39793:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;39793:32:0::1;-1:-1:-1::0;;;;39793:32:0;;::::1;;::::0;;39841:38:::1;::::0;::::1;::::0;::::1;::::0;39817:8;4368:14:1;4361:22;4343:41;;4331:2;4316:18;;4203:187;39572:136:0;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;39664:36:::1;39694:5;39664:25;39676:12;39664:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:36::i;:::-;39649:12;:51:::0;-1:-1:-1;39572:136:0:o;38301:110::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38368:27:0::1;38398:5;38368:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;38368:35:0::1;::::0;;38301:110::o;38774:103::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;38851:8:::1;:18:::0;38774:103::o;18280:238::-;17417:7;17444:6;-1:-1:-1;;;;;17444:6:0;7753:10;17591:23;17583:68;;;;-1:-1:-1;;;17583:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18383:22:0;::::1;18361:110;;;::::0;-1:-1:-1;;;18361:110:0;;7058:2:1;18361:110:0::1;::::0;::::1;7040:21:1::0;7097:2;7077:18;;;7070:30;7136:34;7116:18;;;7109:62;-1:-1:-1;;;7187:18:1;;;7180:36;7233:19;;18361:110:0::1;6856:402:1::0;18361:110:0::1;18482:28;18501:8;18482:18;:28::i;5413:132::-:0;5471:7;5498:39;5502:1;5505;5498:39;;;;;;;;;;;;;;;;;:3;:39::i;3542:136::-;3600:7;3627:43;3631:1;3634;3627:43;;;;;;;;;;;;;;;;;:3;:43::i;45436:371::-;-1:-1:-1;;;;;45563:19:0;;45555:68;;;;-1:-1:-1;;;45555:68:0;;11743:2:1;45555:68:0;;;11725:21:1;11782:2;11762:18;;;11755:30;11821:34;11801:18;;;11794:62;-1:-1:-1;;;11872:18:1;;;11865:34;11916:19;;45555:68:0;11541:400:1;45555:68:0;-1:-1:-1;;;;;45642:21:0;;45634:68;;;;-1:-1:-1;;;45634:68:0;;7465:2:1;45634:68:0;;;7447:21:1;7504:2;7484:18;;;7477:30;7543:34;7523:18;;;7516:62;-1:-1:-1;;;7594:18:1;;;7587:32;7636:19;;45634:68:0;7263:398:1;45634:68:0;-1:-1:-1;;;;;45715:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;45767:32;;12505:25:1;;;45767:32:0;;12478:18:1;45767:32:0;;;;;;;45436:371;;;:::o;45815:1833::-;-1:-1:-1;;;;;45937:18:0;;45929:68;;;;-1:-1:-1;;;45929:68:0;;11337:2:1;45929:68:0;;;11319:21:1;11376:2;11356:18;;;11349:30;11415:34;11395:18;;;11388:62;-1:-1:-1;;;11466:18:1;;;11459:35;11511:19;;45929:68:0;11135:401:1;45929:68:0;-1:-1:-1;;;;;46016:16:0;;46008:64;;;;-1:-1:-1;;;46008:64:0;;5434:2:1;46008:64:0;;;5416:21:1;5473:2;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;-1:-1:-1;;;5563:18:1;;;5556:33;5606:19;;46008:64:0;5232:399:1;46008:64:0;46100:1;46091:6;:10;46083:64;;;;-1:-1:-1;;;46083:64:0;;10927:2:1;46083:64:0;;;10909:21:1;10966:2;10946:18;;;10939:30;11005:34;10985:18;;;10978:62;-1:-1:-1;;;11056:18:1;;;11049:39;11105:19;;46083:64:0;10725:405:1;46083:64:0;17417:7;17444:6;-1:-1:-1;;;;;46162:15:0;;;17444:6;;46162:15;;;;:32;;-1:-1:-1;17417:7:0;17444:6;-1:-1:-1;;;;;46181:13:0;;;17444:6;;46181:13;;46162:32;46158:175;;;46245:12;;46235:6;:22;;46209:124;;;;-1:-1:-1;;;46209:124:0;;9346:2:1;46209:124:0;;;9328:21:1;9385:2;9365:18;;;9358:30;9424:34;9404:18;;;9397:62;-1:-1:-1;;;9475:18:1;;;9468:38;9523:19;;46209:124:0;9144:404:1;46209:124:0;46628:28;46659:24;46677:4;46659:9;:24::i;:::-;46628:55;;46724:12;;46700:20;:36;46696:104;;-1:-1:-1;46776:12:0;;46696:104;29837:14;46839:66;;;;;;;46934:53;;-1:-1:-1;46971:16:0;;-1:-1:-1;;;46971:16:0;;;;46970:17;46934:53;:91;;;;;47012:13;-1:-1:-1;;;;;47004:21:0;:4;-1:-1:-1;;;;;47004:21:0;;;46934:91;:129;;;;-1:-1:-1;47042:21:0;;-1:-1:-1;;;47042:21:0;;;;46934:129;46916:318;;;29837:14;47090:52;;47186:36;47201:20;47186:14;:36::i;:::-;-1:-1:-1;;;;;47427:24:0;;47307:12;47427:24;;;:18;:24;;;;;;47322:4;;47427:24;;;:50;;-1:-1:-1;;;;;;47455:22:0;;;;;;:18;:22;;;;;;;;47427:50;47423:98;;;-1:-1:-1;47504:5:0;47423:98;47599:41;47614:4;47620:2;47624:6;47632:7;47599:14;:41::i;:::-;45918:1730;;;45815:1833;;;:::o;3981:226::-;4101:7;4137:12;4129:6;;;;4121:29;;;;-1:-1:-1;;;4121:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4161:9:0;4173:5;4177:1;4173;:5;:::i;:::-;4161:17;3981:226;-1:-1:-1;;;;;3981:226:0:o;43147:164::-;43189:7;43210:15;43227;43246:19;:17;:19::i;:::-;43209:56;;-1:-1:-1;43209:56:0;-1:-1:-1;43283:20:0;43209:56;;43283:11;:20::i;:::-;43276:27;;;;43147:164;:::o;3078:181::-;3136:7;;3168:5;3172:1;3168;:5;:::i;:::-;3156:17;;3197:1;3192;:6;;3184:46;;;;-1:-1:-1;;;3184:46:0;;7868:2:1;3184:46:0;;;7850:21:1;7907:2;7887:18;;;7880:30;7946:29;7926:18;;;7919:57;7993:18;;3184:46:0;7666:351:1;40480:1037:0;40566:16;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40566:16:0;40600:22;40625:20;40637:7;40625:11;:20::i;:::-;40600:45;;40671:15;40701:23;40739:12;40766:16;40797:13;40824:216;40854:7;40880;:12;;;40911:7;:18;;;40948:7;:16;;;40983:7;:13;;;41015:10;:8;:10::i;:::-;40824:11;:216::i;:::-;40656:384;;;;;;;;;;41071:438;;;;;;;;41109:7;41071:438;;;;41152:15;41071:438;;;;41192:4;41071:438;;;;41232:7;:23;;;41071:438;;;;41280:7;:12;;;41071:438;;;;41323:7;:18;;;41071:438;;;;41370:7;:16;;;41071:438;;;;41412:7;:13;;;41071:438;;;;41454:8;41071:438;;;;41488:5;41071:438;;;41051:458;;;;;;;;40480:1037;;;:::o;4466:471::-;4524:7;4769:6;4765:47;;-1:-1:-1;4799:1:0;4792:8;;4765:47;4824:9;4836:5;4840:1;4836;:5;:::i;:::-;4824:17;-1:-1:-1;4869:1:0;4860:5;4864:1;4824:17;4860:5;:::i;:::-;:10;4852:56;;;;-1:-1:-1;;;4852:56:0;;9755:2:1;4852:56:0;;;9737:21:1;9794:2;9774:18;;;9767:30;9833:34;9813:18;;;9806:62;-1:-1:-1;;;9884:18:1;;;9877:31;9925:19;;4852:56:0;9553:397:1;49899:772:0;50055:7;50050:28;;50064:14;:12;:14::i;:::-;-1:-1:-1;;;;;50095:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;50119:22:0;;;;;;:11;:22;;;;;;;;50118:23;50095:46;50091:531;;;50158:48;50180:6;50188:9;50199:6;50158:21;:48::i;:::-;50091:531;;;-1:-1:-1;;;;;50229:19:0;;;;;;:11;:19;;;;;;;;50228:20;:46;;;;-1:-1:-1;;;;;;50252:22:0;;;;;;:11;:22;;;;;;;;50228:46;50224:398;;;50291:46;50311:6;50319:9;50330:6;50291:19;:46::i;50224:398::-;-1:-1:-1;;;;;50359:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;50382:22:0;;;;;;:11;:22;;;;;;;;50359:45;50355:267;;;50421:48;50443:6;50451:9;50462:6;50421:21;:48::i;50355:267::-;50566:44;50584:6;50592:9;50603:6;50566:17;:44::i;:::-;50639:7;50634:29;;50648:15;45143;;45133:7;:25;45185:21;;45169:13;:37;45231:19;;45217:11;:33;45272:16;;45261:8;:27;45089:207;50648:15;49899:772;;;;:::o;18678:191::-;18752:16;18771:6;;-1:-1:-1;;;;;18788:17:0;;;-1:-1:-1;;;;;;18788:17:0;;;;;;18821:40;;18771:6;;;;;;;18821:40;;18752:16;18821:40;18741:128;18678:191;:::o;6041:312::-;6161:7;6196:12;6189:5;6181:28;;;;-1:-1:-1;;;6181:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6220:9:0;6232:5;6236:1;6232;:5;:::i;47656:977::-;30877:16;:23;;-1:-1:-1;;;;30877:23:0;-1:-1:-1;;;30877:23:0;;;;47807:27:::1;:20:::0;47832:1:::1;47807:24;:27::i;:::-;47792:42:::0;-1:-1:-1;47845:17:0::1;47865:30;:20:::0;47792:42;47865:24:::1;:30::i;:::-;47845:50:::0;-1:-1:-1;48198:21:0::1;48264:22;48281:4:::0;48264:16:::1;:22::i;:::-;48417:18;48438:41;:21;48464:14:::0;48438:25:::1;:41::i;:::-;48417:62;;48529:35;48542:9;48553:10;48529:12;:35::i;:::-;48582:43;::::0;;13728:25:1;;;13784:2;13769:18;;13762:34;;;13812:18;;;13805:34;;;48582:43:0::1;::::0;13716:2:1;13701:18;48582:43:0::1;;;;;;;-1:-1:-1::0;;30923:16:0;:24;;-1:-1:-1;;;;30923:24:0;;;-1:-1:-1;;;47656:977:0:o;43319:605::-;43417:7;;43453;;43370;;;;;43471:338;43495:9;:16;43491:20;;43471:338;;;43579:7;43555;:21;43563:9;43573:1;43563:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43563:12:0;43555:21;;;;;;;;;;;;;:31;;:83;;;43631:7;43607;:21;43615:9;43625:1;43615:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43615:12:0;43607:21;;;;;;;;;;;;;:31;43555:83;43533:146;;;43662:7;;43671;;43654:25;;;;;;;43319:605;;:::o;43533:146::-;43704:34;43716:7;:21;43724:9;43734:1;43724:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43724:12:0;43716:21;;;;;;;;;;;;;43704:7;;:11;:34::i;:::-;43694:44;;43763:34;43775:7;:21;43783:9;43793:1;43783:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43783:12:0;43775:21;;;;;;;;;;;;;43763:7;;:11;:34::i;:::-;43753:44;-1:-1:-1;43513:3:0;;;;:::i;:::-;;;;43471:338;;;-1:-1:-1;43845:7:0;;43833;;:20;;:11;:20::i;:::-;43823:7;:30;43819:61;;;43863:7;;43872;;43855:25;;;;;;43319:605;;:::o;43819:61::-;43899:7;;43908;;-1:-1:-1;43319:605:0;-1:-1:-1;43319:605:0:o;41525:755::-;41612:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41612:14:0;41644:12;41659:24;41675:7;41659:15;:24::i;:::-;41644:39;;41694:18;41715:30;41737:7;41715:21;:30::i;:::-;41694:51;;41756:16;41775:34;41804:4;41775:24;41787:11;;41775:7;:11;;:24;;;;:::i;:34::-;41756:53;;41820:13;41836:31;41862:4;41836:21;41848:8;;41836:7;:11;;:21;;;;:::i;:31::-;41820:47;-1:-1:-1;41878:23:0;41904:114;41820:47;41904:89;41984:8;41904:89;41954:10;41904:89;:7;41930:4;41904:25;:31::i;:::-;:49;;:61::i;:114::-;42056:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42056:189:0;41525:755;-1:-1:-1;;41525:755:0:o;42288:851::-;42538:7;;;;;;42679:24;:7;42691:11;42679;:24::i;:::-;42661:42;-1:-1:-1;42714:12:0;42729:21;:4;42738:11;42729:8;:21::i;:::-;42714:36;-1:-1:-1;42761:16:0;42780:25;:8;42793:11;42780:12;:25::i;:::-;42761:44;-1:-1:-1;42816:13:0;42832:22;:5;42842:11;42832:9;:22::i;:::-;42816:38;-1:-1:-1;42865:18:0;42886:27;:10;42901:11;42886:14;:27::i;:::-;42865:48;-1:-1:-1;42924:23:0;42950:114;43058:5;42950:89;43030:8;42950:89;42865:48;42950:89;:7;42976:4;42950:25;:31::i;:114::-;43083:7;;-1:-1:-1;42924:140:0;;-1:-1:-1;43109:4:0;;-1:-1:-1;43115:8:0;;-1:-1:-1;43125:5:0;-1:-1:-1;;;42288:851:0;;;;;;;;;;;;:::o;44615:466::-;44676:7;;:12;:47;;;;-1:-1:-1;44705:13:0;;:18;44676:47;:80;;;;-1:-1:-1;44740:11:0;;:16;44676:80;:110;;;;-1:-1:-1;44773:8:0;;:13;44676:110;44658:147;;;44615:466::o;44658:147::-;44835:7;;;44817:15;:25;44877:13;;;44853:21;:37;44923:11;;;44901:19;:33;44964:8;;;44945:16;:27;-1:-1:-1;44985:11:0;;;;45007:17;;;;45035:15;;;45061:12;44615:466::o;52590:967::-;52726:26;52755:19;52766:7;52755:10;:19::i;:::-;52853:18;;;;52819:14;;-1:-1:-1;;;;;52819:14:0;52811:23;;;;:7;:23;;;;;;52726:48;;-1:-1:-1;52811:71:0;;:23;:27;:71::i;:::-;52793:14;;-1:-1:-1;;;;;52793:14:0;;;52785:23;;;;:7;:23;;;;;;:97;;;;52941:15;;;;52924:11;;;;;52916:20;;;;;;;:41;;:24;:41::i;:::-;52901:11;;-1:-1:-1;;;;;52901:11:0;;;52893:20;;;;:7;:20;;;;;;:64;;;;52986:15;;;;;;;:28;;53006:7;52986:19;:28::i;:::-;-1:-1:-1;;;;;52968:15:0;;;;;;:7;:15;;;;;;;;:46;;;;53063:17;;53043:7;:15;;;;;;;:38;;:19;:38::i;:::-;-1:-1:-1;;;;;53025:15:0;;;;;;;:7;:15;;;;;;;;:56;;;;53136:25;;;53113:18;;;;;;;;;;:49;;:22;:49::i;:::-;-1:-1:-1;;;;;53092:18:0;;;;;;:7;:18;;;;;:70;53188:20;;;;53173:36;;:14;:36::i;:::-;53220:143;53246:9;:18;;;53279:9;:15;;;53309:9;:14;;;53338:9;:14;;;53220:11;:143::i;:::-;53396:9;-1:-1:-1;;;;;53379:54:0;53388:6;-1:-1:-1;;;;;53379:54:0;;53407:9;:25;;;53379:54;;;;12505:25:1;;12493:2;12478:18;;12359:177;53379:54:0;;;;;;;;53475:18;;;;53449:45;;;53463:10;3486:51:1;;3568:2;3553:18;;3546:34;;;;53449:45:0;;3459:18:1;53449:45:0;;;;;;;53533:15;;;;53510:39;;;53521:10;3486:51:1;;3568:2;3553:18;;3546:34;;;;53510:39:0;;3459:18:1;53510:39:0;;;;;;;52715:842;52590:967;;;:::o;51593:989::-;51727:26;51756:19;51767:7;51756:10;:19::i;:::-;51854:18;;;;51820:14;;-1:-1:-1;;;;;51820:14:0;51812:23;;;;:7;:23;;;;;;51727:48;;-1:-1:-1;51812:71:0;;:23;:27;:71::i;:::-;51794:14;;-1:-1:-1;;;;;51794:14:0;;;51786:23;;;;:7;:23;;;;;;:97;;;;51942:15;;;;51925:11;;;;;51917:20;;;;;;;:41;;:24;:41::i;:::-;51902:11;;-1:-1:-1;;;;;51902:11:0;;;51894:20;;;;:7;:20;;;;;;;;:64;;;;52007:17;;51987:15;;;;;51902:11;51987:15;;;;;;;:38;;:19;:38::i;:::-;-1:-1:-1;;;;;51969:15:0;;;;;;;:7;:15;;;;;;;;:56;;;;52080:25;;;;52057:18;;;;;:7;:18;;;;;;;:49;;:22;:49::i;:::-;-1:-1:-1;;;;;52036:18:0;;;;;;:7;:18;;;;;;;;:70;;;;52161:25;;;;52138:7;:18;;;;;;;:49;;:22;:49::i;37126:1048::-;37262:26;37291:19;37302:7;37291:10;:19::i;:::-;37389:18;;;;37355:14;;-1:-1:-1;;;;;37355:14:0;37347:23;;;;:7;:23;;;;;;37262:48;;-1:-1:-1;37347:71:0;;:23;:27;:71::i;:::-;37329:14;;-1:-1:-1;;;;;37329:14:0;;;37321:23;;;;:7;:23;;;;;;:97;;;;37477:15;;;;37460:11;;;;;37452:20;;;;;;;:41;;:24;:41::i;:::-;37437:11;;-1:-1:-1;;;;;37437:11:0;;;37429:20;;;;:7;:20;;;;;;:64;;;;37522:15;;;;;;;:28;;37542:7;37522:19;:28::i;:::-;-1:-1:-1;;;;;37504:15:0;;;;;;:7;:15;;;;;;;;:46;;;;37599:17;;37579:7;:15;;;;;;;:38;;:19;:38::i;50679:906::-;50811:26;50840:19;50851:7;50840:10;:19::i;:::-;50938:18;;;;50904:14;;-1:-1:-1;;;;;50904:14:0;50896:23;;;;:7;:23;;;;;;50811:48;;-1:-1:-1;50896:71:0;;:23;:27;:71::i;:::-;50878:14;;-1:-1:-1;;;;;50878:14:0;;;50870:23;;;;:7;:23;;;;;;:97;;;;51026:15;;;;51009:11;;;;;51001:20;;;;;;;:41;;:24;:41::i;:::-;50986:11;;-1:-1:-1;;;;;50986:11:0;;;50978:20;;;;:7;:20;;;;;;;;:64;;;;51091:17;;51071:15;;;;;50986:11;51071:15;;;;;;;:38;;:19;:38::i;48641:589::-;48791:16;;;48805:1;48791:16;;;;;;;;48767:21;;48791:16;;;;;;;;;;-1:-1:-1;48791:16:0;48767:40;;48836:4;48818;48823:1;48818:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;48818:23:0;;;-1:-1:-1;;;;;48818:23:0;;;;;48862:15;-1:-1:-1;;;;;48862:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48852:4;48857:1;48852:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;48852:32:0;;;-1:-1:-1;;;;;48852:32:0;;;;;48897:62;48914:4;48929:15;48947:11;48897:8;:62::i;:::-;48998:224;;-1:-1:-1;;;48998:224:0;;-1:-1:-1;;;;;48998:15:0;:66;;;;:224;;49079:11;;49105:1;;49149:4;;49176;;49196:15;;48998:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49238:580;49386:62;49403:4;49418:15;49436:11;49386:8;:62::i;:::-;49491:15;-1:-1:-1;;;;;49491:31:0;;49530:9;49563:4;49583:11;49609:1;49652;49695:7;17417;17444:6;-1:-1:-1;;;;;17444:6:0;;17371:87;49695:7;49491:252;;;;;;-1:-1:-1;;;;;;49491:252:0;;;-1:-1:-1;;;;;3950:15:1;;;49491:252:0;;;3932:34:1;3982:18;;;3975:34;;;;4025:18;;;4018:34;;;;4068:18;;;4061:34;4132:15;;;4111:19;;;4104:44;49717:15:0;4164:19:1;;;4157:35;3866:19;;49491:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;49759:51:0;;12505:25:1;;;-1:-1:-1;;;;;49783:13:0;49759:51;;-1:-1:-1;49776:4:0;;49759:51;;12493:2:1;12478:18;49759:51:0;;;;;;;49238:580;;:::o;44295:130::-;44359:7;44386:31;44411:5;44386:20;44398:7;;44386;:11;;:20;;;;:::i;44433:174::-;44530:7;44562:37;44593:5;44562:26;44574:13;;44562:7;:11;;:26;;;;:::i;43932:355::-;43995:19;44017:10;:8;:10::i;:::-;43995:32;-1:-1:-1;44038:18:0;44059:27;:10;43995:32;44059:14;:27::i;:::-;44138:4;44122:22;;;;:7;:22;;;;;;44038:48;;-1:-1:-1;44122:38:0;;44038:48;44122:26;:38::i;:::-;44113:4;44097:22;;;;:7;:22;;;;;;;;:63;;;;44175:11;:26;;;;;;44171:108;;;44257:4;44241:22;;;;:7;:22;;;;;;:38;;44268:10;44241:26;:38::i;:::-;44232:4;44216:22;;;;:7;:22;;;;;:63;44171:108;43984:303;;43932:355;:::o;40224:248::-;40378:42;40414:5;40378:31;40400:8;40378:17;40390:4;40378:7;;:11;;:17;;;;:::i;:42::-;40368:7;:52;40444:10;;:20;;40459:4;40444:14;:20::i;:::-;40431:10;:33;-1:-1:-1;;;;40224:248:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;179:247;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:52;;;1686:1;1683;1676:12;1638:52;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1541:315:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:1;;2046:180;-1:-1:-1;2046:180:1:o;2231:248::-;2296:6;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:52;;;2373:1;2370;2363:12;2325:52;2409:9;2396:23;2386:33;;2438:35;2469:2;2458:9;2454:18;2438:35;:::i;:::-;2428:45;;2231:248;;;;;:::o;2484:306::-;2572:6;2580;2588;2641:2;2629:9;2620:7;2616:23;2612:32;2609:52;;;2657:1;2654;2647:12;2609:52;2686:9;2680:16;2670:26;;2736:2;2725:9;2721:18;2715:25;2705:35;;2780:2;2769:9;2765:18;2759:25;2749:35;;2484:306;;;;;:::o;4630:597::-;4742:4;4771:2;4800;4789:9;4782:21;4832:6;4826:13;4875:6;4870:2;4859:9;4855:18;4848:34;4900:1;4910:140;4924:6;4921:1;4918:13;4910:140;;;5019:14;;;5015:23;;5009:30;4985:17;;;5004:2;4981:26;4974:66;4939:10;;4910:140;;;5068:6;5065:1;5062:13;5059:91;;;5138:1;5133:2;5124:6;5113:9;5109:22;5105:31;5098:42;5059:91;-1:-1:-1;5211:2:1;5190:15;-1:-1:-1;;5186:29:1;5171:45;;;;5218:2;5167:54;;4630:597;-1:-1:-1;;;4630:597:1:o;9955:356::-;10157:2;10139:21;;;10176:18;;;10169:30;10235:34;10230:2;10215:18;;10208:62;10302:2;10287:18;;9955:356::o;12541:980::-;12803:4;12851:3;12840:9;12836:19;12882:6;12871:9;12864:25;12908:2;12946:6;12941:2;12930:9;12926:18;12919:34;12989:3;12984:2;12973:9;12969:18;12962:31;13013:6;13048;13042:13;13079:6;13071;13064:22;13117:3;13106:9;13102:19;13095:26;;13156:2;13148:6;13144:15;13130:29;;13177:1;13187:195;13201:6;13198:1;13195:13;13187:195;;;13266:13;;-1:-1:-1;;;;;13262:39:1;13250:52;;13357:15;;;;13322:12;;;;13298:1;13216:9;13187:195;;;-1:-1:-1;;;;;;;13438:32:1;;;;13433:2;13418:18;;13411:60;-1:-1:-1;;;13502:3:1;13487:19;13480:35;13399:3;12541:980;-1:-1:-1;;;12541:980:1:o;14039:128::-;14079:3;14110:1;14106:6;14103:1;14100:13;14097:39;;;14116:18;;:::i;:::-;-1:-1:-1;14152:9:1;;14039:128::o;14172:217::-;14212:1;14238;14228:132;;14282:10;14277:3;14273:20;14270:1;14263:31;14317:4;14314:1;14307:15;14345:4;14342:1;14335:15;14228:132;-1:-1:-1;14374:9:1;;14172:217::o;14394:168::-;14434:7;14500:1;14496;14492:6;14488:14;14485:1;14482:21;14477:1;14470:9;14463:17;14459:45;14456:71;;;14507:18;;:::i;:::-;-1:-1:-1;14547:9:1;;14394:168::o;14567:125::-;14607:4;14635:1;14632;14629:8;14626:34;;;14640:18;;:::i;:::-;-1:-1:-1;14677:9:1;;14567:125::o;14697:135::-;14736:3;-1:-1:-1;;14757:17:1;;14754:43;;;14777:18;;:::i;:::-;-1:-1:-1;14824:1:1;14813:13;;14697:135::o;14837:127::-;14898:10;14893:3;14889:20;14886:1;14879:31;14929:4;14926:1;14919:15;14953:4;14950:1;14943:15;14969:127;15030:10;15025:3;15021:20;15018:1;15011:31;15061:4;15058:1;15051:15;15085:4;15082:1;15075:15;15101:127;15162:10;15157:3;15153:20;15150:1;15143:31;15193:4;15190:1;15183:15;15217:4;15214:1;15207:15;15365:131;-1:-1:-1;;;;;15440:31:1;;15430:42;;15420:70;;15486:1;15483;15476:12
Swarm Source
ipfs://1e1518cfec339265002a5aaa8833903ab0c0042cb27c985750eae80bd316e10f
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.